Сделал боссов, которых можно разобрать на куски
Делаю соло ритм-рогалик AsterMaster, и чаще всего в комментариях спрашивают одно: как это боссы так разваливаются. Рассказываю.
Корпус босса — не меш. Это облако примерно из 6000 гауссовых сплатов: та же технология, которой сканируют в 3D реальные комнаты, только я учу её по рендерам из Blender (21 секунда на модель) и использую совсем не по назначению. Каждый сплат — отдельная частица со своей позицией и цветом. По сути, у меня система частиц в форме босса, и её можно мять, дырявить и собирать обратно прямо в шейдере.
Что из этого выросло:
- Попадание не стирает сплат, а вдавливает его внутрь — на корпусе остаётся тёмный кратер, а не дырка в фон.
- Бьёшь в ту же точку — дыра углубляется слоями: под обшивкой каркас, глубже тлеющее нутро. Я называю это луковицей.
- Если вокруг куска всё выбили, он теряет опору и отваливается целиком, кувыркаясь в полёте.
- Подобрал ремонт — дыры зарастают, каждая с того места, где остановилась.
Самый полезный урок дал плейтест: первая версия разлеталась мелким конфетти, и мне честно сказали — «разрушения читаются кашей». Пришлось резать корпус на куски размером с плиту: оказалось, кусок читается глазом только от ~20 пикселей, а босс в игре занимает всего около 110. Теперь пушка трескает обшивку и выбивает чипы, миномёт выворачивает воронку плитами, а рейлган прошивает канал насквозь.
Модели у меня генеративные — рисовать я не умею, — и сплаты стали способом сделать из них что-то своё: в билде полмегабайта вместо 25–55 МБ на модель, и каждая ломается по-своему.
Демо бесплатное, 19–26 октября игра на Steam Next Fest, релиз 17 ноября:
👉 store.steampowered.com/app/5095060
Вопрос к вам: что в бою читается лучше — полоска HP или сам корпус? У меня есть и то, и другое, и я до сих пор спорю сам с собой.
Подробно про технику — как сплаты тренируются по рендерам из Blender, пакуются в полмегабайта и ломаются на куски — расписал на Хабре: «Гауссовы сплаты как система частиц: разрушаемые корпуса для рогалика на Godot».