Проект был изначально задуман как полигон для проверки и реализации разных подходов к созданию искусственного интеллекта (ИИ).
Есть некоторая концепция построения архитектуры проекта, которую я стремлюсь реализовать. Все эти пункты не привязаны к конкретным технологиям программирования. У меня не стоит задача добиться результата любой ценой, а подобрать наиболее удобные инструменты для реализации.
- В распределённой базе данных хранятся не только данные: константы, статичные и
динамические данные, отражающие текущее состояние зарегистрированных в
системе объектов, стандартные определения сущностей виртуального мира, но и как простые функции, алгоритмы, так и часто используемые составленные из них программы. Объекты виртуального мира имеют наборы постоянных и изменяемых
свойств, возможность применения функции (алгоритма) к объекту (или сущности) зависит
от комбинации этих свойств и диапазона их состояний.
- Децентрализованная система менеджеров обработки событий, запускающая экземпляры обработчиков событий в соответствии с потребностью системы (возникновение новых событий) прекращающая их деятельность при простое либо зависании (бесконечной рекурсии), а также осуществляющая сравнение версий обработчиков событий на устойчивость и эффективность работы. Основная задача менеджеров, распознать возникновение нового события и запустить подходящий обработчик.
- Обработчики событий не содержат в себе сложных функций и алгоритмов, а поэтому имеют небольшой объём кода, обработка события происходит за счёт выборки функций из баз данных (вместе с данными о состоянии взаимодействующих объектов) и комбинирования их между собой в зависимости от решаемой задачи. Применённые комбинации функций и использованные данные кэшируются в оперативной памяти для ускорения доступа к постоянно используемым данным и функциям. Некоторые, наиболее удачные, комбинации сохраняются в базе данных, как результат самообучения системы.
- Система не будет содержать больших программ. Каждая программа (менеджер системы, обработчик события) легко модифицируется. Любая функция может меняться на лету, может иметь варианты (версии) по быстродействию и точности. Данные доступны для любого обработчика событий, что позволяет менять логику работы элементов системы на ходу. Добавил новый алгоритм (функцию) и определённое событие может обрабатывается по новому алгоритму. Каждое событие обрабатывается своим экземпляром обработчика, взаимодействие обработчиков между собой возможно только через данные в базах (либо в кэше этих данных).
- Для повышения быстродействия системы прилагаются максимальные усилия для оптимизации кода на выполнение параллельных вычислений. Основная вычислительная мощь направляется на ускорение вывода и ввода данных в СУБД. Предполагается использование иерархических СУБД. Для повышения быстродействия и устойчивости системы, виртуальный мир делится на логически обособленные группы объектов (звёздные системы, крупные объединения индивидов, возможно даже отдельные высокоразвитые планеты) которые обслуживаются своим комплектом менеджеров системы и СУБД.
- Каждое действие над объектами документируется средствами СУБД, что позволяет на основе журналов обращений к базе и модификации значений просматривать историю. Создание новых объектов жёстко контролируется (любой объект создаётся только при наличии необходимых условий, обусловленных законами виртуального мира). При физическом уничтожении экземпляра объекта, записи о нём не уничтожаются, а просто записывается, что объект был уничтожен когда и по какой причине. Параллельно формируются либо отходы либо другие объекты в которые может переродится данный объект и энергия, обеспечивая постоянство энергия -- материя в виртуальном мире. Энергетический эквивалент является основой экономики игры.
- Обработчики событий используют логику основанную на четырёх состояниях, это как бы некий минимум нечёткой логики: неизвестно, среднее, положительно, отрицательно (вдобавок к этим четырём значениям, будут два коэффициента используемых в расширенных алгоритмах и реализуемых "обычными" числами: коэффициент достоверности знания и степень приближенности значения) для реализации элементов игрового ИИ. В перспективе возможно создание и использование аппаратных ускорителей ИИ на основе квадрологики.
- Игровой ИИ компьютерных персонажей, а также систем управления различными искусственными объектами виртуального мира, строится по трёхуровневой основе: действия, занятия и цели жизнедеятельности, за каждый из уровней отвечает свой комплект обработчиков событий, основанный на разных алгоритмах. Причём формирование целей жизнедеятельности для отдельных (продвинутых) индивидов, на основе комплекса их характерных черт и накопленного опыта, обеспечивает автогенерацию сюжета игры. Другие компьютерные персонажи, автономные роботы и системы управления транспортными средствами будут заниматься тем, чем прикажут их основная цель жизнедеятельности будет подчинением.