GM XD / GMS XD — альтернативный дебаггер для GM8.1/Studio
GM XD
Упомянутая в интервью программа, которая была задумана для того, чтобы стать лучшей заменой встроенному дебаггеру в 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 также может быть полезной в тестировании уже готовой и отлаженной игры.
Полный список фич, и инструкцию по применению — можно почитать на данный момент там. Инструкция (и сама программа) — полностью на английском языке.
Ты чё, нерусский что ли?!
Предвидя комментарии на эту тему, поясню — я уверен, что среднестатистический современный русскоязычный человек-геймдевелопер:
- Считает C++ более уместным языком для геймдева, а GML — конструктором;
- Всё равно не читает инструкций по использованию программ, заменяющих дополнительные программы, которые он и так вряд ли активно использовал;
- И правильно делает, потому что, ещё со времён игр Денди на японском, разбирался во всём мыслимом и немыслимом методом тыка, причём успешно. Если это было тому вправду так уж важно;
- В остальных случаях обладает знанием английского языка на уровне чтения технической документации, коего ему тут хватит по уши.
Принимая во внимание объём инструкции, я считаю, что заниматься двухъязычной поддержкой его в актуальном состоянии — «немного» не тот объём работы, который я намерен выполнять в этом проекте, учитывая засилье совсем других проектов по программированию, и особенно вспоминая о том, что мне надо вообще-то делать игры. Но в жизни, вестимо, ничего не бывает так просто. Рекламка 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)
GMS XD не умеет большей части того, что умеет GM XD, но тоже может пригодиться. Должно работать и в GM8.1, и в Studio (под Windows, но теоретически может работать и в Linux, и в Mac OS X той же версии, для которой компилирует Game Maker: Studio).
- 02 августа 2013, 02:15
- 016
Крутая штука вышла... Но:
http://yoyogames.com/news/172
Sad but true =(
А чего печалиться-то? По-моему впору радоваться, что GMS XD потребует меньше тестирования, так как будет уметь меньше вещей чем GM XD, всё ещё оставаясь уместным дополнением к основной системе.
Для меня печали уж точно нет, на студию переходить не собираюсь с её изменениями и нововведениями.
Раз уж подняли тему, поведаю мои ощущения от одного дня знакомства с новой спецификацией GML для Студии 1.1 (хм, и когда только успели 1.1 сделать)...
Фрустрация.
Убрали массу вещей. Я понимаю, зачем убрали функции проигрывания диска в CD-плеере. Наверное, их всего 100 раз использовали во всём мире за всё время существования GM. Но так как убрали execute_string, execute_file, и даже execute_program — много вещей стало делать сложнее мне, как опытному пользователю GML. Модульность скриптов и объектов, лёгкая переносимость их между проектами — уничтожена. Убрали ещё всяких вещей по мелочи, но вот что смешно — они аргументировали это тем, что эти функции работают только в Windows, и поэтому не подходят для их кроссплатформенных задумок, тогда как я сегодня смотрю их справочник, а там:
Во-первых, давно пора было сделать environment_set_variable().
Во-вторых... Ну вы поняли.
Также убрали эти переменные:
Теперь я не могу в GMS XD проверить, работаем ли мы с лицензией, или без, а от этого зависит перечень доступных функций в рантайме. А причина всё та же:
То есть как, на других устройствах тоже нельзя объявлять глобальные переменные? И как же тогда работает пример с ключевым словом global? Очевидно, что это противоречие.
Далее, добавлять спрайты динамически можно, но, судя по справке, менее безопасно чем было в GM8.1:
Ну, это помимо того, что для пользования этой функцией нужно купить лицензию.
...что вообще? С чем мне надо было где согласиться, да и кому — мне, или игроку? Если с соглашением при инсталляции IDE, то очевидно что оно прошло успешно. Если с чем-то другим, то я не понял, где оно. Да и с чего вообще такая придирчивость?
Зачем-то ввели функции game_save_buffer и game_load_buffer, судя по всему, ещё менее надёжные и полезные чем встроенные game_save и game_load. Для которых зато нужно вручную предварительно инициализировать буферы памяти.
И, наконец, просто опечатки:
Вот что давно пора было сделать, и это сделали, так это функции is_array, array_length_1D, array_length_2D и array_height_2D.
А вот зачем мне шесть режимов симуляции трёхмерного звучания? В движке, который с трудом с ним работает?
М.б. есть смысл разработчикам это где-нибудь написать?
на лбу, напримерОт того, что ты написал это здесь, никому ведь ни жарко, ни холодно. Наверняка хай не один ты поднимешь, глядишь, и пойдёт ситуация на исправление о_0
Так ведь... Спецификация не новая. Да и они всё это должны были предвидеть ещё года два назад. Я говорю об их решениях, от которых они уже не отступят.
Понятненько...
Ознакомившись с новой спецификацией более подробно, я понял, что тут преувеличил, так как модульность в Студии появилась в другом виде, хотя пока что непонятно, насколько удобном. Уничтожена — не была. Но насколько стало лучше — это надо спросить у активно использовавших.
Погоди-ка. GM 8.1? А как же 8.0? Пойдёт?
Большая часть функций должна работать и для 8.0 — я специально так писал код, чтобы было совместимо с более старыми версиями, но чётко за этим не следил, и не проверял. Скорее всего, заработает всё, только учти, что нужна зарегистрированная версия, а не бесплатная. Либо можно вручную создать объекты такие, как в файлах o_XD и o_XD_watch из системной папки GMXD, и скомпилировать с ними.
Праздравляю!
Спасибо.
Я вообще довольно беглое знакомство с гамаком имею (пару туториалов осилил, добавил чота от себя и отложил), поэтому в полной мере оценить сабж не могу. Тем не менее, когда с упомянутыми туториалами ковырялся - отметил, что функция оперативного перехода между комнатами была бы для разработки очень нелишней.
Не ожидал увидеть тут комментарий от тебя, и даже не думал, что ты как-то относишься к GM. Если когда-нибудь подключишь это дело — расскажешь, как оно.
Отношение к ГМ имею в плане казуального интереса.
Но поскольку в голову всё равно ничего не лезло, кроме платформерных попрыгушек с движением слева направо, то глубоко и не изучал.
Может, что-нибудь покажешь? Или там всё равно геймплея на полминуты?
да я даже проекты не сохранял. там пока не было ничего даже в зародыше интересного. серьёзно. простые упражнения какиета на перемещение и взаимодействие объектов (столкнулись и взорвались - охуеть как круто). любая игра с atari и то содержательнее.
Понятно. Ну, если когда-то захочешь заняться геймдевом, обращайся.
Дело то вот в чём - одно время я до безобразия проникся игрушкой Au Sable от товарища Amon26. Как выяснилось - она сделана на Game Maker. Я тогда, собственно, и подумал, что наверное смог бы не хуже с этим конструктором управиться. Бросаться прямо с кондачка делать игру было бы глупо, поэтому взялся сначала курить мануалы и туториалы. В процессе изучения стал задаваться вопросом - а если я таки начну игру делать, то что я имею предложить, помимо очередного платформера (которые уже всем надоели) с гипотетически мрачным дизайном? и нужно ли засорять эфир таковым продуктом? Внятно ответить себе на эти вопросы я не смог, поэтому закономерно пришёл к выводу: "не хочешь срать - не мучай жопу".
Хотя в теории даже если бы я не сделал ничего стоящего, то я всё равно бы мог набрать во время разработки какой-никакой скилл и потом существенно помочь какому-нибудь затейнику, у которого фантазия получше моей, в разработке его беспесды гениальной игры.
Тем не меее, пока ковырялся, отметил, что делать масштабный платформер без возможности оперативного переключения комнат будет тяжеловато.
Обновил GMS XD, теперь есть GMX-объект для импорта в Студию.
Как по мне, так не туда ты силы свои распыляешь.
Игры делает много кто. Я могу сделать что-то большее, и я это сделаю, рано или поздно.
Игры я тоже буду делать, но это не в приоритете сейчас.
Кстати. Как ты относишься к TAS?
Что такое TAS? Скоростное прохождение?
Что же больше Майнкрафта и Кейв Стори? Только ОС и язык программирования. Но боюсь гамак тебе здесь не помощник:-)))
Tool-Assisted Speedrun. Кто-то говорит "Superplay". Я в рамках GMXD хочу сделать продвинутый инструментарий для записи и проигрыша игровых сессий. Если дело пойдёт, то это будет совместимо со всеми играми на GM8/8.1, а может даже 7, и/или 6.
Да я как бы ровно отношусь. Фиолетово короче:)
Наверное я неправильно спросил. Ты их вообще смотришь? Интересуешься какими-нибудь хитрыми способами проходить игры, пользоваться багами или странными техническими моментами в них?
Да я особо и не смотрел, так читал где-то. Я смотрю только прохождения Кинамана и ещё пары чуваков.
Апдейт. Вспомнил, где читал про ТАС этот. В журнале Геймбит, который делали на форуме Эмуленда, там статья была.
Как по мне так Xitilon сделал очень крутую штуку для тех кто умеет пользоваться GM.
Штука, которую будут использовать два с половиной анона? Ну,ну...
Лучше сделать штуку для 2.49384 анона, чем то, что не будет использовать совсем никто. Ты разве не знаешь, что нельзя сходу сделать то, что понравится многим? Начинать ведь надо с малого.
Это инструмент от эксперта и для экспертов.
Не знаю, сколько анонов его будут использовать, но я, Хейзер и Дрейк — это уже три вполне конкретных человека. Другое дело, что когда мы воспользуемся этим инструментом в разработке своих игр, никто не заметит разницы, и где конкретно это пригодилось.
Я, кстати, писал Локомалито, но он перешёл на GM:Studio, в которой от GMXD работает наверное где-то 10% функционала. После этого я сделал GMS XD, версию для Студии. Но это, конечно, унылая версия, как и само то, как поменяли GML в последнее время. Не-Студийную версию, тем не менее, я продолжу развивать.
Естественно, Локомалито-то не дурак использовать старый софт. Да и студия позволяет выйти из под винды и делать для других платформ.
Это ты старый. А тот софт — рабочий и более гибкий.
Я как понял, гамак же не будет поддерживаться?
GM8.1 не будет, GM:Studio вот обновили до версии 1.2 и активно развивают.
Ну и почему тогда твоя восьмерка не устаревший софт? Я не понял тебя:(
Потому что она работает. Когда она перестанет работать — я постараюсь создать свою аналогичную систему, наследующую лучшие качества интерфейса родной IDE GM, и всей концепции использования GML. Потому что это — удобно.
Винда хрюша тоже работает, но это старая ОС, не находишь?
Нахожу. Но ты по-любому старее.
Ты иногда такими громкими словами кидаешься, что мне смешно становится:)) Первый такой звоночек прозвинел, когда вы спорили с Йео насчет механики битемапа. У Йео была игра с отличной механикой, а ты кинул фразу, что сделал бы за вечер и начал в разговоре что-то там доказывать. Вот недавно тоже было, когда сказал, что рогалик Боброва ты бы сделал за пару дней. Почему же тогда не видать шедевров от тебя? :)
В предыдущем выпуске:
Но ещё это зависит от того, что ты можешь считать шедевром.
Да вопрос не в том, кто что считает за шедевр, а в том, как твои слова коррелируют с тем, что ты создаешь. Ну тобишь у Йео была игра, по которой можно оценить механику, у Сергея тоже. А за тобой одни слова были:(
http://gamin.me/blog/compo/9222#comment-76348
Ой! Как же так?
Если мало, смотри список там — http://gamin.me/blog/interviews/11083
И? Причем здесь механика шмапа и битемапа у Йео, рогалика у Сергея. Ты же понимаешь, что разраб может сделать норм один жанр и зафейлиться на другом.
Не понял тебя. Я вроде бы и не хвалюсь тем, что я могу делать любую механику. Я просто показываю некое противоречие:
То есть:
И:
Ты находишь, что ты здесь всё логично сказал?
Ты вырываешь фразы из контекста. Конкретно в случае с Йео за тобой одни слова. Битемапа у тебя не было и у меня большие сомнения, что ты смог передать механику битемапа. С sb3d та же фигня. Рогалик есть? Нет. Поэтому опять за тобой одна говорильня.
Ааа, в этом смысле. Теперь понятно, что ты имел в виду. Просто я не понимаю, в чём сложность работать с любым жанром в принципе, уже умея программировать — неужели в том, чтобы хорошо приблизить оригиналы, то есть игры, признанные классическими играми жанра?
Я действительно не выпускал ни одного битэмапа, и ни одного рогалика, за всё время моего занятия разработкой игр. Когда что-то из этого станет похожим на игру, а не на прототип, я это покажу. Хотя с технической точки зрения разницы между внутренними реализациями объектов — никакой, те же переменные, те же два измерения, те же таймеры... А ещё я не люблю брать чужую графику, особенно коммерческую, поэтому любая разработка у меня затягивается.
Запрограммировать-то можно хоть что. Вопрос в том, как это сделать. Можно допустить уйму ошибок, которые специфичны для определенного жанра.
А почему их должен допускать именно я, с 5 годами опыта в GML? За всё сразу браться — ничего не сделать, плохая затея. Я вот впилил в EX-802 одновременно годные механики платформера и шмапа, хоть и не развил их далеко, а на последнем ЛД делал с нуля движок для текстовых квестов на HTML+JS, а игра с предпоследнего вообще не знаю, к какому жанру в итоге принадлежит — понятно только что это 2D, и очень сильно на реакцию.
А по поводу слов — не всё то интересно делать, о чём ты знаешь, что ты можешь это сделать. И это всё-таки не значит, что ты этого не можешь сделать.
Раз уж ты упомянул "уйму ошибок", приведи мне хотя бы несколько их, чтобы я понял, о чём речь, потому что у меня нет понятия ошибок "специфичных для жанра". Есть кривые руки, а есть кривые мысли. Но от жанра это не зависит.
Да я фиг знает:( Я имел ввиду, что классную механику не каждый может запрограммировать. Возьмем шмапы. Иной раз играешь, и диву даешься, то управление хромает, то сделают примитивных противников, которые только по прямой фигачят, то стрельбу сделают кривой. Не считая, конечно, скудный левелдизайн. Появление врагов тоже может быть странным. А например, для битемапа свои заморочки. Вон Йео вечно ныл, что механику инди-разрабы не могут сделать:)
Есть.
Если что, речь шла про меня, а не про sb3d. Или кто-то где-то спалил именно мой рогалик? Это мог быть только АндерГамин...
А, действительно. Перечитал диалог, понял, что вначале неправильно понял.
Да ну этого Киви, он постоянно издевается над моим последним рогаликом. Вот мне уже и мерещится, что и тут он прохаживается на его счёт. :)
Во-во, прочитает сначала через одно место, а потом бегает из друзей удаляет:(
Зато он есть. Продолжай разработку, это всё болтовня.