Длинный текст!
Предыстория:
Пару дней назад довелось поиграть в TORCS, ну так как игры уже не привлекают аркадностью (наигрался уже как-то), в глаза бросились две вещи:
Абсолютно убогий ИИ оппонентов. Авто практически не объезжают препятствия, используют тормоз в самый последний момент, когда столкновение уже неизбежно, не умеют плавно открывать дроссельную заслонку при старте (что приводит к срыву ведущих колёс и переходу в неуправляемый занос)
Неплохая физика, которая не позволяет скрывать недостатки ИИ (всё выглядит достаточно реалистично)
Так же не так давно смотрел испытания на полигоне в США реальных авто с ИИ. Там был смоделирован небольшой город, со светофорами, парковками, бездорожьем, пробками (которые естественным образом создавались благодаря тупости ИИ), закрытыми проездами и т.д.
ИИ вёл себя так же убого. Более-менее адекватное поведение было у пары-тройки команд (а всего было представлено где-то полсотни автомобилей). Задачей авто было без ДТП и нарушений правил добраться до всех точек на полигоне (без вмешательства человека). Смотрелось до бескрайности убого. Команды готовились к соревнованиям 3 года(!) прям там же на полигоне(!).
Самое большое отличие в первом и втором случае на мой взгляд состоит в том, что в игре ИИ имеет доступ к информацию о размерах, координатах, осевых поворотах всех объектов, линейных и угловых скоростях, а в случае с полигоном в США ИИ получает информацию с GPS модуля, 4-5 видеокамер, Distance Sensor`ов, штатных датчиков авто и всё.
Появилась мысль: не плохо было бы совместить эти две идеи разработки ИИ.
Сделать модель, основывающуюся на реалистичной физике, реалистичных моделях пространства, моделей поведения автомобилей + приделать к этому всему интерфейс, с помощью которого можно бы было присоединять ИИ, написанный на чём угодно и возможно даже обрабатываемого на другой ЭВМ, т.е. речь о сетевом протоколе.
Открытых физических моделей в сети удалось найти очень немало (думаю есть 3D и на C++).
Относительно задач прикладного протокола тоже есть некоторые соображения:
он должен позволять ИИ и реальным людям авторизоваться (+закрепиться за виртуальным авто, получать точки задания)
он должен передавать ИИ значения с виртуальных датчиков (но никаких данных о конкретных моделях)
он должен позволять ИИ передавать примитивные команды для модели (%тормозного усилия, угол открытия дроссельной заслонки, запуск двигателя и т.п.)
Т.е. интерфейс виртуальной модели для ИИ будет достаточно близок к интерфейсу, предоставляемому ИИ реальной моделью на полигоне.
А модель должна с достаточной реалистичностью (в зависимости от ряда условий) генерировать значения на виртуальных датчиках (а возможно даже с помощью рендера отображать происходящее для создателей ИИ). Поддерживать присутствие нескольких подключений от нескольких ИИ (или реальных пользователей) (т.е. их одновременное присутствие на виртуальной карте).
Теперь хотелось бы узнать ваши мысли относительно этой идеи. Возможно ли её реализовать совместными усилиями?
Если да, то думаю создавать ИИ под неё было бы очень увлекательным процессом.