Документация/Приступаем к работе
From NeoAxis Engine Wiki
| Language: | Status: | Approved |
Contents |
Что такое NeoAxis Game Engine?
NeoAxis Game Engine - это современный игровой 3D движок, предназначенный для создания систем визуализации и игр. Движок включает в себя полценную среду разработки, существенно экономя время при создании приложений, работающих с трехмерной графикой. Он включает в себя набор программных библиотек и инструментарий.
Движок подходит для широкого спектра 3D приложений. Сюда относятся игры, симуляторы, тренажеры, системы виртуальной реальности, программы для визуализации физических или химических процессов.
NeoAxis Engine SDK
Установка
Движок поставляется в виде SDK, включающий в себя все необходимые составляющие для разработки. Предлагается несколько видов SDK, о которых можно прочитать на странице лицензирования. Для свободного скачивания доступна NeoAxis Non-Commercial SDK, на базе которой можно разрабатывать только некоммерческие продукты.
Скачать Engine NeoAxis Non-Commercial SDK.
Скачав и установив SDK, можно приступить к его изучению.
Обзор меню
После установки SDK, зайдя в стартовое меню Windows можно увидеть новые пункты:
Меню содержит следующие пункты:
NeoAxis Engine Non-Commercial SDK 1.0
-
API Reference - Автоматически-сгенерированный справочник по API.
-
Browse Files - Обзор файлов установленного SDK.
-
Configurator - Приложение для настройки движка.
-
Demo - Демонстрационное приложение. Мы рекомендуем начать изучение с Demo.
-
Documentation - Ссылка на онлайн документацию, которую вы сейчас читаете.
-
Map Editor - Редактор карт.
-
NeoAxis Engine on the Web - Ссылка на сайт движка.
-
Resource Editor - Редактор ресурсов проекта.
-
Uninstall NeoAxis Engine Non-Commercial SDK - Деинсталляция SDK.
Мы рекомендуем начать изучение с Demo.
Демо
Описание
NeoAxis Engine Demo представляет собой интерактивное приложение, которое демонстрирует практически все возможности движка. Демо содержит карты, демонстрирующие различные типы игр.
После запуска мы попадаем в главное меню. В главном меню можно загрузить карту Village Demo или множество технических демо All Tech Demos. Для того, чтобы перейти к нужной нам карте из доступных, нужно нажать кнопку Maps и выбрать карту.
Клавиши управления
Клавиши управления персонажем:
- ASDW, стрелки - управление персонажем
- Пробел - прыжок
- Кнопки мыши - стрелять
- 1 - 9 - переключить оружие
- E - использовать предмет
Клавиши управления приложением:
- F7 - изменить тип камеры
- F8 - пауза
- F11 - попасть в окно профилирования
- F12 - сделать скриншот
- ~ - открыть консоль
- Page Up, Page Down - приблизить/удалить камеру (только для камеры от третьего лица)
- Home, End - изменить высоту камеры (только для камеры от третьего лица)
Список карт
Основные:
- VillageDemo - Комплексная карта демонстрации движка. Представляет собой карту деревни, которая может работать в режиме демонстрации.
- TankDemo - Пример симулятора танка.
- JigsawPuzzleGame - Настольная игра с возможностью игры по сети.
- RTSDemo - Пример стратегии в реальном времени.
- TPSArcadeDemo - Пример игры с видом от третьего лица и сцен на движке.
- PhysicsDemo - Пример использования физической системы.
Технические демо:
- ConstructionsDemo - Демонстрация использования сложных физических конструкций. Таких как кран, мост.
- CutSceneDemo - Пример использования сцена на движке.
- DeathmatchDemo - Пример шутера от первого лица.
- PortalSystemDemo - Пример использования портальной системы, позволяющий улучшить производительность при отрисовке закрытых помещений.
- RagdollDemo - Пример использования кукольной анимации.
- RenderDemo - Демонстрация различных особенностей системы рендеринга.
- SkirmishDemo - Демонстрация искусственного интеллекта персонажей, разделения на команды.
- SoundDemo - Пример использования 3D звука.
- StaticLightingDemo - Пример использования статического освещения.
- SwitchesDemo - Пример использования переключателей.
- TurretDemo- Пример реализации пушки в игре.
Обзор файлов SDK
Зайдем в папку с SDK. По умолчанию она находится в директории C:\NeoAxis\. Проведем краткий экскурс по дереву папок SDK.
- Game - Папка проекта.
- Bin - Исполняемые файлы программ, входящих в инструментарий и демонстрационное приложение Game.exe.
- Data - Папка с ресурсами проекта. Внутри находятся файлы 3D моделей, текстур, файлов карт и другие.
- NativeDLLs - Внутренние нативные библиотеки, необходимые для работы движка.
- UserSettings - Различные пользовательские настройки, временные файлы, а также логи приложений.
- Src - Исходные коды демо, которые одновмеренно будут являться каркасом вашего проекта.
- Bin - Исполняемые файлы программ, входящих в инструментарий и демонстрационное приложение Game.exe.
- SDK - Директория с документацией и дополнительными утилитами.
- Docs - Справочник по API.
- Tools - Дополнительные утилиты.
- Exporters - Экспортеры моделей для пакетов трехмерного моделирования.
- 3dsMax - Экспортер моделей для Autodesk 3dsMax.
- Maya - Экспортер моделей для Autodesk Maya.
- Fonts - Утилиты для работы со шрифтами.
- BitmapFontGenerator - Утилита для генерации текстуры со шрифтом.
- BitmapFontGeneratorToNeoAxisConverter - Приложение для преобразования шрифтов, созданных в BitmapFontGenerator, в формат движка.
- Video - Утилиты для работы с видео.
- ffmpeg2theora - Утилита для конвертации видео в формат OGG Theora Video.
- Exporters - Экспортеры моделей для пакетов трехмерного моделирования.
Дополнительные демонстрационные приложения
Список дополнительных приложений:
-
DedicatedServer.exe - Приложение для создания выделенного сервера.
-
WinFormsAppExample.exe - Пример интеграции движка в Windows Forms приложение.
-
WPFAppExample - Пример интеграции движка в WPF приложение.
-
ChatExample.exe - Пример реализации сетевого чата на базе Windows Forms.
Инструментарий
Обзор
Инструментарий движка представляет собой полноценный набор редакторов и утилит.
Приложения инструметария:
-
Редактор ресурсов - Редактор ресурсов предназначен для редактирования ресурсов проекта. Сюда входят, главным образом, трехмерные модели, карты, материалы, текстуры, звуки и прочее.
-
Редактор карт - Редактор карт предназначен для создания и редактирования игровых карт.
-
Конфигуратор - Утилита для настройки параметров движка.
-
Deployment Tool - Инструмент для подготовки конечного продукта.
-
Компилятор шейдеров - Компилятор кэша шейдеров.
Также, в инструментарий входят плагины для пакетов трехмерного моделирования, которые позволяют импортировать 3D модели в движок.
Основными редакторами являются редактор ресурсов и редактор карт, которые будут рассмотрены далее.
Редактор карт
NeoAxis Map Editor - это редактор карт. Термин "карта" берет свое начало из компьютерных игр. Карта - это некая местность, на которой разворачивается действие игры. Картой может быть как огромный город, так и одна комната. Редактор карт позволяет создавать разнообразные ландшафты, расставлять на них игровые объекты, деревья, дома, технику. Редактор работает по принципу WYSIWYG (What You See Is What You Get), т.е. вы работаете с картой в том виде, в каком она будет в игре. Кроме того, по нажатию одной кнопки, вы можете запустить карту и посмотреть ее в действии.
Подробнее с редактором карт можно познакомиться здесь.
Редактор ресурсов
NeoAxis Resource Editor - редактор ресурсов. Назван так, потому что позволяет просматривать и редактировать множество типов ресурсов.
А именно:
- Трехмерные модели (.mesh),
- Материалы (.highMaterial),
- Текстуры (.jpg, .tga, .png, .dds),
- Звуки (.ogg, .wav),
- Физические модели (.physics),
- Системы частиц (.particle),
- Пользовательские интерфейсы (.gui),
- Описания шрифтов (.fontDefinition),
- Игровые объекты (.type).
Трехмерная модель - это модель какого-либо объекта, задающая его форму в трехмерном пространстве. 3d-модель, пожалуй, можно назвать главным из ресурсов игры. Обычно, больше всего времени тратится на создание трехмерных моделей. Если вы незнакомы с этим понятием, прежде всего необходимо отметить, что в компьютерных играх используются главным образом полигональные трехмерные модели. Полигональные - состоящие из полигонов.
Материал - это информация о раскраске трехмерной модели. Самый простой материал - это материал, содержащий один единственный цвет. Трехмерная модель, покрытая таким материалом, будет раскрашена в его цвет. Зачастую используются гораздо более сложные материалы, содержащую одну или несколько текстур, блеск, свечение и bump-mapping.
Текстура - это плоское изображение. Текстуры используются, в основном, в материалах для нанесения на трехмерную модель.
Звук - это неотъемлемый ресурс любой игры, вносящий разнообразие в игровой процесс.
Физическая модель - это описание игрового объекта, с точки зрения его взаимодействия с другими объектами. Трехмерная модель описывает внешний вид, а физическая - внутренние характеристики. К примеру, вы можете создать физическую модель для автомобиля, используя ограничивающий параллелепипед (корпус автомобиля), цилиндры (колеса), оси, пружины (амортизаторы). С помощью физической модели осуществляются вращения, столкновения, разрушения объектов игрового мира.
Система частиц - это способ реализация различных визуальных эффектов. С помощью нее можно создавать эффекты дыма, огня, пара и многого другого.
Пользовательский интерфейс - это, так называемый, GUI (Graphic User Interface), отвечающий за взаимодействие с пользователем. Включает в себя всевозможные кнопки, списки, формы, поля ввода и прочие компоненты. Вы можете создавать собственные элементы интерфейса и использовать их в ваших приложениях.
Описание шрифта - это набор параметров характеризующих тот или иной шрифт.
Игровой объект - это один из компонентов, составляющих систему игрового мира. В качестве него может выступать что угодно: игровой персонаж, автомобиль, здание, дерево. Весь мир игры наполнен игровыми объектами. В игровом объекте сочетаются все другие виды ресурсов: трехмерные модели, физические модели, звуки.
Подробнее с редактором ресурсов можно познакомиться здесь.
Пакеты трехмерного моделирования
Как же создаются трехмерные модели? Программы, которые позволяют создавать трехмерные модели, называются пакетами трехмерного моделирования. А люди, которые занимаются созданием трехмерных моделей, зовутся моделлерами.
В настоящее время существует большое количество различных пакетов трехмерного моделирования. Самыми популярными являются:
Отметим, что Blender, в отличии от трех других перечисленных выше пакетов моделирования, является бесплатным.
Для преобразования моделей в формат NeoAxis Engine существуют специальные программы-дополнения, называемые экспортерами. Экспортеры доступны для Autodesk 3ds Max и Autodesk Maya. Кроме того, все современные пакеты моделирования поддерживают экспорт в открытый формат Collada, а редактор ресурсов в свою очередь позволяет просматривать и преобразовывать модели в формате Collada в свой формат.
Программирование в NeoAxis
Обзор
NeoAxis Engine API движка основано на .NET. Основной язык - C#. Можно писать код на любом языке, поддерживающем .NET. Также, к проекту можно прицеплять библиотеки написанные на C/C++ или другом неуправляемом языке. Логика проекта пишется на C#.
SDK включает в себя готовый скелет для разработки проекта (Демо), а также обширный набор примеров кода для быстрой разработки логики проекта. Движок предлагает сосредоточиться на разработке логики проекта, и не заниматься внутренними низкоуровневыми задачами, тем самым уменьшая время разработки проекта и как следствие его стоимость.
Внутренне, движок использует нативные C/C++ компоненты, такие как отрисовка, физика, звук для максимальной производительности.
Движок может работать через Mono Runtime, альтернативную среду выполнения .NET Framework.
Выбор IDE
Существует несколько IDE, поддерживающих разработку на языке C#.
Поддерживаются следующие IDE для разработки:
- Microsoft Visual C# 2008/2010 Express - Бесплатная среда разработки от Microsoft.
- Microsoft Visual Studio 2008/2010 - Платная среда разработки от Microsoft.
- SharpDevelop - Свободная среда разработки.
- MonoDevelop - Свободная среда разработки.
Мы рекомендуем начать с Visual C# 2010 Express, которую можно бесплатно загрузить.
Скачать Visual C# 2010 Express
После установки IDE перейдем к изучению исходного кода SDK.
Обзор исходного кода SDK
Перейдем как папке Game\Src и откроем NonCommercialLicense.sln.
Вы можете видеть список доступных проектов:
- GameCommon - Различные классы проекта, такие как, описание типов материалов, сетевые сервисы проекта, класс консоли движка, пользовательские гуи классы.
- GameEntities - Описание игровых классов и всей логики игры.
- Game - Точка входа приложения. Инициализация движка, классы для реализации структуры проекта, навигации игровых экранов и взаимодействия с пользователем.
- ChatExample - Пример реализации сетевого чата на базе Windows Forms.
- DedicatedServer - Приложение для создания выделенного сервера.
- WinFormsAppExample - Пример интеграции движка в Windows Forms приложение.
- WPFAppExample - Пример интеграции движка в WPF приложение.
Основными являются сборки GameCommon, GameEntities и Game.
Мы настоятельно рекомендуем использовать демо, как скелет для вашего проекта. Удалить весь код демо и переписать заново - не лучшая идея. Разработка проекта выглядит, как постепенное расширение и изменение доступного в SDK кода. В будущем, когда у вас будет больше опыта, вы сможете удалить ненужный код.
Также, возможно, вам потребуется справка по структуре SDK и описанию библиотек. Об этом можно узнать здесь.
Скриптование карт
В дополнение к основному способу написания кода, существует возможность скриптования карт. Редактор карт включает в себя специальный редактор для написании логики карты.
Вы можете добавить к карте логику, не изменяя при этом основной код приложения. Для этого существует еще один редактор: NeoAxis Logic Editor. Он позволяет присоединить к объектам карты логику, осуществлять реакцию на события, управлять объектами с помощью ваших алгоритмов.
К примеру, вы отметили на карте некую область. С помощью редактора логики, можно получить уведомление о попадении игрока в данную область и выполнить какой-либо алгоритм. Также, с помощью редактора логики удобно создавать сцены на движке.
Редактор логики поддерживает два способа задания алгоритмов:
- Designer Type (с помощью пользовательского интерфейса),
- Script Type (на языке программирования C#).
Designer Type подойдет не только программистам, но и дизайнерам карт, т.к. весьма прост в использовании. Команды, из которых формируется алгоритм, создаются с помощью удобного меню.
Script Type, используя всю мощь языка C#, позволяет создавать алгоритмы немного быстрее, чем с помощью интерфейса, но и требует специальных навыков программирования.
Читайте больше о редакторе логики.