Все термины, касающиеся частиц, выделены в тексте Жирным. Чтобы проще ориентироваться в них, рекомендуется изучить Глоссарий. Стоит отметить также, что элементы интерфейса выделены красным цветом.
ТЕОРИЯ
Прежде всего, необходимо понять суть Частиц (партиклов). Частицы служат для вывода на экран спецэффектов, сопровождающих игровое действие (взрывы, искры, молнии, фейерверки и др.).
Основное отличие частиц от обычных анимированных картинок в том, что они ведут себя непредсказуемо (элемент случайности). Но не настолько, чтобы приходилось наблюдать новые спецэффекты при каждом новом вызове. Всякий параметр частицы имеет свой диапазон, в границах которого происходит выбор случайного значения.
СЦЕНА
Сцена это поле, по которому бегают частицы. Сцене можно назначить цвет или фоновый рисунок. Сцена отрисовывается с сеткой или без (включить сетку, задать шаг сетки).
ОБЪЕКТ-ПУСТЫШКА
В Game Maker всё строится на объектах. Поэтому, если нам вдруг захотелось не париться с импортом системы частиц из редактора, мы имеем объект (кнопка создания объекта), пишем ему имя (object0 по умолчанию), назначаем ему спрайт (окно свойств объекта по двойному клику на объект), а потом уже таскаем объект по сцене.
К координатам объекта можно прикрепить любой элемент системы.
СИСТЕМА ЧАСТИЦ
Частицы в Game Maker «живут» в Системах частиц. Каждая частица, использующаяся в игре, имеет свой собственный Тип. Тип это, условно говоря, схема того, как будет выглядеть и вести себя частица на экране. Тип отличается от частицы тем, что частица это результат работы типа. В типе могут быть установлены различные вариации частиц (это и есть элемент случайности).
Типы частиц, Эмиттеры, Аттракторы, Дестроеры, Дефлекторы, Чейнджеры всегда объединены в Систему частиц.
Даже для того, чтобы на экране появился простейший тип частиц, нужна система частиц. Невозможно создать частицы без системы частиц. То есть, весь процесс создания спецэффекта начинается с создания системы частиц. Система частиц может быть привязана к определенной координате. Нужно предусмотреть привязку системы к координате объекта-пустышки (драг-н-дроп на объект). Для системы частиц также задается «глубина» (поле ввода глубины). Частицы из системы частиц с большим отрицательным значением глубины выходят на передний план. С большим положительным на задний.
Для удобства пользователя может быть создано несколько (установленное значение) частиц определенного типа (заданного) из указанной Системы частиц в любом месте (обозначенном).
В интерфейсе программы должен быть блок статистики, в котором указывается количество частиц в выбранной системе частиц. Нужна функция удаления всех частиц из выбранной системы частиц. И, как вариант, удаления всей системы.
ТИП ЧАСТИЦЫ
В окне предобзора можно кликнуть или зажать ЛКМ, извергая частицы выбранного типа. Тип описывает внешний облик и поведение частицы. Основным параметром внешнего облика частицы является её форма. Необходимо предусмотреть выбор из 15-ти встроенных в GM форм: пиксель, диск, квадрат, линия, звезда, круг, кольцо, сфера, вспышка, искра, взрыв, облако, дым, снег (берутся из пустых файлов из соот-м названием в папке программы).
Кроме стандартных форм в GM предусмотрена возможность загрузки картинки для каждого типа частицы.
Для полной реализации этой функции необходимо предусмотреть кнопку Обзор с вылезающим меню выбора файла.
1. Можно было сразу увидеть загружаемую картинку. Если она не нравится, отменить.
2. Установить картинке флаг Прокручивать ли анимацию.
3. Установить флаг, рассчитывать ли проигрывание анимации на Период жизни партикла (см. об этом ниже)
4. Выбрать, прокручивать ли анимацию, начиная не с первого кадра, а с произвольного, если картинка анимированная.
5. В дополнительных свойствах указывается количество кадров в картинке и ориджин по иксу, игреку (предусмотреть кнопку «Дополнительные свойства»).
Окно предобзора необходимо и для последующих операций с типом частицы. Т. е. желательно, чтобы при выборе вкладки Тип частицы пользователь мог получить окошко с видом частицы и всякими бегунками для неё. Там будет кнопка Обзор для загрузки своей картинки. Необходимо найти место вверху для лабела с названием картинки. По дефолту пиксель.
Для каждого типа частицы устанавливается диапазон размера. Вот он пресловутый элемент случайности! Одни частицы будут больше, другие меньше. Если оставить диапазон без изменения, все частицы из типа будут одинакового размера. Диапазон без изменения это значит, что нижняя граница размера равна верхней (вот вам и стандартный размер для всех частиц). Нужны поля выбора минимального и максимального размера создаваемых частиц из типа, увеличения (уменьшения) размера в течение 1/fps доли секунды (Шага), а также «виляния» размера. Т. е., размер может «прыгать», что создает эффект резкого увеличения/уменьшения.
Также в GM существует функция непропорционального изменения размера Частицы. Можно установить параметр X-скейла и Y-скейла.
Теперь, когда параметры размера для отдельно взятого типа частицы установлены, можно установить параметры Поворота частицы.
Устанавливается минимальный и максимальный углы поворота (0-360). Устанавливается прирост к углу в каждом Шаге, а также «виляние». По умолчанию все параметры равны 0. Кроме того, можно установить флаг, будет ли поворот Частицы соотноситься с направлением её движения. Если установить все значения по 0, а последний флаг 1, то Частица будет двигаться точно по маршруту, заданному функциями движения Частиц (см. ниже).
Частице, кроме всего прочего, может быть назначен Цвет и Блендинг. Простейший способ назначение одного цвета на весь период жизни Частицы. Можно выбрать 2-3 цвета (3 максимум), которые будут плавно переходить (интерполироваться) друг в друга в течение Периода жизни Частицы.
Для химиков предусмотрена функция получения цвета Частиц путем случайного смешивания двух цветов.
Существуют ещё две функции, которые позволяют задать диапазон, из которого будет выбираться цвет Частицы. Либо по RGB, либо по HSV. Т. е. от 0 до 255 R компонент, допустим, даст полный спектр красного. От 128 до 255 G даст половину спектра зеленого.
Помимо цвета, можно выбрать Уровень полупрозрачности (альфа-канал). Опят же, либо одно, либо 2-3 значения, которые будут интерполироваться в ходе Жизни частицы.
Здесь же должен быть предусмотрен выбор между ДВУМЯ режимами смешивания (обычным (normal) и аддитивным («linear dodge» в Photoshop)). Аддитивный режим дает эффект «свечения».
Жизнь и смерть Частиц. На экране частицы находятся определенное время. Это время мы называем Лайфтаймом частиц. По окончанию Лайфтайма частицы исчезают с экрана. Лайфтайм измеряется в Шагах.
Итак, необходимо предусмотреть следующие параметры для управления Лайфтаймом Частиц:
Диапазон Лайфтайма. По умолчанию 100 Шагов. Лучше, чтобы он устанавливался в Шагах (либо предусмотреть выбор). Скажем, от 1*fps до 3*fps. Это значит, что часть Частиц будет жить 1 секунду, другая 3 секунды. Третья 2,5 секунды.
В ходе Лайфтайма Частица может создавать Частицы другого Типа. Для этого нужно в редакторе предусмотреть ввод функций:
Установки частоты появления Частиц другого (или своего) типа. Выбирается Тип Частицы, а также Значение Шага. Значение Шага может быть отрицательным. Тогда Частицы будут создаваться ЧЕРЕЗ каждые 5 Шагов, например (в данном случае 5 это значение (-5) Шага).
Тут опять же действует случайность в заданных границах.
Следует также предусмотреть функцию выбора Типа частиц и количества Частиц, создаваемых после Смерти частицы. Отрицательное значение в количестве опять же приводит к появлению случайности.
Движение частиц. Движняковые Частицы у нас. Они двигаются, пока живут.
Для каждого Типа частиц можно установить Минимальную и Максимальную скорость. В границах скорости выбирается случайное значение. Кроме того, можно указать Прирост скорости в каждом Шаге. Отрицательное значение замедляет Частицу. И, наконец, можно указать значения «виляния» скорости. Т. е. в каком пределе она будет либо ускоряться, либо замедляться каждый Шаг.
Здесь же можно указать Направление частицы. Диапазон он 0 до 360 ПРОТИВ часовой стрелки. Можно указать прирост в градусах на каждый Шаг. А также «виляние» градусов.
Здесь же можно установить Силу притяжения для Типа частицы. А именно значение гравитации и направление в градусах. Например, 270 это когда притягивает вниз.
Итак, самая сложная часть закончена. Тип частицы создан. Можно создавать бесконечное число Типов частиц. GUI редактора должен быть придуман таким образом, чтобы пользователь мог легко переключать между разными Типами частиц. И наблюдать в специальном окошке, как Частицы выбранного Типа ведут себя.
Эмиттер
Эмиттер принадлежит определенной Системе частиц. Эмиттер создает Частицы. Он может создавать либо непрерывный поток Частиц, либо «выпрыскивать» Частицы одиночным «выстрелом».
При выборе режима генерации частиц «Потоком» необходимо дать пользователю возможность указать Тип частиц и их количество. Если количество отрицательное, то Частицы будут создаваться с вероятностью 1/количество. Например, значение -5 будет создавать в среднем по Частице каждые 5 Шагов.
При выборе режима создания частиц «Выстрелом» пользователь указывает Тип частиц и их Количество на каждый выстрел.
Для обоих типов вывода Частиц нужны специальные кнопки в интерфейсе программы. Кнопка «Поток» «западает». Кнопка «Выстрел» «кликается». При нажатии на «Выстрел» запавший «Поток» автоматически отключается.
ВНИМАНИЕ. Сложная часть работы с Эмиттерами: установка Зона эмиттера.
Любому созданному Эмиттеру можно задать Зону, в которой будут создаваться Частицы из выбранного Типа частиц. Частицы НЕ будут создаваться за пределами Зоны. Зону можно не указывать, тогда эмиттер излучает из точки.
Зона эмиттера может быть следующих Форм: Прямоугольник, Эллипс, Ромб, Линия.
Для любой Формы Зоны эмиттера следует указать координаты: X_начальное, X_конечное, Y_начальное, Y_конечное. Лучше, чтобы все операции с Зоной эмиттера можно было производить мышкой, но подправлять и с клавиатуры в соответствующих полях ввода.
В настройках Зоны эмиттера можно установить Тип распространения частиц. Существуют следующие типы: Линейное, Гаусса, Инвертированное Гаусса.
Линейное Частицы распределяются равномерно по всей Зоне эмиттера.
Гаусса больше Частиц создается в центре Зоны эмиттера.
Инвертированное Гаусса больше Частиц создается по краям Зоны.
Эмиттер, как и любую другую составляющую Системы частиц, можно удалить. Также можно сбросить все настройки Эмиттера («обнулить» его).
Аттрактор
Аттрактор притягивает или отражает частицы.
Пользователь может добавить Аттрактор в Систему частиц. Добавляя Аттрактор, он устанавливает его положение на Сцене.
Для любого Аттрактора можно установить следующие параметры: силу притяжения (отталкивания, если значение отрицательное), радиус (в пределах которого Аттрактор может влиять на Частицы), тип силы (см. ниже), добавлять ли силу к параметрам скорости Частицы или же применять.
Существует три типа силы:
Постоянная независима от расстояния до Частицы.
Линейная чем дальше Частица, тем меньше сила. На границе радиуса Аттрактора сила будет равна 0, в центре указанному пользователем значению силы.
Квадратичная сила будет расти квадратично.
Флаг «Добавлять силу к скорости» делает так, что Частицы будут ускоряться в радиусе Аттрактора. Если флаг не стоит, скорость Частиц в радиусе Аттрактора будет равна силе Аттрактора.
Параметры Аттрактора можно сбросить. Аттрактор можно удалить.
Дестроер
Удаляет Частицы, когда те попадают в зону его воздействия. При создании Дестроера указывается его положение, координаты его Зоны. Зона дестроера может принимать одну из трех форм: Прямоугольник, Эллипс, Ромб.
Дефлектор. Отражает Частицы, когда те сталкиваются с Зоной его воздействия. Указывается положение Дефлектора и Зона его воздействия двумя координатами. Т. е. Зона воздействия дефлектора может быть только прямоугольником. Функции Дефлекторов в Game Maker сильно ограничены. Так, можно выбрать один из двух типов отражение горизонтальное или вертикальное. Также можно указать значения трения, применяемого при столкновении с Зоной дефлектора. Чем больше это значение, чем сильнее Частицы замедляться при столкновении.
Дефлектор можно удалить. Параметры Дефлектора можно обнулить.
Чейнджер
Меняет Тип частиц, когда Частицы определенного Типа попадают в Зону его воздействия. Зона воздействия чейнджера задается двумя точками (x1, x2, y1, y2). И может принимать одну из следующих трех форм: Прямоугольник, Эллипс, Ромб.
Поскольку Чейнджер меняет Тип частицы, при его создании необходимо указать Тип частицы, которая изменится и Тип, в который она будет превращаться. Кроме того, можно указать один из трех типов превращения:
Изменить поведение меняет только параметры поведения частицы (скорость, «завихрение», ускорение и т. д.).
Изменить облик меняет только параметры формы частицы (размер, цвет, форма).
Изменить всё полностью менять частицу Типа «А» на частицу Типа «Б».
Можно удалить выделенный Чейнджер или все Чейнджеры в Системе частиц. Можно сбросить все настройки выделенного Чейнджера.
ГЛОССАРИЙ
Шаг в Game Maker игровое время считается не по секундам, а по долям секунды, называемым шагами (степами). 1 шаг равен 1/fps доле секунды.
Частица маленький элемент сцены, представленный крохотной картинкой (формой). Примеры частиц: искра, звездочка, горошина, капля и т. д.
Система частиц совокупность элементов, создающая спецэффект на экране, контейнер для частиц и управляющих ими элементов. В систему частиц помещаются Типы частиц, Эмиттеры, Аттракторы, Дестроеры, Дефлекторы и Чейнджеры.
Примеры систем частиц: фейерверк, водопад, взрыв и т. д.
Тип частицы набор параметров, описывающих внешний облик и поведение Частицы на экране. Содержит элемент случайности в заданном диапазоне. Элемент случайности привносит в Систему частиц разнообразие, создает эффект новизны путем выбора в указанных пределах уникальных параметров размера, скорости, цвета, «завихрения» (и т. д.) для каждой новой Частицы.
Частицы не могут существовать без Типа. Тип может быть конкретизирован путем сужения границ случайного выбора или задания одинаковых значений верхней и нижней границ.
Эмиттер элемент Системы частиц, создающие Частицы с параметрами заданного Типа частицы в определенной Зоне.
Аттрактор элемент Системы частиц, притягивающий или отталкивающий Частицы в пределах заданного радиуса.
Дестроер элемент Системы частиц, уничтожающий Частицы в определенной Зоне.
Дефлектор элемент Системы частиц, отбрасывающий Частицы, попавшие в Зону его воздействия (может отклонять только по вертикали и горизонтали).
Чейнджер элемент Системы частиц, меняющий Тип частицы, попавшей в Зону его воздействия, на другой Тип, указанный в свойствах Чейнджера.
Зона воздействия прямоугольник, определяющий границы, в которых работает созданный элемент Системы частиц. Зона воздействия задается в свойствах Эмиттера, Дестроера, Дефлектора или Чейнджера с помощью двух координат. Для этих элементов предусмотрен также выбор формы зоны воздействия (прямоугольник, эллипс, ромб). Заданная форма Зоны помещается внутри прямоугольника Зоны.