Технология коллективного моделирования агентов

Цель

Создать программную технологию позволяющую отлаживать, испытывать, обучать и исследовать ИИ агентов в сложном виртуальном мире. Технология должна позволять создавать виртуальный мир ( в дальнейшем - мир) и поведение автономных объектов в нем без программирования.Технология должна позволять коллективно моделировать поведение множества ИИ агентов в одном мире, при этом программа ИИ агента должна работать на ЭВМ клиента и обмениваться необходимой информацией по сети Интернет с ЭВМ моделирующей мир. На ЭВМ клиента должна быть возможность наблюдать процесс моделирования поведения ИИ агента в мире.

Термины

ИИ агент - программа с элементами искусственного интеллекта моделирующая мозг некоего виртуального существа.

Мир (виртуальный мир) - совокупность объектов и их свойств моделируемая на ЭВМ в которой существует ИИ агент в теле виртуального существа.

Активный объект - объект имеющий поведение или свойства отличные от свойств обеспечиваемых физическим движком мира, например: «хищник» догоняющий по кратчайшему пути жертву, «пища убегающая по случайно меняющейся траектории.

Анализ игровых движков и конструкторов

Проводился анализ игровых движков и конструкторов с целью выяснения их пригодности для технологии коллективного моделирования агентов (ТКМА) в двух или трех мерном мире.

Под миром понимается модель среды в которой «живет» агент. Окончательно были сформулированы следующие требования к программному обеспечению ТКМА :

1) наличие поддержки продукта;

2) распространенность;

3) наличие реально работающего программного обеспечения (ПО);

4) наличие документации (хотя бы частично) на русском языке;

5) свободность и бесплатность применения ( как минимальное требование – бесплатность применения в исследовательских и учебных целях);

6) легкость в использовании и освоении («легкость входа»);

7) пригодность для научно- промышленных применений ;

8) отсутствие привязки к конкретному языку программирования для агентов/ботов;

9) возможность коллективного моделирования с использованием сети Интернет, при этом программа агента должна исполняться на ЭВМ пользователя и на ЭВМ пользователя должны быть доступны результаты коллективного моделирования агентов различными пользователями;

10) возможность отладки пользователем своего агента на локальной ЭВМ в локальном мире, без использования сети;

11) легкость построения нового мира пользователем;

12) наличие физического движка в программе моделирования мира. Было рассмотрено 144 игровых движка и конструктора , краткая информация о которых расположена на сайте http://gcup.ru

После исключения не поддерживаемого в настоящее время ПО, ПО с крайне ограниченным функционалом ( например пригодного только для создания аркад), ПО не имеющего режима мультиплеер , необходимого для организации коллективного моделирования, а также ПО не имеющего бесплатных версий осталось около 20 игровых движков и конструкторов.

Следует отметить, что профессиональное ПО для разработки игр имеет весьма высокую стоимость: начиная от нескольких тысяч долларов на одно рабочее место с ограниченной поддержкой и без предоставления исходных кодов ПО и до многих cотен тысяч долларов для корпоративных лицензий с неограниченной поддержкой и предоставлением исходного кода игрового движка. Учитывая необходимость обеспечения п.11) из рассмотрения были исключены большинство игровых движков, т.к. игровой движок обычно не предоставляет возможностей создания мира (редактор сцен часто отсутствует).

В результате в дальнейшем анализ проводился для следующего ПО

с 2-D миром

Constractor (http://www.scirra.com http://scirraconstruct.ru )

Game Maker (www.yoyogames.com/make )

Eclipse(http://www.freemmorpgmaker.com/index.php )

с 3-D миром

Awakening (http://www.awingsoft.com/)

Unity (http://unity3d.com/ )

Blender (http://www.blender.org/ )

Попытка рассмотрения игрового движка Unreal Engine не удалась, на моем компьютере программы пакета выдавали неустранимую ошибку. Кроме того, бесплатная версия данного движка требует 3 Гб свободного места на диске, 2Гб ОЗУ, что мне показалось чрезмерным для поставленных задач.

Среди ПО для разработки 2-D игр было отобрано два конструктора игр, их анализ приведен в таблице:

Constractor 0.99	Game Maker 8
наличие поддержки продукта	+	+
распространенность	Слабо распространен	Весьма популярен
наличие реально работающего программного обеспечения (ПО)	+	+
наличие документации (хотя бы частично) на русском языке	+	+ (наличие не только форумов, уроков, но и справки на русском языке
свободность и бесплатность применения ( как минимальное требование – бесплатность применения в исследовательских и учебных целях)	+ (свободное ПО с открытым кодом)	+ (но для создания 3-х мерных игр и сетевых игр необходимо приобрести лицензию, стоимостью 25$ USA)
легкость в использовании и освоении («легкость входа»)	+	+ ( производит впечатление несколько менее сложного , чем Constractor)
пригодность для научно-промышленных применений	+/-(для промышленных применений мало пригодно вследствие слабой поддержки 3-D)	+/-(для промышленных применений мало пригодно вследствие слабой поддержки 3-D)
отсутствие привязки к конкретному языку программирования для агентов	Допустимо использование языка Python, за счет чего можно реализовать интерфейс мира с любой программой агента	Встроенный язык (только в профессиональной , коммерческой версии) похожий на С
возможность коллективного моделирования с использованием сети Интернет, при этом программа агента должна исполняться на ЭВМ пользователя и на ЭВМ пользователя должны быть доступны результаты коллективного моделирования агентов различными пользователями	Есть специальная библиотека, обеспечивающая сетевую игру	Есть специальная библиотека, обеспечивающая сетевую игру
возможность отладки пользователем своего агента на локальной ЭВМ в локальном мире, без использования сети	+
легкость построения нового мира пользователем	+	+ ( производит впечатление несколько менее сложного , чем Constractor)
наличие физического движка в программе моделирования мира.	+	+
Дополнительно	Ограниченные возможности создания 3-D игр	Ограниченные возможности создания 3-D игр

Выбрать фаворита среди данного ПО не представилось возможным, т.к. конструкторы довольно равноценны и лучшие показатели в одной области компенсируются более средними показателями в другой.

Среди ПО для разработки 3-D игр было отобрано два конструктора игр/игровых движка, их анализ приведен в таблице:

Unity 3.0	Blender 2.49
наличие поддержки продукта	+	+
распространенность	+	+
наличие реально работающего программного обеспечения (ПО)	+	+
наличие документации (хотя бы частично) на русском языке	+ (меньше чем по Blender)	+
свободность и бесплатность применения ( как минимальное требование – бесплатность применения в исследовательских и учебных целях)	+ ( коммерческое ПО, недавно появилась бесплатная , урезанная , но все равно очень мощная версия)	+ (свободное, бесплатное ПО)
легкость в использовании и освоении («легкость входа»)	+	+ ( сравнительно хуже чем у Unity )
пригодность для научно- промышленных применений	+	+
отсутствие привязки к конкретному языку программирования для агентов	+	+ (допустимо использование языка Python, за счет чего можно реализовать интерфейс мира с любой программой агента)
возможность коллективного моделирования с использованием сети Интернет, при этом программа агента должна исполняться на ЭВМ пользователя и на ЭВМ пользователя должны быть доступны результаты коллективного моделирования агентов различными пользователями	+	+ (наличие сетевых возможностей декларируется, но их реальные возможности под сомнением)
возможность отладки пользователем своего агента на локальной ЭВМ в локальном мире, без использования сети	+	+
легкость построения нового мира пользователем	+	+
наличие физического движка в программе моделирования мира	+	+

Правильнее сказать, что Blender – это 3-D редактор с возможностями игрового движка, а Unity – скорее игровой движок со встроенным редактором/построителем сцен. К недостаткам Blender относительно Unity я бы отнес: более сложный интерфейс, медлительность игрового движка, к достоинствам: больший объем русскоязычной документации, большие возможности программы как трехмерного графического редактора, возможность «оживления» объектов без программирования вообще, что ценно для построения простых ботов создающих сложный мир для ИИ агентов. К достоинствам Unity я бы отнес: высокий уровень игрового движка, высокий уровень физического движка, простоту освоения, возможность программирования непосредственно из Unity на JavaScript, C#, Python, к недостаткам: отсутствие полных возможностей трехмерного редактора ( что для данного применения не слишком критично), необходимость применения скриптов для задания действий любым объектам, что повышает уровень «входа» для пользователей.

Данный анализ, безусловно, носит субъективный характер, т.к. автор не является экспертом в области разработки игр.