Lode Runner или как Я познакомился с Unity (Часть 1)

Всем привет.

Хотелось бы показать/рассказать, что когда-то (где-то 3-4 года назад) Я сделал на Unity 3d...

Немного предыстории

Был это 4 курс универа и надо было уже подумывать над темой диплома. 80% студиков на диплом сдавали сайты (онлайн магазины), сделанные на каком-нибудь конструкторе, а некоторые и вовсе в фотошопе. И смотря на всё "это", захотелось мне сделать что-то необычное - написать игру!

Тут то и начал думать над идеей и в чём все это делать.

До этого Я был знаком только с GameMaker (если не ошибаюсь) мне почему-то он вообще не нравился, поэтому Я начал гуглить какие движки есть ещё...

После дня гугления нашёлся он! Unity3d! Запал он мне в душу сразу, хоть и наткнулся Я не сам движок, а на видюшку на Ютубе про расширение для него.

Lode Runner или как Я познакомился с Unity (Часть 1) Unity, Unity3D, Диплом, Lode runner, Разработка, Гифка, Длиннопост

Начало разработки

После этого было просмотрено миллионы разных обучалок, уроков, лайфхаков и после того как Я получил хоть какое-то представление, как что-либо делать в Юнити, Я решил воскресить (запилить на мобилу) одну из любимейших игр Lode Runner. А ещё копаясь по урокам, Я набрел на видео урок, в котором делали Lode Runner. Только не закидывайте меня тапками после этого, ибо урок был по созданию вот такого Лодерана:

Lode Runner или как Я познакомился с Unity (Часть 1) Unity, Unity3D, Диплом, Lode runner, Разработка, Гифка, Длиннопост

А Я позарился на вот такой (Lode Runner: Mad Monks Revenge):

Lode Runner или как Я познакомился с Unity (Часть 1) Unity, Unity3D, Диплом, Lode runner, Разработка, Гифка, Длиннопост

Основная механика совпадала, но в "новом" Лодеране она намиксована со всякими плюшками. Ну и конечно графон был покруче.

От урока осталась лишь общая концепция и стиль организации в самом юнити. А вот кода было дописано просто километры. По крайней мере мне тогда так казалось, ибо самой жирной работой на тот момент у меня была курсовая на 2000 строк на ассемблере.

Lode Runner или как Я познакомился с Unity (Часть 1) Unity, Unity3D, Диплом, Lode runner, Разработка, Гифка, Длиннопост

Все предметы в новом лодеране и все виды земелек в одном мире

Из всех фишек, самая "вредная", с кучей багов и самая сложная (ну для меня) в плане реализации это грёбанная лестница! О Боги, как же Я ненавидел её,

мне кажется, что она до сих пор с глюками.

Lode Runner или как Я познакомился с Unity (Часть 1) Unity, Unity3D, Диплом, Lode runner, Разработка, Гифка, Длиннопост

ГГ постоянно улетал не туда куда надо, то происходили всякие глюки при перескоке с одной лестницы на другую, короче говоря над отладкой лестницы Я просидел не мало.

Второй по проблематичности было написать телепорт, точней не сам телепорт, а систему что бы два разных объекта начали воспроизводить анимацию в один и тот же момент. У меня почему-то получалось, что анимация одного объекта всегда воспроизводилась либо на милисекунды позже, либо раньше. В итоге Я решил и эту проблему, каким именно образом уже и не упомню, но помню что пришлось советоваться с преподами и одногруппниками, которые хоть немного секли в программировании. Но их советы мне не сильно помогли :)

Lode Runner или как Я познакомился с Unity (Часть 1) Unity, Unity3D, Диплом, Lode runner, Разработка, Гифка, Длиннопост

Всё остальное писалось относительно просто (относительно проклятой лестницы!)

Текстуры

За перерисовыванием текстур проведена не одна бессонная ночь. Рисовать столько текстур мне не приходилось ни разу. А текстур было нарисовано примерно 19 000 штук. Конечно можно было не рисовать такое количество, а написать какой-то шейдер и тогда бы количество текстур уменьшилось в тысячи раз. Но если честно, Я до сих пор не представляю как написать такую штуку.

Выдрать текстуры из самой игры (PC версии) у меня никак не получалось (если кто знает как, то скажите), поэтому ко мне пришло "гениальное" решение: записать видео с частотой кадров 30 и без сжатия, ну и потом вырезать нужные текстурки в фотошопе. Это хоть и заняло порядочно по времени, но основная масса времени ушла на прорисовку анимаций уничтожения земли и её восстановления:

Lode Runner или как Я познакомился с Unity (Часть 1) Unity, Unity3D, Диплом, Lode runner, Разработка, Гифка, Длиннопост

По началу Я рисовал всё в ручную в фотошопе, но когда было нарисовано с пару тысяч, Я понял что это 3,14здец и надо чё-то придумывать... После того как Я узнал (в гугле), что в фотошопе можно писать макросы и записывать действия, Я его БОГОТВОРИЛ, Я любил его, Я хотел на нём жениться. Ибо после этого дело пошло быстрее, Я не могу представить сколько бы понадобилось времени, что бы отрисовать все текстуры вручную. Проще говоря фотошоп стал моим лучшим другом. Он мне пригодился, когда Я делал атласы текстур (сохранял каждую текстурку в отдельном файле, а потом через Texurepacker собирал атлас), когда он рисовал (сам!) анимацию уничтожения/восстановления земелек, когда Я рисовал кадры для анимации ГГ или его действий.

Lode Runner или как Я познакомился с Unity (Часть 1) Unity, Unity3D, Диплом, Lode runner, Разработка, Гифка, Длиннопост

Пример небольшого кусочка из одного атласа. Всего их было по одному на каждый мир + пару для ГГ, монстров и т.д.

Искусственный интеллект

Ещё одна проблема заключалась в том, что надо было написать ИИ на подобии того что был в оригинальной игре, т.к. некоторые уровни было заточены под этот ИИ, как уровень ниже.

Lode Runner или как Я познакомился с Unity (Часть 1) Unity, Unity3D, Диплом, Lode runner, Разработка, Гифка, Длиннопост

У оригинальной игры, если вы выше врага, он идет на ближайшую лестницу и зависает там. Так же происходит и с теми врагами которые не могут к вам добраться. Мне не хотелось искусственно делать такие фишки, поэтому поведение вышло немного другое, но вроде как похожее.

Что бы враги ходили, Я выбрал алгоритма поиска кротчайшего пути A* (Astar).

Lode Runner или как Я познакомился с Unity (Часть 1) Unity, Unity3D, Диплом, Lode runner, Разработка, Гифка, Длиннопост

Белые полосы это путь по которому ИИ может ходить.

Уровни

Самое муторное, не считая рисование текстур, было создание(перерисовывание) уровней, ибо их было аж 187. Если на рисовку текстур ещё были силы, то на рисовку уровней они кончились.

Сначала делал как обычно по-быдляче - с помощью скриншотов. А потом нашёл программу, которая позволяет редактировать уровни из оригинальной игры, а заодно приводит в читабельный вид, что позволяет рассмотреть где какой предмет и какая земля.

Lode Runner или как Я познакомился с Unity (Часть 1) Unity, Unity3D, Диплом, Lode runner, Разработка, Гифка, Длиннопост

Так же пришлось написать примитивный редактор уровней, а то копи-пастом дело шло медленно.

Завершающая часть

Ну вот как-то так всё и протекало несколько месяцев. В завершающей части думаю стоит сказать, что Я получил бесценный опыт т.к. кодил Я не один месяц. Позже эта игра даже помогла устроиться на работу, где Я проработал 2 года.

Бонус

Ниже пара бонусных скринов и гифка, которые не вошли в пост. На скринах видны элементы управления для мобильных. Слева управление движением, справа разные действия (взять, использовать предмет, применить бомбу, ну и собственно уничтожение земли слева и справа), ну и внизу: выход в меню, самоубийство и пауза.

Lode Runner или как Я познакомился с Unity (Часть 1) Unity, Unity3D, Диплом, Lode runner, Разработка, Гифка, Длиннопост
Lode Runner или как Я познакомился с Unity (Часть 1) Unity, Unity3D, Диплом, Lode runner, Разработка, Гифка, Длиннопост
Lode Runner или как Я познакомился с Unity (Часть 1) Unity, Unity3D, Диплом, Lode runner, Разработка, Гифка, Длиннопост
Lode Runner или как Я познакомился с Unity (Часть 1) Unity, Unity3D, Диплом, Lode runner, Разработка, Гифка, Длиннопост

Ну и собственно ссылка на игру:

Https://MEМЕGA.NZ#!4MEGDapQ!GlXbnelKF2d7VA0aTlmGbl9FEB7lC0aCC64iJrmAurE

(Кто не понял нужно удалить зачеркнутый кусок "МЕ")

Всем кто дочитал до конца спасибо! А так же прошу прощения за грамматику, пунктуацию и речевые "обороты" :)

Если будет интерес к посту запилю вторую часть.

Лига Разработчиков Видеоигр

6.6K постов22.1K подписчиков

Добавить пост

Правила сообщества

ОБЩИЕ ПРАВИЛА:

- Уважайте чужой труд и используйте конструктивную критику

- Не занимайтесь саморекламой, пишите качественные и интересные посты

- Никакой политики


СТОИТ ПУБЛИКОВАТЬ:

- Посты о Вашей игре с историей её разработки и описанием полученного опыта

- Обучающие материалы, туториалы

- Интервью с опытными разработчиками

- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе

НЕ СТОИТ ПУБЛИКОВАТЬ:

- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры

- Посты, единственная цель которых - набор команды для разработки игры

- Посты, не относящиеся к тематике сообщества

Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.

ЗАПРЕЩЕНО:

- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции

- Выдавать чужой труд за свой

Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.


О РАЗМЕЩЕНИИ ССЫЛОК:

Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:

- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества

- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз

- Cсылка размещается в формате: "Страница игры в Steam: URL"