Пилю новые эффекты взрывов в свой космосим ч.1: Как вам промежуточный результат?

Пилю новые эффекты взрывов в свой космосим ч.1: Как вам промежуточный результат?

Давно хотел в своем SPACERIFT добраться до детализации эффекта, уничтожения корабля. Раньше спавнил просто одинаковые взрывы-вспышки, но когда в проекте стали появляться корабли разного размера и дизайна, захотелось, во первых, упростить себе работу - чтобы VFX генерировался индивидуально под каждый корабль, а во вторых - добиться того, чтобы можно было остановить игру на паузу, и, разглядывая взрыв, не всплакнуть от того, какой он мыльный и вообще не взрыв на самом деле. (этот аспект пока прорабатывается)

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

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

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

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

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

Ведь я уже давно выяснил что любая фича, которая требует траты более чем одной минуты при её настройке во время введения контента в игру - приводит к тому что либо я не ввожу контент (из за сложности и кучи нюансов), либо ввожу очень долго и результат получается "на скорую руку". При одиночной работе над проектом, важно экономить своё время.

После того как алгоритм был готов, а специальный скрипт начал делать всю работу за меня - я пошел дальше и приступил к подготовке основы для создания самих VFX. И первым делом мне нужно было отдельно сгенерировать сетку в точке среза, чтобы использовать её как основу для создания эффектов разгерметизации. В последствии отсюда будут вылетать внутренние части корабля, пламя, дым и тд (да, мне похрен на физику космоса в этом эффекте)

В целом, было не сложно, потратил на всю историю один день работы
В целом, было не сложно, потратил на всю историю один день работы

Ну а дальше - дело за малым, постараться применить заготовленные элементы для получения эффекта взрыва. Я использую стандартную ParticleSystem в Unity и написал дополнительную обёртку для частиц, которая в зависимости от размеров корабля и самих срезов, генерит частицы нужных размеров, нужного количества, необходимой плотности.

В VFX я практикую такой же подход как и во всём - минимальное количество однотипных префабов для однотипных задач. То есть каждый VFX по своей природе - сам себе система. Я указываю что я хочу взорвать - а эффект подстраивается под вводные данные (сетка, размер, скорость движения, и тд). По такому же принципу я когда-то впервые сделал взрывы модульных станций, и мне понравился этот подход.

Пилю новые эффекты взрывов в свой космосим ч.1: Как вам промежуточный результат?

Поколдовав еще вечерок, картина начала вырисовываться сама собой. Процесс еще далеко не завершен, пока что я сделал примерно 40% от желаемого результата, но когда я применил всё что сделал - приятно удивился. Даже с посредственными текстурами частиц и незамысловатыми преднастройками, эффект работает как мне хочется просто потому что он нужной формы, в правильном месте.

Результат работы на текущее время

Правда, во всем этом приятном процессе я не учёл один неприятный нюанс. У игрока не случается таких обстоятельств, чтобы разглядеть так близко и подробно взрыв. (за исключением момента смерти самого игрока, но тут не до красивых эффектов). Пока что на этом этапе я остановился и планирую подумать над тем, как сделать импакт от этого эффекта сильнее, чтобы разбирать пиратов было приятно. Есть мимолетная идея увеличивать маленькие корабли при взрыве, что, в целом, может быть даже незаметно невооруженному взгляду.

Кстати, только после появления частиц огня, я осознал что решил еще одну задачу - огонь отлично маскирует идеально ровную плоскость среза :)

На этом я пока остановлюсь - если ты дочитал весь текст, то знай - ты крутой!
Если вам интересно, то еще я веду свой телеграмм канал, а игра есть в стиме и вкплей

3333
1010
37 комментариев

КОСМОСЕ ОГОНЬ НЕ МОЖЕТ ГОРЕТЬ

7

да, мне похрен на физику космоса в этом эффекте

7

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

1

Причина тряски?

1

Конечно, иди скажи Лукасу, Абрамсу, Кемерану.

1

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

5

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

1