Всем привет. Вот и подошла очередь нашей очередной статьи. В первой мы познакомили вас с рабочими процессами нашей студии и вскользь упомянули тулзы, которыми мы пользуемся при создании игр. Вторая статья была посвящена кроссплатформенности движка Alawar Engine и предназначалась во многом для тех, кто уже сталкивался с подобными вопросами в своей работе. К слову о кроссплатформенности – 13 марта вышла наша игра для PlayStation 3, которую мы впервые создали на движке Alawar Engine. Помимо кроссплатформенности движок поддерживает и мультижанровость, так уже были выпущены игры в таких жанрах как: арканоид Hyperballoid 2, match-3 The Treasures of Montezuma 2, аркада Space Op (iOS), готовится к выпуску тайм менеджер из серии «Веселая ферма».
В третьей статье мы подробнее остановимся на процессе создания игры. Вашему вниманию представляется демо-версия движка Alawar Engine, а данная статья будет служить своего рода инструкцией по работе с ним.
Игру можно создать, используя только языки программирования, без каких-то дополнительных приложений и инструментов. Однако многие моменты при создании игровых проектов, содержащих большое количество ресурсов (изображений, видео, звуков и текстов), требуют существенной оптимизации. Добавлять и изменять свойства этих ресурсов намного проще через визуальный редактор, чем в коде игры или конфигурационных файлах, а набор фреймворков существенно облегчает процесс создания игры. Именно поэтому представленный движок – это не только набор библиотек, написанных на C++, но и мощный инструментарий, с помощью которого процесс создания игр существенно упрощается.
Центральным приложением, вокруг которого вертится создания игрового процесса квестов жанра «поиск предметов», является Quest Editor. С его помощью мы создаем новые сцены (интерфейс игры), размещаем на них объекты (изображения, видео, анимацию), прописываем сценарную логику игры и взаимосвязь событий и сцен. Интерфейс Quest Editor представляет собой три области, которые содержат:
- список сцен и уровней, имеющихся в игре, а также ресурсов (изображения, видео, клипов) доступных для добавления на сцену (вкладка Resource);
- экран предварительного просмотра сцены, на него можно быстро добавить новый объект, создать игровую область;
- окно со списком объектов и настройками их свойств.
В демо-версии уже имеется набор ресурсов, расположенных на игровых сценах: при работе с демо-версией движка вы можете самостоятельно добавлять в игру новые изображения, звуки, тексты или видео (и сюжетное видео между сценами, и видео, запускаемое по клику на объект). А так же в проект добавлены две мини-игры и приведены примеры функционирования блоков скриптования, из которых складывается небольшой геймплей. Будьте внимательны, в демо-версии введено ограничение на количество добавляемых объектов — 500 изображений, 50 звуков, 70 клипов, 100 строк.
Для того чтобы новые изображения стали доступны в игровых ресурсах их необходимо поместить в папку 1.0-demogame-templatelivegameimages. Обратите внимание, что внутри этой директории находятся подпапки, каждая из которых связана с определенной составляющей игры. Так, например, в папке font лежат игровые шрифты, а в папку scenes нужно добавлять изображения, которые впоследствии будут добавлены на соответствующие игровые сцены.
После того, как изображения добавлены в папку, необходимо запустить приложение Image Resource Editor (1.0-demogame-templatelivegamerun-image-resource-editor.bat). Оно обновляет файл resource.xml, в котором хранится информация обо всех изображениях. Кроме того в нем можно устанавливать параметры изображений и анимации.
Для добавления в игру новых видео-файлов достаточно поместить их в папку 1.0-demogame-templatelivegamevideo. В игре существует разделение на видео – это полноценный, закодированный видео поток в форматах webm или ogg; и клипы – это анимация, «оживленные» картинки. Видео может быть более качественной, но в то же время и более ресурсоемкой компонентой. Его обычно используют, если надо показать какие-то эффекты, например, взрывы, магия, анимация персонажей, анимация воды. Простые, повторяющиеся действия лучше реализуются клипами. Для создания клипов используется приложение ClipMaker, а для анимации частиц Particle Editor (в демо-версию они не включены).
Все тексты хранятся в файле strings.xml, добавление новых строк осуществляется простым редактированием данного файла. Добавление звука в игру происходит путем копирования файлов в папки gamemusic и gamesounds. Типы воспроизводимых звуков прописывается в soundtemplates.xml, а сами файлы в sounds.xml в папке gameproperties.
На этом мы закончим краткий обзор того как добавляется игровой контент и перейдем непосредственно к созданию игры.
Запустите Quest Editor (1.0-demogame-templatelivegamerun-quest-editor.bat), в левом окне выберите уровень Example и Scene01. В развернувшемся списке дважды щелкните на пункте Scene01. В центральном окне откроется изображение сцены со всеми добавленными на неё объектами. Под окном сцены расположена область для добавления блоков скриптования, с помощью которых задается логика игры. В правом окне находится окно со свойствами сцены и список объектов, расположенных на ней. Кликая на объекте в списке вы выделяете его в окне сцены, а в окне Properties отображаются его свойства.
Я не буду подробно останавливаться на описании блоков и команд, которые присутствуют в Quest Editor – эта тема слишком обширна и поэтому, я думаю, не нужно ее раскрывать в рамках этой статьи. Но для тех, кто решит всерьез подойти к ознакомлению с процессом создания игры, в папке 1.0-demodoc лежит подробная документация.
Здесь мы разберем пример добавления в проект мини-игр, которые могут выступать как в качестве ключевых моментов в прохождении игры, так и не влиять на него. Перед написанием мини-игры в Quest Editor создается отдельная сцена и на ней размещаются все необходимые объекты. Например, сцена Scene01_Minigame в Quest Editor. Таким образом готовится графическая составляющая для мини-игры, после чего можно приступать к программированию.
С точки зрения движка мини-игра представляет собой класс, который создается при разблокировке блока мини-игры и удаляется после выполнения этого блока. В блоке прописывается идентификатор мини-игры, по которому создается объект. Предварительно этот идентификатор должен быть зарегистрирован в движке.
Пока блок мини-игры не разблокирован, она не будет отрисовываться и реагировать на действия пользователя. После того как мини-игра разблокируется, она может начать работать, но её прохождение может быть невозможным. Например, если игрок не знает нужный шифр для прохождения и должен сначала его найти. Для этого используется вход условия. И только после того как все подключения ко всем входам отработали, мини-игра работает и проходится.
Мини-игры должны быть унаследованы от класса game::CMinigame и иметь свой уникальный строковый идентификатор, по которому должна быть зарегистрирована в qe::CMinigameFactory. В шаблонном проекте выделен отдельный файл, в котором происходит регистрация всех мини-игр: Game/Minigames/RegisterMinigames.cpp.
Вся инициализация должна происходить в методе Init. Методом Update вызывается каждый кадр, в нем следует рассчитывать логику мини-игры. Draw позволяет мини-игре отображать ресурсы поверх сцены, к которой привязана мини-игра. OnMouseClick и OnMouseMove отлавливают события мыши. Для завершения мини-игры она должна вызвать OnMinigameComplete. Чтобы запустить игру из Quest Editor нажмите кнопку Play, при этом вы сможете как проверить основной игровой процесс, так и добавленные мини-игры.
Чтобы проверить игровую логику, до запуска игры в Quest Editor присутствует система валидации, которая позволяет отлавливать различные баги и несоответствия, появляющиеся при сборке и скриптовании сцен в редакторе. Например, если попытаться вызвать объект сцены в блоке или команде, система валидации проверит, существует ли данный объект. Если он отсутствует, она пометит его как объект с ошибкой, обведя в красную рамку или поставив рядом с проблемой восклицательный знак.
Кроме того, на верхней панели расположена иконка жука, на которой отображается количество найденных в геймплее багов. При нажатии на неё открывается их полный список с подробной информацией и указанием сцен, на которых находится проблема. Баги сортируются по уровням.
После того как игра создана, её можно скомпилировать, чтобы оптимизировать файлы игры и повысить скорость её запуска. В демо-версии движка добавлена возможность сборки игр под Windows (собирается при помощи Visual Studio 2008) и Mac (собирается в XCode 4.5). Игру можно запускать и без сборки – в Windows для этого запустите файл game_release.exe в папке game. Чтобы сделать то же самое под Mac, наберите в консоли mac_run.sh, находясь в папке game.
Приложения, идущие в комплекте с движком, не имеют привязки к жанрам, поэтому с помощью движка Alawar Engine сегодня создаются игры различных жанров – это квесты, экономические симуляторы, стратегии, которые распространяются, в частности, и по free-to-play модели. Конечно, применять Quest Editor целесообразнее всего при создании квестов, т.к. в нем заложен язык скриптования, позволяющий выстроить четкую последовательность прохождения игры. В других жанрах это приложение используется для добавления игровых объектов, видео и клипов на игровые сцены. Игровая механика создается на C++ и связывается с объектами через их id.
P.S. Если в процессе создания игры у вас возникнут вопросы по движку, вы можете воспользоваться документацией, которая лежит в папке doc/. Или задать их в комментариях к статье.
P.P.S. Программное обеспечение в виде загружаемого файла, расположенного по ссылке pubext.alawar.com/AE-1.0-demo.zip, предоставляется только и исключительно в ознакомительных (демонстрационных) целях. Любая попытка коммерческого использования программного обеспечения, его декомпиляции, дезассемблирования, модификации является нарушением исключительных прав.
Автор: EgorGutorov