31.07.2017

Ldum Dare, gamedev на коленке или как оно вообще

Итак, 29 июля в 4 утра по Москве начался джем. Как обычно два варианта участия - Compo и Jam. В рамках Jam  разрешается работать командой, на все дается 72 часа, можно использовать контент, на который есть права. В Compo все веселей - 48 часов, один человек, контент должен быть создан самостоятельно.


Я участвую второй раз, и второй раз в Compo. В прошлый раз я что-то быстро перегорел и за выданные 48 часов поработал от силы 12-16. За это время был найден какой-никакой графический стиль, сделан прототип на основе физического движка Unity( до этого не использовал физические связи объектов, помимо учебных курсов), пару часов было потрачено на попытку написать правильную мелодию, но так и не смог добиться подходящего звука. При создании стартового экрана  использовал реальные префабы, и как следствие - развалил игровую физику, о чем узнал позже...

Иногда возникает вопрос - зачем участвовать в джемах. Для 48-72 часовых джемах ответ прост - получить прототип, на который ты получишь фидбэк за столь малый промежуток от рождения идеи до реализации - это непередаваемое удовольствие! Ведь игра появляется действительно на глазах. Еще час назад у тебя ничего не было, а уже квадратик прыгает по сцене и стреляет кружочками в треугольники. А через час - это уже статичные персонажи.

Жаль, что в субботу пришлось устроить другой джем - "поработай 12 часов", поэтому на LudumDare 39 оставалось всего 15 часов, но это были очень насыщенные 15 часов. Как обычно, главное - это идея. А она, в целом простая - есть база, ее сторож должен следить за зарядом 4 пушек, которые отбиваются от чего-то, пусть это будут космические розовые пони. Для работы пушек нужен плутоний, который валяется на базе, но сама база заражена космическими радиактивными слизнями. В целом безобидные создания, которые, в силу нехватки времени, обрели способность к левитации :), но если их убить, то из них падает тот самый плутоний. Но вот печаль - база большая, пушки быстро разряжаются, а сторож может перенести ограниченный запас энергии. Вот и придется игроку бегать туда-сюда, чтобы заполнить все орудия на максимум. Даже не знаю - реально ли это в реализации :)

До LD39 я все делал практически вручную. На FWJ я сразу же столкнулся с тем, что надо оптимизировать ручную работу и не тратить драгоценное время на графику на сцене. В ход идет генерация по предустановленным шаблонам и использование различных сторонних редакторов. В этот раз я применял Tiled - очень хороший редактор 2d миров. По весне я хотел написать свой редактор, но во время остановился и погуглил :)


Tiled умеет выделять области в том числе и по образцу, заливать, перемещать, рисовать по тайлово. Редактор 2d карт без слоев - бесполезен. В Tiled со слоями очень просто и удобно работать. Учитывая, что потом применяется Tiled2Unity, то все становится совсем просто. Сразу разбивается мир на фон, твердые предметы, активные элементы(лестницы).


Tiled2Unity - это просто находка! Может быть визуально он и неказист, но это же утилита, от нее не требуется UI, главное требование - перенеси в Юнити то, что я нарисовал, с чем она замечательно справляется, благодаря Большой  Кнопке:)


Далее в Юнити  подгружаются префабы, причем Tiled поддерживает параметры тайлов, в том числе коллайдеры, а Tiled2Uniti распознает базовый набор свойств - слой, триггер, коллайдеры и создает полигональные коллайдеры с Rigidbody2d, чем упрощает разработку.


Первые часа три ушло на рисование и построение уровня, Это очень увлекательное занятие, и здесь, главное, контролировать время, т.к. можно увлечься, и его не хватит на кодинг и отладку. Поэтому от анимаций я решил отказаться - на это уходит много времени. Так же я отказался от звука.  Анимирован только космический слизень, но не очень хорошо. Видимо надо побольше времени уделить анимациям, хотя бы уделить время анимациям в будущем :)

Позже, когда прикручивал стрельбу, выяснил интересную особенность - пули почему-то не реагировали на импортированный мир - со слизнями и игроком - отлично контактировали, но пролетали сквозь стены и уходили в бесконечность. За 20 минут  простого решения, чтобы работало как надо, не нашлось, поэтому пулям добавлено время жизни, чтобы они не летали бесконечно, тратя ресурсы CPU.

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

Любой, кто попробует так работать поймет, зачем и почему нужен рефакторинг после реализации первой версии - изначально ты делаешь "чтобы заработало то, не знаю что",  и только через определенный промежуток времени, когда это "что-то" становится понятным, ты знаешь как это надо переделать, чтобы в дальнейшем код был красивым и читаемым, легко поддерживаемым для развития.

Итоги по джему:
Считаю, что получился очень неплохой прототип, который мне кажется довольно перспективным. Почему-то хочется отказаться от статичной комнаты со слизнями, и заменить ее на генерируемую в духе RoguaLegacy. Добавить десяток существ(нейтральных носителей энергии и агрессивных воришек), шипы или пилы, отладить физику персонажа, добавить его прокачку(увеличение объема рюкзака, атака).  Посмотрим, что скажут участники LD.
А в целом очень рад, что все же заставил себя и стал одним из 899 участников Compo, которые зарелизились в срок.
Windows версия
Web версия


Комментариев нет:

Отправить комментарий