GM XD / GMS XD — альтернативный дебаггер для GM8.1/Studio

GM XD

GMXD V1.0, скриншот первой вкладки.

Упомянутая в интервью программа, которая была задумана для того, чтобы стать лучшей заменой встроенному дебаггеру в Game Maker, была, наконец, доведена мной до состояния, которое я могу назвать достойным версии 1.0. И Гамин — первый сайт в Сети, который об этом узнал.

Так зачем оно надо?

(вкратце)
  • Выполнять в игре любой GML-код на лету, не ограниченный роскошной длиной в 100 символов, в одну строку, как позволяет родной дебаггер GM. Но 32 килобайтами ограниченный, если что. Добавлять любой код на лету к объектам в игре, либо привязывать его выполнение к нажатиям клавиш — например, можно удобно поднимать здоровье игровому персонажу, при внезапных ошибках в процессе тестирования* игры. Кроме того, работает отключаемое по желанию автодополнение названий функций, констант и переменных;
  • Узнавать, сколько экземпляров каких объектов находится в комнате, где они находятся, и куда двигаются. Активировать и деактивировать какие-то либо экземпляры, например — чтобы они некоторое время не мешали при подготовке новой игровой сцены для тестирования;
  • Наблюдать (Watch) и визуализировать не только скалярные строчные и вещественные значения, но и 1- и 2-мерные массивы, а также встроенные 6 типов структур данных — ds_list, ds_map и так далее. Кроме того можно визуализировать только части из них, а не (например) весь массив 100 на 100 целиком, если нужно узнать только [20,20]-[40,40];
  • Сохранять и загружать не одну игру по F5/F6, а использовать менеджер сохранённых статусов игры со скриншотами текущего содержимого игры, позволяющий выбирать нужный сейв для загрузки или удаления;
  • Перемещаться между комнатами игры в любой момент, в пару кликов.
  • Менять любые параметры видов (views) и масштабирование на лету;
  • Видеть все текущие загруженные ресурсы игры и их свойства. Также можно дампить существующие поверхности (surfaces) в файлы;
  • Видеть и менять привязки одних клавиш к другим. Типичный пример — WASD дублируют стрелки. Для добавления конкретно этой привязки (или наоборот, стрелки на WASD) достаточно нажать одну из двух преднастроенных кнопок. Или обнулить все привязки, третьей;
  • Создавать, двигать, удалять, копировать, перемещать и ставить под наблюдение экземпляры объектов, выбранные курсором мыши в окне игры.

* GMXD также может быть полезной в тестировании уже готовой и отлаженной игры.

Полный список фич, и инструкцию по применению — можно почитать на данный момент там. Инструкция (и сама программа) — полностью на английском языке.

Ты чё, нерусский что ли?!

Предвидя комментарии на эту тему, поясню — я уверен, что среднестатистический современный русскоязычный человек-геймдевелопер:

  1. Считает C++ более уместным языком для геймдева, а GML — конструктором;
  2. Всё равно не читает инструкций по использованию программ, заменяющих дополнительные программы, которые он и так вряд ли активно использовал;
  3. И правильно делает, потому что, ещё со времён игр Денди на японском, разбирался во всём мыслимом и немыслимом методом тыка, причём успешно. Если это было тому вправду так уж важно;
  4. В остальных случаях обладает знанием английского языка на уровне чтения технической документации, коего ему тут хватит по уши.

Принимая во внимание объём инструкции, я считаю, что заниматься двухъязычной поддержкой его в актуальном состоянии — «немного» не тот объём работы, который я намерен выполнять в этом проекте, учитывая засилье совсем других проектов по программированию, и особенно вспоминая о том, что мне надо вообще-то делать игры. Но в жизни, вестимо, ничего не бывает так просто. Рекламка Game Maker’а в 2005 году обещала мне, что я могу делать игры без программирования? Отлично, через 8 лет я программирую альтернативные утилиты для самого Game Maker’а, для того чтобы делать и тестировать на нём игры было действительно удобно в моём понимании. И, наконец, в этом году я всё-таки начну продолжу делать именно игры, и даже что-то выпущу.

Я обещаю.

А, чуть не забыл добавить ссылку на саму программу-то.

Дебажить подано.

Для того чтобы пользоваться GM XD, достаточно закинуть EXE-файл, INI-файл и папку GMXD System в папку с игрой, которую предпологается отлаживать или тестировать. Игра, в свою очередь, должна выполнить этот INI-файл через execute_file.

Здесь вам не студия!

Для GM-Студии последует упрощённая версия, более слабая по функциональности, так как разработчики отбросили в ней и execute_file (сопровождая это словами «you should really never need this feature. All commercial games get by without this» — кажется, где-то я это уже слышал, особенно саму конструкцию «All … get by without» по отношению к тому, что моей разработке-то как раз нужно), и всю ветку функций variable_*_*, и ещё много вещей. Учитывая, что в родном дебаггере GM:S всё равно нет ни перехода по комнатам, ни вотчей, ни ещё некоторых функций. А, говоря точно:

Функций из этих вкладок не будет:

  • Code / Bind
  • Save / Load (хотя с этим можно похитрить ещё)

Функции из этих вкладок будут ограничены:

  • Window / Views — дисплей более не настраивается;
  • Rooms — переходы устарели;
  • Resources — удивительно, но поверхности всё ещё можно дампить;
  • Other

Вариация GM XD (GMS XD?) будет исполнена целиком в GML по новой спецификации.

GMS XD

Версия 1.0 в виде внешнего файла с инициализацией объекта

Версия 1.0 в виде объекта GMX (для импорта в GM:S)

Инструкция для 1.0

GMS XD не умеет большей части того, что умеет GM XD, но тоже может пригодиться. Должно работать и в GM8.1, и в Studio (под Windows, но теоретически может работать и в Linux, и в Mac OS X той же версии, для которой компилирует Game Maker: Studio).