- Что ты строишь, господин? Что это будет?
- Ничего, естественно. Ведь все, что я создаю, разваливается на части...
(Р.Желязны, Д.Линдскольд "Доннерджек")
Ну, что ж.. Попробуем написать масштабируемый движок, в котором из кубиков-модулей
можно будет собирать различные миры, двумерные и трехмерные, головоломки
и аркады, RPG и шутеры, сетевых чат-ботов и искусственных code-warrior'ов,
сражающихся друг с другом в жестокой рагнарёкской битве...
Гм.. так вот.. Назовём его AmberSkyNet.
Движок будет кросс-платформенным, под Win32 и Linux. Исходники
будут доступны по лицензии GPL и могут быть получены через SVN
c Sourceforge.
Т.к. движок кросс-платформенный, то в нём будут использоваться
решения, работающие как под Win32 так и под Lin. Поэтому графическим
API будет OpenGL (тем более что DX я вообще не знаю) инициализируемый через SDL, а для сетевого обмена
планирую использовать SDL_net.
- Среда разработки: Dev-C++ под Win32, адаптация для компиляции в Linux,
если таковая понадобится - в текстовом редакторе MidnightCommander'а.
- Компилятор: для Win32 - MinGW, gcc для Linux с использованием CMake
- Система контроля версий: SVN,
графический интерфейс для SVN под Win32 TortoiseSVN
- Граф. редактор для построения рисунков: Dia.
Движок может быть собран как набор модулей (набор dll, so файлов) либо как один загрузочный
модуль, реализующий весь функционал (AmberSkyNetVR.dll).
В данном списке перечислены не все классы движка, а только те, которые могут быть
вызваны в прикладной программе.
Схему организации основных интерфейсных классов движка (с точки зрения внешней программы)
можно посмотреть [тут]. Серым цветом выделены интерфейсные классы, используемые исключительно
внутри движка.
- asnEngine - главный модуль (IEngine)
- asnLog - модуль менеджеров логов (ILog)
- LogTxt - менеджер записи логов в текстовый файл
- LogNo - "заглушка", ничего не делает
- asnFileSystem - модуль файловой системы
- FileSystem - менеджер файловой системы (IFileSystem)
- FileSystemASN - менеджер файловой системы AmberSkyNet (IFileSystem)
- asnDeviceGL:
- DeviceGl- менеджер графики (IDevice) использующий SDL,SDL_image
- Material - материал (IMaterial)
- DrawObject - объект отрисовки (IDrawObject)
- EventManagerSDL - менеджер ввода, событий (IEventManager) использующий события SDL
- EvListCamWalker - "слушатель" для передвижения камеры клавишами WASD_QZ (IEventListener)
- CameraSimple - простейшая камера (ICamera)
- asnNetSupervisor - модуль сети
- NetSupervisorSDL - "надсмотрщик" над сетью с использованием библиотеки SDL_net (INetSupervisor)
- IRC_Client - "обработчик" запросов IRC-протокола (INetProtocolHandler)
- asnSound - Модуль менеджера звука (ISound)
- asnDataParser - модуль парсера данных (IDataParser)
- asnWorld - модуль миров
- WorldSimple - простейший менеджер мира (IWorld)
- NodeModifierRotate - модификатор вращения (INodeModificator)
- Модули узлов сцены:
- Шаг 1. - определение структуры каталогов, работа с SVN.
- Шаг 2. - главный класс CEngine и интерфейс к нему.
- Шаг 3. - добавляем систему плагинов.
- Шаг 4. - ini-файл.
- Шаг 5. - asnLog плагин - плагин лог-файла.
- Шаг 6. - asnFileSystem - плагин файловой системы,
чтение из ZIP-архивов.
- Шаг 7. - asnDeviceGL плагин - плагин
менеджера графики и ввода.
- Шаг 8. - плагин мира asnWorld, плагин 3ds-модели asnNode3ds, менеджер ресурсов.
- Шаг 9. - плагин разбора/формирования данных DataParserXML, реализация камеры.
- Шаг 10. - плагин анимационных спрайтов, плагин звука. Базовые объекты.
- Шаг 11. - плагин менеджера сети, плагин IRC-клиента
|