?

Log in

No account? Create an account
19 авг, 2007 @ 19:34 Модульная архитектура игрового движка 2
Спасибо всем, кто здесь, здесь и здесь высказал массу ценных замечаний о моем дизайне игрового движка! Сейчас движок состоит из следующих участников:

Game - класс настроек приложения, в нем происходит инициализация окружения, Windows stuff и т.д. Паттерн Singleton.

GameModeBase - абстрактный класс, воплощающий в отчужденном виде режим (или состояние) игры. Паттерн State. Содержит protected static members - ссылки на классы Direct3d, DirectInput, DirectAudio (каждый из которых является синглтоном-фасадом).

GameMode1, GameMode2 - наследники GameModeBase, конкретные режимы игры. Каждый из них загружает свои ресурсы, предоставляет игроку свой игровой интерфейс, имеет свою функцию отрисовки. Кандидаты в GameMode: отдельная глава игры; меню; один из жанровых режимов игры со своим особым интерфейсом, мини-игра и т.д.

GameDispatcher - класс организует главный цикл сообщений Windows, знает обо всех GameModes (они ничего не знают друг о друге). Обрабатывает сообщения, возвращаемые методами GameModes и на основании этого осуществляет диспетчеризацию и согласование модулей GameModes. Паттерн Mediator. Теоретически, диспетчеры могут загружаться динамически и "заступать на смену", подменяя "на лету" систему взаимосвязей между GameModes.

Функция WinMain имеет примерно такой вид:

if ( Game::Init() )
{
GameDispatcher d( 2 );
ID_TYPE GamePlay_id = d.Register( new GamePlay );
ID_TYPE GameMenu_id = d.Register( new GameMenu );
d.Start( GameMenu_id );
}

Game::Release();
topright:
From:neteraser
Date:Август, 19, 2007 16:51 (UTC)
(Ссылка)
я бы передал содержание поста в 4 слова: "сжал С++ в кулак"
(Ответить) (Ветвь дискуссии)
[User Picture Icon]
From:topright
Date:Август, 19, 2007 17:17 (UTC)
(Ссылка)
Загадочно излагаете свою мысль. Сжимаете русский язык в кулак. :)
(Ответить) (Уровень выше) (Ветвь дискуссии)
From:neteraser
Date:Август, 19, 2007 17:53 (UTC)
(Ссылка)
А ведь отличный ответ! :)
Но не было повода переходить на личности.
Потому как мой мессадж был про очень многих
(про меня несколько лет назад в т.ч.)
А твой мессадж - про меня лично.
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:topright
Date:Август, 19, 2007 18:01 (UTC)
(Ссылка)
О нет, мой мессадж про русский язык лично. :)
(Ответить) (Уровень выше) (Ветвь дискуссии)
From:neteraser
Date:Август, 19, 2007 18:18 (UTC)
(Ссылка)
Невероятно. :)
Хитер и изворотлив автор поста! Понимаю.
Вот искра. Именно такая она зажигает "С++ дрочеров". Гасит, думаю, она же.
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:topright
Date:Август, 19, 2007 18:41 (UTC)
(Ссылка)
Как человек, за несколько лет прошедший долгую эволюцию от дрочки С++ до неделикатной дрочки моего бедного мозга, и как тонкий ценитель инсалтов в духе Monkey Island, будьте так любезны, объясните мне на языке С++, чем я Вам обязан. :)
(Ответить) (Уровень выше) (Ветвь дискуссии)