[ AmberSkyNet VR ]

- Что ты строишь, господин? Что это будет?
- Ничего, естественно. Ведь все, что я создаю,
разваливается на части...
(Р.Желязны, Д.Линдскольд "Доннерджек")

Введение

Ну, что ж.. Попробуем написать масштабируемый движок, в котором из кубиков-модулей можно будет собирать различные миры, двумерные и трехмерные, головоломки и аркады, RPG и шутеры, сетевых чат-ботов и искусственных code-warrior'ов, сражающихся друг с другом в жестокой рагнарёкской битве... Гм.. так вот.. Назовём его AmberSkyNet.

Движок будет кросс-платформенным, под Win32 и Linux. Исходники будут доступны по лицензии GPL и могут быть получены через SVN c Sourceforge.

Т.к. движок кросс-платформенный, то в нём будут использоваться решения, работающие как под Win32 так и под Lin. Поэтому графическим API будет OpenGL (тем более что DX я вообще не знаю) инициализируемый через SDL, а для сетевого обмена планирую использовать SDL_net.

  1. Среда разработки: Dev-C++ под Win32, адаптация для компиляции в Linux, если таковая понадобится - в текстовом редакторе MidnightCommander'а.
  2. Компилятор: для Win32 - MinGW, gcc для Linux с использованием CMake
  3. Система контроля версий: SVN, графический интерфейс для SVN под Win32 TortoiseSVN
  4. Граф. редактор для построения рисунков: 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-клиента

Powered by: SourceForge.net Logo