Работаю над иерархией и общей структурой объектов. Сначала в движке планировал разбить иерархию объектов на два класса – сцена и игровой уровень. Предполагалось, что в сцене мы храним сами пулы простых объектов, а в классе уровня – глобальные ссылки на них и пулы сложных объектов, собирающие несколько ссылок на простые объекты. Кроме того, логически, уровнь будет содержать классы конкретной игры, а сцена – более общие классы.
Вот такая была схема:
class Scene { Lights Particles Decals SceneObjects } class GameObject { LightsID ParticlesID DecalsID SceneObjectsID } class GameLevel { ParticlesType DecalsType ActorsType StaticsType DynamicsType LightsID ParticlesID DecalsID Actors:GameObject; Static:GameObject; Dynamic:GameObject; } |
Однако, при ближайшем рассмотрении всё пошло пи… короче такая схемка не покатит. И вот почему. Во-первых, отсечение по ок-трии в целях оптимизации надо будет делать в классе уровня, ибо отсечь один GameObject быстрее чем кучу SceneObjects, Particles и других его составляющих. Во-вторых, сомнительная радость размазывать хранение параметров для типов объекта по двум классам (например партиклы, декалы). В третьих же сериализация опять таки достаётся классу уровня.
Вот таким макаром класс Сцены становится всё худее и худее, а его значимость – всё меньше и меньше.
Вообщем волевым решением я всё перенёс в мега-класс GameScene:
class ageGameScene: public ageSingleton { ageResourseManager
|
Вот такой жирдяй-класс. В нём же практически вся игра будет :-D
-----
К слову о проектировании. В голове эти все объекты у меня выглядят таким образом :-D

Комментариев нет:
Отправить комментарий