Mirrorism - небольшой пазл для Weekly Game Jam

i11noTY

Weekly Game Jam — еженедельный джем, где нужно сделать игру чуть меньше чем за неделю. Проходил с 8 по 14 мая, тема — Mirror. Идея для игры зародилась почти сразу, суть в том что можно отзеркаливать часть уровня создавая тем самым путь к выходу.

ECz9uFD

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

Cpsd9aT

С основной механикой все прошло довольно гладко. Кирпичные блоки отрисовываются на сюрфейсе и сюрфейс применяется как спрайт к твердому объекту. За пару часов у меня уже была готова эта механика, анимированый персонаж и выход с уровня.

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

iqrLbTb

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

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

Sc0tXwk

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

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

И тогда я вспомнил что у меня есть объект, спрайт которого — это все твердые блоки в игре. Нужно было просто как и с коробкой сделать 4 дубликата этого объекта с каждой стороны от экрана. И тогда заработало, персонаж и ящик адекватно реагировали на все передвижения между экранами.

d2vz77u

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

gwnMEy4

Впервые попытался создать музыку к игре. Она короткая и довольно однообразная, но в целом я собой доволен, кое-кто в дискорд сервере посвященном джему даже сказал что к игре она подходит. Кстати еще о самом джеме. Не изучив его внимательно расстроился что он оказался без голосования, если честно оценка способностей это то что меня обычно мотивирует участвовать в джемах, а идея типа: «главное что у вас теперь есть игра» мне не особо нравится, у меня таких игр штук 50 есть, но я их делаю чтоб кто-то их увидел и оценил, и лучше — если оценил относительно других игр, чтоб видеть насколько ты продвинулся относительно прошлых джемов. За фидбеком там нужно идти на этот самый дискорд сервер и просить чтоб в игру поиграли люди обитающие там, и желательно самому поиграть в их игры, чтоб было по-честному.

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

Ссылка на саму игру: Mirrorism