Нужны предложения для прикладного проекта AI - PullRequest
1 голос
/ 20 августа 2010

У меня есть курс в моем текущем семестре, в котором я должен сделать проект по применению ИИ.Я решил сделать это на AI игры.У меня есть две основные идеи: внедрить бота (ов) FPS или реализовать AI для футбола.

Сейчас я тихий новичок в AI, я реализовал базовые алгоритмы поиска пути (A * и т. Д.) И изучил конечные автоматы, некоторую логику первого порядка, базовые элементы нейронной сети (обратное распространение).ALgo), и сейчас я прохожу курс по генетическим алгоритмам.

Наше основное внимание сейчас сосредоточено на боте.Наши планы включают:

  • Каждый «бот» будет реализован с использованием конечного автомата (FSM), который будет содержать возможные состояния, которые бот может иметь;& правила для изменений действия / состояния, которые будут иметь место, когда он получит входные данные.
  • В движении группы ботов каждый бот решал, наносить ли удары, как наносить удары;на основе дальности, количества ботов, существующих боев с использованием нейронных сетей.
  • Используя генетические алгоритмы, можно было ожидать следующего хода противника на основе повторяющихся ходов.

Несмотря на то, что я до сих пор программировал несколько 2d игр в свободное время (например, pacman, tetris и т. Д.), Я никогда не заходил в 3d область.Скорее всего, мы будем использовать 3d-движок.

Мы хотим сосредоточить большую часть нашей энергии на части ИИ.Мы бы хотели, чтобы нас не беспокоили ненужные подробности об анимации / 3d-моделях и т. Д. Например, если бы мы могли найти фреймворк с такими функциями, как Moveright (), который просто перемещает бота вправо, это было бы действительно здорово.

Мой основной вопрос: слишком ли амбициозно идти по плану, как мы планировали, учитывая, что продолжительность проекта около 3 месяцев?Должны ли мы пойти в 3d и использовать движок 3D-игры?Легко ли использовать такие двигатели, если у вас до этого не было опыта?Если да, то какой тип двигателя подойдет для нашего проекта?

Я натолкнулся на другую идею, приведенную в книге «Программирование AI Game на примере», где у игрока будет вид сверху на ботов.Будет ли этот способ более подходящим?

Спасибо .. извините за длину вопроса .. просто моя проблема слишком конкретна.

Ответы [ 2 ]

2 голосов
/ 21 августа 2010

Мой основной вопрос: слишком ли амбициозно идти по плану, как мы планировали, учитывая, что продолжительность проекта примерно 3 месяца?

Да, ноэто не обязательно плохо:)

Должны ли мы пойти в 3d и использовать движок для 3D-игр?

Нет.Главным образом потому, что вы сказали:

Мы хотим сосредоточить большую часть нашей энергии на части ИИ.

Вот что я буду делать, основываясь на моем опыте (и знаниичто, будучи студентом, я часто откусывал гораздо больше, чем мог бы жевать):

Создайте функцию симуляции независимо от графического компонента.Пусть он опубликует «обновления» для другого слоя, который состоит из векторов игрока и мяча.Таким образом вы будете отделять свои задачи ИИ от всего остального, что означает, что у вас будет меньше проблем, о которых нужно беспокоиться, и вы также можете упростить модульное тестирование базового моделирования.

Примите эти "обновления" исоздайте свой первый слой "визуализации" - сделайте его максимально простым 2D представлением.Это может быть просто поток текстовых строк: «Игрок 1 имеет мяч / Игрок 1 отбивает мяч со скоростью (30,40) со скоростью 20 км / ч».Это будет достаточно сложно для вашего первого прохода, так как вы поймете, как брать данные, опубликованные симуляцией, и что-то делать с ними.

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

Что касается ваших вопросов о том, какой путь выбрать - FSM, NN, GA, дизайн сверху вниз - вы должны оценить свой интерес к ним изнаиболее по меньшей мере (вместе с остальной частью вашей группы), а затем заняться ими в указанном порядке.Вы можете рассмотреть возможность создания одного стиля для одной команды и другого дизайна для другой команды.Возможно, вы захотите заставить свою команду FSM играть против команды FSM, для которой была сделана дополнительная настройка, чтобы сравнивать и сравнивать, если вы считаете, что ваши изменения действительно приносят пользу (вы можете быть удивлены и узнаете, что они делают команду хуже).На самом деле, именно здесь модульное тестирование и отделение симуляции от визуализации оказывается очень и очень удобным - вы должны иметь возможность «симулировать» столько игр, сколько вам нужно, чтобы получить экспериментальные результаты, не беспокоясь о графике.Вы можете даже делать это партиями в одночасье со сценариями.

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

1 голос
/ 21 августа 2010

Вы могли бы взглянуть на guntactyx , это то, что мне пришлось использовать, когда я делал свой AI-модуль в универе.

Он заботится обо всем дисплее, физике, звуке и т. Д.... для вас все, что вам нужно сделать, это запрограммировать свою команду ботов.API включает в себя функции, позволяющие роботу двигаться влево или вправо, стрелять, слышать звуки (например, выстрелы из пистолета) и т. Д., А также несколько образцов ботов, поэтому вы не начинаете с нуля.

Также, довольно забавно наблюдать, как твои боты сражаются с ботами твоих друзей:)

...