Алгоритм поиска работы в играх типа Settlers. Также постейший AI
Автор: Daddy
WEB-сайт: http://daddy.mirgames.ru
B примере будет описан алгоритм, в основном не подкрепленный програмным кодом.
Итак изночально определяются с классом персонажа который ищет работу, и создают для него список возможных работ. Например:
Для Строителя - builder : Tlist;
Для Серфа (который все таскает) - serf : Tlist;
И т.д.
Теперь представим что вы заказали строить здание, при заказе автоматически в serf добавляются строки с заданием следующего рода:
Принести Цемент, на координаты X Y.
Каждый рабочий(серф) проверяет этот serf на наличие строк, и если строк больше ноля то рабочий если не занят берет работу с верхней строчки, причем из serf он эту строку удаляет(чтобы другие не делали то что делает он). Но если рабочий не выполнив работу и например погиб, то его недоделаное действие опять попадает в serf лист.
Таким образом круг замкнулся. Допустим к месту принесли несколько мешков цемента и теперь надо бы строить, тогда в builder лист добавляется строка типа:
Строить, по координатам X Y.
Она НЕ удаляется(только в Сэттлерах которые младше третьей части удаляется) из списка до тех пор пока здание не будет построено. Таким образом все не занятые строители пойдут отстраивать здание.
|