Исходник Для Game Maker

08.10.2019
Исходник Для Game Maker Rating: 3,8/5 1263 reviews

Если вы любите игры, несомненно задавались вопросом о том, как их делают. Если у вас есть (или будет) желание делать игры, но нет опыта, в этой статье я расскажу о том, как это лучше начать. Я хотел бы рассказать об игровом движке Game Maker и разместить несколько публикаций, в которых мы напишем клон не сложной игры, например, Plants vs Zombies.

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

Ну и обилием анимаций игра обладать тоже не будет. Вступление Game Maker — это невероятно простой игровой движок, позволяющий создать игры для большого числа платформ — Windows, Mac OS X, Ubuntu, Android, iOS, Tizen, Windows Phone, Windows 8, PlayStation 3, PS 4, PS Vita, Xbox One и HTML 5. Есть поддержка SteamWorks. В случае успеха вашей игры, портирование на другую платформу сложной задачей не будет. Скорость разработки даже при скромных знаниях и минимальной мотивации субъективно быстрее, чем на других движках. Установка и настройка для начинающих максимально проста и не требует особых знаний. Компиляция под другие платформы не требует смены кода игры и осуществляется одним кликом (ну почти).

YoYoGames — компания, создавшая Game Maker, недавно была приобретена Playtech, что дает уверенность в том, что Game Maker продолжит развиваться. Анонсированный Game Maker 2.0 вероятно будет еще более дружественным и простом, а также логично предположить, что будет обладать еще большими возможностями. Как пишут в пресс-релизе, GM 2.0 — одна из причин покупки компании. В этой статье я кратко расскажу о Game Maker и мы сделаем простой набросок будущего проекта. Для кого этот движок и с какой целью его еще можно использовать? Цель — любая 2D игра.

Bird ( исходник flappy bird для game maker) - Duration. Сайт Flash исходников для любителя и профессионала! Скачать Game maker [1]. Исходники [4]. Игры других авторов [9]. Уроки по Game maker [7]. Для добавления необходима авторизация. Каталог файлов. Главная » Файлы » Game maker » Исходники. В категории материалов: 4 Показано материалов: 1-4. Сортировать по: Дате Названию Рейтингу Комментариям Загрузкам Просмотрам.

Однако для тех, для кого программирование не родная стихия, а так же для быстрого прототипирования и создания игры с минимальными усилиями для любого желающего делать игры и/или заработать на них, Game Maker подойдет идеально. Плюсы Game Maker — простое вхождение; — знакомый всем по Java/C/C# синтаксис; — возможность легкой компиляции на разные платформы; — активное сообщество, которое за многие годы уже решило много проблем и написало код за вас; — стандартный функционал, благодаря которому не нужно самому писать большое количество кода; — расширяемость через extension'ы; — справка (F1) очень простая и удобная с отличными объяснениями и примерами. Минусы Game Maker — платность (когда вы дорастете до публикации игры, придется купить лицензию); — нет автоподстановки пользовательских переменных, только для стандартных и скриптов; — высокая стоимость максимальной лицензии (впрочем, не всем нужны прямо все модули); — техподдержка (дважды обращался в техподдержку, быстрее чем через 2 недели мне не отвечали); — нет возможности авторефекторинга. Теперь к созданию игры. Я думаю, установить Game Maker и создать пустой проект проблемой не является. Вообще для начала хорошо было бы продумать весь функционал, нарисовать схемки, продумать монетизацию и т.д., но это не является целью статьи, так что я покажу вам способ создания проекта для начинающего разработчика игр. Кратко пробежимся по структуре проекта:.

Sprites — папка с спрайтами(изображения, анимации);. Objects — объекты со своими заготовленными событиями (например, создание, отрисовка, клик и т.д.);. Rooms — игровые комнаты (экраны). Для каждого экрана нужно делать свою комнату. Очень удобно;.

Background — фоны, которыми можно залить комнату. Так же используется как tile set'ы Остальное нас пока не интересует. Что такое спрайт в Game Maker? Это изображение/анимация, которые используются в игре. Они обладают своей маской, формы и размеры которой можно менять. Маска — это область изображения, которая реагирует на события столкновения объектов (если этот спрайт присвоен какому-то объекту), кликов по нему. Можно задать точку отрисовки (Origin) — например, от центра, угла или любой другой точки.

Так же для спрайта можно можно задать Texture Group. Нужно для оптимизации отрисовки (например, незачем держать в памяти texture pages с изображениями, которые используются на экране меню, когда у нас сейчас игровой экран). Для каждой Texture Group можно задать платформу, на которой они будут действовать. Например, для Android можно иметь менее детальные изображения, чем для Windows 8 планшетов. Что такое объект (object) в Game Maker? Это описание некоторой сущности, обладающая своими методами (функциями).

Каждый объект рисует себя сам (если не задано иное), реагирует на стандартные события — нажатия клавиши, клика по спрайту и т.д По аналогии с ООП — это класс (class). Что такое инстанс (instance) в Game Maker? Если объект — это просто описание сущности, то инстанс — это экземпляр объекта, его реализация в самой игре.

Создав инстанс вы даете ему жизнь и теперь все события, описание которых есть в объекте начнут реагировать. По аналогии с ООП — это объект (object). Первое, что необходимо сделать — создать новую комнату (на левой панели правый клик на Rooms — Create Room). Назовем её rmgame. Зададим размеры окна во вкладке Settings — Width — 800, Height — 480, Speed — 60. Игра у нас будет происходить в окне 800х480, fps будет не превышать и стремиться к 60 кадрам.

Сохраняем, закрываем. Добавим несколько спрайтов. Правой кнопкой по папке Sprites - Create Sprite. Назовем его sprunitshooter, загрузим картинку (есть на гитхабе в конце статьи), например, размера 54х54 и отцентрируем (кнопка Center).

Исходники game maker studio

Кнопка «OK» и данные сохранились. Теперь нам нужен первый юнит. Пусть это будет классическое стреляющее растение. Но перед этим нам желательно создать объект, который будет родительским для всех пользовательских юнитов (да, примерно тоже, что и наследование в ООП). Так можно избежать повторяющейся логики для всех юнитов, а также как вы увидите ниже, можно будет обращаться ко всем типам созданных во время игры «детям» этого объекта.

По принципу, аналогичному со спрайтами и комнатами, создаем пустой объект. Назовем его ounitparent и больше пока с ним ничего не делаем. Теперь создадим ounitshooter и в графе Parent выберем ounitparent. Зададим ему спрайт — sprunitshooter.

Исходник Для Game Maker

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

Исходник Для Game Maker

Можно как вам удобно, но для того, чтобы потом не путаться, лучше сразу называть вещи своими именами, например, спрайты с приставкой spr, объекты obj или o, скрипты — scr и т.д. Теперь, каждый раз, когда вы будете создавать объект ounitshooter в комнате, он будет сам рисовать выбранный вами спрайт (конечно, если вы не переопределите это кодом). Спрайт можно задавать и программно, но в таком случае он не будет отображаться в превью Project Structure слева. Теперь добавим событие, которое будет срабатывать при создании инстанса объекта.

В этом событии нужно задать начальную инициализацию переменных, если они имеются. Нажмем Add Event. Как видите Game Maker позволяет каждому объекту отлавливать большое число событий. Нас интересует — Create. Как видите справа в контейнере Actions в нескольких вкладках есть огромное количество drag'n'drop элементов, с помощью которых в теории можно создать совершенно полноценную игру не написав ни строчки кода. Но это для извращенцев и вероятно в Game Maker 2.0 этот ненужный функционал наконец уберут. Перейдем по вкладку Control перетащим или сделаем правый клик по иконке Execute code.

Откроется текстовый редактор, в котором и можно размещать игровую логику. Как вы помните, юниты должны с определенным периодом стрелять. Сделать это можно очень легко. В событии Create напишем этот код: alarm0 = roomspeed. 2; Это означает, что мы запускаем alarm под номером 0, который сработает через roomspeed.2 шагов(кадров). Roomspeed у нас равно 60, что примерно равно секунде. Так что alarm0 сработает через 120 кадров(2 секунды).

Alarm — это функция, а точнее событие объекта, она срабатывает как только счетчик шагов дойдет до 0. Как и все другие событие оно добавляется через Add event. Теперь нужно прописать логику, которую мы добавим в alarm0, но прежде давайте создадим то, чем будет стрелять наше растение. Создаем новый спрайт sprbullet, размером 16х16 и центрируем. Теперь создаем новый объект obullet и задаем ему только что созданный спрайт. В событии Create добавляем код hspeed = 7; точно так же как и с предыдущим объектом. Этой строчкой мы задаем, что объект будет двигаться со скоростью 7 по горизонтали (hspeed = horizontal speed, если кто не понял).

Это встроенное свойство каждого объекта. Присвоив ему ненулевое значение, этот объект начнет двигаться на заданное количество пикселей(в нашем случае по 7 вправо) каждый шаг(Step). Если мы зададим hspeed = -7; — объект будет двигаться по -7 пикселей каждый шаг, т.е. Будет двигаться справа налево.

Все, возвращаемся к объекту ounitshooter и создаем новое событие — Alarm 0. Код, который мы напишем в этом событии как раз и будет срабатывать когда запущенный счетчик, который мы создали в событии Create. В событии Alarm 0 мы и будем создавать «пули» (в оригинале — горох), которыми стреляет растение. Добавим такой код: /// shoot var b = instancecreate(x + spritewidth/2, y, obullet); b.depth = depth + 1; alarm0 = roomspeed. 2; Разберем этот код. /// shoot — это просто комментарий, который будет отображаться при переходе на событие.

По-умолчанию показывается — «Execute piece of code», что не очень-то информативно. Так что рекомендуется писать такие комментарии, чтобы не тратить время на переход в редактор кода. Var b = instancecreate(x + spritewidth/2, y, obullet); var b — мы объявляем локальную переменную, которая будет доступна исключительно в этом событии.

После завершения события память освободится и обратиться к этом переменной вы не сможете. Instancecreate(x + spritewidth/2, y, obullet); — так мы создаем новый экземпляр объекта и помещаем его в координаты по x: x + spritewidth/2, по y — y. В данном случае x и y — это координаты материнского объекта — ounitshooter.

Исходники Game Maker Studio

Obullet — это тот объект, который мы создаем. B.depth = depth + 1; — эта строка означает, что только что созданный экземпляр obullet будет находится на 1 слой ниже чем ounitshooter. Последняя строка означает, что мы снова запускаем alarm0 — растение же должно постоянно стрелять. Как вы помните, в оригинале можно расставлять растительность только в определенных ячейках. Чтобы визуально было понятно в каких пределах можно поставить растение, создадим фон и зальем им нашу комнату. Правой кнопкой по Backgrounds — Create Background — Load Background, выбираем нужную картинку, скажем, 64х64 пикселя, обзываем bggrass.

Исходники Для Game Maker

Переходим в нашу комнату (rmgame), вкладка Backgrounds, выбираем созданный секунду назад фон. Ставим галочки, если не стоят как на изображении.

Работая с одним из недавних проектов, я наткнулся на несколько проблем, встречаемых многими - даже если вы делаете игру лишь для Windows в GameMaker: Studio, вы не можете работать с файлами вне папки программы в AppData (нельзя даже работать с папкой, где программа установлена). Так же нет функций для открытия файлов в внешних программах, так что никаких вам 'readme' в папке программы с открытием их из игры, никаких портативных файлов настроек, некоторых других вещей.

Грустно, в общем-то. Поэтому я потратил вечер и сделал компактный DLL, который добавляет эквиваленты павшим функциям (sleep, executeshell, I/O без песочницы) для Windows таргета. Поддерживаемые функции следующие: delay delay (задержкавмс ) Идентичен существовавшей ранее функции sleep(ms). Приостанавливает выполнение игры на указанное количество миллисекунд. К примеру, delay ( 2500 ) Приостановит выполнение игры на 2.5 секунд. Shelldo shelldo (file, action ) Запрашивает указанное действие над файлом по указанному пути.

Исходник Платформера Game Maker

Типичные действия это 'open', 'edit', 'print', и доступность действий зависит от настроек системы. Shellexecute shellexecute (path, args ) Идентично executeshell. С помощью этого можно так же открывать программы с аргументами. Shellexecuteat shellexecuteat (file, args, directory ) Подобно shellexecute, но позволяет указать рабочую папку для программы файла. Это может быть полезным, если вы используете внешние программы, и не хотите указывать абсолютные пути или копировать их в корневую папку игры. Filetextget filetextget (path ) Возвращает строку с содержимым файла по указанному пути (без 'песочницы'). Если файла нет, или произошла ошибка при чтении, возвращается пустая строка.

Filetextput filetextput (path, contents ) Заменяет содержимое файла по указанному пути (без 'песочницы') указанным текстом. Если файла нет, он будет создан. Возвращает статус, был ли текст успешно записан. Getcolorwin getcolorwin (defaultcolor ) Аналог getcolor из старых версий программы. Filecopywin filecopywin (path, newpath ) Функция для копирования файлов без ограничений 'sandbox'.

Использует абсолютные пути. Так же, приложенный пример демонстрирует использование большинства из этих функций. Скачиваемые файлы: Ревизии. 23 января, 2016: Исправлен недочет, из-за которого записанные считанные через filetext. файлы не 'закрывались' автоматически, блокируя их изменение сторонними программами. Пример теперь распространяется в качестве ZIP архива (для избежания проблем с импортом).

Исходный код библиотеки можно теперь скачать как с примером, так и отдельно. Убрана функция shellopen из-за нестабильной работы на некоторых системах. Используйте shelldo('open', path) вместо неё. Добавлены функции getcolorwin, windowsetcaptionext, filecopywin.

Развлекайтесь 🙂 Похожие записи. ,. Сделай функции для работы с папками. Directoryexsistsglob directorycreateglob directorydeleteglob Потому, что стандартные функции GMS не находят глобальных папок, нельзя проверить существование папки вне песочницы на некоторых системах.

Что ещё не работает в GMS (или я просто не нашел после перехода): Определение системного диска, с которого запущена винда. Можно только определить букву диска, на котором установлена игра.

Отдельной крайне полезной функцией в дополнение к этому была бы osgetusername которая просто выдавала бы строку с именем текущего пользователя ОС (аналогично использованию в путях%USERNAME%). Идеально было бы сделать функцию преобразующую переменные абсолютных путей windows в готовые для использования строковые значения:%USERNAME% Fox%LOCALAPPDATA% C: Users Fox AppData Local И так далее.