Game maker 2 уроки
Game maker 2 уроки
ВСЕ КУРСЫ ОНЛАЙН подобрали лучшие бесплатные видеоуроки по изучению GameMaker Studio для начинающих и освоения базовых опций в домашних условиях.
Начало работы
Изучаем функционал, интерфейс и запускаем новый проект (создание игрового персонажа, локации, стен). Стартовое окно позволяет создать проект, открыть уже существующий или импортировать из более старой версии. Новый проект открывает два варианта: Drag and Drop (без написания кода) и GameMaker Language (с кодом).
Интерфейс интуитивно понятен: справа – папки с элементами проекта, слева – меню редактора. Вначале открывается комната, разделенная сеткой для позиционирования картинки. Далее создаются спрайты и объекты, которые обычно называют одинаково во избежание путаницы в дальнейшем. После добавляют событие.
Графический редактор
Тень, задний фон
Добавляем тени для игрока с наложением анимации, создаем задний фон для комнаты (уровня). Для добавления бэкграунда необходимо подготовить соответствующую картинку, создать спрайт и подгрузить фон. Очередность действий:
1) перейти в папку Tile Sets,
2) загрузить фон,
3) в настройках комнаты создать новый слой,
4) перенести сет.
Добавить тень можно также через спрайт: импортировать готовое изображение, создать для него объект и прописать код. Видеоурок дает информацию по работе со скриптами (чтобы каждый раз не прописывать код, а использовать готовый).
Выстрел и пули. Стрельба
Перемещение
Учимся придавать движение персонажу с помощью написания кода. У каждого объекта есть набор определенных действий, которые добавляют кнопкой Add Event: создание, разрушение, очищение, шаг, таймер, события рисования, нажатие клавиатуры, столкновение. Чтобы герой начал двигаться, необходимо задать подходящее событие. Вверх, вниз, вправо или влево — все движения прописываются для конкретного героя при помощи кода.
Столкновение и уничтожение
Диалоги
Внедряем диалог героев на простом примере: реплика за репликой. Диалоговое окно привязывают к герою, при контакте с которым должен всплывать текст. Подробную пошаговую инструкцию можно изучить, просмотрев материал и повторив все за автором. Видеоурок поднимает вопрос русских шрифтов и рассказывает про функции рисования.
Эффекты
Первая игра
Гид по установке, интерфейсу, запуску первого проекта в Drag and Drop (разработка, настройка и запуск). Общее управление программой имеет три панели.
• Верхняя содержит команды настроек, запуска, поддержки по работе.
• Нижняя дублирует основные команды верхней.
• Боковая представляет команды действий.
При создании игры необходимо работать с объектами. Спрайт — внешний вид для объекта. Комната – рабочее поле для размещения объектов, рабоы со слоями, фонами, графикой. Обычно задействуют несколько комнат.
Конструирование игры
Мини-курс состоит из 10 видео, изучив которые можно начать разработку собственной 2D игры. Представленные материалы помогут освоить начальные знания по работе в программе и построению базы.
Содержание курса.
• Знакомство с интерфейсом
• Построение уровней или карт для прохождения персонажа
• Настройка движения игрока по уровню
• Работа с камерой (чтобы вся карта изначально не была видна)
• Анимация героя при ходьбе
• Переходы между комнатами.
Game Maker Studio. Физика. Урок 2: Соединения
В прошлом уроке я описал основы физики в Game Maker Studio. Вы научились создавать простейшие тела и задавать им некоторые свойства. Готовя второй урок о соединениях, я написал довольно большой текст. Но перечитав его понял, что в нем слишком много лишнего и это только запутает читателя. В нем я делал обзор нескольких соединений (Joints ), но потом, проанализировав приходившие мне вопросы, понял, что все это не нужно для рядового начинающего пользователя. И проще подробно описать одно соединение, а на примере него уже любой сможет разобраться в остальных Joints, просто заглянув в справку. И пусть она на Английском, но зная основу, разобраться будет уже совсем не сложно.
Мне приходили письма с такими вопросами: «Как создать веревку?»,»Как сделать машину?» и прочее. Проанализировав их, я выбрал одно соединение, которое можно использовать для обоих случаев. Да и вообще оно используется чаще всего, как я считаю. И это соединение physics_joint_revolute_create или как я его называю шаровое соединение или вращательное. Начнем.
Сначала давайте попробуем представить, что это такое. Самое простое для понимания определение-это гвоздь или вал. Посмотрите на схему.
Тут у нас два физических объекта-четырехугольника. Видите красную точку? Это и есть наше соединение. Т.е. синий объект как бы прибит к черному и может вращаться вокруг этой оси. Фантазия не работает? Давайте обратимся к более простому для понимания примеру.
Машина состоит из трех объектов: корпуса и двух колес. Так вот эти колеса как бы прибиваются к корпусу в местах соединения (отмечено красными точками). Т.е. они как бы на валу и могут вращаться вокруг своей оси.
Или вот цепь. Одно звено скопировано несколько раз и каждые соседние звенья соединены как бы гвоздями в местах, отмеченных красными точками. Они могут вращаться вокруг этих осей. Так думаю понятнее. Теперь перейдем к практике.
Сначала обратимся к справке.
physics_joint_revolute_create(inst1,inst2,w_anchor_x,w_anchor_y,ang_min_limt,ang_max_limit,ang_limit,max_motor_torque,motor_speed,motor,col)
В кратце опишу каждый параметр этой функции.
inst1 и inst2 — грубо говоря это первый и второй объект, которые будут соеденены между собой. Если обратиться к примерам выше, то это черный и синий прямоугольники, или корпус машины и колесо или соседние звенья цепи. Но вместо inst1 мы указываем не сам объект (не его имя), а его id. Для совсем уж не опытных скажу, что каждый объект, помещенный в комнату, содержит свой уникальный номер или идентификатор. Как его узнать, напишу чуть позже.
w_anchor_x и w_anchor_y — это X и Y координата той самой (красной на схемах) точки соединения.
ang_min_limt и ang_max_limit — это ограничения. Минимальный и максимальный угол на который может поворачиваться «прибитое» тело.
ang_limit — это значение может быть либо 0 (false) либо 1 (true), т.е. либо истина, либо ложь. Если оно равно 1, то ограничения угла указанные выше будут работать. Если же 0, то они просто будут игнорироваться и соединенное тело будет вращаться без ограничений на все 360 гр. Это пригодиться нам позже для колес.
Следующие три параметра связаны с вращением или так называемым мотором. Если его не включать, то прикрепленное тело будет пассивно, т.е. просто балтаться и вращаться под действием других, внешних сил. Если же его включить, то прикрепленное тело начнет принудительно вращаться. Это можно опять же использовать для колес. Так вот это соответственно максимальное значение вращения, скорость вращения и опять же 1 или 0 (т.е. включен мотор или выключен). В примере с машиной его можно включить. В примере с цепью его следует отключить, иначе все звенья буду вращаться как безумные!
Последний параметр col — тоже либо 0 либо 1. Он означает могут ли два соединенных тела сталкиваться между собой или нет. Если 1, то они смогут сталкиваться (но только если мы пропишем это в событии столкновения как я писал в первом уроке), если 0, то они не будут сталкиваться независимо ни от чего.
Это была очень скучная часть, но многие параметры встречаются в других соединениях. Так что знать все же нужно. И не бойтесь, что можете запутаться в таком большом кол-ве параметров. Сейчас вы поймете на сколько все просто.
Итак, машина. Создаем и рисуем два спрайта: колесо (32 на 32 пикселя) и сам корпус машины (128 на 64 пикселя). Создаем 2 объекта: Car_body и Car_wheel. Пользуясь полученными знаниями из первого урока присваиваем им физические свойства и назначаем маски столкновения: для колеса-круг, для корпуса машины-прямоугольник соответственно. У меня они получились такими.
Как вы заметили из скриншота в объекте колеса я уже заранее прописал событие столкновения со стеной.Отдельные части готовы. Теперь пора использовать соединение. Создаем новый объект Car к примеру. Ему не назначаем никакой спрайт, и не включаем галочку с физикой. А просто в событии создания Create прописываем такой код:
Я думаю он понятен, но все же разберем поподробнее. Первые три строчки: мы создаем объект корпуса машины и два объекта колеса (обратите внимание на координаты колес, одно ниже и левее, второе ниже и правее). Координаты колес выставляете исходя из ваших рисунков (не забудьте в спрайтах колеса и корпуса машины нажать кнопку Center). И записываем id (идентификаторы) объектов в переменные p1,p2 и p3. Я выше писал, что при создании соединения параметры inst1 и inst2 должны быть идентификаторами объектов.
Далее создаем соединение корпуса с первым колесом и соединение корпуса со вторым колесом. Обратите внимание, что из параметров указаны только id первого и второго объекта и координаты соединения (которые совпадают с координатами центров соответствующих колес). Все остальные параметры выставлены на 0. Они нам не нужны. Нам не нужно ни ограничение углов (колеса вращаются вокруг своей оси), ни мотор и т.д.
Далее просто ставим объект Car (именно Car, а не Car_body или Car_wheel) в комнату, в которой предварительно расставляем стены и получилось вот что.
Как видите, я заранее приготовил еще стены со скосом. Нарисовал для них спрайты и при назначении маски столкновения выбрал Shape (т.е. многоугольник), обвел треугольником. И родителем этого объекта указал объект Wall, чтобы не прописывать отдельно столкновение колес еще и с этой стеной.Машину на этом примере я специально поставил на самый край, чтобы она скатилась сама, т.к. пока никакие силы к ней мы не прикладывали (это в следующем уроке).
Давайте теперь создадим цепь. Подробно останавливаться не буду. Напишу сразу код. А вы, исходя из полученных за два урока знаний, думаю уже сами сможете его понять и разобрать. Итак, создаем два спрайта. Один из них звено цепи (у меня оно 16 на 32 пикселя,так как весь код будет подстроен под эти размеры). Второй просто круг (размером 16 на 16). Зачем он нужен сейчас поймете. Далее создаем два объекта. Один Chain_Pin, второй Chain_part. В Chain_part выставляем спрайт звена цепи, все физические свойства по аналогии и прямоугольную маску столкновений. В Chain_pin выставляем спрайт круга и в свойствах параметр Density (плотности) ставим на 0. Как мы это делали со стеной. Объясняю зачем это нужно и зачем нам вообще этот объект. Когда мы создадим цепь, то она всегда будет падать вниз под действием тяжести звеньев. Т.е. нам нужно эту цепь куда-то привязать. Для этого и создаем «неподвижный объект» Chain_pin к которому мы ее привяжем. Вот звено у нас готово, булавка (как я ее называю) готова. Теперь создаем саму цепь. Создаем объект Chain (аналогичный объекту Car). Ему мы не задаем никакие физические свойства, никаких спрайтов и масок столкновений. А просто в событии Create прописываем код:
Теперь вставляем объект Chain в комнату. Наша цепь готова. Кол-во звеньев можно регулировать, меняя значение в коде repeat (8) . Т.е. сейчас восемь повторений участка кода и соответственно звеньев. Можете уменьшать или увеличивать. Я еще создал событие столкновения в объекте корпуса машины со звеньями цепи. Чтобы, проезжая, машина задевала цепь в примере.
Думаю на этом стоит закончить второй урок. Для меня очень сложно было описать все вкратце. Но иначе этот урок был бы похож на остальные и вы бы просто бездумно скопировали код. По этому я постарался все разжевать понятным языком. Надеюсь этот урок окажется вам полезным. Оставляйте комментарии, задавайте вопросы. Удачи с изучением. Главное практика. Пробуйте, создавайте, экспериментируйте с различными параметрами и у вас все получится.
Econ Dude
Страницы
понедельник, 27 марта 2017 г.
Стандартные эффекты в GameMaker Studio 2
В сегодняшнем уроке мы рассмотрим стандартные эффекты в Game Maker Studio 2. Какие они бывают, как их их использовать и какие тут есть подводные камни. Продолжаю курс в блоге Econ Dude — Основы создания игр в GameMaker Studio 2.
Но что-то более или менее красивое мы сделаем.
Стандартные эффекты лучше не использовать
Тут нужно сделать важное отступление.
Стандартные эффекты в GameMaker Studio 2 не рекомендуется использовать для серьезных проектов по целому ряду причин. Основная причина в том, что эффекты не очень хорошо оптимизированы в плане быстродействия. Стандартные эффекты могут сильно грузить программу (игру), так-как мы не знаем как они выполняются, но судя по всему, выполняются они не очень качественно.
Стандартные эффекты тяжёлые, и момента оптимизации и быстродействия игр я тоже коснусь, но уже в следующих видео и статьях.
Особенно опасно все эти эффекты пихать в шаги (step) и если у вас в игре частота смены кадров (FPS) 50-100. Игра будет в секунду их отрисовывать 50-100 раз, а если у вас они рисуются для 100-200 объектов сразу?
Конечно тут всё повиснет.
Вообще, game maker довольно легко вешать, я делал кучу игр которые вешали мне комп. Например я делал симулятор вируса, и там когда вирусы сильно размножались, они мне его вешали.
Тянул ГМ примерно объектов 500, потом снижается FPS и вентилятор начинает работать так, что комп подлетает в воздух.
Обычно, сильно над оптимизацией и быстродейсвием игр вам заморачиваться не стоит, если вы новичок.
Часто с этим нет проблем так-как вы делайте простые игры, а компы у всех мощные. Но вообще, и особенно когда вы делайте игру на телефоны, этот момент нельзя игнорировать.
Сейчас скажу лишь что:
- Избегайте прозрачности
- Избегайте больших карт
- Избегайте стандартных эффектов ГМС
- Поменьше функций в шагах (step)
Хорошо, про это я сказал.
Теперь, какие есть в гейм мейкер эффекты и как их вызывать?
Виды стандартных эффектов и как их вызывать
Доступно 3 функции:
- effect_create_above(kind, x, y, size, colour); // создать эффект НАД
- effect_create_below(kind, x, y, size, colour); // создать эффект ПОД
- effect_clear // очистить и удалить эффекты
x, y — понятно что такое, координаты. Где эффект создаём.
Про это читайте больше вот тут:
size — размер. Могут быть только 0, 1 и 2.
- 0 — маленький
- 1 — средний
- 2 — большой
Виды и типы стандартных эффектов в GMS 2 (список):
- ef_cloud — облако
- ef_ellipse — элипс
- ef_explosion — взрыв
- ef_firework — салют
- ef_flare — вспышка
- ef_rain — дождь
- ef_ring — кольцо
- ef_smoke — дым
- ef_smokeup — дым вверх
- ef_snow — снег
- ef_spark — искра
- ef_star — звезда
Их можно и комбинировать. Допустим делает звезду мелкую — красную, а потом там-же еще одну побольше, но уже жёлтую.
Но вот такое вам точно всю систему посадит.
Понравилась статья? Не забудьте поставить палец вверх чуть ниже.
Создаем игру быстро и просто — Game Maker — без программирования
Пожалуй, в наше время каждый слышал о Game Maker, поскольку он является самым популярным (и, естественно, известным) конструктором игр.
Game Maker был написан на языке программирования Delphi дельфинчики оаоаоаоа для операционной системы Windows, а позже была выпущена версия и для Mac. Над Гейм Мейкером работал один из довольно известных разработчиков — Марк Овермарс. Он же и был ведущим разработчиком, то бишь главным в шайке команде разработчиков.
Game Maker в основном рассчитан на разработку игр с двухмерной, то есть 2D, графикой, при этом будучи конструктором для разработки игр любых жанров. Также Game Maker используется и для создания различных презентаций.
Начиная с 6-й версии появилась ограниченная возможность работать с 3D. Не смотря на то, что данный конструктор не требует знания языков программирования и вообще умения «писать код», он был рекомендован многими, включая профессора Утрехтского университета, Марка Овермарса (он же начал разрабатывать Game Maker как учебное пособие для своих студентов), для изучения программирования.
Итак, пожалуй, начнем.
Если вы еще не скачали и не установили Game Maker, то сделайте это. А теперь поехали. Вы уже запустили Game Maker и разбегайтесь глазами — что же делать? Давайте по порядку (а как иначе?).
Для начала, выберите меню File и в нем кнопку Advanced Mode. В папке с установленным Game Maker (по умолчанию C:Program FilesGame_Maker) будут лежать следующие папки:
- examples — здесь лежат примеры игр. Ходят слухи, что они созданы самим Марком Овермарсом;
- lib — папка с существующими действиями в Game Maker (устанавливать дополнительные также в эту папку);
- sprites — здесь лежат наши с вами спрайты (картичночки,
аоаоао); - backgrounds — здесь лежат фоны, иначе говоря — задние картиночки, то, что сзади;
- sounds — тут же помещаются уже звуки, музыка и тому подобное;
- Fonts — шрифты, то есть правила написания буковок;
- Time Lines — время тоже пространство, только по другой, своей, оси;
- Objects — здесь лежат наши объекты;
- Rooms — здесь лежат наши комнатки, или же уровни;
В интерфейсе, который можно видеть на картине выше, есть всякие непонятные многим кнопочки. Часть из них аналогично папкам, о которых также написано выше. Я же проинформирую вас о тех, о который еще не сказал.
- Game information — введите любую информацию и ее увидит игрок (лично я рекомендую писать сюда об управлении);
- Global Game Settings — то и значит. Глобальные игровые настройки. Здесь можно задать разрешение экрана, то бишь его размер, синхронизацию, частоту и глубину, а также можно задать определенные действия таким кнопкам, как F1 или F2.
Те кнопки, о которых я сказал выше, находятся в первой группе (отмечено в 4-й картинке). Теперь же поговорим о тех, что находятся во второй группе:
- Создать новую игру;
- Открыть;
- Сохранить;
- Создать ЕХЕ файл;
- Опубликовать свою игру;
- Запустить игру;
- Запустить ее в отладочном режиме (для исправления ошибок, то бишь багов);
- Загрузить;
- Спрайты;
- Звуки;
- Фоны;
- Путь (где будет лежать файлы и папки от вашей игры);
- Скрипты (уже для программистов);
- Шрифты;
- Тайм-лайн;
- Объекты;
- Комнаты (они же rooms);
- Добавление игровой информации;
- Настройки;
- Пакеты расширения;
- Справка (она же инструкция).
В третьей группе находится три обучающих урока по созданию игр, можете заглянуть после прочтения этой статьи и туда, если знайте английский.
В четвертой группе находится то пространство, где мы будет работать, то есть поле фронта. Победа за нами , у нас все получится!
И так, настало время перейти к наступательно-решительным действиям, а именно — начать уже создавать эту игру. Думаю, для более простого примера, создадим игру-лабиринт.
На всякий случай, буду показывать как английский, так и русский интерфейс программы.
На фото выше вы можете увидеть, как добавлять ресурсы и комнаты (первая и вторая обведенная кнопка соответственно).
После добавления комнаты, переходит во вкладку установки (в английском интерфейсе — setting; где-то на русском может называться настройками комнаты). Здесь выставите необходимый вам размер комнаты в пикселях, в полях, показанный на фото выше.
Но все же, рекомендую выставлять размер 800 ширины и 600 длины, поскольку он поддерживается всеми мониторами.
Далее жмем Global Game Settings как показано на фото выше.
Далее у вас должно появится такое же окно, как показано на фото выше. Вам необходимо нажать кнопку «ок».
А вот теперь создаем аналогичным образом уже объект. У вас уже должно появится такое же окошко, как на фото выше. Для начала нам нужно создать персонажа, потому назовем объект pers.
А вообще, в будущем, называйте объекты соответственно. То есть, создаете оружие, так называйте его weapon. Тоже самое, кстати, касается и переменных в программировании.
Помните, что в профессиональной среде работают не одиночки, а команды, потому в вашей стрепне должны быть способны разобраться и другие. И если они не разобрались, то почти всегда это не их вина, а как раз ваша.
Теперь давайте разберем остальную часть окна создания объекта:
Видимый — будет ли виден ваш объект;
Твердый — как будет реагировать ваш объект при столкновении;
Глубина — определяет приоритет относительно остальных объектов в отображении, то есть на кого накладывается поверх, на кого нет;
Постоянный — постоянные объекты используются во всех комнатах, пока вы специально не прервете.
Выше вы видите окно создания спрайта. Поскольку наш персонаж видимый, для него нужен спрайт, то бишь картиночка. Не символами же игрок будет управлять (раньше до прихода спрайтов в игровую индустрию все в играх состояло из символов).
Спрайты называем по той же схеме, как и объекты.
Нажимаем загрузить спрайт и выбираем картиночку для персонажа. Желательно загрузить персонажа в разных положениях.
Нажимаем на списка справа от строки спрайта. Появляется выпадающее меню со списком спрайтов, которые вы уже загрузили. Нажимаем по «Pers_Down» и видим это:
В группе интерфейса 1 (возвращаемся почти к началу) нажимаем на кнопку «добавить событие». Теперь делаем управление с клавиатуры. Жмем-с на «Клавиатура->Влево (Left)».
В группе 2 нажимаем правой кнопкой мыши кнопку «Fixed Move».
В появившемся окошечке жмем кнопку с отмеченной ниже стрелкой:
Как вы уже догадались, эти кнопки отвечают за то, куда будет смещаться, то есть двигаться, объект, на которого мы нацепим спрайт.
Скорость ставим.. в общем-то любую, но для примера давайте напишем 12, далее нажимаем Ок.
В группе интерфейса 1 щелкаем на кнопку «Добавить событие -> Клавиша отпу-щена ->Влево».
В группе интерфейса 2 выбираем опять «Move Fixed», жмем на квадрат по центру, а в скорости пишем 0 — пока игрок держит клавишу «Влево», персонаж движется влево со скоростью 12, а когда игрок отпускает клавишу, то применяется скорость 0 – стоп.
Делаем аналогично с кнопками «Вперёд», «Вправо» и «Назад».
Меняйте кнопки направления и «Клавиша нажата», «Клавиша отпущена» и ставить скорость 12 кроме «Клавиша отпущена» где скорость 0.
В результате в разделе событий должно получится это:
Теперь сделаем анимацию движения.
Нажимайте комната —> объекты —> эту кнопку:
В выпадающем меню жмем на Pers и ставим его по центру экрана в редакторе комнаты и нажимаем на кнопку Запустить.
Что бы анимация менялась в зависимости от направления движения: в группе 1 нажимаем «Дабавить событие -> Будильник (Alarm)». Создаём «Сигнал0, Сигнал1, Сигнал2, Сигнал3». В событиях клавиши «Left» в секторе три выбераем «Main2». Далее «Set Alarm».
Теперь создадим стены для нашего лабиринта. Выберем спрайт «wall_block» и называем его объект «Block». Применяем к объекту спрайт и свойство «твердый».
Добавляем событие столкновение (в английском интерфейсе Collision) и берём «Pers». Переходим в «Move». Выбираем «Move Fixed». Выбираем «Объект -> Pers» как показано ниже:
Ставим Block по комнате в виде лабиринта как вам угодно.
Создадим объект, касаясь которого вы бы переходили на следующий игровой уровень. Загружаем спрайт (например флажок), называем его «Victory», объект также называем «Victory». Создаём в нём событие столкновение с «Pers». В «Main1» выбираем «Next Room». Программа предложит выбрать эффект, с которым будете переходить на следующий уровень.
Далее, как показано выше на картинке, сделайте задний фон для вашей игры. И вот это все! Поздравляю вас 😀
Если вам понравилась статья, то, пожалуйста, поставьте лайк (палец вверх) — это мотивирует писать дальше. Подпишитесь на канал, чтобы видеть такие статьи и нарративы чаще в своей ленте.
А каковую игру бы хотели сделать? Делитесь идеями — они будут в будущих статьях 😉