SRC:
http://www.glasnet.ru/webboard/rus/message.php?id=495294
To All: Спецификация OpenFlanker(+)
Отправил(а) Miguel Gonsalez (
miguel@relex.ru 2000-04-20 13:59:24
Ну, в-общем, похоже этот проект пользуется интересом. А коли так - необходимо изложить свои взгляды на общую структуру сима. Кстати, предлагаю сменить рабочее название на OpenSim или OpenSky, и не привязываться к конкретной модели. Со SkyCat переговорю позже более подробно (благо работаем вместе), а для всех излагаю кусок информации для обсуждения/предложений/бития.На спецификацию это не тянет пока - прошу высказываться.
Общие положения:
1.Проект в конечной реализации должен представлять собой переносимую многокомпонентную систему с возможностью легкой настройки под конечного пользователя.
2.Проект должен быть модульным, причем никакой отдельный модуль (plug-in) не должен быть необходим для правильной работы системы. Это обеспечит легкое подключение новых рендереров, редакторов карт, флайт-моделей, AI (ботов), и.т.д.
3.Проект должен (желательно) уметь работать распределенно (нужно ли это?), то есть уметь поддерживать связь со своими удаленными компонентами.
4.Каждый компонент должен уметь генерировать и обрабатывать какие-либо сообщения и должен уметь рассказывать о том, какие сообщения он умеет понимать.
Из вышесказанного предлагаю следующую модульную структуру (вернее сказать-перечень модулей):
1.Менеджер объектов. Собирает и хранит информацию о модулях и прочих объектах и обрабатываемых ими сообщениях.
2.Диспетчер. По сути дела - синхронизатор, и тупое хранилище общей для всех модулей информации. Все сообщения от модулей поступают к нему, а он на основе информации менеджера объектов направляет сообщение всем модулям, которые могут его (сообщение)обработать. Плюс очистка устаревшей общей информации.
3.Собственно графический движок. Рисует на экране картинку в соответствии с теми данными, которые он получает из общей кучи по сообщению загрузчика.
4.Сетевой клиент. Выплевывает в сеть данные для удаленного компонента, или для другого экземпляра системы.
5.Загрузчик объектов. Умеет по сообщению (требованию) читать данные игры (геометрию, звук, текстуры, источники света, ТТХ и.т.д) из файлов определенного формата и преобразовывать в формат, понимаемый другими компонентами.
6.Стратегический анализатор + редактор миссий.AI, дающий информацию ботам для действий.(распределение миссий, их целей, боевая загрузка; продвижение войск, неуправляемых игроками).
7.Флайт - модель+модель повреждений+моделирование аппаратуры. Выдает на основе ТТХ данные для правдоподобного моделирования полета и работы систем. Поглощает в себя также данные от органов управления. Данные от нее используются ботами и движком.По сути дела-математика.
8.Тактический AI. Собственно бот.
Неуправляемая боевая единица, действующая в соответствии с сообщениями стратегического анализатора и скудным количеством собственных мозгов. Данные от него используются в первую очередь флайт-моделью.
9. Анализатор взаимодействий/столкновений/боевого воздействия. Использует те же данные, что и движок для генерации данных другим объектам по обработке нештатной (в терминах программы) ситуации(например касания ВПП).
Ну, наверное,много чего забыл. Но в-общем примерно так. Желательно обсудить/предложить/разнести в пух и прах и предложить свое.
С уважением
Miguel Gonsalez