Дневничок-отчет Lab Escape

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

Когда только начинал свой путь в геймдеве всегда хотел делать крупные проекты с кучей механик, сюжетом и контента. Но в итоге понял что лучше начинать с простеньких жанров. Но основываясь на опыте, могу сказать, нет простых жанров, кроме Space Shooter, ну или что-то вроде тетриса или 3 в ряд.

Небольшое представление проекта

Дневничок-отчет Lab Escape

Lab Escape - это игра для Android, которая проверит вашу скорость реакции. Основная задача - бежать по испытательской лаборатории уворачиваясь или уничтожая препятствия и врагов.

Одна из особенностей - разрушаемое окружение.

Так же отличительной чертой от обычного раннера-платформера будет оружие главного героя. Ведь оно имеет два режима огня, один - это обычный автомат, а второй - это полет на реактивной тяге, от чего игроку предстоит чередовать эти режимы для эффективного прохождения препятствий.

Разработка и подводные камни

“Платформер!” - думаю я, выбирая жанр для простенькой игры, что же может пойти не так, в среде Unity, что выбрал для разработки, есть уже 2D физика, просто написать буквально 3 строчки кода и готово. Однако в Unity есть большая проблема, которую все обходят либо костылями, либо написанием свой физики. Проблема с тем что персонаж как ни крути может “спотыкаться” в местах стыков объектов, даже если стык идеальный. В моем случае выходом было написание своей физики, от чего мне пришлось потратить один бессонный день.

Линии рисуются в редакторе для проверки работы физики
Линии рисуются в редакторе для проверки работы физики

“А еще добавлю генерацию карты и разрушаемость” - снова подумал я, ведь что сложного просто хранить массив и менять в нем значения. Из-за выбранной стилистики, процедурной генерации карты и ее разрушаемости, не подошел стандартный инструмент таловых карты. "Ладно напишу свой". Однако, а как редактировать? Хоть генерация и процедурная, карта строится из изначально заготовленных кусков. Пришлось писать свой инструмент, на что убил еще один день, но результат сэкономил тонны времени. А к слову о массиве, тоже все не гладко, Unity не сериализует многомерные массивы(дркгими словами не сохраняет значения в них), тут либо костыль писать, либо вручную сериализовать, либо не пользоваться многомерными. Выбор пал на последнее, так как хранение двухмерной карты в линейном массиве задача не сложная. Кстати, с каким же удивлением обнаружил что так даже быстрее работает код, но на ничтожно малое время.

"Хочу чтоб было красиво и блоки были по краям с переходом, аля как в Terraria, но не хочу рисовать тонну тектур". Ну и тут есть решение, можно разделить один блок на 4 спрайта и собирать его из кусочков, подумал я. Такой подход особенно хорош с учетом что каждый блок, из-за того, что имеет 2 вида рамочки (целую и поврежденную), если бы вручную отрисовывался, должен был иметь гигантский набор тайлов. Но как оказалось такой подход напрочь загружает отрисовкой систему.

Тогда я подумал, возможно это проблема того что я эти кусочки реализовал как спрайты, и что можно попробовать использовать карту тайлов – нет, в обоих результатах ресурсы съедает одинокого.

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

Дневничок-отчет Lab Escape

Планируется

Доработать физику. Основываясь на обкате тех идей что были изначально, в нынешней версии игры, я пришел к выводу что катастрофически не хватает удобности управления персонажем. Чтобы проиграть достаточно удариться об блок одним пикселем ноги и все. А с учетом разрушаемости окружения эта проблема возводится в абсолют, ведь ломая блоки создается еще больше углов, об которые можно задеть мизинцем. Решение – добавить в игру 2 механики, одна – это блоки-скосы и вторая – это поднимать персонажа на блок если он ударился небольшой частью, как подняться на уступ.

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

Дневничок-отчет Lab Escape

Добавить больше контента. Конечно же игра на данный момент очень страдает от отсутствия контента. Среди планов в первую очередь хочу добавить врагов в виде турелей, препятствия в виде переключаемых лазеров, больше блоков с разными свойствами. Попробовать совместить свою физику с 2д физикой Unity для создания испытания с участием правдоподобной физики. Так же добавить что-то вроде чекпоинтов, на которых будет время перевести дух а так же выбирать усилители. В добавок есть еще идея добавить комнаты, в которых физика ведет себя иначе, отсутствует или персонажа будет притягивать к потолку, прям как зелье антигравитации в Террария.

Оптимизация, самый скучный, но необходимый пункт. В этом направлении есть куда работать, ведь сейчас игра не рационально потребляет ресурсы.

33
1 комментарий

Лично мне идея очень понравилась, напомнила старую добрую Contra Force :) Может, потому что там были тоже разные проекции - и 2D платформер, и вид сверху... Так что это отличная находка - она вносит разнообразие в геймплей. А сделать это на мобилках - вообще прекрасная идея, я бы в такое зарубился :)

1