Блог

четверг, 11 января 2018 г.

Как создать объект в GameMaker?

Сегодня в блоге Econ Dude я расскажу как создать объект в Гейм Мейкер (GameMaker). Создание объектов это очень базовая вещь, которую должен знать каждый, кто хочет сделать игру с нуля, и почти все, кто делают игры, это уже знают, но это статья для новичков, которые только начинают осваивать данный движок.

Итак, создание объекта, как и многие другие вещи, может быть сделано двумя способами. Первый - это с помощью drug and drop (тащи и бросай) - конструктора GM, который позволяет делать игры без знания языка.



Создание объекта с помощью конструктора


Этот способ может подойти в самом начале обучения.

Чтобы создать объект таким способом просто выберете событие (event), которое будет создавать объект, и перетащите туда значок создания объекта.

Как создать объект в GameMaker?

Картинки в этой статье кликабельны (клик увеличивает картинку)

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

В данном примере я использую объект "бог", который выполняет технические функции, я так делаю для всех моих игр и не призываю создавать такой объект всегда, это мой личный метод. Данный объект обычно постоянный (галочка persistent) и он переходят из комнаты в комнату, храня переменные, вырисовывая цифры и делая другие вещи.

В данном случае в событии создания такого объекта мы создаёт другой объект - o_tower (башня) в координатах 300 - 300. Эти координаты не относительны, галочка Relative внизу не стоит. Это значит, что объект будет создан в точных координатах один раз.

Как создать объект в GameMaker?

Вот тут в комнате будет создан объект - башня

Кто-же создаёт объект? Его создаёт объект бог в данном случае, а это красный квадрат справа-сверху на картинке выше (в углу). Таким образом как только мы запускаем игру, запускается первая комната (room_game), там уже стоит объект - бог. И он, как только создаётся, сразу-же создаёт объект - башню в координатах 300 по Х и 300 по У.

Чтобы лучше понять как работают координаты, можете почитать:


Новый объект (башня) будет создан через 1 тик, после создания бога. Если в данном случае FPS (кадры - тики в секунду) равны 30 (это вы видите на картинке выше справа - speed), то объект будет создан почти сразу. Данные технические подробности для вас не так важны сейчас, но это просто полезно знать, так-как бывают любопытные вещи.

К примеру если вы создадите один объект, который при создании будет создавать еще один такой-же в случайной точке (или сразу два...), то вы можете примерно прикинуть как заполниться комната.

И это хорошо демонстрирует как одни объекты создают другие и как размножаются клетки или вирусы. Я это быстро смоделирую и покажу вам:

Как создать объект в GameMaker?

Мерзко и страшно выглядит почему-то...

Забавно, но сам ГеймМейкер не позволит вам сделать всё подобным образом, выдав ошибку - бесконечный цикл. Однако, можно сделать немного не так.

Создавать объект можно во многих событиях, а не только при создании.

К примеру можно создавать объект в событии Alarm (будильник, таймер, счётчик). При создании объекта вы можете запустить таймер, а уже там прописать создание нового объекта. Подобным образом я сделал в примере выше:

Как создать объект в GameMaker?

Так-же тут вы видите парочку других функций, и уже код

Более подробно о том, как работает механика таймера (alarm), читайте тут:

А есть хотите узнать больше про прозрачность, читайте вот эту статью.

Так-же вы можете создавать объекты через событие шагов (events - step), оно выполняется каждый тик, то есть при скорости комнаты 30 у вас будет 30 событий в секунду. Если вы добавите событие создания объекта туда, то скорее всего ваша комната очень быстро переполниться объектами и игра зависнет.

Кстати, GameMaker - это далеко не идеальная среда программирования игр в плане производительности. Легкие 2D игры она тянет неплохо, но затраты ресурсов процессора и памяти на обработку множества объектов и их функций могут сильно сажать комп, это особенно важно если вы делайте игру на телефон.

Так-же в рамках данной статьи стоит сказать, что я рассказываю как создавать и делать новые объекты в GameMaker 1 (версия и сборка одна из последних - v1.4.1760), но в GameMaker Studio 2 всё практически так-же и отличий никаких толком нет.

Ок. Давайте подведём итог.

Для создания объекта нам нужно выбрать кто и когда его создаёт, выбрать какой объект создаётся, а так-же указать координаты, где он будет создан.

Если там поставить галочку - relative (относительные координаты), и написать в первом примере не 300 и 300, а 300 и 300, но уже относительно, то объект будет создан по отношению к координатам того, кто этот объект создаёт.

Как создать объект в GameMaker?

Получиться примерно вот так

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

В коде, если вы задаёте координаты, вам не нужно указывать их относительность, вы просто пишите: x+300, y+300.

Это будет означать на 300 пикселей от текущей координаты Х и У.

Так-же в коде например для прибавление цифры и указания цифры:

time=10 // установит переменную время (time) равную 10
time+=10 // прибавит к текущему значению переменной 10
Это (+= или например -=, или даже *=) и есть относительность.

Если вы хотите указать случайные координаты, пишите: "random(300)"

О том, как работает рандом и случайность, вот тут:


Так-же хочу сказать, что в конструкторе Гейм Мейкер есть два других значка создания объектов, я их никогда не использовал, но кратко расскажу.

Первое, это создание объекта, который сразу получит направление и скорость движения - create instance moving. Я это не использовал так-как не видел нужды. Если вы хотите сделать пулю, которая сразу куда-то полетит, то проще в момент создания пули ей задать скорость и направление, а не вот так, хотя можно и так.

Как создать объект в GameMaker?

Дополнительно тут вы задаёте скорость и направление

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

Это всё, кстати, заменяется кодом:

var inst = instance_create(X, Y, OBJECT);
inst.direction = DIRECTION;
inst.speed = SPEED;

Но как я и сказал, это проще сделать другими способами.

Вторая функция в конструкторе создания объектов (третья точнее), это создание случайного объекта. Там можно выбрать 4 разных:

Как создать объект в GameMaker?

Выбираете объекты, которые могут быть созданы с шансом 25%

Я это тоже не использую, так-как проще сделать кодом. Про это можете узнать в статье про случайность и генерацию, в моём видео:



Хорошо, а теперь идём дальше.



Создание объектов с помощью кода


Как создавать объекты с помощью кода и языка GameMaker?

Язык программирования ГМ называется - GameMaker Language

Делается это очень просто, с помощью функции:

instance_create(x,y,object)

Быстренько разберём синтаксис. Х и У это координаты, где создавать объект, с ними мы вроде уже разобрались. Последнее - это собственно объект, который мы создаём.

Вот в принципе и всё. На одной из картинок выше я уже показал как это записывается (где бактерия создаётся через Alarm).

Как создать объект в GameMaker?

Классический пример строительства здания на клетке

Тут уже немного другой пример.

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

Это всё из вот этой игры, про которую я уже писал:

Как создать объект в GameMaker?

Хотя в принципе так делается много где

Довольно любопытно в рамках темы так-же посоветовать вам посмотреть одно из моих видео в YouTube (Канал Econ Dude) где я даю пример строительства:



Там есть и исходник ГМ, можете глянуть видео если интересны стратегии.

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

В конечном итоге создание объекта это очень просто, но будет вам полезно всегда. Да и кстати не только в GameMaker это всё используется, просто синтаксис в других движках может быть другой, но основные принципе в ООП (объектно-ориентированном программировании) везде примерно те-же.

Другие мои статьи про создание игр вот тут:

Так-же подписывайтесь на мой паблик ВК чтобы не пропустить новый контент:

И подписывайтесь на YouTube канал для поддержки:

Всем спасибо что прочитали статью, если есть вопросы - задавайте в комментах.