Как сделать искусственный интеллект в game maker

Обновлено: 02.07.2024

Я тут буквально сегодня попробовал gms 2.3 в действии и решил,
так сказать, оформить в словесную форму, свои впечатления.

И даже написал по-этому поводу целую статью

Писать тут тот же самый текст один в один я не буду. Причин тому две — по соображениям уникальности и собственно потому что повторяться не хочется.

Но кратко резюмирую и попробую донести еще некоторые мысли.

gms меня впечатлил. Иначе стал бы я писать статью на эту тему ?

Не попадалось под руку до сих пор хорошего урока, который бы можно
было пройти за несколько часов и все разложилось бы по-полочкам,
но сегодня такой урок мне попался и он, что называется, был всегда
под боком. Я даже однажды мельком видел его — как видео.

Но уроки в форме обучающих статей мне все же ближе и понятнее.

На видео чаще всего показывают действия, но не показывают суть.

От этого становится иногда еще непонятнее.

Но может еще сыграло роль мое желание и открытость. И то что
так звезды сошлись.

Вообщем не знаю.

Но то, что я увидел — мне понравилось ! Хотя видел уже не первый
раз.

Хочу ли я делать игры на game maker ?

Ну реальные и большие проекты — вряд ли. Хотя кто знает ?

Скорее я хочу усвоить весь накопленный опыт и перенести его в собственное
русло. В собственный опыт и собственную среду.

gms не лишен недостатков, как и любой другой движок и не стоит его
обожествлять или рекомендовать как решение для любых проблем.

gms подойдет не всем. Однозначно.

Но если вы хотите чего-то быстрого и красивого (не игры, а именно
получить такие впечатления от её разработки), то наверное лучшего способа,
чем попробовать game maker — нет.

Профессиональный разработчик вряд ли найдет для себя здесь что-то новое.

Все что есть просто представлено под красивым соусом и приправлено.

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

gms не такой. Он рассчитан на краткосрочное использование. На создание
короткого проекта на короткой дистанции. Когда времени у вас мало
и не хочется тратить это драгоценное время понапрасну.

Учимся проверять коллизии

В прошлый раз мы сделали так, что бита, доезжая до стены, останавливалась. Но что если поставить стену посреди уровня и попробовать запустить игру? Бита будет игнорировать данную стену и проезжать сквозь нее, пока не доедет до самой крайней стены, где и остановится.

И что же нам делать? Каждый раз вручную менять координату для проверки? Нет. Есть более универсальный способ. Давайте сделаем так, чтобы бита, прежде чем сдвинуться, проверяла нет ли на пути движения стены. Т.е. мы будем проверять коллизии (столкновения) биты с объектом стены. Для этого в GMS2 есть функция place_meeting , которая как раз и проверяет, будет ли столкновение, если поставить биту в указанные в функции координаты. Давайте немного изменим наш первоначальный код в шаге биты. Напомню, изначально он был таким:

Т.е. сначала мы проверяли, нажата ли определенная клавиша, затем мы проверяли, положение координаты x биты по отношению к какой-то крайней координаты (дальше которой бита не должна ехать) и только тогда сдвигали биту. Так воттеперь мы попробуем применить в коде нашу новую функцию place_meeting .

Меняем код на вышеуказанный и запускаем игру. Теперь мы видим, что бита всегда упирается в стену, где бы мы ее не поставили. Давайте подробнее разберем этот участок кода, для движения вправо:

Первая строка проверяет нажата ли клавиша "стрелка вправо". Если да, то будет выполняться тот код, что идет между скобками <> .

А в них далее как раз идет еще одна проверка:

if not place_meeting(x+spd,y,Wall)

Где not , читается как не , т.е. оно инвертирует следующую за ним функцию. И дословно данное условие можно прочитать как " если поместить биту в координаты x+spd и y и в них НЕ будет столкновения с объектом Wall ".

Т.е. бита пока не перемещается на spd пикселей вправо, а лишь проверяет, нет ли в тех координатах стены, и если их нет тогда и выполнится сам сдвиг биты, т.е. код, что идет в следующих скобках <> , а именно: x+=spd .

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

!place_meeting(x+spd,y,Wall)

знайте, что это тоже самое что и

not place_meeting(x+spd,y,Wall)

По этому давайте сразу сделаем наш код чуть короче и удобнее для чтения:

Все, теперь можно убрать объекты стены с середины комнаты, которые мы вставляли для тестирования в начале урока. Теперь давайте перейдем непосредственно к мячу.

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

Помните в первом уроке, когда мы расставляли объекты в редакторе комнат, мы создали слой "Ball", на который пока ничего не ставили? Так вот пришло время. Давайте зайдем в событие создания биты (событие Create ) и дополним немного код.

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

Итак, в событии Create мы уже писали с вами код. Там должна быть всего одна строчка, в которой мы создали переменную скорости и присвоили ей значение 5:

Давайте чуть ниже этой строчки пропишем код создания самого объекта мяча. Создавать его будем прямо над битой, как будто он лежит на ней.

Для создания объектов кодом в GMS2 есть функция instance_create_layer .

Тут думаю важно объяснить, что такое инстанс (instance) объекта. Дело в том, что те объекты, которые мы создавали в первом уроке и которые у нас находятся в дереве ресурсов - это просто шаблоны. А в самом игровом мире мы создаем их копии, т.е. инстансы данных объектов. Важно сразу уметь понимать и отличать эти понятия. Т.е. в GMS2 есть понятие и объекта (object) и инстанса (instance) . Давайте разберем на примере.

Например, мы создали объект какого-то врага, скажем скелета. Он находится у нас в дереве ресурсов. В данном объекте мы прописали весь код для движения скелета, его ИИ и т.д. Т.е. мы создали сам ОБЪЕКТ . По сути это шаблон. Далее мы в редакторе комнат начинаем вытягивать скелета из дерева ресурсов и расставлять их по уровню (как мы это делали с объектами стен в нашем арканоиде). Так вот, мы расставляем уже копии данного объекта, т.е. ИНСТАНСЫ . В каждом отдельном инстансе мы уже можем менять код независимо от других копий. Т.е. мы можем в одном инстансе скелета сделать так, чтобы он был одет в шлем, при этом остальные скелеты будут без шлемов, так как мы прописали код только в одном инстансе. Если же мы пропишем, чтобы шлем был одет в коде самомго объекта скелета, т.е. в коде шаблона, то шлем появится сразу на всех скелетах. Т.е. тут нужно уяснить, что замена кода в объекте влияет на код инстансов, но замена в коде инстанса, не меняет сам код объекта. Это важно знать и понимать. Итак, вернемся к коду создания мяча.

Добавляем в событии создания биты еще одну строчку кода:

Данной строчкой кода мы создаем в координатах x и y-20 на слое "Ball" объект Ball (ну правильнее говорить создаем инстанс объекта, как мы уже выяснили, но можно говорить, что создаем объект). Обратитье внимание, что название слоя указываем в кавычках, а название объекта без. А то у нас и слой и объект имеют одинаковые названия и может возникнуть путаница. Называть их одинаково конечно не обязательно.

Почему мы создаем мяч в координатах x и y-20 ? Еще немного математики.

Так как мы пишем данный код в объекте биты, то x и y будут являтся цетром биты. Мы это установили в первой части урока.

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

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

Чтобы помочь вам быстрее овладеть инструментами Game Maker, мы собрали 2 сборника видеоуроков, где по шагам, наглядно, демонстрируется процесс создания игр.

Изучаем основы Game Maker

Базовый курс уроков Game Maker, поможет новичкам освоиться в программе и создать свою первую 2D игру. Автор видео подробно рассказывает, что нужно делать, как и зачем.

Учимся настраивать движение персонажей (влево, вправо, вниз и вверх).
Предназначение переменных в конструкторе Game Maker. Очень полезный урок.
Задаем параметр прочности (здоровья) для врагов.
Данный видеоролик расскажет вам, как добавить в игру экшена в виде перестрелок.
Задаем своему персонажу уровень здоровья и выводим его на экран.
Учимся основам создания искусственного интеллекта, на правдивых и ложных значениях.
Рандомные, или случайные события, помогут вам создать игру, где каждый уровень будет уникален. Смотрим и вникаем.
Настраиваем автоматическое движение за любым объектом. Пригодиться для создания виртуальных спутников.
Задаем дистанцию для определенных объектов.
Чтобы объекты не пропадали за пределами окна, стоит заранее настроить область их движения.
Учимся создавать многопользовательские игры, в которые можно играть с друзьями через интернет.
Даем врагам возможность вести прицельный огонь по заданным целям.
Добавляем в игру окно инвентаря для хранения и использования виртуальных объектов.
Добавляем возможность сохранения данных игры в отдельный документ.
Подробное объяснение понятия “цикл” и примеры его использования в разработке игр.

Знакомимся с жанрами

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

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

Для кого предназначен движок GameMaker: Studio?

В Master коллекции движка GM:S реализована кроссплатформенная совместимость для настольных компьютеров, HTML5 и мобильных устройств (как для Android, так и для iOS). Кроме того, имеется возможность интеграции системы управления версиями и монетизации (например, реклама и покупки в приложении). Общая стоимость master коллекции составляет около $800 долларов на момент написания этой статьи. Поэтому этот движок идеален для:

  • Любого желающего кто интересуется кроссплатформенной разработкой
  • Инди-команд разработчиков с небольшим бюджетом

Низкий порог вхождения в GM:S возможен благодаря интеграции drag-and-drop интерфейса. Таким образом, это фантастический инструмент для людей с небольшими знаниями программирования в качестве первого опыта; этот интерфейс является отличным способом изучить процесс выполнения программы и некоторую базовую логику.

Благодаря своим возможностям управления, GM:S позволяет разработчикам быстро создавать и запускать очень простые игры, что отлично подходит для игровых джемов и создания игровых прототипов.

Что в нем хорошего

GM:S очень хорош в управлении ресурсами, включением ресурсов в код, обеспечивает легкий способ изменения логики игровых объектов и событийное программирование.

Управление ресурсами

Как только разработчик создал спрайт, добавить его в GM:S можно за несколько кликов. После импорта спрайта, модификации могут быть сделаны уже в GM:S.

Creating a sprite

Создание спрайта.

Интеграция ресурсов в код

После импорта ресурса его свойства (размеры изображения, громкость звукового эффекта и т. д.) могут быть доступны из кода и могут быть назначены игровому объекту. Это делает создание игровых объектов очень простым и отлично подходит для быстрой подготовки и быстрого запуска.

Изменение логики игровых объектов и событийное программирование.

Редактор игровых объектов — это отличное средство обучения, для новичков в разработке игр, и предоставляет удобный способ изменения логики игрового объекта. Как вы можете видеть на этом скриншоте, GM:S позволяет вам писать код для конкретных событий:

Modifiying game object events
Modifiying game object events
Modifiying game object events

Модификация событий игрового объекта.

Для кого это не подойдет?

  • Людям, которые хотят создать полнофункциональную игру, нажатием нескольких кнопок. Для великих игр потребуется время.
  • Для тех, кто хочет разработать следующую грандиозную MMO. Создание сетевых игр является относительно новым направлением для GM:S, и для создания многопользовательских игр есть инструменты получше.
  • Элитные программисты которые требуют, чтобы их язык не мог управлять собственной памятью. GM:S - это не C/C++, и не является конечным языком, ориентированным на производительность. (Нельзя сказать, что производительность здесь плохая, просто C/C++ по-прежнему остается королем этой категории.)

Что в нем плохого

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

GM:S поддерживает 3D, но это не главное. Нет 3D-редактора, отсутствует программа импорта 3D моделей, а код для работы с трехмерной графикой довольно запутан. Если вас интересуют 3D-игры, я рекомендую вам использовать другой инструмент. В будущем 3D может стать более приоритетным для YoYo Games (компании, владеющей GM:S), но на данный момент это явно последнее в списке.

Где я могу получить GameMaker: Studio?

Ниже приведено сравнение различных версий GameMaker, взятых с веб-сайта YoYo Games:

feature compare
feature compare
feature compare

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

Обновление: Бесплатная версия GameMaker: Studio теперь та же, что и стандартная версия! Для получения дополнительной информации см. GameMaker: Studio будет бесплатной.

Стандартная версия отлично подходит для разработчиков одиночек, которые только планируют разработку компьютерных игр; Профессиональная версия идеально подходит для небольшой команды разработчиков планирующих переходить в конечном итоге на кроссплатформенную разработку, поскольку они могут добавлять различные модули с течением времени после получения некоторого дохода; и Master Collection отлично подойдет для небольших команд, которые являются частью созданных студий, и хотели бы использовать кроссплатформенную разработку с самого начала.

GM:S также доступен в Steam, но я бы рекомендовал не покупать его там, так как YoYo Games не знает, что вы его приобрели, и, следовательно обладателям их продукта будет больше хлопот в отделе обслуживания клиентов. Кроме того, они иногда предлагают дешевые апгрейды для тех, у кого уже есть определенная версия GM:S, и они не могут дать то же обновление пользователям купившим в Steam. Кроме того, если вы покупаете у Steam, то необходимо войти в Steam, чтобы запустить GM:S, а это может раздражать.

Обучение GameMaker: Studio

GM:S предлагает два различных способа создавать игры. Первый это так называемый интерфейс Drag and Drop (сокращённо DnD). Он довольно мощный и позволяет создавать сложную логику. Однако, он не такой мощный, как второй вариант: использование языка программирования GameMaker Language (сокращённо GML). GML - это прекрасный язык сценариев, который может делать все, что может делать DND, и многое другое.

Начало работы

После того, как вы загрузили версию движка GM:S которая соответствует вашим потребностям, вам следует ознакомиться с учебными материалами, которые поставляются вместе с GM:S. Их можно найти во вкладке Tutorials после того, как вы откроете GM:S.

В начале уроков будет показано, как использовать drag and drop интерфейс, а более поздние руководства начинают охватывать язык программирования GML. Самое приятное в предложенных уроках - это то, что они фактически добавляют окно к интерфейсу, в котором вы узнаете, как создавать каждую игру, поэтому вам не нужно обращаться к веб-странице - все доступно изложено для вас в GM:S!

Для самого продвинутого обучения можно посмотреть демки на вкладке Demos после запуска GM:S. Они не откроют окно обучения, но они предоставляют доступ ко всему используемому исходному коду, чтобы можно было просматривать его, запускать отладчик и наблюдать за тем, что происходит, так что вы получите хорошее представление как использовать их методы в своих играх.

Руководство


Руководство в программе GM:S

Если вы выполняете поиск как в прилагаемом руководстве, так и в онлайн-руководстве и не можете найти ответы, не бойтесь! На reddit существует большое сообщество /r/gamemaker и есть официальные форумы. Кроме того, имеется отличный сайт полон инди-разработчиков, некоторые из них часто используют GM:S на форумах TIG. Эти сообщества полны полезных людей, поэтому не бойтесь задавать свои вопросы!

Расширения

Если вам не хватает встроенных функций движка GameMaker, не волнуйтесь; он расширяемый! Бесплатная версия не позволяет использовать расширения, но в платной версии это возможно.

Что могут делать расширения?

Расширения добавляют новую функциональность, изначально не предусмотренную YoYo games. Вот некоторые примеры:

GiiMote - позволяет разработчику интегрировать WiiMote элементы управления в свою игру, добавляя функции, которые опрашивают состояние WiiMote (положение и нажатие кнопок).

FX Creator Extension - упрощает создание таких эффектов, как погода, лучи и брызги воды.

Взаимодействие с базами данных с помощью SQL - позволяет вашей игре подключиться к базе данных SQL, получить данные в виде строки, а затем использовать их в игре. Расширение добавляет такие функции, как TestDatabaseConnection и ExecuteSQL так, что вы можете получить данные обратно в виде двух строк кода.

Одно серьезное ограничение - некоторые расширения несовместимы с мобильными платформами.

Где найти расширения

Самые лучшие места, которые я нашел, это официальный сайт ресурсов и неофициальный сайт под названием GMToolbox.

Как их установить

  1. Необходимо загрузить расширение - это должен быть файл .gex .
  2. Щелкните правой кнопкой мыши папку Extensions в GM:S и выберите Add Existing Extension.
  3. Это должно вызвать диалоговое окно, и в правом нижнем углу вы увидите кнопку с надписью Install. Нажмите ее.
  4. Откроется другое диалоговое окно со списком установленных пакетов (возможно, пустым). Справа от этого окна есть кнопка, которая снова с надписью Install. Нажмите ее.
  5. Это открывает еще одно диалоговое окно; перейдите в папку, в которой сохранен файл .gex , щелкните его и нажмите кнопку Open.

Учебные ресурсы

Уроки инди-разработчиков

Список уроков Chevy Ray - Chevy Ray является разработчиком Flash-игрового движка FlashPunk, частый соперник на Ludum Dare и разработчик нескольких классных игр. Он написал несколько уроков по GameMaker, и это подборка тех его материалов, которые он считает лучшими. Уроки охватывают такие темы, как масштабирование вида, оптимизация скорости, параллакс-скроллинг.

Серия уроков Derek Yu's - Derek Yu является членом TIGSource и разработчиком Spelunky. Эта серия уроков для более старой версии GameMaker, но вы по-прежнему можете легко пройти ее. Это полное пошаговое руководство по созданию космической сайд-скроллер стрелялки; по мере создания вы узнаете, как работают игровые объекты, как создавать прокручивающиеся фоны, как создавать спрайт шрифты и множество других замечательных тем. Обязательно к прочтению.

Другие уроки и руководства

Официальные уроки - официальные уроки посвящены созданию нескольких игр разных стилей (некоторые из них 3D-игры, поэтому эти уроки могут быть особенно глубокими, если вы будете использовать GM:S). Кроме того, имеется урок по созданию многопользовательских игр, который, по моему мнению, является одним из лучших в Интернете по изучению создания многопользовательской игры в GM:S.

Я рекомендую их для людей, которые хотят разработать определенный тип игры и желают узнать как разрабатывать игры подобного типа, но если вы ищете урок для начинающих, я рекомендую уроки Derek Yu's.

Также ознакомьтесь с официальными и неофициальными руководствами, поскольку они дают большой справочный материал.

Становимся профессионалом

Несколько GameMaker игр стали коммерчески успешными, и есть много других великолепных GameMaker игр, которые являются прекрасными примерами того, что возможно создать используя GM:S.

Отточеные игры

Spelunky - оригинальная версия Spelunky была создана в GameMaker; более новая XBLA версия и новая ПК-версия игры, нет. Это коммерческий успех, версия, созданная в GameMaker, бесплатная.


A Nation of Wind - эта игра скрытый драгоценный камень и в нее стоит определенно поиграть.


Dustforce - вышла в Steam, это не был огромный коммерческий успех, но тем не менее, это отличная игра!


Коммерческие хиты





Заключение

GameMaker: Studio отлично подходит для новичков и профессионалов. Его великолепный код и функции управления ресурсами, в сочетании с относительно низкой ценой, делают его великолепным игровым движком для небольших команд и независимых разработчиков, обладающих приличным опытом программирования, и его доступность, и событийность, и также система drag-and-drop на основе действий, делает его отличным движком для тех, кто практически не имеет опыта программирования.

Надеюсь, вам понравилось читать этот обзор, и теперь у вас есть хорошая идея, как начать работу с GM:S. Если вы считаете, что я, что-то упустил или вам нужна дополнительная информация, не стесняйтесь, напишите мне в комментариях. Удачи вам на вашем пути разработчика игр!

ITGENIO


Что это такое?

GameMaker - один из самых популярных игровых движков, позволяющий разрабатывать приложения под множество платформ. С его помощью можно создавать как самые простейшие 2D игры, так и очень сложные, продуманные, способные стать популярными не только среди друзей, но и среди многих игроманов. GameMaker отличный вариант плавного перехода от Scratch к Python или JavaScript.

Чему научится ребенок?

Помимо навыков программирования, которые ребенок получит в процессе работы с GameMaker, он также будет работать с графикой, диалогами, а также над логическим смыслом игры (продумывание персонажей и их история).

В GameMaker существует два вида программирования: Drag&Drop (перетаскивание) и обычный кодинг ("писать ручками") на языке GameMaker. Drag&Drop будет привычнее и по душе тем, кто работал со Scratch, а код, написанный от руки, - тем, кто работал или хочет работать с Python или JavaScript.


Программирование на GameMaker будет наиболее интересно тем, кто "вырос" из Scratch, но еще не развил достаточные навыки для программирования на Python или JS.

GameMaker рассчитан на детей в возрасте от 10 лет .

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

Системные требования

• Операционная система: Windows 8/8.1/10 x64, Mac OS 10.12 и выше;
• Процессор: Intel Core i3, Intel Core i5 и более мощный, с тактовой частотой от 2.0 GHz (лучше 4-х ядерный);
• Установленный интернет браузер Google Chrome;
• Оперативная память: 4 ГБ (рекомендованная 8 ГБ или 16 Гб);
• Видеокарта любая с объемом видеопамяти не менее 500Мб (рекомендовано 1гб) с поддержкой DirectX 11;
• Место на жестком диске: не менее 4 ГБ свободного пространства на жёстком диске;
• Наличие микрофона или гарнитуры;
• Наличие динамиков;
• Интернет-соединение от 1 Мбит/сек.

Выберите мессенджер, в котором вам будет удобно общаться с нами.

Если ученик уже обучается у нас, вы можете записаться в личном кабинете родителя самостоятельно или напишите нам туда,

Читайте также: