Жук приземлился точно на ветку — и всё равно упал. Как я делал игру, где посадка — ещё не конец прыжка
Привет, Пикабу! Я один делаю игру про маленького жука, который лезет на вершину огромного дуба. Хочу рассказать, на чём она держится и что пришлось выкинуть.
Управление простое: зажал — копишь силу, отпустил — прыгнул. В воздухе управлять нельзя, решение принимается один раз. Таких игр много, и почти во всех посадка бинарная: коснулся полки — значит, долетел.
У меня тело жука на шарнире посередине. Сустав сидит ровно в центре масс, и игра каждый кадр смотрит, где он: над опорой или уже за краем. Если за краем — жук качается и опрокидывается. После посадки его ещё немного проносит по инерции, поэтому сильный прыжок вбок сам довозит тебя до края. Получается, что коснуться ветки мало, нужно ещё правильно на неё встать.
Самое важное, что я понял по ходу: если падение выглядит случайным, игрок винит игру и бросает её. Поэтому опрокидывание детерминированное: никакой физики твёрдого тела, только правило «центр масс за краем — падаешь», всегда одинаково. Перед падением жук качается, и в этот момент ещё можно зацепиться. Большинство падений в итоге заканчивается не «да ну эту игру», а «ну почти же».
Что выкинул. Сначала у прыжка была третья величина — наклон тела стрелками вверх-вниз. На плейтесте никто не видел разницы в несколько пикселей, а стрелки все принимали за угол прыжка: «направление меняется в процессе — путает». Убрал полностью, осталось как у классики: сила и направление.
Как делаются экраны. Каждый экран я проектирую дважды: для подъёма и для падения. Для этого написал отладочный инструмент: он бросает с экрана сетку «призрачных» жуков и показывает, где каждый приземлился. Если хоть одно падение удивило меня самого, игроку оно покажется произволом, и экран переделывается. Чекпоинтов нет, но большие падения расставлены нарочно: у каждого яруса дерева есть широкая ветка-«пол», которая ловит почти всё падающее.
И одна вещь, которой я доволен больше всего. Жанр обычно издевается над игроком. Мне хотелось наоборот: если упадёшь с самого верха до самого низа, у корней тебя ждут родители жука. Это не утешительный приз, просто тёплый момент — после такого падения он нужнее всего.
Игра на TypeScript и Canvas, без движка, физика своя, 60 кадров в секунду. Называется Up the Great Oak, полная версия выйдет 9 марта.
Вопрос к тем, кто играл в Jump King и похожие: когда падаете, кажется, что виноваты вы или игра?