Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam

Топ прошлой недели

  • Oskanov Oskanov 8 постов
  • alekseyJHL alekseyJHL 6 постов
  • XpyMy XpyMy 1 пост
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Новости Пикабу Помощь Кодекс Пикабу Реклама О компании
Команда Пикабу Награды Контакты О проекте Зал славы
Промокоды Скидки Работа Курсы Блоги
Купоны Biggeek Купоны AliExpress Купоны М.Видео Купоны YandexTravel Купоны Lamoda
Мобильное приложение

Gms2

9 постов сначала свежее
8
GrimmIronwill
GrimmIronwill
2 года назад

Механики для разбора. (GMS2)⁠⁠

Доброго времени суток.
Хочу спросить у сообщества, разборы каких игровых механик или игр в целом они хотели бы видеть. Если есть идея - прошу в комментарии, буду рад.

На данный момент лежат материалы по RTS на базе Дюны и потихоньку разрабатывается RPG, будут посты с объяснением некоторых механик из них.

Пост без рейтинга.

[моё] Без рейтинга Разработка Gamedev Программирование Gms2 Gamemaker Studio 2 Game maker Инди игра Текст
8
16
supernova63
5 лет назад
Лига Разработчиков Видеоигр

Global Space. Дневник разработки 9⁠⁠

Предыдущая часть - Global Space. Дневник разработки 8


Приветствую всех! Вот и настало время написать о ходе разработки, так как по моему я уже доделал сам скелет игры. Останется только нарастить мышцы, а затем и кожу )

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

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

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

Второе это поменялись скины, пока их 2, нейтральный корабль (ни принадлежащий ни одной из гильдий) и скин гильдии торговцев.

На скринах ниже, корабли торговцев и твой соответственно.

Global Space. Дневник разработки 9 Игры, Gamedev, Компьютерные игры, Разработка, Game maker studio 2, Gms2, Длиннопост
Global Space. Дневник разработки 9 Игры, Gamedev, Компьютерные игры, Разработка, Game maker studio 2, Gms2, Длиннопост

В бою теперь можно управлять, правой клавишей ставиться цель полета.

Global Space. Дневник разработки 9 Игры, Gamedev, Компьютерные игры, Разработка, Game maker studio 2, Gms2, Длиннопост

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

В модулях стал рисоваться груз, размер ящиков зависит от количества груза.

Перед боем сохраняется состояние системы. Завершение боя происходит если - нет не одного мостика ИЛИ нет не одного двигателя ИЛИ нет не одного реактора ИЛИ погиб весь экипаж.

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

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

Пару скринов напоследок.

Global Space. Дневник разработки 9 Игры, Gamedev, Компьютерные игры, Разработка, Game maker studio 2, Gms2, Длиннопост
Global Space. Дневник разработки 9 Игры, Gamedev, Компьютерные игры, Разработка, Game maker studio 2, Gms2, Длиннопост

На этом пока все! Всех мужиков с наступающим праздником!

Прошу строго не судить, так как это СЫРАЯ альфа, многое будет доделано, переделано, удалено/изменено и тд и тп!

Ссылки на альфу, GameDev и наш канал в описании.

Показать полностью 5
[моё] Игры Gamedev Компьютерные игры Разработка Game maker studio 2 Gms2 Длиннопост
10
7
supernova63
5 лет назад
Лига Разработчиков Видеоигр

Global Space. Дневник разработки 8⁠⁠

Предыдущая часть - Global Space. Дневник разработки 7


Всем доброго пятничного дня! Наконец то я выкладываю сюда новость о ходе разработки игры.

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

Но время пришло я и продолжил активную разработку. У нас снова хорошие новости в а нашей команде пополнение, мой старый знакомый геймдиз! Так что я думаю и надеюсь игра будет меняться к лучшему! Всего в команде в данный момент: я - программист, художник, геймдиз и музыкант.


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


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

Global Space. Дневник разработки 8 Игры, Gamedev, Компьютерные игры, Разработка, Game maker studio 2, Gms2, Длиннопост
Global Space. Дневник разработки 8 Игры, Gamedev, Компьютерные игры, Разработка, Game maker studio 2, Gms2, Длиннопост

Добавлен первый бот (пиратский кораблик), но он пока полностью без контрольный, можно выйти с ним в бой, отметив его целью и долетев до него. Так же работает завершение боя при следующих условиях: не найден не один двигатель ИЛИ не найден не один мостик ИЛИ не найден не один реактор. Данные пока не сохраняются! То есть после боя тебя перекинет на карту и ты и пират окажетесь там где были, то есть загрузятся первоначальные данные из файла, позже сделаю обновление данных в файле, разграбление вещей с разбитого корабля и его уничтожение.


И так пока это все, прошу строго не судить, так как это пока СЫРАЯ альфа!

Ссылки на скачку, GameDev и наш дискорд канал в коментариях!

Всем добра!

Показать полностью 2
[моё] Игры Gamedev Компьютерные игры Разработка Game maker studio 2 Gms2 Длиннопост
3
13
supernova63
5 лет назад
Лига Разработчиков Видеоигр

Global Space. Дневник разработки 7⁠⁠

Предыдущая часть - Global Space. Дневник разработки 6


Всем привет и хорошего предновогоднего настроения! Так же всех поздравляю с наступающим 2020 годом!

Итак, какие у нас новости, за прошедшее время, ну во первых у нас появился Дискорд канал, ссылка будет в коментах, так же появился человек желающий помочь со звуковым оформлением! Так что наша команда потихоньку растет.

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

Увеличено число для минимального масштаба, и кораблик в бою можно детально рассмотреть.

Заменены спрайты взрывов и их теперь по 4 маленьких и 4 больших, выбирается каждый раз случайно, выглядит куда лучше!

Global Space. Дневник разработки 7 Игры, Gamedev, Компьютерные игры, Разработка, Game maker studio 2, Gms2, Длиннопост

Так же начата работа над первой игровой системой планет, это - солнечная система, сама система имеет 9 планет, у нас Плутон это планета и он представляет все карликовые планеты за Нептуном! Вообщем одной карликовой планетой - Плутон, мы решили представить все карликовые планеты, так будет проще иначе получается слишком много объектов в системе. Тоже самое и с астероидами, решили сделать скопления и назвать их именами самых крупных астероидов и то не всех!

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

Global Space. Дневник разработки 7 Игры, Gamedev, Компьютерные игры, Разработка, Game maker studio 2, Gms2, Длиннопост

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

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

Так же про скорость, я ввел много дополнительных переменных и массивов, у каждого модуля и части брони теперь есть вес, а так же может быть грузовое место,

например у мостика грузовое место 500кг, для ресурсов - еда и вода(в игре это будет просто 500кг жизненных ресурсов), так же 100кг в ионном реакторе для ионного

газа, ионный газ расходуется для выработки энергии в ионном реакторе. И так наш первый рабочий кораблик имеет массу пустого - 35т, с грузом - 35,6т. У каждого типа двигателя имеется своя тяга, на основе тяги и массы рассчитывается максимальная скорость корабля. Да так же еще сделал учет повреждения, то есть масса падает при каждой степени повреждения на 10%, а тяга двигателя на 20%, с учетом что 4 и 5ая степень повреждения двигателя тяга - 0. Причем учитывается каждая часть брони и каждый модуль!

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

Еще раз - Всех с наступающим, хорошего настроения, желаю Вам достичь всех намеченных целей в новом году!

Показать полностью 2
[моё] Игры Gamedev Компьютерные игры Разработка Game maker studio 2 Gms2 Длиннопост
7
RanaeEst
RanaeEst
5 лет назад

Joker: The Game⁠⁠

Случился сегодня такой разговор:

Joker: The Game Инди игра, Джокер, Gms2, Игры, Gamedev, Pixel Art

#comment_154209603

И вот что из этого вышло. Настоящий инди-раннер (ну, скорее "не спеша топтамбер") про Джокера за два часа.

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

https://drive.google.com/open?id=1PCCw3Hfcq78S_mTogoEjDSJCTK...

Управление стрелками, R - рестарт.

Музыка отсюда:

https://www.youtube.com/watch?v=-stCzMGSZ6A

Joker: The Game Инди игра, Джокер, Gms2, Игры, Gamedev, Pixel Art
Показать полностью 1
[моё] Инди игра Джокер Gms2 Игры Gamedev Pixel Art
8
67
MrMouseSE
6 лет назад
Лига Разработчиков Видеоигр

Шейдер отражений⁠⁠

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

Шейдер отражений Gms2, VFX, Компьютерная графика, Gamedev, Гифка, Длиннопост

Вкратце: сцена с "окружением", камера 360 генерит кубмапу, которая применяется в качестве отражений. На объекте дифуз + карта света + спекуляр по вертекс-колору (в сколах) + карта глянца ( в зависимости от неё отражения блюрятся). Ну и немношко ползунков для регулировки пятна спекуляра, силы лайтмапы, максимальная степень размытия.

Шейдер отражений Gms2, VFX, Компьютерная графика, Gamedev, Гифка, Длиннопост

Дальше будет многабукф из кода. А то мало ли фотошоп...

Шейдер отражений Gms2, VFX, Компьютерная графика, Gamedev, Гифка, Длиннопост

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

Ну и зачем это всё:

Надеюсь на помощь лиги. Решил устроить самочеленж. Все желающие могут писать в комментах какое-то задание, связанное с игростроем, а я постараюсь его выполнить. Себе для скиллапа, публике на потеху. (Кроме, пожалуй, музыки... музыку я не умею)

Показать полностью 2
[моё] Gms2 VFX Компьютерная графика Gamedev Гифка Длиннопост
31
7
MrMouseSE
7 лет назад
Лига Разработчиков Видеоигр

Базовые FX на GMS2. Сложные эффекты⁠⁠

Базовые FX на GMS2. Сложные эффекты VFX, Gms2, Gamedev, Гифка, Длиннопост

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

Погнали!

Базовые FX на GMS2. Сложные эффекты VFX, Gms2, Gamedev, Гифка, Длиннопост

Молнии, ага. Их уже не сделать с помощью системы частиц. Это не массив объектов, это цельный, протяженный, хаотично-упорядоченный объект, который отрисовывается, зачастую сразу полностью (ну в реале типа так проиходит по ощущениям).

Базовые FX на GMS2. Сложные эффекты VFX, Gms2, Gamedev, Гифка, Длиннопост

Я не претендую на труЪ истину, я просто опишу задачу и вариант решения, который пришел в голову мне.

Итак имеем:

-яркий протяженный объект, который меняет свою внутреннюю структуру

для  того, чтобы отрисовать подобную дичь - можно воспользоваться массивом точек, создав примитив:

vertex_format_begin();
vertex_format_add_position();
vertex_format_add_colour();
vertex_format_add_textcoord();
v_format = vertex_format_end();
v_buff = vertex_create_buffer();
vertex_begin(v_buff, v_format);

вот так он выглядит в общем виде. В этот примитив вносятся данные по каждому вертексу, а пользователей сможет определить после каким макаром отрисовывать этот примитив (как квадрат или круг, только не предустановленный, а нагенеренный вами же).

функция отрисовки выглядит так:

vertex_submit(buff, pr_trianglelist, sprite_get_texture(sprite_index));

тут юзер сам решает что (buff), каким макаром (pr_trianglelist) и с использованием чего (prite_index) отрисовывать. Т.е. берётся массив точек из buff, и по типу построения pr_trianglelist(разрозненные треугольники) отрисовывается.

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

Базовые FX на GMS2. Сложные эффекты VFX, Gms2, Gamedev, Гифка, Длиннопост

чтобы сформировать саму загогулину, приходится мотать вертекс буфер по циклу, в каждой итерации прибавляя к текущему положению с помощью lengthdir_x/lengthdir_y значения для точек следующего шага. Честно говоря, тут я жоско втупил и полез даже на форум спрашивать совета, однако первый же ответ спровоцировал меня перепроверить свои вычисления и я нашел ошибку со знаками. Зря людей тревожил.

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

Базовые FX на GMS2. Сложные эффекты VFX, Gms2, Gamedev, Гифка, Длиннопост

в принципе, на этом хитрости заканчиваются(нет). И можно получить "молнию", распространяющуюся из точки в направлении на определённую дистанцию.

Базовые FX на GMS2. Сложные эффекты VFX, Gms2, Gamedev, Гифка, Длиннопост

Но что делать с монохромным зигзагом? Тут как раз пригодятся шейдеры. Совсем простой frag-шейдер. Вертексный тут нам вообще не нужно трогать.

varying vec2 v_vTexcoord;
uniform float cur_alpha;
uniform float col_r;
uniform float col_g;
uniform float col_b;
void main()
{
vec4 col = vec4 (col_r,col_g,col_b,0.0);
col.r *= (1.0-(abs((v_vTexcoord.x-0.5)*2.0)));
col.g *= (1.0-(abs((v_vTexcoord.x-0.5)*2.0)));
col.b *= (1.0-(abs((v_vTexcoord.x-0.5)*2.0)));
gl_FragColor = col;
gl_FragColor.a = (1.0-sqrt(abs(v_vTexcoord.x-0.5)*2.0)) * cur_alpha;
}

Он просто принимает из объекта(функции, откуда укажит пользователь) значения для цветов по ргб каналам, значение для корректировки альфы и всё это обсчитывает, основываясь на значениях текстурных координат. Тут надо пояснить, что текстурные координаты берутся из точки и я при формировании сам устанавливаю их для левых 0, для правых 1 (ну или наоборот, кто их знает). А в шейдере получаю градиент от границы объекта к центру. Градиент для цвета линейный. Градиент для шейдера - через квадратный корень. Кому интересно разница вот в чем:

Базовые FX на GMS2. Сложные эффекты VFX, Gms2, Gamedev, Гифка, Длиннопост

т.е. для корня в моём случае будет "острее" серединка, т.е. место где прозрачности не будет, потом резкий спад и плавное затухание. Этакая аура вокруг центральной части. Модификатор cur_alpha я тут использовал для реализации мерцания всей молнии... чтобы она просто не выглядела статичной, а "жила", как любят говорить всякие художники...

Шейдер вызывается из объекта. Вот функция отрисовки конечного результата:

shader_set(shader_lightning)

//color settings to shader

shader_col_r = shader_get_uniform(shader_lightning, "col_r");

shader_col_b = shader_get_uniform(shader_lightning, "col_b");

shader_col_g = shader_get_uniform(shader_lightning, "col_g");

shader_set_uniform_f(shader_col_r,0.6)

shader_set_uniform_f(shader_col_g,0.6)

shader_set_uniform_f(shader_col_b,2)

//alpha settings to shader

shader_alpha = shader_get_uniform(shader_lightning, "cur_alpha");

shader_set_uniform_f(shader_alpha,random_range(0.8,1.2))

for (var i=0;i < ds_list_size(vb);i++)

{

cvb = ds_list_find_value(vb,i)

//draw call

vertex_submit(cvb,pr_trianglestrip,sprite_get_texture(sprite1,0))

//draw call to moar HOT effect

gpu_set_blendmode(bm_add)

vertex_submit(cvb,pr_trianglestrip,sprite_get_texture(sprite1,0))

gpu_set_blendmode(bm_normal)

}

shader_reset()

Что здесь происходит:

цикл прокатывается по всему массиву (vb, в моём случае). И отрисовывает все вертекс буферы, которые в нём лежат (а в него приходится складывать по частям кажду "веточку", потому что если их сцепить в один массив - то между концами потянуться перемычки, которые нам не нужны). Шейдер устанавливается на нужный, в него впихиваются все переменные (только сперва их нужно вызвать), устанавливается по вкусу. Внимательный зритель уже заметил, что в col_b стоит 2, что как бы вызывает сомнения в адекватности автора... на первый взгляд. Но, на самом деле, нет. Этот параметр реально будет работать за пределами единицы, ввиду того, что у нас для расчёта цвета стоит формула с линейным затуханием. Дальше сама отрисовка и тут приходится костылить. Можно закостылить в шейдере, по идее, но мне лень, так как есть более простой способ. Устанавливаем gpu_set_blendmode(bm_add) (режим смешивания для видеокарты) и отрисовывает этот же примитив поверх предыдущего. Add - смешивает цвета вашего объекта с цветами фона под ним. Поэтому нельзя просто так взять и... нужна подложка, без неё всё будет не так красочно.

Базовые FX на GMS2. Сложные эффекты VFX, Gms2, Gamedev, Гифка, Длиннопост

Ну и "на фоне" (рандомный картинка из интернетофф)

Базовые FX на GMS2. Сложные эффекты VFX, Gms2, Gamedev, Гифка, Длиннопост

ну и куда же без оружия. LightningGun в студию:

Базовые FX на GMS2. Сложные эффекты VFX, Gms2, Gamedev, Гифка, Длиннопост

Уж простите за непрезентабельную иконку "игрока" ) Думаю всем понятно, что она тут не главное. Молния выполнена по тому же принципу, с одной лишь разницей:

lightning_direction = (prev_lightning_dir+point_direction(start_pos_x,start_pos_y,end_pos_x,end_pos_y))/2+random_range((i-steps),(abs(i-steps)))

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

З.ы. вопросы в комменты, ссылка на проект, для личного ковыряния: https://yadi.sk/d/HtxPPn8R3R29uU

Показать полностью 9
[моё] VFX Gms2 Gamedev Гифка Длиннопост
12
6
MrMouseSE
7 лет назад
Лига Разработчиков Видеоигр

Базовые FX на GMS2. Составные эффекты⁠⁠

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

Базовые FX на GMS2. Составные эффекты VFX, Gms2, Gamedev, Гифка, Длиннопост

Первое, что хочется сказать: @AZAMATIKA, в прошлом посте давал ссылку на редактор партиклов для GMS2. Лично у меня противоречивые чувства от этой штуки.

Плюсы очевидны: наглядность, возможность редактировать "налету".

Из минусов: чисто гуишные решения под винду, например несколько напрягают (хотя бы то, что параметры нельзя гонять мышкой, только вбивать руками. Есть ощущение, что под огрызком такой проблемы нет, но я не ем яблоки).

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

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

Погнали!

Пара слов теории.

собственно "кольцо огня" из первого поста:

// объявление системы
ring = part_system_create()
// объявление и свойства частиц
ring_part = part_type_create()
part_type_shape(ring_part, pt_shape_ring)
part_type_color_hsv(ring_part, 4,14,80,110,220,250)
part_type_life(ring_part,10,11)
part_type_alpha2(ring_part,0.4,0)
part_type_size(ring_part,0.3,0.3,0.51,0)
part_type_blend(ring_part,0)
//объявление и свойства эммитера
ring_emit = part_emitter_create(ring)
part_emitter_region(ring, ring_emit, x,x,y,y,ps_shape_rectangle,ps_distr_gaussian)
part_emitter_burst(ring, ring_emit, ring_part, 1)

вкратце: объявляется система частиц (это абстракция управления), объявляется частица и её параметры (это непосредственно то, что можно будет потрогать глазами), объявляется эммитер и его параметры (это управляющая сущность, которая непосредственно спамит сущностями партиклов).

Отдельно про прикладное использование. Например: если привязать part_emitter_region к мышке (в поля x и y вписать mouse_x и mouse_y) то эффект всегда будет рождаться под курсором. А если х и у перепутать - то получите зеркалирование относительно главной диагонали. Так, например, можно реализовать какую-нибудь вундервафлю, которой игрок указывает куда упасть.

Базовые FX на GMS2. Составные эффекты VFX, Gms2, Gamedev, Гифка, Длиннопост

В первой части был эффект "взрыва" и "кольца огня". Они, хоть и выглядят более менее узнаваемо, но явно недостаточно впечатляют. Ведь такие штуки как взрыв имеют кучу сопутствующих событий. Взрывная волна, осколки, дым, да мало ли. И как раз тут встает вопрос о составных эффектах. Надо всё смешать в кучу и ещё накидать!

Базовые FX на GMS2. Составные эффекты VFX, Gms2, Gamedev, Гифка, Длиннопост

разбираемся: разлетающиеся "осколки", взрывная волна, огонь "бушует" внутри кольца ну и само кольцо. Итого 5 штук:

if mouse_check_button_released(mb_left)
{
scr_ring() //кольцо взрывной волны
scr_firering() //кольцо "огня"
scr_turbulence() //беснующийся огоньв нутри кольца
scr_ringsmoke() //дым после взрыва
scr_smallparts() // осколки
}

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

Базовые FX на GMS2. Составные эффекты VFX, Gms2, Gamedev, Гифка, Длиннопост

Собственно, собрав всё это в кучу и получаем то, что на гифке вначале. Этот взрыв гораздо интереснее и красочнее, радует глаз.

Составные эффекты можно реализовывать по-разному, в зависимости от задачи, вот, например две разных реализации огнемётов, вращающихся за курсором:

Базовые FX на GMS2. Составные эффекты VFX, Gms2, Gamedev, Гифка, Длиннопост

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

direction = point_direction(x,y,mouse_x,mouse_y)
flame = part_system_create()
smoke_part = part_type_create()
part_type_shape(smoke_part, pt_shape_explosion)
part_type_color1(smoke_part, c_dkgray)
part_type_life(smoke_part,22,28)
part_type_alpha3(smoke_part,0.0,0.45,0)
part_type_size(smoke_part,0.0,0.6,0.01,0.2)
part_type_speed(smoke_part,10,11,0,2)
part_type_direction(smoke_part,direction-18,direction+18,0,-1.5)
part_type_blend(smoke_part,0)
part_type_orientation(smoke_part,-14,14,4,-1,0.5)


flame_part = part_type_create()
part_type_shape(flame_part, pt_shape_explosion)
part_type_color_hsv(flame_part, 4,15, 230,255,240,255)
part_type_life(flame_part,18,22)
part_type_alpha3(flame_part,0.0,0.6,0)
part_type_size(flame_part,0.3,0.8,-0.02,0.2)
part_type_speed(flame_part,10,11,0,2)
part_type_direction(flame_part,direction-15,direction+15,0,-1)
part_type_blend(flame_part,1)
part_type_orientation(flame_part,-14,14,4,-1,0.5)


flame_emit = part_emitter_create(flame)
part_emitter_region(flame, flame_emit, x-12,x+12,y-12,y+12,ps_shape_rectangle,ps_distr_gaussian)
part_emitter_burst(flame, flame_emit, smoke_part, 18)
part_emitter_burst(flame, flame_emit, flame_part, 18)

по сути - это два разных эффекта (дым и огонь), один эмиттер рождает враз и то и другое.

А правый исповедует несколько иную логику:

direction = point_direction(x,y,mouse_x,mouse_y)
variation = random_range(0,100)

flame = part_system_create()

flame_part = part_type_create()
part_type_shape(flame_part, pt_shape_explosion)
if variation > 50
{
part_type_color1(flame_part, c_dkgray)
part_type_life(flame_part,22,28)
part_type_alpha3(flame_part,0.0,0.55,0)
part_type_size(flame_part,0.0,0.6,0.01,0.2)
part_type_speed(flame_part,12,13,-0.3,2)
part_type_direction(flame_part,direction-18,direction+18,0,-1.5)
part_type_blend(flame_part,0)
part_type_orientation(flame_part,-14,14,4,-1,0.5)
}
else
{
part_type_color_hsv(flame_part, 4,15, 230,255,240,255)
part_type_life(flame_part,18,22)
part_type_alpha3(flame_part,0.0,0.6,0)
part_type_size(flame_part,0.3,0.8,-0.02,0.2)
part_type_speed(flame_part,8,11,0,2)
part_type_direction(flame_part,direction-15,direction+15,0,-1)
part_type_blend(flame_part,true)
part_type_orientation(flame_part,-14,14,4,-1,0.5)
}
flame_emit = part_emitter_create(flame)
part_emitter_region(flame, flame_emit, x-12,x+12,y-12,y+12,ps_shape_rectangle,ps_distr_gaussian)
part_emitter_burst(flame, flame_emit, flame_part, 18)

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

Ещё один тип составных эффектов - те, что идут каскадом, вызывая после себя другие эффекты.

Базовые FX на GMS2. Составные эффекты VFX, Gms2, Gamedev, Гифка, Длиннопост

Конкретно здесь это реализовано с помощью параметра part_type_death(). Параметру задается на первом месте частица, которая погибает, потом кол-во рождаемых частиц и в-третьих - тип рождаемых частиц. Соответственно, когда time частицы истекает - она на месте смерте порождает несколько новых частиц, того типа, который будет указан. Такие штуки хорошо использовать для различных атакующих сущностей, типа файерболов, ракет, да что душе угодно, конечно же. Цепная реакция, как она есть, мать её.

Базовые FX на GMS2. Составные эффекты VFX, Gms2, Gamedev, Гифка, Длиннопост

Ну вот, собственно и всё, обзорно по составным эффектам. Ну и фейерверку вам за пройденный уровень! :D

Базовые FX на GMS2. Составные эффекты VFX, Gms2, Gamedev, Гифка, Длиннопост
Показать полностью 7
[моё] VFX Gms2 Gamedev Гифка Длиннопост
8
Посты не найдены
О Нас
О Пикабу
Контакты
Реклама
Сообщить об ошибке
Сообщить о нарушении законодательства
Отзывы и предложения
Новости Пикабу
RSS
Информация
Помощь
Кодекс Пикабу
Награды
Команда Пикабу
Бан-лист
Конфиденциальность
Правила соцсети
О рекомендациях
Наши проекты
Блоги
Работа
Промокоды
Игры
Скидки
Курсы
Зал славы
Mobile
Мобильное приложение
Партнёры
Промокоды Biggeek
Промокоды Маркет Деливери
Промокоды Яндекс Путешествия
Промокоды М.Видео
Промокоды в Ленте Онлайн
Промокоды Тефаль
Промокоды Сбермаркет
Промокоды Спортмастер
Постила
Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии