Базовые FX на GMS2
Натолкнул меня очередной пост в лиге на мысль, что никто ничего подобного не делал, а, судя по опыту, в целом тема востребована. И решил я накидать простые, распространённые эффекты для движка, вдруг кому-то надо, а руки не доходят посмотреть, ну и для совсем уж начинающих для ковыряния.
И небольшой тутор для самых юных с парой фишек:
это коТ системы частиц. Параметры эммитера, которые задействованы - область применения и принцип рождения. Тут конкретно - разово рождается 12 штук частиц по имени flame_part.
Сама система должна быть создана (первая строчка), иначе чуда не будет.
Самое интересное, конечно же, настройки частиц. По порядку:
- shape - картинка, которая будет использоваться как частица
- color_rgb - цвет партиклов в ргб диапазоне... ни добавить, ни отнять.
- life - время жизни
- apha3 - какой-то местный кастрат альфа/пер тайм. Т.е. отрезок жизни частицы делится на трое и катает альфу от первого ко второму, а затем к третьему значению. (У меня 0.0 и 0 оба варианта допустимы, но через точку писать не стоит, конечно же, дабы не захламлять, не пишите так)
- size - размер частицы
- speed - скорость
- direction - направление, по которому будет применяться параметр скорости
- blend - режим смешивания аддитив (может быть включен и нет)
- orientation - поворот частицы во время жизни.
Настройки есть ещё, но общий принцип работы всё равно для всех примерно один.
И фишечки: если хочется создать эффект, который будет выглядеть "натурально" - надо вносить хаос. Это основной принцип. Чем больше непохожесть партиклов тем больше деталей будет в эффекте.
Например:
Время жизни частицы это не только время пока её видно, он влияет на всё: если ты задашь время жизни меньше - частица раньше поменяет цвет/альфу/скейл/разовьет меньшую(большую) скорость. Поэтому - время жизни - влияет сразу на дофига параметров.
Альфа - так или иначе все частицы рождаются в какой-то момент и в какой-то исчезают. Чем плавнее частицы переходят в ноль - тем более незаметно это исчезновение. Поэтому на какие-то плавные эффекты, типа взрывов, огня - альфа должна уходить в ноль. Не стоит недооценивать третью точку в альфа3. Эффект, альфа3(1,1,0) - будет дольше виден, чем альфа2(1,0) и наоборот. А если ваш эффект рождается из точки - то альфа3(0,1,0) - как раз то, что нужно.
Размер - практически 90% случаев - частицы будут разных размеров, более того, во всех естественных эффектах (ну кроме молнии), эволюция частиц связана с размерами. Тот же огонь, например, если превращается в дым, то размер частиц растёт, а скорость падает. Если в дым частицы не эволюционируют - то размер наоборот сходит на нет. Поэтому не скупитесь на хаос в размерах, а так же не забывайте про их эволюции.
Скорость - скорость зависит от многих факторов (трения всякие, соседние объекты, соударения и пр.), поэтому она также всегда будет хаотична. В зависимости от общего типа явления - это либо сонаправленный поток (огнемёт), в котором все друг друга подталкивают, а "отстающие" выпихиваются за пределы общей струи, либо какое-то хаотичное явление, типа взрыва, в котором скорость отдельно взятой частицы может быть любой. В зависимости от общей концепции и надо определять диапазон скоростей, но разница должна быть всегда... хотя бы на пару процентов.
Поворот - поворот добавит естественности, но может и наоборот сделать всё говном. Крайне важно не переборщить, иногда для хорошего эффекта хватает пол градуса в секунду, а иногда и бешенное вращение будет збс!
И ещё пару слов про параметры. Почти во всех параметрах частицы есть значение эволюции (incr) и хаотичности (wiggle). Эволюция более менее понятна - чем больше плюс - тем быстрее приращение, в минус - тоже, но с обратным знаком. А вот wiggle - вещь более специальная и не везде подойдёт. Например для реактивной струи огнемёта нелохо завиглить размер - это придаст потоку хаотичной турбулетности (на самом деле нет, но выглядеть будет похоже). Или вам нужны взлетающие мыльные пузыри (тут виглом можно создать эффект лопающихся, во время подъема шариков). А в скорости, например, wiggle позволит создать эффект пробегающих по скоплению эффекта огоньков. Применений полно, всё не перечислить. Главное общая концепция - чем больше хаоса - тем вероятнее вигл надо использовать.
Ну и не расчитывайте "сесть и сделать". Более менее внятные картинки получаются всегда раза с 50ого. Настроил, посмотрел... посмотрел и настроил... Главное, во время отладки, не менять все параметры враз, а вычленять какие-то конкретные и подправлять их, потом брать следующий, и т.д. и т.п.
Ещё совет: не бойтесь переборщить с "тяжестью" эффекта. Сперва надо определиться с концепцией. И только когда будет какой-то внешний вид - следует приниматься за оптимизацию. Частенько также бывает, что лишнее кол-во частиц только портит картинку и тут придётся искать, перебирать...
З.ы. конкретные листинги выкладывать не буду, чтоб не захламлять, если кому надо - обращайтесь в комментах.
Лига Разработчиков Видеоигр
6.6K постов22.1K подписчиков
Правила сообщества
ОБЩИЕ ПРАВИЛА:
- Уважайте чужой труд и используйте конструктивную критику
- Не занимайтесь саморекламой, пишите качественные и интересные посты
- Никакой политики
СТОИТ ПУБЛИКОВАТЬ:
- Посты о Вашей игре с историей её разработки и описанием полученного опыта
- Обучающие материалы, туториалы
- Интервью с опытными разработчиками
- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе
НЕ СТОИТ ПУБЛИКОВАТЬ:
- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры
- Посты, единственная цель которых - набор команды для разработки игры
- Посты, не относящиеся к тематике сообщества
Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.
ЗАПРЕЩЕНО:
- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции
- Выдавать чужой труд за свой
Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.
О РАЗМЕЩЕНИИ ССЫЛОК:
Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:
- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества
- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз
- Cсылка размещается в формате: "Страница игры в Steam: URL"