GameMaker: как создать игру без опыта программирования
Для кого эта статья:
- Новички в разработке игр
- Инди-разработчики, желающие создать свою первую игру
Люди, интересующиеся программированием и технологиями в области игрового дизайна
Разработка игр когда-то была уделом избранных программистов со стопками учебников по C++ на столе. GameMaker изменил правила игры, предоставив новичкам инструмент, где можно создать полноценный проект без десятилетий опыта. Тысячи инди-хитов, включая Undertale и Hotline Miami, начинались именно здесь. Готовы присоединиться к сообществу разработчиков? Ваша первая игра может оказаться ближе, чем кажется — всего в нескольких кликах мыши. 🎮
Хотите расширить перспективы в IT за пределы разработки игр? Курс тестировщика ПО от Skypro откроет двери в мир, где ваша внимательность к деталям станет суперспособностью. Разработчики создают миры, а тестировщики гарантируют, что они работают безупречно — от игровых проектов до банковских систем. Первая работа в IT через 6 месяцев с поддержкой менторов и гарантией трудоустройства! Перейти на курс тестировщика ПО
GameMaker Studio: первые шаги разработчика игр
GameMaker Studio 2 — это среда разработки, созданная для людей, которые хотят быстро увидеть результаты своей работы. В отличие от монстров вроде Unity или Unreal Engine, здесь не нужно несколько месяцев изучать интерфейс перед созданием первой сцены. Буквально за час можно собрать прототип с работающими механиками. 🚀
Установка GameMaker не представляет особой сложности. После загрузки с официального сайта YoYo Games и стандартной процедуры установки, вы увидите приветственное окно. Рекомендую начать с изучения встроенных туториалов, они помогут быстрее освоиться.
Для начала работы достаточно создать новый проект, выбрав опцию "New Project" и определившись с папкой для хранения файлов игры. GameMaker предлагает несколько шаблонов проектов, но для первого знакомства выберите "Empty Project" — чистый лист, на котором будет проще понять базовые принципы.
Алексей Петров, преподаватель курса по разработке игр Помню своего студента Михаила, который пришёл с нулевыми знаниями программирования, но с горящими глазами. "Я 15 лет играю, теперь хочу создавать!" — заявил он на первом занятии. Через две недели работы с GameMaker он показал нам свой платформер с прыгающим котом, собирающим рыбу. Игра была простой, но это была ЕГО игра! Михаил создал все спрайты в Paint, запрограммировал движение и коллизии, добавил счётчик очков. "Никогда не думал, что смогу сделать игру так быстро," — признался он. Сегодня Михаил — инди-разработчик с тремя проектами в Steam, и всё началось с того прыгающего кота.
Игровые проекты в GameMaker структурированы вокруг комнат (rooms) и объектов (objects). Комнаты — это уровни вашей игры, а объекты — все элементы, с которыми взаимодействует игрок: персонажи, платформы, препятствия, бонусы. Структура проекта организована в виде дерева ресурсов, где все элементы логически сгруппированы.
| Тип ресурса | Назначение | Пример использования |
|---|---|---|
| Sprites | Визуальное представление объектов | Персонаж, платформа, монета |
| Objects | Программируемые элементы с поведением | Игрок, враг, триггер |
| Rooms | Игровые уровни и экраны | Уровень 1, меню, экран поражения |
| Scripts | Многоразовый код на GML | Функция проверки столкновений |
| Sounds | Аудиоэффекты и музыка | Прыжок, сбор монеты, фоновая мелодия |

Интерфейс и возможности GameMaker для начинающих
Интерфейс GameMaker Studio 2 организован вокруг концепции рабочих областей: основное рабочее пространство, панели инструментов, окно свойств и дерево ресурсов. Для новичков особенно полезна система "перетащи и брось" (drag-and-drop), позволяющая создавать логику без написания кода. 🖱️
Ключевые элементы интерфейса GameMaker:
- Resource Tree (Дерево ресурсов) — здесь хранятся все элементы вашего проекта: спрайты, объекты, комнаты.
- Workspace (Рабочее пространство) — центральная область, где происходит редактирование выбранного ресурса.
- Properties Panel (Панель свойств) — отображает и позволяет изменять параметры выбранного элемента.
- Toolbox (Панель инструментов) — содержит инструменты для работы с текущим ресурсом.
- Output Panel (Панель вывода) — показывает результаты компиляции, ошибки и отладочную информацию.
GameMaker Studio 2 предлагает два основных подхода к созданию игровой логики: визуальное программирование (Drag and Drop или DnD) и текстовое программирование с использованием Game Maker Language (GML). Начинающим рекомендуется освоить сначала DnD, а затем постепенно переходить к GML по мере роста уверенности.
Визуальное программирование реализовано через систему событий и действий. Например, вы можете создать событие столкновения объекта игрока с врагом, а затем добавить действие "уменьшить здоровье". Всё это делается без единой строчки кода.
Марина Соколова, гейм-дизайнер Когда я впервые открыла GameMaker, я была уверена, что разработка игр — это не для меня. С художественным образованием, но без опыта программирования, я ожидала увидеть бесконечные строки кода. Вместо этого я обнаружила интуитивный интерфейс, где можно было буквально "нарисовать" игровую логику. За первый вечер я создала мини-игру, где персонаж собирал звёзды и уворачивался от падающих камней. Сегодня мой четвёртый инди-проект готовится к выпуску, и всё благодаря тому, что GameMaker не отпугнул меня в самом начале пути. Я до сих пор использую DnD для прототипирования, прежде чем перейти к коду на GML.
Для тестирования создаваемой игры GameMaker предлагает кнопку "Play" (или F5), которая мгновенно запускает проект. Это позволяет быстро проверять внесённые изменения и отлаживать игровую механику без длительных циклов компиляции.
Ещё одна особенность, делающая GameMaker привлекательным для новичков — мультиплатформенная публикация. Ваша игра может быть скомпилирована для Windows, macOS, iOS, Android, консолей и веб-платформ без существенного переписывания кода.
Базовые принципы создания объектов и спрайтов
В GameMaker спрайты (sprites) представляют визуальную часть игровых элементов, а объекты (objects) определяют их поведение. Такое разделение позволяет, например, создать один спрайт монеты и использовать его в различных объектах: обычной монете, бонусной монете, фальшивой монете-ловушке. 🪙
Создание спрайта начинается с нажатия правой кнопкой мыши на папку Sprites в дереве ресурсов и выбора "Create Sprite". GameMaker предлагает несколько способов добавления изображения:
- Загрузить готовый графический файл с компьютера
- Создать новое изображение во встроенном редакторе
- Импортировать последовательность изображений для анимации
После создания спрайта настраиваются его параметры: точка привязки (origin), маска столкновения (collision mask), скорость анимации (animation speed). Точка привязки определяет центр спрайта при вращении и позиционировании, а правильно настроенная маска столкновения критична для корректной работы физики в игре.
Объекты создаются аналогично спрайтам через контекстное меню папки Objects. При создании объекта вы указываете спрайт, который будет его визуальным представлением, а затем добавляете события и действия, определяющие поведение объекта в игре.
Основные типы событий в GameMaker:
- Create — срабатывает при создании экземпляра объекта
- Step — выполняется каждый кадр игры (идеально для обновления состояния)
- Draw — позволяет настроить отображение объекта
- Collision — активируется при столкновении с другими объектами
- Keyboard — реагирует на нажатия клавиш
- Mouse — обрабатывает взаимодействие с мышью
- Alarm — таймеры для отложенных действий
Для создания эффективных игровых механик важно понимать иерархию объектов. GameMaker позволяет объектам наследовать свойства от родительских объектов, что упрощает организацию кода и предотвращает его дублирование.
Например, можно создать родительский объект "Enemy" с базовым поведением врагов, а затем создать дочерние объекты "FastEnemy", "StrongEnemy", "FlyingEnemy", которые унаследуют базовое поведение и добавят свои специфичные свойства.
| Событие | Частота использования | Типичное применение |
|---|---|---|
| Create | Очень высокая | Инициализация переменных, настройка стартового состояния |
| Step | Очень высокая | Обновление позиции, проверка условий, логика перемещения |
| Collision | Высокая | Реакция на столкновения, урон, сбор предметов |
| Keyboard | Средняя | Управление игроком, интерфейсные действия |
| Alarm | Средняя | Отложенные действия, временные эффекты, спаун врагов |
| Draw | Низкая (для новичков) | Специальные визуальные эффекты, UI элементы |
После создания объектов, их нужно разместить в комнате (room) — игровом уровне. В редакторе комнат можно установить размер уровня, добавить объекты, настроить фон, создать слои для организации элементов по глубине отображения.
Программирование на GML: что нужно знать новичку
Game Maker Language (GML) — это встроенный язык программирования GameMaker, который позволяет создавать более сложную и гибкую игровую логику по сравнению с системой перетаскивания (DnD). Хорошая новость в том, что GML относительно прост для освоения, особенно если у вас есть минимальный опыт программирования. 💻
Основные элементы синтаксиса GML:
- Переменные объявляются просто их использованием:
score = 0; - Каждая инструкция завершается точкой с запятой:
x = x + 5; - Условные операторы:
if (health <= 0) { game_end(); } - Циклы:
for (i = 0; i < 10; i++) { instance_create(x, y, obj_Bullet); } - Комментарии:
// Это комментарийили/* Многострочный комментарий */
GML предлагает два типа переменных: встроенные и пользовательские. Встроенные переменные, такие как x, y, speed, direction, уже определены системой и контролируют базовые свойства объектов. Пользовательские переменные создаются разработчиком для хранения игровых данных, например, health, ammo, score.
Для новичков особенно важно понимать область видимости переменных в GML:
- Локальные переменные — объявленные с ключевым словом var, существуют только внутри текущего события или скрипта
- Переменные экземпляра — принадлежат конкретному экземпляру объекта
- Глобальные переменные — начинаются с global., доступны во всём проекте
Пример простого кода на GML для управления персонажем:
// В событии Step объекта игрока
// Горизонтальное движение
var move_right = keyboard_check(vk_right);
var move_left = keyboard_check(vk_left);
var move_h = move_right – move_left;
hspeed = move_h * 4; // Скорость 4 пикселя в кадр
// Прыжок
if (keyboard_check_pressed(vk_space) && place_meeting(x, y+1, obj_Wall)) {
vspeed = -10; // Отрицательное значение для движения вверх
}
// Гравитация
if (!place_meeting(x, y+1, obj_Wall)) {
vspeed += 0.5; // Постоянное ускорение вниз
}
Важно понимать концепцию столкновений (collisions) в GameMaker. Функция place_meeting() проверяет, пересекается ли объект с другим объектом в указанной позиции. Это основа для реализации физики, платформенных механик и взаимодействия с игровым миром.
GML предлагает богатую библиотеку встроенных функций, которые значительно упрощают разработку:
- instance_create(x, y, obj) — создаёт экземпляр объекта
- instance_destroy() — уничтожает экземпляр объекта
- random(n) — возвращает случайное число от 0 до n
- point_distance(x1, y1, x2, y2) — вычисляет расстояние между точками
- draw_sprite(sprite, subimg, x, y) — отрисовывает спрайт
- audioplaysound(sound, priority, loop) — воспроизводит звук
По мере роста сложности проекта стоит использовать скрипты (scripts) — отдельные фрагменты кода, которые можно вызывать из разных мест программы. Это улучшает структуру кода и предотвращает дублирование.
Например, можно создать скрипт damage_player() для обработки получения урона игроком, включая уменьшение здоровья, проигрывание звука, создание визуального эффекта и проверку условий смерти. Затем этот скрипт можно вызывать из любого места игры: при столкновении с врагом, попадании в ловушку или падении в пропасть.
Практикум: создаём простую аркадную игру с нуля
Давайте применим полученные знания и создадим простую, но полнофункциональную аркадную игру под названием "Space Dodger". Игрок будет управлять космическим кораблём, увoraчиваться от падающих метеоритов и собирать звёзды для получения очков. 🚀
Шаг 1: Создаем спрайты
- Создайте спрайт spr_player для корабля игрока (32x32 пикселя)
- Создайте спрайт spr_meteor для метеорита (24x24 пикселя)
- Создайте спрайт spr_star для звезды (16x16 пикселей)
- Создайте спрайт spr_explosion с несколькими кадрами для анимации взрыва
Можно нарисовать спрайты во встроенном редакторе или использовать готовые ассеты. Для новичков существуют бесплатные наборы спрайтов на itch.io и OpenGameArt.
Шаг 2: Создаем объекты
obj_player — корабль игрока
- В событии Create:
score = 0; lives = 3; - В событии Step:
x = mouse_x; // Корабль следует за курсором по горизонтали - В событии Collision с objmeteor: `lives -= 1; instancedestroy(other); if (lives <= 0) { game_restart(); }`
- В событии Collision с objstar: `score += 10; instancedestroy(other);`
- В событии Create:
obj_meteor — падающий метеорит
- В событии Create:
vspeed = random_range(2, 5); // Случайная скорость падения - В событии Step:
if (y > room_height) { instance_destroy(); }
- В событии Create:
obj_star — собираемая звезда
- В событии Create:
vspeed = random_range(1, 3); // Звёзды падают медленнее метеоритов - В событии Step:
if (y > room_height) { instance_destroy(); }
- В событии Create:
objgamecontroller — контроллер игрового процесса
- В событии Create:
alarm[0] = 60; // Таймер для создания метеоритов - В событии Alarm 0:
instance_create(random(room_width), 0, obj_meteor); alarm[0] = random_range(30, 90); - В событии Step:
if (random(100) < 2) { instance_create(random(room_width), 0, obj_star); } - В событии Draw GUI:
draw_text(10, 10, "Score: " + string(obj_player.score)); draw_text(10, 30, "Lives: " + string(obj_player.lives));
- В событии Create:
Шаг 3: Создаем комнату
- Создайте новую комнату размером 640x480
- Поместите objgamecontroller в комнату
- Поместите obj_player в нижнюю часть комнаты
Шаг 4: Добавляем звуки и улучшения
Для завершения игры стоит добавить несколько звуковых эффектов: сбор звезды, столкновение с метеоритом, фоновую музыку. Также можно улучшить игру, добавив:
- Анимацию взрыва при столкновении
- Систему уровней с увеличивающейся сложностью
- Экраны начала игры и завершения
- Систему сохранения рекордов
Вот и всё! У вас получилась простая, но полноценная аркадная игра с ключевыми элементами геймплея: препятствиями, бонусами, системой жизней и очков. Это отличная основа для дальнейших экспериментов и усложнения механик.
Для улучшения навыков программирования в GML рекомендую постепенно усложнять проект, добавляя новые функции:
- Разные типы метеоритов с различным поведением
- Возможность стрельбы для уничтожения метеоритов
- Улучшения для корабля, которые можно подбирать
- Боссы, появляющиеся через определённые промежутки времени
Помните, что разработка игр — это итеративный процесс. Создайте минимально работающую версию, протестируйте её, получите обратную связь и постепенно улучшайте. GameMaker отлично подходит для такого подхода благодаря быстрому циклу разработки и тестирования. 🎮
Создание игр на GameMaker — это как построение моста между идеей и реальностью, где каждый кирпичик понятен и доступен новичку. Путь от первого прототипа до полноценного проекта короче, чем кажется, особенно если двигаться маленькими, осмысленными шагами. Помните: Notch создал Minecraft в одиночку, Эрик Барроне сделал Stardew Valley без команды, Тоби Фокс разработал Undertale самостоятельно. GameMaker может стать вашим первым шагом к игре, которая изменит мир — или просто принесёт радость вам и вашим друзьям. А это уже немало.
Читайте также
- 3D игры в Unity: пошаговая разработка от новичка до релиза
- GDevelop: создание игр без кода – пошаговое руководство для новичков
- CryEngine: создаем первую 3D игру от установки до релиза
- Топ-10 движков для 2D-игр: как выбрать идеальный инструмент
- Разработка игр на Phaser: создаем 2D-игры на JavaScript
- Unreal Engine: создание 3D игр с нуля – полное руководство
- Как создать 2D игру в Godot Engine: полное руководство для новичков
- Godot Engine: пошаговая разработка 3D игр с нуля до релиза
- Amazon Lumberyard: пошаговое создание игры для начинающих разработчиков
- 3D разработка в GameMaker: от первых шагов до готовой игры