Pull to refresh

Пара слов о NeoAxis

Reading time5 min
Views14K
Пара слов о NeoAxis

Рано или поздно перед каждой командой разработчиков игр встаёт вопрос выбора движка. Причины разные: либо писать свой получается слишком долго и накладно, либо не хватает знаний, опыта или специалистов, либо просто прикинув потраченное время и стоимость принимается решение что купить готовый лучше, чем писать свой. Через 7 лет после своего дебюта в области игроделания перед нами встал такой же вопрос (до этого писали всё сами).

Нами были изучены несколько игровых движков на С++ стоимостью лицензии до 1000 долларов (думаю упоминать названия тех движков что мы отклонили будет некорректно по отношению к их авторам). Случайно сюда попал C# движок NeoAxis, который настолько понравился, чтобы было решено остановиться на нём и перейти с C++ на C#.

Чем же он так впечатлил нас? Постараюсь кратко рассказать об этом в данной статье.



Во-первых, сама архитектура движка, очень удобная на мой взгляд. Процитирую описание авторов:

Система сущностей (Entity System)

Система сущностей — это сердце NeoAxis Engine.
С помощью единой системы сущностей создаётся вся игровая логика.
В каждой игре или приложении присутствует некая система объектов. В каждой такой системе есть набор объектов и правила их взаимодействия. По сути, было бы удобно описывать объекты, алгоритмы их функционирования, способы взаимосвязи с другими объектами неким единым образом. И, опять же, организовать базу для описания объектов так, чтобы создавать новые объекты с минимальными усилиями. И при этом, в большинстве случаев, такая система должна хорошо ассоциироваться с реальным миром, чтобы можно было легко отождествлять игру и мир который мы создаем в игре.
Обычно в игре есть мир. Игра делится на уровни. Каждый уровень живет по правилам мира + по специфичным для этого уровня свойствам.
Сущностью является любой объект игровой логики. Игроки, предметы, пули и любые другие игровые объекты являются сущностями.
Каждая сущность имеет свой класс и тип.
Класс сущности — это базовый алгоритм поведения сущности. Классы сущностей пишутся на языке программирования и легко интегрируются в единую систему. Такая интеграция позволяет расширять редакторы (редактор ресурсов и редактор карт) без их непосредственного изменения.
Тип сущности — это фактически набор настроенных свойств класса сущности. Типы сущностей создаются и настраиваются в редакторе ресурсов. (.type файлы). Настройка подразумевает конфигурирование различных свойств объектов (внешний вид персонажей, максимальное количество жизней и т.д.).

Система логики (Logic System)

Часто необходимо задавать особую игровую логику на уровнях. Логику, которая специфична для каждого уровня. Для удобного задания такой логики придумана система логики. Она позволяет расширять базовые игровые элементы дополнительной функциональностью.
Программисты пишут базовую игровую логику на языке программирования, а дизайнеры уровней расширяют её в пределах уровня с помощью визуальных средств или скриптов.
Поддерживается два способа задания логики на уровнях:
* Визуальный
Возможность конструировать алгоритмы визуальными средствами не прибегая к написанию скриптов. Алгоритмы представляются в виде деревьев.
* Скриптовый
Типичный способ расширения функциональности с помощью скриптов.

Во-вторых, хорошее качество графики. Графический движок NeoAxis-а основан на известном движке OGRE, и имеет всего его фичи. Есть поддежка материалов, шейдеров, в общем для наших нужд более чем достаточно.

В-третьих, имплементированы 2 физических движка (PhysX и ODE), можно подключать любой на свой выбор и использовать. Так как мы до этого использовали PhysX в своих проектах, очень обрадовались его наличию в этом движке. Благо и поыт работы с ним есть, и сам физический движок очень хорош.

Четвёртое — это широкий и удобный инструментарий. Есть экспортеры для разных графических пакетов, есть Resource Editor — программа где можно настроить каждый объект игры, привязать к нему графику и анимацию, звуки, партиклы, какие-то свойства (Система прикрепляемых объектов — Attached Objects System — очень удобная архитектура для работы с игровыми объектами). Тут же можно создать GUI, протестировать его. Можно создать разные эффекты, системы партиклов, настроить материалы, создать физ модель объекта, прикрепить джоинты,…
image
Следующий инструмент — Map Editor — в нём вы можете создать уровень, расставив игровые объекты на карте. Есть несколько способов создания карты, можно загрузить Static Mesh, можно создать HeightMap, можно ещё как-то. Стоит заметить, что движок не заточен под какой-то определённый тип игры, в демке можно найти примеры как RTS и Arcade, так и TPS и даже Jigsaw Puzzle. Это тот редкий случай, когда универсальность не идёт в ущерб удобству. В Map Editor-е можно кликнуть по любому объекту, изменить его свойства или дописать какой-то скриптик или эвент, как для конктретно данного экземпляра, так и нескольких экземпляров данного типа. Как уже упоминалось, сделать это можно как визуально (так сказать программируя мышкой), так и рукописным скриптом. Очень удобно. Есть ещё пара утилит — Configurator — для выбора физического движка, настроект графики (OGL/DirectX), максимальных версий шейдеров, выбора звуковой библиотеки, выбора локализации. И вторая — Deployment Tool — создание дистрибутива.
image

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

Шестое — Cut Scene Manager, Splines и кривые Безье, камеры, летающие по этим кривым и прочие уже реализованные удобные, нужные и красивые вещи. Можно вставлять и использовать, если не хватает функциональности — можно дописать, если по какой-то причине не нравится — можно переделать полностью.

Седьмое — большая демка с исходниками. Этот пункт как бы реабилитирует тот факт, что у движка до сих пор нет полной документации с туториалами (их всего 3 и самых простых). Но зато в демке есть разные типы игр — стратегия, шутер, можно побегать и поездить на танке,… Авторы движка постарались составить демо так, чтобы были представлены все фичи движка и разработчики игры могли сами залесть и посмотреть, как сделано то-то и то-то. Здорово помогает, особенно на первых порах.

Восьмое — Add-On-ы. На сайте выложены платные и бесплатные адд-оны, как от довольно простых и бесплатных (типа неба или воды) до коммерческих (механика автомобиля). Хоть нам лично это и не понадобилось, но решил всё таки упомянуть.

Девятое — комьюнити. На сайте есть форум, где довольно активно помогают друг другу разработчики, использующие этот движок. На фоне конкурентных проектов форум досточно живой, и ведётся давно.

Десятое — разработчки наши русские ребята, из Казани. Поэтому саппорт весь на русском языке (правда форум у них на сайте англоязычный). Так как мы взяли среднюю лицензию ($395), а рассчитывали потратить 1000 на двиг, то покупали ещё саппорт на оставшиеся. Относятся очень ответственно, помогают и вникают, добавили нужные нам фичи в движок.

У движка есть Web Deployment и игры по сети. Хоть в нашем проекте и не надо, но стоит об этом упомянуть. Есть ещё много разных интересных возможностей, о которых я не упомянул. Да что говорить, качайте, запускайте демку и смотрите сами. :)

сайт движка.
статья на сайте русского комьюнити, более подробный обзор.
Tags:
Hubs:
+9
Comments10

Articles