Что нового в GameMaker: Studio 1.4?

Оригинал: What’s New In GameMaker: Studio 1.4? (Mark Alexander, 28 ноября 2014)
Перевод: Dmi7ry

На этой неделе вышло большое обновление GameMaker: Studio. Это обновление добавляет множество новых возможностей и, хотя все изменения перечислены в Release Notes, они не дают полной картины и кому-то могут показаться неоднозначными. Поэтому в данной статье мы хотим рассмотреть, что изменилось, что появилось нового и приведём ссылки на некоторые из предыдущих статей в техническом блоге, которые рассматривают эти функции более подробно.

Новый установщик

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

  • Если GameMaker: Studio работает, но у вас есть проблемы с модулями или файлами, откройте меню Help и нажмите Update License. Снова введите свою лицензию и перезапустите GameMaker – пропущенные файлы должны будут загрузиться.
  • Если у вас возникли проблемы с использованием утилиты обновления, например, “застревание” при загрузке или при неправильной установке, тогда вы можете скачать автономный установщик по следующей ссылке: GMStudio-Installer-1.4.1474.exe
  • Если ничего не помогло, вы можете деинсталлировать GameMaker: Studio и удалить все его файлы из папок %appdata% и %localappdata% (убедитесь, что создали резервную копию всех важных, например, Android Keystore), после чего перезагрузите компьютер и установите GameMaker: Studio из указанной выше ссылки.

Если у вас какие-то другие проблемы, пожалуйста, обратитесь в службу технической поддержки: http://help.yoyogames.com

 

Новые модули и YYC

Существенным изменением в модулях стало введение полной поддержки консолей PS4, PS3, PSVita и Xbox One, а также поддержка YYC для Windows Phone и Windows 8. Также теперь YYC идёт в комплекте со всеми модулями для пользователей Pro и выше, поэтому, если у вас есть, например, модуль Android, то у вас также будет доступен Android (YYC) (возможно, что потребуется обновить лицензию через меню Help, чтобы получить модуль). Обратите внимание, что для экспорта на консоли, вы должны быть зарегистрированным разработчиком Sony или иметь лицензию Xbox-разработчика Microsoft, и после вам нужно будет связаться с YoYo Games.

GameMaker: Player и GameMaker: Marketplace

Обновление 1.4 даёт всем пользователям доступ к GameMaker: Player и GameMaker: Marketplace. Marketplace существует не так давно и первую запись об нём мы сделали в июле. Тем не менее, он значительно вырос с тех пор и стал важнейшим ресурсом для многих разработчиков – и как источник новых инструментов и ресурсов для игр, и как источник дохода. Регистрация проста и с аккаунтом разработчика вы сможете продавать свои ассеты, если хотите, а в базе знаний по GameMaker: Marketplace есть подробные статьи о том, как всё установить и как использовать приобретённые вами вещи.

GameMaker: Player был запущен совсем недавно и пока находится в стадии бета-тестирования, но мы надеемся, что он станет витриной для всех лучших игр, созданных в GameMaker. Player – это игровой сервис, в котором можно играть в игры, которые были загружены вами или другими пользователями GameMaker: Studio, а также покупать и продавать их. Это независимое приложение, которое поставляется вместе с GameMaker: Studio и устанавливается вместе с обновлением 1.4, либо его можно скачать напрямую со страницы YoYo Games. Это значит, что вы не должны быть разработчиком, чтобы наслаждаться играми и мы призываем вас приглашать своих друзей, потому что каждый может поделиться доступными названиями. В настоящее время любой может загрузить игры в Player, но есть ряд правил и рекомендаций, а также руководство по стилю, которым необходимо следовать. Всю информацию о том, как использовать Player, а так же о том, как покупать и продавать загруженные игры, вы можете найти в базе знаний по GameMaker: Player.

Улучшенные функции аудио

Имеются некоторые очень важные изменения, сделанные в аудио системе GameMaker: Studio. Первое – функции для работы с музыкой (вроде audio_play_music()) стали устаревшими и теперь работа с любыми звуковыми файлами делается одинаково. В ваших проектах, эти функции могут очень легко быть заменены их эквивалентами, а при попытке использовать их, будет ошибка.

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

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

Следующим важным дополнением является возможность использования аудио буферов для хранения звука, полученного из внешнего файла или из источника записи, и их воспроизведения в своей игре. Мы уже рассказывали, как записывать аудио в техническом блоге Recording and Streaming Audio и вы можете использовать новую функцию audio_create_buffer_sound() для создания идентификатора звука, чтобы играть буферизированный звук в своих играх.

Улучшенные возможности IDE

Список новых возможностей IDE достаточно большой и многие их них уже рассматривались в Release Notes, но есть такие, о которых стоит упомянуть более подробно.

В первую очередь, это возможность переназначать большую часть горячих клавиш, которые используются в GameMaker: Studio. Это довольно большое дополнение и мы ещё в сентябре написали статью об этом в техническом блоге: Key Bindings

Другим важным изменением стало внедрение системы контроля версий в IDE. Старая система была полностью переработана и была добавлена поддержка Git и Mercurial, как и возможность использовать другие решения и создание пользовательских конфигураций системы контроля версий. Всё об этом вы можете прочитать в нашей статье Source Control Management в базе знаний.

Также были обновлены расширения: добавлена поддержка Windows 8 и Windows Phone, а также IDE теперь позволяет вам добавлять proxy-файлы, благодаря чему можно поставить несколько версий расширения для различных платформ. Ещё была введена поддержка переменных аргументов для вызовов расширений (вы можете проверить чек-бокс в функции расширения).

Также вы должны знать, что аналитика для Android и iOS была удалена из IDE и теперь доступна в виде расширений, подобно тому, как произошло с рекламными расширениями при выпуске версии 1.3. Вы можете загрузить эти расширения из ленты Demo при запуске GameMaker: Studio.

И, наконец, стоит также упомянуть, что в редакторе комнат теперь есть галочка, чтобы спрятать все слои тайлов, кроме выбранного. Это должно облегчить работу с тайлами на сложных картах.

Важные изменения в коде

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

В предыдущих версиях GameMaker: Studio была ошибка, из-за которой ссылка на не существующий экземпляр, при использовании доступа через точку <instance>.<var>, обрабатывалась молча, без сообщения об ошибке, хотя экземпляра на самом деле не существует. Это поведение не является корректным, но, к сожалению, многие пользователи стали полагаться на него в своих играх, из-за чего в этих проектах могут появиться ошибки вроде “Unable to find any instance for object index” (невозможно найти экземпляр указанного объекта) при запуске после обновления Студии. В большинстве случаев, достаточно будет просто добавить проверку instance_exists(), чтобы решить проблему.

Второе изменение заключается в введении возвращаемого типа <undefined> (“не определено”). Он будет возвращен, если структура данных не может найти требуемую ячейку или значение, вместо ранее используемого 0. Таким образом, при вызове, например, ds_map_find_value(), будет возращено <undefined>, а не 0, если данный ключ не существует. Для проверки этого значения есть функция is_undefined();

Ниже идёт простой пример, показывающий, как теперь нужно делать проверку

var val = ds_map_find_value(game_map, "score");
if (is_undefined(val))
{
    ds_map_add(game_map, "score", 0);
    val = 0;
}

 

И ещё больше…

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

  • Поддержка iOS 8 и поддержка iPhone 6 и 6+
  • Физика частиц через Liquid fun (мы рассказывали об этом в техническом блоге здесь)
  • Теперь можно использовать sprite_add() для загрузки файлов в формате *.gif и *.jpg/jpeg
  • Было обновлено SDK для Facebook в соответствии с новыми правилами по линковке SDK с играми
  • Редактор шрифтов теперь содержит возможность отображения шрифтов с высоким качеством (галочка “High Quality”), чтобы получить более чёткие шрифты (может вызывать небольшое снижение производительности)
  • Новые функции для получения информации о вершинных буферах и для манипуляций ими

Как вы можете видеть, на всех уровнях было добавлено очень многое и это довольно крупное обновление GameMaker: Studio. Мы надеемся, что переход от версии 1.3 на 1.4 будет гладким, но если у вас возникнут проблемы, вы можете получить помощь от сообщества GameMaker, либо можете связаться с технической поддержкой YoYo Games.

Совсем скоро в GameMaker: Studio появится возможность заниматься профилированием написанного кода. Разработчики опубликовали пост об этом в соответствующем блоге. Теперь есть возможность выявить слабые места в производительности своей игры и более целенаправленно заниматься оптимизацией.