GameMaker: Studio 1.4.1398

Вышел первый релиз GameMaker: Studio 1.4. Основные изменения относительно версии 1.3.1386:

Изменения в IDE

  • Фильтрация в дереве ресурсов позволяет искать ресурсы и также отображать только совпадающие результаты.
  • Вкладки в скриптах позволяют разбить большие скрипты во вкладки и вызывать каждую вкладку подобно обычному скрипту, но при этом скрипт будет отображаться как один элемент в дереве ресурсов.
  • Теперь можно добавлять закладки в строки кода скриптов и в действия. Ctrl+Shift+[число] для установки закладки и Ctrl+[число] для перехода к закладке.
  • Создание расширений теперь в стиле «мастера». Создайте расширение, выберите необходимые платформы, нажмите правую кнопку мыши и выберите «Add Placeholder».
  • Шрифты теперь могут быть установлены как подключаемые файлы в проекте при экспорте и т.п.
  • Объекты теперь отображают список всех детей в своей форме. Теперь можно делать быстрое переключение между детьми и родителями.
  • Если в редакторе комнат, в списке порядка создания экземпляров объектов, выбрать какой-либо экземпляр, камера будет перемещена на позицию этого объекта.

GameMaker: Marketplace (магазин)

  • Теперь у вас есть бета доступ к магазину. Вы увидите новый пункт меню.
  • Любой пользователь может просматривать и  покупать ресурсы.
  • Для регистрации издательского аккаунта и продажи собственных ресурсов, вам нужна лицензия Pro или выше (также подойдёт платная версия Standard).
  • Подробности можно смотреть в разделе «магазин» базы знаний.

Расширения

  • Процесс создания расширений был немного изменён в сторону стиля «мастера».
  • Если вы выбираете iOS/Android, заполнители и структура папок будут созданы автоматически.
  • Далее код выбирается через файловый диалог и копируется в правильную папку проекта.
  • Если расширение не указано корректным для выбранной платформы, при компиляции будут автоматически сгенерированы «заглушки».
  • Изменено редактирование значений функций Init и Final на выпадающие списки, наследующие от заданных функций.
  • Внимание!
    • Из-за магазина, расширения сейчас содержат гораздо больше защиты, чем ранее — в частности, для разработчика расширения и тех, кому разрешено использовать
    • Если вы не автор расширения и вы его не покупали, то вы не сможете создать исполняемый файл из этого проекта!

Редактор изображений

  • Теперь можно создавать пользовательские палитры. Чтобы задать пользовательский цвет, нужно нажать MMB на палитре. Палитры можно сохранять и загружать.
  • Сделан режим onion-skinning (калькирование) для отображения предыдущих/последующих кадров одновременно с текущим, что очень удобно для анимаций.
  • Можно изменять масштаб предпросмотра двойным кликом на нём.
  • Правая кнопка мыши может быть настроена в качестве ластика, вместо фонового цвета. RMB на ластике.
  • Нажатие J переключает на запасную страницу для редактирования изображения (для обратного переключения нужно повторно нажать J).
  • Можно перемещать вид при нажатых MMB или пробеле.

Обновление SVN инструментария

  • Теперь поддерживается рабочая среда и 1.7, и 1.8. Переключение используемых инструментов можно выполнить в File > Preferences.
  • Также можно задать свои собственные SVN инструменты.
  • Внимание: Если вы используете версию 1.6, либо более старую, то у вам будет предложено обновиться.
  • Интеграция SVN теперь происходит только в случае, если в глобальных настройках проекта указано использование SVN.

Физика Liquidfun

  • Помимо обновлённого Box2D, вы теперь можете использовать физику частиц и несколько новых форм.
  • Внимание: Пожалуйста, тщательно проверьте физику в игре после обновления!

Разное

  • Теперь можно отменить локальное уведомление. Также можно получить список ожидающих уведомлений и перескакивать их.
  • Добавлено сглаживание для SWF файлов. draw_enable_swf_aa… (требуется лицензия Pro).
  • Множество обновлений и исправлений для импорта Spine, добавлены новые функции skeleton_animation_list(), skeleton_skin_list(), skeleton_slot_data().
  • Буферы для поверхностей.
  • date_get_timezone()/date_set_timezone() переключает время между локальным и UTC для всех остальных функций даты и времени.
  • Обновления и исправления в новом отладчике.
  • audio_play_music() является устаревшей, используйте audio_play_sound() вместо неё.
  • Большое количество исправлений в звуковой системе HTML5, в частности — при использовании эмиттеров.
  • Добавлена проверка, гарантирующая генерацию маски спрайта размером каждого отдельного изображения, а не одного фиксированного размера.
  • Игры iOS 8 Beta больше не используют каталог Documents для сохранения, теперь используется область Application Support.
  • Примечание: Поддержка iOS 8 Beta в данный момент сделана только в runner. Xcode Beta не тестировалось.
  • Фоны, добавленные через drag’n’drop, теперь будут содержать только имя файла, без указания оригинального местоположения.
  • Если в Android вы укажете только одну ориентацию landscape, либо landscape-flipped, теперь она снова будет работать корректно.

 

Скачать GameMaker: Studio 1.4.1398 можно здесь.

GameMaker: Studio EA 1.99.177

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

Android SDK Tools

  • Если вы уже обновились до последней версии Android API, вы увидели, что там перемещён zipalign, что нарушает сборку .apk
  • Эта EA версия содержит исправление для поддержки и старого и нового местоположения программы.

 Редактор изображений

(всё, кроме последнего пункта, только для пользователей Pro/Master)

  • Теперь можно создавать пользовательские палитры. Чтобы задать пользовательский цвет, нужно нажать MMB на палитре. Палитры можно сохранять и загружать.
  • Сделан режим onion-skinning (калькирование) для отображения предыдущих/последующих кадров одновременно с текущим, что очень удобно для анимаций.
  • Можно изменять масштаб предпросмотра двойным кликом на нём.
  • Правая кнопка мыши может быть настроена в качестве ластика, вместо фонового цвета. RMB на ластике.
  • Нажатие J переключает на запасную страницу для редактирования изображения (для обратного переключения нужно повторно нажать J).
  • Можно перемещать вид при нажатых MMB или пробеле.

 Другое в IDE

  • Редактор комнат корректно проверяет, что фон внутри группы индивидуально отмечен как тайлсет или нет.
  • Экспортирование .gml скрипта снова добавляет корректное имя, даже если содержится несколько вкладок.
  • Окна кода таймлайнов больше не могут «отсоединить» момент от тамлайна.
  • Добавлена настройка, позволяющая всем окнам открываться в развёрнутом на весь экран виде.

 В игре

  • os_browser теперь определяет IE11.
  • surface_reset_target() теперь корректно восстанавливает предыдущий размер GUI, а не сбрасывает в значение по умолчанию.
  • Новые константы для событий рисования, которых не было.
  • Сглаживание в SWF теперь применяется и к линиям, и к заливке.
  • SWF AA теперь поддерживается на JS платформах.
  • Исправление для вызова функции расширения из другого расширения.
  • Исправлена ошибка компилятора при использовании enum внутри скрипта до того, как оно было объявлено объектом.
  • script_exists() теперь поддерживает JS платформы.
  • Исправления некоторых LiquidFun get/set функций для узлов.

 Разное

  • Экран проверки лицензии теперь указывает на корректный FAQ
  • Несколько исправлений в Marketplace при экспорте/импорте для расширений, содержащих только код.

 

Скачать GameMaker: Studio EA 1.99.177 можно здесь.

GameMaker: Studio EA 1.99.161, EA 1.99.170

Версия 1.99.161

Изменения (относительно версии EA97)

GameMaker: Marketplace

  • Теперь у вас есть доступ к ранней версии GameMaker: Marketplace. Вы увидите новую строку меню с этой опцией.
  • Просматривать и приобретать что-либо можно с платной лицензией Standard или выше.
  • Для создания своего издательского аккаунта требуется лицензия Pro или выше.
  • Подробности можно посмотреть в категории Marketplace базы знаний.

Изменения в IDE

  • Теперь можно осуществлять поиск по дереву ресурсов, а также включать фильтрацию отображения для просмотра только результатов поиска.
  • Нажатие Ok/Cancel на объекте также закроет все связанные скрипты (аналогично v1354).
  • Фоны, не отмеченные как тайлсеты, теперь не могут быть использованы в качестве тайлсетов в редакторе комнат.
  • Размер комнат по умолчанию теперь задан как 1024*768 вместо 640*480.
  • Ошибки компилятора теперь содержат ссылки на объект и его свойства и можно сразу перейти к указанной строке.
  • Также в поиске по скриптам (Search in Scripts). Если это встроенная переменная или функция, вы можете перейти в документацию отсюда.
  • Окне лога компиляции теперь отображается состояние прогресса при обработке SWF.
  • Android GGS теперь требует иконки в строке с текущими требованиями (аналогично v1354).
  • Теперь одиночные скрипты не будут иметь записи #define, экспортированные в предыдущих версиях, которые имели вкладки.
  • Вам всё равно придётся «почистить» скрипты с вкладками используя эту инструкцию.
  • Кнопка предумножения альфы теперь работает правильно.
  • Объекты теперь содержат список всех потомков в окне свойств. Можно напрямую переключаться между потомком и родителем.

Обновление SVN инструментария

  • Теперь включена текущая версия (1.8) SVN инструментария для использования с репозиториями, созданными сторонними SVN клиентами.
  • Для совместимости также оставлена старая 1.7 версия. GM будет определять, какая версия используется в проекте.
  • В настройках можно выбрать, какой формат/инструментарий использовать при создании или добавлении проекта в репозиторий.
  • Интеграция SVN теперь производится только если в настройках проекта указано использование SVN.

Расширения

  • Процесс создания расширений был немного изменён в сторону стиля «мастера».
  • Если вы выбираете iOS/Android, заполнители и структура папок будут созданы автоматически.
  • Далее код выбирается через файловый диалог и копируется в правильную папку проекта.
  • Если расширение не указано корректным для выбранной платформы, при компиляции будут автоматически сгенерированы «заглушки».

Макросы

  • «Константы» в IDE были переименованы в «Макросы», чтобы больше соответствовать их сути.
  • Конечный результат должен быть рассчитан во время сборки приложения, но это делает более понятным, что он не является статическим.
  • В панели Файл -> Настройки можно указать, хотите ли вы, чтобы автоматически вставлялись значения BUILD_DATE и BUILD_TIME.

Перечисления (Enums)

  • Перечисления можно задавать в C-стиле, вроде: enum MYENUM { ENUM1, ENUM2, ENUM3 }; myVariable = MYENUM.ENUM1;

In-Game

  • Win 8 N игры снова будут корректно масштабироваться в соответствии с настройками.
  • YYC сборка получила исправление для запуска .dll расширений.
  • Несколько точных спрайтов снова будут содержать «объединённую точную» (merged precise) маску (как в pre v1.2).
  • При использовании бесплатной версии, заголовок окна теперь содержит «Made with GameMaker: Studio» (сделано с помощью GMS).

 Дата и время

  • date_get_timezone()/date_set_timezone() переключает время между локальным и UTC для всех остальных функций даты и времени.

Всплывающие уведомления

  • Теперь можно отменить локальные уведомления.
  • Теперь также можно получить список ожидающих локальных уведомлений и пропускать их.

Spine

  • Функциональность была обновлена и теперь включает деформации и дополнительную строку в атласе.
  • Дополнительные функции для проверки продолжительности анимации.
  • Помните, что так как Spine обновляется достаточно часто, мы можем отставать от текущей версии.

SWF

  • Было добавлено экспериментальное сглаживание для SWF-файлов для нативных платформ (не JS).
  • Для использования требуется лицензия Pro.
  • draw_enable_swf_aa(enable) чтобы включить или отключить сглаживание.
  • draw_set_swf_aa_level(aa_level) где aa_level — значение от 0.0 до 1.0 (по умолчанию задано 1.0).
  • draw_get_swf_aa_level() чтобы узнать текущее значение.
  • Пока что нет никакой дополнительной документации.

Буферы для поверхностей

  • buffer_get_surface(buffer, surface, mode, offset, modulo)
  • 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 установок, пока эта проблема не будет решена.

 

Скачать версию 1.99.170 можно здесь

 

Simple Mouse Slower

Вам знакома такая ситуация?

mouse

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

После запуска программа висит в трее и позволяет через горячие клавиши уменьшить чувствительность мыши примерно в три раза.

Горячие клавиши:

Alt + N — замедление происходит только во время нажатия и при отпускании скорость восстанавливается.
Alt + M — однократное нажатие включает/отключает замедление.

Скачать (56 Kb)

Для работы необходим установленный .NET Framework (можно скачать здесь, 869 Kb)

GameMaker: Studio 1.3.1354

Версия 1.3.1354

  • Разносторонние улучшения
    • При закрытии окна свойств объекта также будут закрыты любые окна с кодом этого объекта (чтобы исключить возможность дублирования окон).
    • Окно компилятора теперь должно быть более отзывчивым при отображении большого количества отладочного текста или информации о построении.
    • Исправлено частое запрашивание лицензии, происходившее в некоторых случаях.
    • Окно лицензирования теперь определяет не свои ключи и не даёт использовать их (с пояснением, почему).
    • Исправление изображения для Windows 8 таргета в случае, если этот модуль отсутствует.
  • Переработанные примеры использования рекламы (версия 2)
    • Вы могли заметить, что мы выпустили обновлённые примеры категории Ad Providers — они теперь содержат «v2» в описании.
    • Для обновления уже установленной версии, вам нужно сначала удалить старую версию из %appdata%GameMaker-Studiodemo и после скачать новую версию.
    • Вы увидите обновлённые описания функций, гораздо больше функционала и некоторое расширенное описание в readme и комментариях.
    • Так же, как и прежде — протестируйте, используя пример, затем экспортируйте его в .gmez и после импортируйте в свой проект.
    • Более подробная информация и некоторые подробности о реализации здесь.
  • Изменения в документации
    • В связи с тем, что версия Standard стала бесплатной, внесены правки в документацию.
    • Обратите внимание на то, что справка предполагает, что все лицензии Standard — нового бесплатного типа. Если у вас уже есть Mac и Windows 8, то они сохранятся.
    • Многочисленные исправления по описаниям функций.
    • Несколько небольших исправлений примеров и уроков.

Скачать здесь.

Подключение внешних библиотек в VisualD

Когда первый раз попробовал подключить внешние библиотеки в VisualD, возникали ошибки при компиляции (при этом в Mono-D всё работало хорошо). На случай, если у кого-то возникнут те же самые проблемы, делаю эту пошаговую инструкцию (на примере библиотеки DSFML).

  1. Создаём проект с помощью dub init dsfml_test (здесь dsfml_test — это имя нашего проекта)
    1. create
  2. Путём редактирования файла dub.json, добавляем в него необходимые зависимости
    2. json
  3. Генерируем проект для Visual Studio с помощью dub generate vstudio
    3. generate project
  4. Открываем получившийся проект в Visual Studio
    4. open soluton
  5. Открываем свойства проекта
    5. project properties
  6. Указываем путь к директории, в которой находятся нужные lib-файлы
    6. libs path

Собственно, это всё, что нужно сделать. Далее можно подключать необходимые модули и собирать проект. В моём случае это

import dsfml.graphics, dsfml.window, dsfml.system;

GameMaker: Studio 1.3.1344

Версия 1.3.1344

  • Изменения в Application Surface
    • application_surface_enable() может отключить новую систему рисования 1.3. Полезно для устройств, которые плохо работали с сурфейсами. При этом также отключится aspect ratio и все исправления GUI из 1.3.
    • Помните, что вы можете включать и выключать её многократно, если захотите. Включение вернёт обратно aspect ratio и т.д.
    • с помощью application_surface_is_enabled() можно узнать, какая система — старая или новая — используется в текущий момент.
  • Изменения в IDE
    • Теперь нет долгой загрузки аудио при запуске IDE, что экономит много времени и памяти в случае проектов, нагруженных аудио.
    • Исправлена серия проблем с импортом проектов GM8.1

И, как обычно, исправления багов.

Скачать здесь.

GameMaker: Studio 1.3.1336

В неё вошли почти все изменения из EA 1.99.97, поэтому весь список повторять не буду.
Отличия с EA:

  • Нет табов и закладок в редакторе скриптов.
  • Не используется новый физический движок LiquidFun.

Добавлено по сравнению с EA97:

  • Теперь запоминается последний выбранный пользователем каталог при сохранении ресурсов.
  • В настройках добавлены кнопки очистки кэша и временных файлов. Также можно задать автоматическую очистку с помощью галочки.
  • Внимание: в глобальных настройках игры обновлены иконки Андроид в соответствии с требуемыми. Вам необходимо заново добавить иконки в проект, иначе они окажутся либо испорченными, либо заменятся дефолтными изображениями.
  • Примеры и уроки
    • Добавлено несколько уроков по application surface, а также множество других примеров было обновлено.
    • Все примеры и уроки были переименованы, чтобы в именах не осталось пробелов. Это означает, что вам нужно будет либо переименовать свои файлы, либо скачать их заново.
    • Имейте в виду, что некоторые старые примеры и уроки были обновлены и переименованы, либо просто убраны, так как их заменили другие.

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

Скачать можно здесь.

Скелетная анимация спрайтов с использованием Spine

Author: Mark Alexander
Перевод: Dmi7ry
Оригинал здесь

Version: GameMaker: Studio 1.3+

Создание натуралистичных спрайтов с помощью скелетной анимации — очень мощный инструмент. Идея заключается в том, что вы создаёте базовый «скелет», а затем двигаете «кости», чтобы создавать позы. Затем эти позы могут быть превращены в ключевые кадры анимации, где позиции костей интерполируется между каждым кадром анимации, что создаёт гладкую и очень естественно выглядящую анимацию. На эту анимацию можно натянуть любую «шкурку» (то есть текстуру) и отображать на экране, как любой спрайт.

GameMaker: Studio теперь поддерживает этот тип анимации спрайтов — можно импортировать файлы, созданные с помощью программы Spine, которая является фантастическим инструментом для создания скелетной анимации (вы можете узнать больше о Spine здесь ). Обратите внимание, что Spine — это очень мощная программа с огромными возможностями и для того, чтобы объяснить, как это всё работает, одной короткой статьи совершенно не достаточно! Однако, мы дадим краткий обзор некоторых ключевых моментов, которые связаны с реализацией скелетной анимации в Gamemaker: Studio.

ПРИМЕЧАНИЕ: Spine имеет trial-версию, которая доступна для скачивания здесь: http://esotericsoftware.com/spine-download 

Обзор Spine

Spine позволяет создать «скелет», а затем менять его позу для создания анимации. Скелет состоит из «костей», которые могут быть соединены и перемещены относительно друг друга в установленный период времени, а на окончательную анимацию может быть натянута «шкурка» (то есть текстура) для финальной анимации. Для добавления в ваш проект GameMaker: Studio, эта анимация может быть экспортирована или в виде стрипа растрового спрайта, или в виде Spine JSON файла.

Spine_MainScreen

 Если вы просто экспортируете растровый спрайт, то можете прекратить чтение здесь, так как в действительности больше сказать особо нечего, так как методы создания и использования «нормальных» спрайтов хорошо известны. Но если вы экспортируете анимацию с помощью формата Spine JSON, это позволит вам сделать гораздо больше вещей с Spine анимацией по сравнению с простым стрипом спрайта.

Например, вы можете иметь один спрайт и создать несколько анимаций для него (например, набор анимаций из ходьбы, бега и прыжков). Можно создать несколько скинов для вашей анимации, так что один скелет может быть использован для разных персонажей (с теми же движениями, конечно), и вы также можете присоединять к своим спрайтам «вложения», чтобы в дальнейшем менять их внешний вид. Также все эти вещи доступны для использования в GameMaker: Studio при импорте JSON спрайтов.

ПРИМЕЧАНИЕ: вы можете найти дополнительную документацию о том, как использовать Spine, здесь: http://esotericsoftware.com/spine-documentation/

Основы

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

Также вам нужно обратить внимание на то, где находится центр вашей анимации (то есть её основа, корень, root). Центр анимации — это точка, относительно которой Spine анимация будет закреплена в мировом пространстве. При импорте вашего спрайта в GameMaker: Studio, она будет переведена как координаты центра спрайта (orign), которые нельзя редактировать в этом типе спрайта. Большинство ваших расчетов для движущихся частей скелета также будут зависеть от этой точки.

 Spine_Root

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

Также к вашим Spine спрайтам можно прикрепить «слоты» — это точки, где вы можете отображать отдельное изображение, который не имеет костей. Оно будет перемещаться вместе с родительской костью, что позволит вам добавить вашим анимациям несколько под-изображений, для крепления в пределах одного спрайта. Эти прикрепляемые слоты также должны быть названы в соответствии с изображениями, которые они содержат, так как эти имена будут использоваться в GameMaker: Studio для изменения изображения слота во время игры.

Импорт спрайта Spine

При экспорте спрайта со скелетной анимацией из Spine как JSON, вы на самом деле создадите три отдельных файла. Основной JSON, который содержит все данные костей и анимации, файл атласа, который содержит данные о том, как упакованы текстуры и файл PNG, который содержит непосредственно текстурный атлас. GameMaker: Studio требуются все три файла для создания вашего Spine спрайта, поэтому при импорте они все должны быть в той же папке.

Spine_Import

Добавление таких спрайтов в GameMaker: Studio практически идентично добавлению обычных растровых изображений: нужно создать новый спрайт, и вызвать обычный диалог загрузки спрайта. Перед тем, как выбрать место, в которое вы сохранили ваши spine-спрайты, нужно убедиться, что тип файла в нижней части выбран *.json и далее просто выбрать спрайт, который вы хотите импортировать.

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

ПРИМЕЧАНИЕ: В связи со сложностью скелетных анимаций, полученное изображение, показанное в редакторе спрайта, не предназначено для точного представления анимации, а всего лишь даёт вам простой образ, представляющий анимацию, для визуализации в редакторе комнаты.

Использование спрайтов Spine в GameMaker

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

Spine_GMSprites

И всё же основной смысл в использовании Spine — это создание спрайта со скелетной анимацией с несколькими позами и скинами, что достаточно сильно отличается от обычного растрового спрайта. Для этого GameMaker: Studio имеет множество новых функций skeleton_*, а также новое событие «Animation Update» (обновление анимации) событие для поддержки такого типа спрайтов. Далее в этой статье будут рассмотрены эти функции и описано, что они делают, но вы можете найти более полное объяснение каждой из них в документации.

Анимации

skeleton_animation_get()

skeleton_animation_set(name)

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

skeleton_animation_get_ext(track)

skeleton_animation_set_ext(name, track)

Это похоже на предыдущие функции, но немного сложнее. 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_TexturePacker

Прикрепления

skeleton_attachment_get()

skeleton_attachment_set(slotname, imagename)

skeleton_attachment_create(imagename, sprite, ind, xo, yo, xs, ys, rot);

Как упоминалось ранее, вы можете «прикрепить» (зафиксировать) изображения к скелетной анимации спрайта, и они будут вести себя так, как будто являются частью структуры костей в этой анимации. Для этого используются данные функции — просто задав имя слота и имя вложения для него (в соответствии с тем, как это задано в 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). Вторая функция при этом позволяет вам рисовать данные столкновения для отдельного кадра любой анимации.

Spine_Masks

Заключение

Исходя из написанного выше, вы можете понять, что скелетная анимация — это невероятно мощный инструмент. Это позволяет получить естественные анимации с минимальными усилиями, и (спасибо функции смешивания) эти анимации плавно перетекают друг в друга, чтобы пользователи получали только положительный опыт в ваших играх. Функции скинов и фиксации, доступные в GameMaker: Studio также означают, что вы можете упростить создание нескольких спрайтов из одного источника, и также позволяют игроку настроить их прямо во время выполнения игры. Очевидно, что это система не применима ко всем играм, но если вы проверите веб-сайт Spine и демо, вы увидите, что это на удивление универсально и определённо стоит времени и усилий, необходимые на создание спрайта и его импорта в GameMaker: Studio.