No Image

Game maker studio 2 язык программирования

СОДЕРЖАНИЕ
13 просмотров
11 марта 2020
Game Maker Language
Класс языка объектно-ориентированный, событийно-ориентированный, скриптовый
Появился в 1999
Автор Маркус Овермарс
Разработчик Овермарс, Маркус Хендрик
Расширение файлов .gml, .gmk, .gm6, .gmd, .gm8, .gm81
Сайт yoyogames.com
ОС Microsoft Windows

Game Maker Language (GML) — это интерпретируемый язык программирования, разработанный для использования вместе с программой для разработки компьютерных игр называемой Game Maker. Изначально поддержка языка была внедрена в Game Maker Марком Овермарсом для дополнения системы кнопочных событий, однако позже все кнопочные события были включены в GML, позволяя программисту избежать использования кнопочных функций. GML очень сильно связан со средой Game Maker. Game Maker организован так, чтобы не было необходимости программирования вручную таких вещей, как управление событиями, дизайн уровней и настройка объектов. Существует заблуждение, что GML поддерживает вставки фрагментов кода на других языках, таких как Pascal, Assembler или C++. Заблуждение возникло из-за частичной схожести синтаксиса GML с Pascal и C++. (Например, оператор «&&» может быть заменен на «and»).

Содержание

Библиотеки [ править | править код ]

В Game Maker совокупность кнопочных событий образует библиотеку. В интерфейсе программы библиотеки отображаются как закладки, в которых находятся различные иконки событий. Каждое такое событие — это GML-скрипт или функция, которую пользователь может использовать в игре. В поставку Game Maker входят несколько стандартных библиотек, которые содержат основные события, используемые в большинстве игр. Также существует возможность создавать свои собственные библиотеки, используя Library Maker. В GMS2 встроен механизм конвертации действий, заданных «кнопками», в код GML и обратно, что позволяет новичкам быстрее перейти на GML и улучшает понимание того, как работают стандартные действия.

Синтаксис и семантика GML [ править | править код ]

GML структурно похож на язык С своими блоками кода, вызовами функций, присваиванием переменных, синтаксисом операторов и так далее. GML различает операторы и выражения. Например,

не является правильным оператором и вызовет ошибку. Также, присваивание переменных — это всегда оператор, и поэтому не может быть использован в выражениях. Например, следующая строка всегда генерировала бы ошибку потому, что она бы вычисляла вложенное выражение как true или false, а затем сравнивала бы булевый результат со строкой «Yes» (неправильное сравнение):

Стоит помнить, что знак равно «=» является оператором присвоения и булевым оператором сравнения в выражениях, тогда как в С++ в выражениях пишут двойной знак «==». Тем не менее, двойной знак равно «==» будет правильно интерпретирован в случае использования его в выражениях. Использование такого знака в качестве оператора присваивания вызовет ошибку исполнения. GML также поддерживает операторы инкремента:

то же самое, что и

Также существуют операторы: -=, *=, /=, |=, &= и ^=. Начиная с GMS2 введена поддержка тернарного оператора ?:. Операторы в GML могут быть разделены точкой с запятой, однако это не является обязательным условием (хотя и может привести к ошибке в некоторых специфичных случаях).

Функции [ править | править код ]

Game Maker содержит обширную библиотеку встроенных функций для обеспечения основной функциональности. Программист может создавать свои собственные скрипты, которые вызываются точно таким же способом, как и функции. Функции рисования в Game Maker используют Direct3D API. При необходимости Game Maker также позволяет вызывать нативный код платформы посредством расширений (DLL на Windows, Java на Android, JS на HTML5 и т.п).

Переменные [ править | править код ]

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

В Game Maker есть множество встроенных переменных и констант. Каждый экземпляр объекта содержит множество локальных переменных, например «х» и «у». Также существует несколько встроенных глобальных переменных, например «score». Эти переменные существуют независимо от экземпляров объектов. Эти переменные не содержат приставку «global.», в отличие от глобальных переменных, указанных программистом. Одномерные и двумерные массивы также поддерживаются.

Структуры данных [ править | править код ]

В GML есть функции для создания и редактирования структур данных шести типов: стек, очередь, список, карта (ассоциативный массив), приоритетная очередь и сетка. К сетке, списку и карте также есть возможность доступа посредством аксессоров, предоставляющих синтаксис, подобный массивам:

Типы [ править | править код ]

В GML поддерживаются следующие типы данных:

  • string (строка) – последовательность символов, заключенных в одинарные или двойные кавычки (начиная с GMS2 следует использовать двойные кавычки).
  • real (число) – целое или с плавающей запятой. Хотя все значения, созданные в GML, хранятся как числа с плавающей запятой двойной точности, для работы с расширениями можно использовать и другие типы
  • array (массив) – переменная, использующая индексы для доступа к элементам. Могут содержать любые данные – числа, строки, другие массивы, дескрипторы других структур данных и т.п. Их также можно передать как параметр в функцию, и они могут быть возвращены функцией как результат.
  • boolean – может принимать значения true или false. Имейте в виду, что в настоящее время GML не поддерживает «настоящие» булевы значения и на самом деле принимает как false любые числа меньше 0.5, а всё, что равно или больше – как true.
  • pointer (указатель) – указатель на область памяти. Используется в некоторых специфических функциях вроде buffer_get_address() и др.
  • enum (перечисление) – заданная пользователем коллекция констант, хранящихся в переменной.
  • undefined (не задано) – специальное значение, возвращаемое в случаях, когда запрашиваемые данные не найдены.
Читайте также:  Вставка данных в таблицу sql

Область действия переменных [ править | править код ]

Хотя GML и можно рассматривать как объектно-ориентированный язык, природа объектов и экземпляров объектов в Game Maker создает некоторые важные отличия в способе разграничения переменных. Существует два типа локальности: локальность в объекте и локальность в скрипте (или другом куске кода, содержащемся в отдельном контейнере). То, что переменная является локальной для экземпляра объекта, означает, что переменная привязана к конкретному экземпляру объекта и извне этого экземпляра может быть использована только с приставкой, определяющей этот экземпляр; то, что переменная является локальной для скрипта, означает, что эта переменная может быть использована только в этом скрипте (и уничтожается после окончания скрипта). Далее термин «локальный» будет означать локальность в объекте. По умолчанию, переменная локальна для объекта, но не локальна для скрипта, в котором она используется. Для того чтобы сделать переменную доступной всем экземплярам объектов, она может быть определена через глобальное пространство имен:

Также существует возможность объявлять глобальные переменные используя ключевое слово globalvar:

Но такого способа следует избегать, так как это может легко привести к сложно выявляемым ошибкам, из-за пересечения областей видимости переменных (то же самое рекомендуют и непосредственно разработчики GMS; более того, возможно, что в будущем это ключевое слово будет полностью убрано из языка – в данный момент оно оставлено исключительно из соображений обратной совместимости). Для того, чтобы сделать переменную локальной для скрипта, её нужно определять так:

Областью видимости локальной переменной является скрипт, внутри которого она объявлена. Это подразумевает, что при переключении контекста (c использованием with) она по-прежнему будет доступна. Например:

Доступ к локальным переменным объекта можно получить, используя идентификатор экземпляра объекта как приставку

но, тем не менее, таким образом невозможно получить локальные переменные одного скрипта из другого, пока они не передаются как параметры функции. Текущее пространство имен объекта может быть изменено с помощью конструкции «with». Например, следующий скрипт, если его поместить в событие столкновения, уничтожит другой экземпляр объекта, вовлеченный в это событие (заметим, что в событии столкновения Game Maker автоматически устанавливает переменную other на второй экземпляр объекта, с которым произошло столкновение):

Распределение памяти [ править | править код ]

GML автоматически распределяет память под переменные на ходу, и использует динамические типы, поэтому присваивание переменным значения различных типов также возможно. Например, сначала можно создать целочисленную переменную, а потом изменить её на строковую:

В GML нет специального функционала, позволяющего освобождать память, занятую под переменную, однако при необходимости можно присваивать переменной новое значение, меньшего размера. Например, если у вас есть переменная, в которой хранится большой текст, то, присвоив переменной значение пустой строки, можно добиться высвобождения памяти. То же самое касается и массивов:

При уничтожении объекта также уничтожаются все переменные, локальные для него, а любые глобальные переменные существуют независимо от них. Поэтому предпочтение нужно отдавать локальным переменным, а глобальные переменные использовать только в случае реальной необходимости этого. Для хранения больших объёмов информации более эффективно, в Game Maker есть поддержка нескольких структур данных – таких, как стек, очередь, список, карта, приоритетная очередь и сетка. Эти структуры создаются, модифицируются и уничтожаются посредством встроенных функций. Также есть функции практически во всех структурах для сортировки данных в них. В некоторых случаях более удобным и более эффективным будет использование буферов, позволяющих хранить произвольные данные и являющимися, по сути, просто выделенными кусками памяти.

Объекты и ресурсы [ править | править код ]

В основе работы Game Maker с ресурсами лежат уникальные идентификаторы, которые служат для определения конкретного ресурса или экземпляра объекта. Эти идентификаторы могут быть использованы скриптами или функциями для указания необходимого ресурса. Так как создание ресурсов непосредственно в Game Maker подразумевает указание имени, то это имя служит константой, содержащей идентификатор ресурса. Идентификатор конкретного экземпляра хранится в локальной переменной «id». При динамическом создании ресурсов, всегда возвращается идентификатор созданного ресурса, который может быть использован в дальнейшем.

Примеры скриптов [ править | править код ]

Вот простой пример скрипта, который выводит легендарную фразу «Hello, World!»:

Ещё один пример, который отображает тот же текст, но уже в окне программы. Заметьте, что по умолчанию Game Maker непрерывно перерисовывает окно, поэтому в обычном случае этот код нужно поместить в событие рисования.

Вот фрагмент кода из игры на GML:

Стили кода можно смешивать. Например, предыдущий пример может быть записан так:

Вот пример обычного управления с клавиатуры. Функция motion_set принимает два параметра: направление (в градусах) и скорость (пикселей за шаг). Вызов этой функции приведет к изменению встроенных локальных переменных speed и direction, которые использует Game Maker для перемещения объектов (объекты также можно сдвигать напрямую, используя локальные переменные x и y):

Читайте также:  Бугатти шерон против кенигсегг

А вот пример более сложного скрипта для платформенной игры. Используя его, игрок может ходить по выпуклой поверхности:

Страницы

четверг, 23 марта 2017 г.

Решил я сделать небольшой обзор Game Maker Studio 2, так-как в гейм мейкере я делаю игры уже давно (5-7 лет, уже и со счёта сбился), да и люди просили сделать на это обзор.

Game Maker Studio 2 – это программа для создания игр, новая часть гейм мейкер студио. Разработчик – YoYo Games из Шотландии.

Game Maker изначально придумывался как программа для освоения азов программирования и создания игр новичками, и GMS 2 сохраняет данные черты, но не просто сохраняет, а так-же существенно развивается в данном направлении.

Тем не менее тут будет и некоторая критика программы, так-как первое впечатление у меня было не идеальное, но в целом – GMS 2 понравился и скорее всего на него я со временем переду.

Изменений довольно много, вот так выглядит новый интерфейс:

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

Хотя у всех этих наворотов есть и минусы, о них – ниже.

Что нового в Game Maker Studio 2?

Далее – краткий список новых возможностей гейм мейкер студио 2:

  • Импорт проектов из GMS 1, начиная с версии 1.4
  • YoYo аккаунт теперь используется для логина и покупки лицензии, а так-же для других вещей. Тут почти как в студио первой версии, но возможностей больше. В целом – просто большая связка с YoYo против пиратства, как например для аккаунтов Blizzard.
  • Доступны туторалы (обучение – тренировка) и демо игры, однако сейчас их довольно мало и они не имеют большого функционала.
  • Laptop Mode – специальная возможность для более удобного использования программы на лаптопах (На Русском их неверно называют ноутбуками). Я такой возможности не нашёл, или-же она и стандартная, но в целом мне 19-ти дюймового экрана не хватило. Элементов очень много и хочется 2 монитора под новый гейм мейкер.
  • Визуальная кастомизация (настройка под пользователя) программы. Это да, удобно, многое можно настраивать, растягивать, сжимать или убирать элементы, менять цвет фона и прочее. Можно настроить прогу под себя.
  • Улучшенный Script Editor – редактор скриптов. Лучше интеграция скриптов с кодом.
  • "Перетащи и брось" – drug and drop система, когда вы делайте игру без использования языка программирования (хорошо для новичков) стала более удобной. Теперь там показывают и код, который выполняется, что позволяет учить game maker language быстрее.
  • Язык game maker language на базе – С. Так-то это и раньше было.
  • Слои. Вот тут реально много всего. Слои не только в новом графическом редакторе (наконец-то!), но и в других местах. Вообще графических возможностей стало значительно больше. В том числе – большую часть этих вещей можно вызывать кодом.
  • Новые кисти. Прокачка графического редактора GMS 2.
  • Возможность совместной работы над проектом командной, как я понимаю – одновременно. Именно для этого хорошо подходит новый интерфейс с возможностью масштабирования. Видимо что-то вроде совместного редактирования документа через google docs, или совместного программирования – системы эти уже давно используются в других платформах, пора было их применить в и ГМ.
  • Больше возможностей и функций для анимации. Тут и правда больше фич. Особенно интересна возможность рисовать анимацию в процессе анимации. Такого я вообще больше нигде не видел.
  • Сообщество YoYo Games – более открыто для выкладывания своих проектов, хотя конечно в первую очередь хочется их выкладывать в steam, google play. etc.
  • Заявляется лучшая поддержка сетевых игр.

Недостатки Game Maker Studio 2?

Тут во многом с моей колокольни, и многое – лично мой взгляд. Некоторые вещи – просто непривычны, однако есть объективные недостатки.

  • GMS 2 требует больше ресурсов для работы чем старые версии. Старые GM у меня летали, эта уже греет компьютер, что ни есть приятно. Жрёт сравнительно много (с прошлыми версиями) оперативки. Когда делаешь игры месяцами и еще крутишь другие программы фоном – это может напрягать. Ну и вообще он работает медленнее, дольше компиляция, дольше загрузка и т.д. Это проблема была и у многих других старых версий ГМ, часто их выкидывают сухими, а уже потом допиливают. Тут тоже допилят со временем. я уверен.
  • Русской версии пока нет, и может быть не будет никогда. Хотя так-то игры делаются на английском, привыкайте. Справки на Русском тоже вроде как пока нет, и ресурсов для обучения мало. Не знаю буду-ли я на своём канале делать про это обучающие видео, возможно – да, но в целом гмс 2 сильно похож на ранние версии и многое актуально и для него. Это хорошо.
  • Элементы интерфейса занимают много места. То, что одна вкладка не может наплывать на другую, немного бесит, лично меня. Таким образом всё занимает больше места и есть ощущение что делали – лишь бы красиво, а удобство это дело второе. Хочется ставить game maker studio 2 на двух мониторах. Вот так будет круто.
  • Запущенные игры иногда виснут после закрытия, может быть это только у меня.
  • Изменился некоторый синтаксис кода. Немного раздражает. Зачем менять instance_create, добавляя туда слой, я не знаю. При чём, в целом изменений синтаксиса не так много, но вот эти изменения сильно мешают спокойно и быстро осваивать новые версии и переносить старые проекты на новый ГМ. Бесит сдецл.
  • Цена. Цена ощутима. Точно не скажу сколько, но например в США $100 за лицуху для PC, и дикие $400, за возможность компилировать под мобильные платформы. Это бесило и в первой части ГМС, и именно это привело к тому, что игру тупо пиратят. Сделали-бы они нормальную цену, например $100 за полный функционал, мало-бы кто пиратил. Жадность лишь увеличивает воровство.
Читайте также:  Безопасный режим на планшете леново как убрать

В целом было ощущение (еще когда узнал что будет ГМС 2) что кое-кому просто захотелось срубить бабла в стиле Apple, просто повесив на продукт цифру X+1, и продать это всё еще раз. Стратегия, конечно, хорошая. Для них. Но не для нас. Однако я вижу что нового в Game Maker Studio 2 вполне достаточно для новой версии и я надеюсь что его будет еще больше, а все косячки они приберут.

Так что версия для PC (Если у вас лицуха GMS 1 – будет хорошая скидка) вполне достойна внимания, а команда YoYo Games работает уже очень давно и я думаю вполне можно их отблагодарить за хороший продукт (чуть позже, когда его доведут до ума и он таковым станет), но скидку они могут и убрать, а до ума они его почти наверняка доведут, так-что если вы хотите серьезно заниматься созданием игр и вы выбрали Game Maker – думаю, стоит брать.

Хотя если вы совсем новичок – выбор между ГМ и Юнити будет довольно трудный, у Юнити очень много плюсов (та-же бесплатность), поэтому я бы еще подумал что выбирать.

Просто на мой взгляд научиться создавать компьютерные игры вам будет проще именно с помощью Game Maker, он для этого и придумывался – для обучения созданию игр.

Если вам понравилась эта статья, поставьте чуть ниже палец вверх, спасибо за прочтение. Надеюсь на основные вопросы я ответил и вам она помогла.

Видео обзор Game Maker Studio 2

Традиционно, я так-же сделал видео обзор GMS 2 на моём ютуб канале – econ dude (Подписывайтесь, кстати), где разобрал и показал большую часть новых фич.

Видео довольно длинное, порядка 20 минут. Но там больше подробностей и всё наглядно.

Изначально склонялся к Unity 3D, но заинтересовался gamemaker studio 2.
Почему:

Во первых говорят, что gamemaker studio 2 легче для начинающих. Говорят – сам не проверял.
Во вторых лицензия студии с разработкой под винду стоит около тысячи рублей. Плати тысячу и получай 0 ограничений.
Когда в юнити есть ограничения стартовой версии – экран загрузки и т.д. Да Unity 3D, бесплатен в стартовой версии вплоть до дохода 100 тыс баксов в месяц, но ограничения есть.
В третьих – в gamemaker studio 2 меньше возможностей, чем в Unity 3D. Но это, в моем случае, к лучшему т.к. мне не нужны все возможности – куча ОС и платформ и т.д.
Да и gamemaker studio 2 выглядит более простым и производительным инструментом, для разработки небольших игр.
Тот же Unity 3D, как редактор кода предлагает VS или монодевелоп. И два языка программирования – JS и CSharp.
А хочется один язык и один редактор. Причина – уроки, информация. Тут на CSharp, там на JS.

Ну а минусом вижу , что gamemaker studio 2 использует свой язык программирования gml.
Свой язык программирования, который сделала студия – плохо. Видели, проходили, знаем.
Видели "прекрасный" язык 1С. А вот CSharp уже другое дело.
Также интересует возможность сетевой игры. Как у этих движков обстоят дела с сетью? Как это вообще реализовано?

Какой движок лучше для начинающих Unity 3D или gamemaker studio 2?

Ну и кратко о себе. Считаю себя начинающим разработчиком игр. Даже так – решил попробовать создать игру.
Простую для начала.
Пока не собираюсь разрабатывать трехмерные шутеры. Максимум 2D или простейшие псевдо 3D.

Знаю-разбираюсь в html,css,php,немного JS-ajax-jquery,linux. Из языков, сред, фреймворков. /до кучи/ – Delphi,Qt,CSharp,VS,чуточку кросплатформенной разработки. Также имею представление и начальные навыки в фотошопе и 3д максе. Так что в принципе "в теме". Объяснять азы – что есть сокет, переменная, массив. или уровни модели оси не нужно.
Да и большинство графики стимовской индюшатины вполне могу нарисовать.

Собственно, такие вопросы. Жду ваших ответов, мнений, советов.
Т.к. отзывы о игровых движках разные и чему верить – неизвестно. Каждый хвалит свой движок.

Комментировать
13 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
Adblock detector