GameMaker: Studio Early Acces 1.99.97

Изменения относительно версии 1.3.1307 на бета-канале

Изменения в Application Surface

  • ВНИМАНИЕ: Мы изменили слой GUI таким образом, чтобы он изначально был привязан к application surface. Проекты из 1.2 скорее всего будут отображаться так, как вы и ожидаете, но проекты, исправленные в 1.3/EA для изменения положения текста GUI и т.д., возможно, теперь придётся изменить снова.
  • Если вы уже исправляли свой проект для 1.3 и хотите, чтобы он работал как в 1.2, то display_set_gui_size() может задать размер application_surface.
  • display_set_gui_maximise() заставит вашу игру продолжать работать так, как работали проекты 1.3 до настоящего момента.
  • Используя display_set_gui_maximise() вы также можете ввести и смещение и масштабирование, которое может быть применено в событии pre-draw для перемещения пользовательского интерфейса, скрытия того, что за пределами экрана и т.д.

Изменения в IDE

  • Теперь все окна можно сделать плавающими и вынести за пределы IDE. Настройка была поменяна с “выносить окна с кодом” на “выносить окна”.
    • Во время работы GM, каждый открытый ресурс запомнит своё расположение и размер при закрытии. Однако выключение GM сохранит только последние 10 окон (на данный момент).
    • В данный момент возможно некоторое мерцание при открытии и закрытии окон редактора.
    • Сейчас установлено ограничение на 64 окна, открытых одновременно. При попытке открыть больше окон, появится предупреждение.
  • Скрипты теперь могут содержать несколько вкладок в одном окне. Это секции одного и того же скрипта, а не разных скриптов в одном окне.
  • Также можно поставить закладки, чтобы перескочить в нужную позицию с помощью клавиатуры. Ctrl+shift+цифра для установки и Ctrl+цифра для перехода.
    • Открытие этого скрипта в других версиях GM покажет строки #define. Смотрите этот FAQ чтобы всё правильно исправить.
    • Эти два изменения сделаны только для скриптов – не для кода в объектах. Возможно, что поддержка этого добавится в будущих версиях.
  • Список очередности создания экземпляров в редакторе комнат теперь содержит имя ресурса, подсвечивает этот экземпляр в комнате и позволяет переименовать, удалить, изменить и задать код создания.
  • В редакторе комнат, во вкладке View добавлена опция отключения очистки фона, которая может быть использована для повышения производительности – специально для замедления на Андроид.
    • Если вы используете сохранение соотношения сторон в своей игре, вы, вероятно, не хотите отключать очистку буфера дисплея.
    • Существующая опция выключения заполнения фона цветом также все еще эффективна в повышении производительности.
  • Было добавлено и восстановлено много подсказок, особенно в глобальных настройках проекта.
    • С включенной опцией “pop out windows” только окно новостей не должно быть максимизировано. С выключенной опцией максимизация окон будет всё ещё ломаться.
  • Поиск и замена во всех скриптах/вкладках.

Изменения в отладчике

  • Был добавлен профилировщик, поэтому вы можете увидеть “узкие места” в своём проекте. Можно смотреть ваш GML и вызовы движка. Смотрите этот блог для получения более подробной информации.

Новый движок физики – LiquidFun

  • Теперь используется LiquidFun, поэтому добавилась физика элементарных частиц и расчет жидкостей.
  • Пожалуйста, изучите документацию, так как было добавлено много новых функций physics_…() и есть некоторые едва различимые изменения всей функциональности физики.
  • Если ваш проект использует физику, пожалуйста, очень тщательно проверьте его!

Много изменений в базовой функциональности HTML5

  • В HTML5 была серия довольно значительных изменений, поэтому пожалуйста, тщательно проверьте свою игру.
  • В этой EA версии также присутствуют исправления производительности из Helpdesk pre-release v1312.

Изменения в расширениях и провайдерах рекламы

  • iOS и Android теперь используют расширения для всех провайдеров рекламы – экраны в глобальных настройках скоро будут удалены. Функция ads_enable() ничего не делает.
  • Мы предоставляем небольшой демо-пример для каждого провайдера рекламы в новом канале Demo. Скачайте пример, посмотрите, как это работает и после экспортируйте .gmez в свой собственный проект.
    • Прямо сейчас представлена только основная функциональность – их SDK, возможно, содержит больше возможностей, но вам придётся добавить функции самостоятельно.
  • Добавлено больше платформ. Читайте этот блог для получения более подробной информации.
  • Файлы-заготовки и папки будут добавлены для вас при создании нового файла, либо через опцию меню “Add Placeholder”, доступному по правой кнопке мыши.
  • В добавлена опция разрешения сохранения на ваш Mac дополнительных типов и дополнительного кода.
  • Аналитика еще не была сделана в новой системе и всё ещё не функциональна на iOS.
  • Если вы не делаете Android/iOS, все остаётся как прежде – вы не должны использовать новые расширения для своей рекламы.

Разное

  • Производительность сурфейсов на Андроид была значительно улучшена, но вы всегда должны об размере создаваемого вами сурфейса и сохранять его в разумных пределах.
    • Событие pre-draw всё ещё ухудшает производительность, но не настолько сильно, как прежде. Там, где возможно, переместите код в события draw/post-draw для улучшения производительности.
  • Если в вашем коде встретится ошибка из-за использования в сравнении noone, в качестве недопустимого типа, то появится диалог ошибки вместо молчаливого игнорирования.
  • show_debug_message() теперь незаметно преобразует ваши числа в строку, подобно тому, как всегда делала show_message().

GameMaker: Studio Early Acces 1.99.55

Список изменений:

Изменения по сурфейсу приложения

  • КРИТИЧЕСКОЕ ИЗМЕНЕНИЕ: Сурфейсы теперь наращиваемые (stackable, работают как стек). Это означает, что каждое surface_set_target() ОБЯЗАНО иметь закрывающий вызов surface_reset_target(). Игнорирование этого требования приведет к ошибке во время выполнения.
  • Новая встроенная переменная application_surface, содержащая указатель на сурфейс приложения.
  • Позволяет делать корректировку соотношения сторон на всех платформах.
  • window_set_size() больше не влияет на разрешение/масштабирование игры. Теперь эти свойства контролируются через application_surface и surface_resize().
  • Добавлено новое демо, которое показывает переход между сценами, демонстрируя преимущества нового application_surface.
  • ПРИМЕЧАНИЕ 1: всё перечисленное выше пока что не доступно на HTML5! (Будет реализовано в следующей версии EA)
  • ПРИМЕЧАНИЕ 2а: с этой системой, захват области экрана в данный момент не работает на мобильных платформах, поэтому вы не можете воспользоваться get screen_save() или draw_getpixel() в этой версии.
  • ПРИМЕЧАНИЕ 2б: также знайте, что, поскольку теперь есть разделение размеров GUI и application_surface, то, если они не 1:1, вы не сможете захватывать данные через draw_getpixel(), как делали в предыдущих версиях, особенно, если есть корректировка соотношения сторон. Возможно, что вам придётся скорректировать свои значения.



Новые функции

  • timeline_clear() – полная очистка таймлайна
  • timeline_moment_add_script() – добавить вызов скрипта в нужный момент таймлайна
  • timeline_size() – возвращает размер таймлайна, число моментов
  • timeline_max_moment() – возвращает максимальный момент в таймлайне
  • buffer_get_address() – получить адрес основной памяти в буфере
  • gml_release_mode() – переключение режима публикации (релиза) (в этом режиме делается меньше проверок на ошибки)
  • tile_get_count() – получить количество тайлов
  • tile_get_id() – получить id нужного тайла
  • tile_get_ids() – получить id всех тайлов
  • tile_get_ids_at_depth() – получить id всех тайлов с заданной глубиной
  • angle_difference() – получить разницу между двумя углами
  • draw_roundrect_ext() – рисование прямоугольника со скруглениями
  • draw_roundrect_color_ext() – рисование прямоугольника со скруглениями
  • window_device() – возвращает указатель на окно устройства (D3D Handle в Windows)
  • dsin(x),dcos(x),dtan(x),darcsin(x),darccos(x),darctan(x),darctan2(x) – тригонометрические функции, работающие с градусами
  • mp_grid_get_cell() – получение состояния клетки из mp_grid
  • is_ptr – возвращает true, если переменная является указателем (ПРИМЕЧАНИЕ : функции window_device()window_handle() и get_texture теперь возвращают указатель, а не число)
  • device_mouse_x_to_gui(), device_mouse_y_to_gui() – получение координат мыши в пространстве GUI
  • surface_resize() – позволяет изменять размер сурфейса (без сохранения содержимого)
  • application_get_position() – получение позиции скорректированной с учётом соотношения сторон области внутри текущего окна
  • ds_list_add(), ds_queue_enqueue(), ds_stack_push() – изменения, позволяющие задавать множество значений
  • point_in_rectangle(), point_in_triangle(), point_in_circle() – функции проверки вхождения точки в заданный графический примитив
  • rectangle_in_rectangle(), rectangle_in_triangle(), rectangle_in_circle() – функции проверки вхождения прямоугольника в заданный графический примитив



Изменения в отладчике

  • Расширен тайм-аут связи для более надёжного соединения
  • Новая иконка
  • Добавлено отображение стека вызовов
  • Добавлено отображение списка всех экземпляров
  • Добавлено отображение выбранного экземпляра (только для Windows desktop платформы)
  • Диалоги на целевой платформе больше не прерывают отладчик, поэтому связь не теряется
  • Теперь происходит остановка при обнаружении ошибки на целевой платформе
  • Организация дерева ресурсов, каталоги и т.п. теперь отражается в отладчике
  • Добавленная частичная выборка для больших структур/массивов. ПРИМЕЧАНИЕ: в данный момент не доступно на HTML5!



Изменения в Студии

  • Объем потребляемой памяти был существенно уменьшен (приблизительно на 50%) – графика загружена не все время, а только при обращении к ней (сообщите нам о любых проблемах, которые заметите)
  • Добавлены настройки соотношения сторон в платформы, где их не было



Изменения в компиляторе

  • Добавлены новые способы доступа (аксессоры) к картам, сеткам и спискам, а также доступ к массивам по ссылке (не создаётся копия массива при записи)
  • Все функции, содержащие слово “color”, теперь имеют синоним с написанием “colour” (идентичная функция, но с корректным написанием). Вся документация и система завершения строки исправлены на “colour”



Изменения в раннере

  • http_request() теперь понимает бинарные буферы
  • На iOS функция show_message() не ждала реакции пользователя, если запуск был произведён из Студии. Исправлено.
  • Networking async event теперь передаёт номер порта в карту с ключом “port”
  • Steam Workshop uploads из Early Access 1.99.44 необходимо загрузить повторно в связи с изменениями формата файла



И, конечно же, исправления множества ошибок.