buffer – буфер для использования; surface – поверхность для взятия; mode – режим пока что всегда равен 0; offset – смещение при добавление в буфер; modulo – дельта, которая будет добавляться в конец каждой строки к смещению.
Пока что нет никакой дополнительной документации.
Разное
Подходит для использования с Ad Provider Demos v2 (аналогично v1354).
Большое количество оптимизаций при загрузке в IDE звуков, спрайтов и т.д, для уменьшения использования памяти.
Большое количество оптимизаций компилятора для ускорения создания сборки.
Были удалены пробелы из названий всех примеров и уроков. И многие из них были также обновлены. Пожалуйста, удалите и скачайте их заново.
Был добавлен новый пример изометрической игры.
Xcode и ваше хранилище ключей теперь изящно освобождаются после сборки iOS / iOS YYC.
Версия 1.99.170
Изменения (относительно EA161)
IDE
ВНИМАНИЕ! Если вы загрузили в магазин пакет с пользовательскими шрифтами используя EA161, обновите его с помощью этой версии!
Шрифты: опция “Include in asset package” (Включить в пакет ресурсов) теперь требует от вас предоставление исходного файла шрифта.
В настоящий момент разработчики, которые хотят использовать импортированные шрифты, должны установить их вручную в папку проекта [имя расширения]fonts
Клик правой кнопкой на расширении и выбор “Create Asset Package” (создать пакет ресурсов) теперь корректно добавляет его в менеджер пакетов.
Шейдеры, загруженные из маркета, теперь будут корректно прочитаны при импорте.
Теперь возможно создание пакета расширения, содержащего только код.
Steam IDE
К сожалению, это в настоящее время невозможно использовать Marketplace пользователям с лицензией Steam.
Таким образом, он не будет появляться в IDE для Steam установок, пока эта проблема не будет решена.
При закрытии окна свойств объекта также будут закрыты любые окна с кодом этого объекта (чтобы исключить возможность дублирования окон).
Окно компилятора теперь должно быть более отзывчивым при отображении большого количества отладочного текста или информации о построении.
Исправлено частое запрашивание лицензии, происходившее в некоторых случаях.
Окно лицензирования теперь определяет не свои ключи и не даёт использовать их (с пояснением, почему).
Исправление изображения для Windows 8 таргета в случае, если этот модуль отсутствует.
Переработанные примеры использования рекламы (версия 2)
Вы могли заметить, что мы выпустили обновлённые примеры категории Ad Providers – они теперь содержат «v2» в описании.
Для обновления уже установленной версии, вам нужно сначала удалить старую версию из %appdata%GameMaker-Studiodemo и после скачать новую версию.
Вы увидите обновлённые описания функций, гораздо больше функционала и некоторое расширенное описание в readme и комментариях.
Так же, как и прежде – протестируйте, используя пример, затем экспортируйте его в .gmez и после импортируйте в свой проект.
Более подробная информация и некоторые подробности о реализации здесь.
Изменения в документации
В связи с тем, что версия Standard стала бесплатной, внесены правки в документацию.
Обратите внимание на то, что справка предполагает, что все лицензии Standard – нового бесплатного типа. Если у вас уже есть Mac и Windows 8, то они сохранятся.
Многочисленные исправления по описаниям функций.
Несколько небольших исправлений примеров и уроков.
application_surface_enable() может отключить новую систему рисования 1.3. Полезно для устройств, которые плохо работали с сурфейсами. При этом также отключится aspect ratio и все исправления GUI из 1.3.
Помните, что вы можете включать и выключать её многократно, если захотите. Включение вернёт обратно aspect ratio и т.д.
с помощью application_surface_is_enabled() можно узнать, какая система – старая или новая – используется в текущий момент.
Изменения в IDE
Теперь нет долгой загрузки аудио при запуске IDE, что экономит много времени и памяти в случае проектов, нагруженных аудио.
Исправлена серия проблем с импортом проектов GM8.1
В неё вошли почти все изменения из EA 1.99.97, поэтому весь список повторять не буду.
Отличия с EA:
Нет табов и закладок в редакторе скриптов.
Не используется новый физический движок LiquidFun.
Добавлено по сравнению с EA97:
Теперь запоминается последний выбранный пользователем каталог при сохранении ресурсов.
В настройках добавлены кнопки очистки кэша и временных файлов. Также можно задать автоматическую очистку с помощью галочки.
Внимание: в глобальных настройках игры обновлены иконки Андроид в соответствии с требуемыми. Вам необходимо заново добавить иконки в проект, иначе они окажутся либо испорченными, либо заменятся дефолтными изображениями.
Примеры и уроки
Добавлено несколько уроков по application surface, а также множество других примеров было обновлено.
Все примеры и уроки были переименованы, чтобы в именах не осталось пробелов. Это означает, что вам нужно будет либо переименовать свои файлы, либо скачать их заново.
Имейте в виду, что некоторые старые примеры и уроки были обновлены и переименованы, либо просто убраны, так как их заменили другие.
И, конечно же, как обычно – исправлено множество ошибок.
Author: Mark Alexander
Перевод: Dmi7ry
Оригинал здесь
Version: GameMaker: Studio 1.3+
Создание натуралистичных спрайтов с помощью скелетной анимации – очень мощный инструмент.Идея заключается в том, что вы создаёте базовый “скелет”, а затем двигаете “кости”, чтобы создавать позы.Затем эти позы могут быть превращены в ключевые кадры анимации, где позиции костей интерполируется между каждым кадром анимации, что создаёт гладкую и очень естественно выглядящую анимацию.На эту анимацию можно натянуть любую “шкурку” (то есть текстуру) и отображать на экране, как любой спрайт.
GameMaker: Studio теперь поддерживает этот тип анимации спрайтов – можно импортировать файлы, созданные с помощью программы Spine, которая является фантастическим инструментом для создания скелетной анимации (вы можете узнать больше о Spine здесь ).Обратите внимание, что Spine – это очень мощная программа с огромными возможностями и для того, чтобы объяснить, как это всё работает, одной короткой статьи совершенно не достаточно!Однако, мы дадим краткий обзор некоторых ключевых моментов, которые связаны с реализацией скелетной анимации в Gamemaker: Studio.
Spine позволяет создать «скелет», а затем менять его позу для создания анимации.Скелет состоит из “костей”, которые могут быть соединены и перемещены относительно друг друга в установленный период времени, а на окончательную анимацию может быть натянута “шкурка” (то есть текстура) для финальной анимации.Для добавления в ваш проект GameMaker: Studio, эта анимация может быть экспортирована или в виде стрипа растрового спрайта, или в виде Spine JSON файла.
Если вы просто экспортируете растровый спрайт, то можете прекратить чтение здесь, так как в действительности больше сказать особо нечего, так как методы создания и использования “нормальных” спрайтов хорошо известны. Но если вы экспортируете анимацию с помощью формата Spine JSON, это позволит вам сделать гораздо больше вещей с Spine анимацией по сравнению с простым стрипом спрайта.
Например, вы можете иметь один спрайт и создать несколько анимаций для него (например, набор анимаций из ходьбы, бега и прыжков). Можно создать несколько скинов для вашей анимации, так что один скелет может быть использован для разных персонажей (с теми же движениями, конечно), и вы также можете присоединять к своим спрайтам “вложения”, чтобы в дальнейшем менять их внешний вид.Также все эти вещи доступны для использования в GameMaker: Studio при импорте JSON спрайтов.
Прежде чем изучать GameMaker: Studio с этой стороны, пройдёмся по некоторым ключевым принципам, используемых в Spine.Первый из них – это то, что вам нужно дать название вашим костям и некоторым другим вещам. Эти имена будут использоваться для управления анимациями при работе с ними в GameMaker: Studio, поэтому старайтесь делать их запоминающимися и последовательным.
Также вам нужно обратить внимание на то, где находится центр вашей анимации (то есть её основа, корень, root). Центр анимации – это точка, относительно которой Spine анимация будет закреплена в мировом пространстве. При импорте вашего спрайта в GameMaker: Studio, она будет переведена как координаты центра спрайта (orign), которые нельзя редактировать в этом типе спрайта.Большинство ваших расчетов для движущихся частей скелета также будут зависеть от этой точки.
При создании анимации, вы устанавливаете позу, а затем создаёте ключевой кадр из неё.После этого вы перемещаетесь по таймлайну для анимации и создаёте ещё один ключевой кадр.После выполнения этого, Spine будет интерполировать данные кости между ключевыми кадрами, чтобы получить плавную анимацию, которую затем можно назвать и сохранить.Вы можете создать несколько наборов анимаций для одного спрайта, и дать каждой из них отдельное название. Затем это название может быть использовано в GameMaker: Studio для установки позы скелетной анимации вашего импортированного спрайта.
Также к вашим Spine спрайтам можно прикрепить “слоты” – это точки, где вы можете отображать отдельное изображение, который не имеет костей.Оно будет перемещаться вместе с родительской костью, что позволит вам добавить вашим анимациям несколько под-изображений, для крепления в пределах одного спрайта.Эти прикрепляемые слоты также должны быть названы в соответствии с изображениями, которые они содержат, так как эти имена будут использоваться в GameMaker: Studio для изменения изображения слота во время игры.
Импорт спрайта Spine
При экспорте спрайта со скелетной анимацией из Spine как JSON, вы на самом деле создадите три отдельных файла. Основной JSON, который содержит все данные костей и анимации, файл атласа, который содержит данные о том, как упакованы текстуры и файл PNG, который содержит непосредственно текстурный атлас. GameMaker: Studio требуются все три файла для создания вашего Spine спрайта, поэтому при импорте они все должны быть в той же папке.
Добавление таких спрайтов в GameMaker: Studio практически идентично добавлению обычных растровых изображений: нужно создать новый спрайт, и вызвать обычный диалог загрузки спрайта. Перед тем, как выбрать место, в которое вы сохранили ваши spine-спрайты, нужно убедиться, что тип файла в нижней части выбран *.json и далее просто выбрать спрайт, который вы хотите импортировать.
После импортирования анимации, вы можете установить свойства столкновения, но учтите, что здесь вы ограничены использованием либо просто точных столкновений, либо ограничивающим прямоугольником, и что данные по столкновениям для скелетной анимации явно берутся из предоставленных данных.GameMaker: Studio не сможет сгенерировать маску столкновений, если в импортируемом файле отсутствуют данные. То есть, если в Spine маски настроены не правильно, то столкновения просто не будут работать.Помимо этого, в отличие от растровых спрайтов, импортируемый спрайт со скелетной анимацией не может быть изменен в редакторе. Это означает, что любые изменения, которые нужно внести, должны быть сделаны в Spine, а затем нужно повторно импортировать спрайты в вашу игру.
ПРИМЕЧАНИЕ: В связи со сложностью скелетных анимаций, полученное изображение, показанное в редакторе спрайта, не предназначено для точного представления анимации, а всего лишь даёт вам простой образ, представляющий анимацию, для визуализации в редакторе комнаты.
Использование спрайтов Spine в GameMaker
После загрузки спрайта в GameMaker: Studio, вы можете использовать его так же, как и любой другой спрайт.Вы можете назначить его объекту, или установить его для экземпляра в коде, и они также будут реагировать на большинство переменных экземпляра спрайта: во время игры их можно масштабировать, вращать, смешивать с цветом и задавать прозрачность.Также их можно рисовать с помощью расширенных функций draw_sprite (за исключением draw_sprite_pos и draw_sprite_part), как и любой другой спрайт.
И всё же основной смысл в использовании Spine – это создание спрайта со скелетной анимацией с несколькими позами и скинами, что достаточно сильно отличается от обычного растрового спрайта.Для этого GameMaker: Studio имеет множество новых функций skeleton_*, а также новое событие “Animation Update” (обновление анимации) событие для поддержки такого типа спрайтов.Далее в этой статье будут рассмотрены эти функции и описано, что они делают, но вы можете найти более полное объяснение каждой из них в документации.
Этими функциями можно получить имя (в виде строки) установленной в данный момент анимации или установить спрайт, используя имя анимации.Например, если у вас есть анимации “бег” и “ходьба”, то вы бы могли переключаться между ними с помощью этих функций, когда игрок нажимает клавишу (или что-нибудь ещё).
Это похоже на предыдущие функции, но немного сложнее.Spine позволяет вам задать костную анимацию для части скелета, а затем создать отдельные наборы анимации для этих частей и проигрывать их вместе.Каждая анимация присвоена треку, и при этом track0 всегда является основой, анимацией по умолчанию.Таким образом, вы можете иметь, например, фигуру с присвоенной ей анимацией “ходьба” и эта анимация влияет только на ноги.Далее вы можете иметь различные другие анимации (где перемещаются, например, только руки, или голова, или верхняя часть туловища и т.д.) и назначить одну из них на трек 1, используя эти функции.И GameMaker: Studio будет играть обе эти анимации вместе.
skeleton_animation_mix
Эта маленькая функция, возможно, одна из наиболее важных, когда дело касается окончательного внешнего вида вашего импортированного спрайта.Вы можете изменить анимацию в любое время с помощью упомянутой выше функции skeleton_animation_set(), но при этом image_index будет сброшен в 0, что может сделать “скачок” при переходе, так как одна поза меняется на другую. Для растровых спрайтов это вполне ожидаемо и может быть даже желательным, но со скелетной анимацией спрайтов это выглядит странно и багнуто.Однако это можно исправить это с помощью функции skeleton_animation_mix(), которая будет интерполировать данные наборов анимаций, чтобы они плавно перетекали друг в друга естественным образом.Например, вы можете установить смешивание вашей анимации “бег” в анимацию “прыжок”, затем установить следующее смешивание – теперь анимацию “прыжок” в анимацию “бег” – и теперь ваш спрайт будет плавно анимироваться между двумя этими наборами естественным образом.
Скины
skeleton_skin_get()skeleton_skin_set(skinname)
Отдельная скелетная анимация может иметь одну или несколько шкурок, и они могут переключаться с помощью вышеуказанных функций.Это означает, что вы можете иметь несколько различных персонажей в вашей игре, использующих один и тот же базовый спрайт анимации.Важно отметить, что Gamemaker: Studio поддерживает только один текстурный атлас на спрайт, и поэтому, когда вы создали свой Spine спрайт, вы должны учитывать целевую платформу, чтобы использовать подходящий размер текстуры.Например, если вы ориентируетесь на мобильные устройства, вы можете установить размер текстурного атласа Spine как 1024×1024.
Как упоминалось ранее, вы можете “прикрепить” (зафиксировать) изображения к скелетной анимации спрайта, и они будут вести себя так, как будто являются частью структуры костей в этой анимации.Для этого используются данные функции – просто задав имя слота и имя вложения для него (в соответствии с тем, как это задано в Spine).Также у вас есть возможность использовать один из спрайтов, используемый в вашей игре – либо как часть основных ресурсов, либо как подключаемый файл, что даёт этим спрайтам еще более гибкие возможности для игр.
Отображение
skeleton_collision_draw_set(flag)draw_skeleton_collision(sprite, animname, image_index, x, y, xscale, yscale, rot, colour)draw_skeleton(sprite, animname, skinname, image_index, x, y, xscale, yscale, rot, colour, alpha)
Обычно для рисования спрайта со скелетной анимацией используется функция draw_sprite, но бывают случаи, когда вы можете захотеть рисовать какие-то дополнительные вещи, либо только один кадр анимации (например, для экрана паузы, специального эффекта и т.д).Почему были добавлены эти функции. Первая из них просто задаёт, нужно ли отображать данные столкновения или нет.Если флаг установлен в true, то вы увидите ограничивающий прямоугольник и точную маску, нарисованную на спрайт, на экране (эти данные задаются при создании спрайта в Spine). Вторая функция при этом позволяет вам рисовать данные столкновения для отдельного кадра любой анимации.
Заключение
Исходя из написанного выше, вы можете понять, что скелетная анимация – это невероятно мощный инструмент.Это позволяет получить естественные анимации с минимальными усилиями, и (спасибо функции смешивания) эти анимации плавно перетекают друг в друга, чтобы пользователи получали только положительный опыт в ваших играх.Функции скинов и фиксации, доступные в GameMaker: Studio также означают, что вы можете упростить создание нескольких спрайтов из одного источника, и также позволяют игроку настроить их прямо во время выполнения игры.Очевидно, что это система не применима ко всем играм, но если вы проверите веб-сайт Spine и демо, вы увидите, что это на удивление универсально и определённо стоит времени и усилий, необходимые на создание спрайта и его импорта в GameMaker: Studio.
Изменения относительно версии 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 появится возможность заниматься профилированием написанного кода. Разработчики опубликовали пост об этом в соответствующем блоге. Теперь есть возможность выявить слабые места в производительности своей игры и более целенаправленно заниматься оптимизацией.