Mainu Studio

Разработка Banana Game | Форма, физика и устойчивость

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

Почему одного круга оказалось мало

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

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

Настоящее изображение банана из игры. Пространство внутри дуги тоже участвует в механике.
Настоящее изображение банана из игры. Пространство внутри дуги тоже участвует в механике.

Что проявилось под весом горки

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

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

Автоматическое соединение требует единого события

В прототипе игрок сам выбирал соприкасающуюся группу. Теперь допустимый контакт сразу вызывает соединение. Повторные сообщения о контакте и несколько рецептов за одно движение не должны расходовать один фрукт дважды.

Использованные плоды отключаются сразу, а не после анимации. Очки, жетоны, звук, изображение и физическая очистка привязаны к одному событию. Это предотвращает невидимые остаточные коллайдеры. Сначала проверяется целая особая группа, иначе сразу пара; объяснение правил учитывает этот порядок.

Одно поле 720×1280 для всех платформ

У Web, Android и Windows разные доступные области, безопасные отступы, фильтры и ввод. Отдельные раскладки раньше приводили к кнопкам, которые смещались или растягивались только на одной платформе.

Теперь опорная раскладка 720×1280 масштабируется пропорционально, а свободные поля остаются снаружи. Сенсорная область может быть больше рисунка, но центр привязан к тем же координатам. Текст и предпросмотр используют общий масштаб. Ближайший сосед чёток при целых множителях, но большинство телефонов им не соответствуют: сначала согласуем относительную геометрию, затем выбираем фильтр для типа графики.

Вертикальное поле сохраняет пропорции, а не растягивается под каждую платформу.
Вертикальное поле сохраняет пропорции, а не растягивается под каждую платформу.

Производительность проверяем в трудных ситуациях

Устойчивые фрукты могут спать до нового контакта; декорации и текст не нужно пересоздавать каждый кадр. Строки рейтинга и языковые предпросмотры переиспользуются, оставляя время процессора самой горке.

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

Оставляем понятную непредсказуемость

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

ИгратьГлавная