Технические аспекты проекта UEF
Автор: creator
Источник: http://uef.me/content/...
Этапы реализации проекта виртуального мира и игры на его основе.
Во первых, проект планирую развивать поэтапно, от текстового прототипа до полноценной клиент-серверной MMORPG с 3D графикой.
- Проработка структуры баз данных, объектов игрового мира, определение состава объектов и взаимосвязи их между собой. Выполнено.
- Создание сайта для конструирования этих объектов (дизайн, моделирование). В процессе.
- Написание программ-модулей для взаимодействия объектов между собой. В процессе.
- Создание сайта для управления персонажами. В процессе.
- Написание клиент-серверных приложений для реализации полноценного 3D. В перспективе.
Во вторых, именно над отшлифовкой игрового процесса работал всё это время (с ноября 2007 года), чтоб максимально упростить техническую реализацию.
Вот основные элементы предусмотренные для этого:
- Концепция вложенности структуры мира: измерения, галактики, рукава галактик, секция рукава, сектор секции, звёздная система, эшелоны звезды, планеты и так далее вплоть до объектов в фазах эшелонов и на ячейках поверхности планет, будут взаимодействовать между собой, в основном, только в пределах смежных ячеек или фаз эшелона.
- Система фаз эшелонов, упрощающая расчёт местоположения объектов в звёздной системе и их взаимодействие (размер фазы эшелона привязывается к самому большому из возможных в игре транспортных средств).
- Деление поверхности планет, спутников и астероидов на ячейки поверхности (сопоставимыми по размерам с отдельным уникальным зданием или модулем комплекса).
- Недоступные персонажам игроков поселения в виде куполов, все коммуникации с ними осуществляются через внешние здания и комплексы.
- Универсальное окно диалога для общения персонажей компьютера и игрока, на основе принятых в виртуальном мире объектов и их свойств.
- Деление персонажей компьютера на Индивидов (персонаж игрока тоже приравнен к нему), Туристов и Эмигрантов (переселенцев), с разным набором возможных действий
- Общая база знаний для персонажей компьютера, с наложением индивидуальной маски в зависимости от его развития, а так же вариации сложности поведения в зависимости от социального статуса (богатства и известности).
- Децентрализованная система контролёров и обработчиков событий.
- Хранение в базе данных как параметров объектов, так и функций и алгоритмов их взаимодействия.
- Модульный дизайн искусственных объектов, с одновременной возможностью использовать уникальные здания и транспортные средства.
Приглашаю заинтересованных лиц в ускорении работ к диалогу. Считаю, что универсальность архитектуры проекта и максимально возможное приближение игрового мира к реальному, позволит использовать разрабатываемое программное обеспечение как для других игровых проектов, так и приложений для управления бизнеспроцессами, автоматизации разработки и производства во многих отраслях науки и техники.
Изюминка проекта, сделать компьютерных персонажей на много умнее чем обычно, в плоть до того что они не будут нуждаться в заранее прописанном сюжете, сами будут решать, чем они станут заниматься в следующую минуту. Игроки же в мире UEF полноправными хозяевами не будут, а станут на равных бороться за место под солнцем (вернее под множеством других звёзд)!
В тоже время игровой ИИ сделать немного проще, чем прототип интеллекта человека, здесь не требуется распознавание образов, лексический анализатор и прочие атрибуты связи с внешним миром, так как информация будет предоставляться алгоритмам игрового ИИ в максимально удобном для обработки виде.
Необходимо сделать на сайте некоторое количество страниц, которые будут интерфейсом конструкторов объектов, они будут непосредственно обращаться к базам данных, создавать новые и модифицировать существующие объекты. Помимо этого доработать сами базы данных, списки таблиц и полей, исходя из списка объектов, их свойств и взаимосвязей.
Как только этот механизм будет реализован можно будет писать программы обработчиков событий, которые также будут отвечать и за игровой ИИ компьютерных персонажей. А главное запускать в работу механику игрового мира и тестировать его через браузерную консоль проработкой, которой тоже занимаюсь по мере возможности.
В 2D будут сделаны тактические карты, где объекты станут отображаться символами, это будет не сайт поддержки, а основной инструмент управления имуществом, транспортными средствами и комплексами персонажа, управления объединениями, ведения контактов и чтения внутри игровых новостей. Эти инструменты позволят запустить и отладить виртуальный мир в тестовом режиме с минимальным количеством игроков (поначалу вообще без них), но они останутся и в дальнейшем, чтоб разгрузить 3D консоль от излишних элементов управления.
Масштабируемость архитектуры закладывается изначально. Принципиально не будет какого-либо программного ядра системы. Все процессы станут крутится вокруг баз данных, где будут храниться динамически изменяемые свойства объектов. Причём группы объектов могут выносится в отдельные базы, которые можно будет переносить на отдельный сервер (или даже кластер) вместе с сопутствующими обработчиками событий. В плоть до выделения особо нагруженных звёздных систем или высокоразвитых планет, а возможно и крупных (галактического масштаба) объединений, в отдельную базу данных вместе с программами управляющими событиями именно в данной группе объектов.
Считаю вполне разумным, для разных функций проекта, использовать разные языки программирования. Для основы архитектуры взять Erlang с его идеологией множества легковесных процессов. Для обработчиков событий Boo или C#. Думаю сделать акцент на функциональные приёмы программирования. Для клиента использовать движок Unity 3D, в нём те же Boo и C# используются. В качестве СУБД мне интересна GT.M., прежде всего в связи с возможностью использовать глобалы для организации данных. Впрочем конкретные решения, по использованию тех или иных инструментов проектирования будут приниматься в зависимости от возможностей разработчиков.