Документация/Статьи/Введение в систему игровых объектов
From NeoAxis Engine Wiki
| Language: | Status: | Approved |
Contents |
Описание
Система игровых объектов – это совокупность средств, предназначенных для создания игровой логики проекта.
С помощью системы игровых объектов описывается и реализуется игровая логика мира. Система игровых объектов нужна для того, чтобы описывать игровую логику мира. То, из чего этот мир будет состоять и то, как он будет функционировать. Система объектов включает в себя все аспекты, касающиеся создания логики проекта.
Система игровых объектов - это унифицированный способ определения всех объектов игровой логики, формализация способа их взаимодействия.
В качестве игровых объектов может выступать все, что угодно: робот, ящик, ландшафт.
Класс игрового объекта
В основе любого игрового объект лежит игровой класс. Класс определяет атрибуты и логику игрового объекта, т.е. то, как ведет себя тот или иной объект. Классы игровых объектов описываются программистами.
Один и тот же класс может лежать в основе разных игровых объектов. Так, например, в основе ряда игровых персонажей из директории "Data\Types\Units" (Bug, Girl, Robot, Zombie) лежит класс GameCharacter. Соответственно, все эти персонажи имеют одну и ту же логику, но отличаются значениями параметров (внешний вид, скорость, оружие).
Классы могут реализовывать совершенно разные объекты. Например, класс StaticMesh. Он позволяет задать трехмерную модель объекта, настроить физические столкновения. Класс GameChacter задает логику персонажа. Объект такого класса может перемещаться по карте, стрелять из оружия. Класс SkyBox реализует небо.
Программисты могут создавать собственные классы на основе стандартных классов NeoAxis Engine.
Список и описания стандартных классов игровых объектов можно посмотреть здесь.
Иерархия классов
Классы игровых объектов наследуются от других классов и образуют дерево классов. В движке все классы игровых объектов унаследованы от класса Entity.
Рассмотрим иерархию классов на примере класса Aircraft (самолет). Он унаследован от класса Unit, которые реализует "управляемую единицу", т.е. некий объект, которым может управлять пользователь. Unit, в свою очередь, унаследован от класса Dynamic. Dynamic - это класс для динамических объектов, т.е. объектов изменяющих свое положение или состояние. Далее, класс Dynamic наследуется от класса MapObject, реализующего работу с объектами карты. Наконец, класс MapObject наследуется от класса Entity.
Классы предоставляют список параметров. Например, максимальное количество жизни персонажа. Параметры задаются в типе игрового объекта, о котором написано ниже.
Тип игрового объекта
Каждый объект имеет свой игровой тип. Игровой тип, основан на каком-либо игровом классе. Тип определяет свойства объекта, которые предоставлены классом.
Примеры свойств объекта: внешний вид (обычно задается 3d-моделью), скорость ходьбы персонажа, цвет неба и т.п.
Чтобы описанная система стала понятнее, рассмотрим пример. Пусть в некоторой игре имеются персонажи и автомобили. "Персонажи" и "Автомобили" - это классы, обладающими различными свойствами и различной логикой. Роботы и зомби - это типы, основанные на классе "Персонаж". Грузовики и легковые автомобили - это типы, основанные на классе "Автомобиль". А расставленные на карте роботы, зомби, грузовики и легковые автомобили - это уже игровые объекты, соответствующих типов.
Типы игровых объектов хранятся в .type файлах. Для создания и редактирования игровых типов применяется редактор игровых объектов.

