Добавлено: Чт Мар 01, 2018 19:10
Заголовок сообщения:
Если игрок проиграет бой, то ИИ может, к примеру, объявить ему войну, воспользовавшись ситуацией. Если этот бой был на захват провинции, то ИИ может напасть на эту же провинцию, не объявляя войну и т.п. Исход боя важен.
У меня нет доступа к исходникам и я давно не играл, поэтому дальше будут мои предположения.
Каждый ход делится на три фазы.
1) Во время первой фазы игрок и компьютер отдают приказы своим юнитам, покупают и продают снаряжение, юниты. Сообщения с предложением войны или мира отправляются, но пока находятся в пути: придут они лишь на третью фазу. Принять решение о том, какое сообщение послать можно лишь по результатам предыдущего хода. То, что делает сейчас игрок - компьютерный противник не видит.
Во время первой фазы меняется количество денег и кристаллов у игрока, но на решения компьютера это не влияет.
2) Во время второй фазы мы применяем атакующие стратегические заклинания, которые наложил противник, обрабатываем случайные события, штурмуем сайты. Решения о том, какие сайты штурмовать - приняты на предыдущей фазе.
3) Во время третьей фазы мы доставляем сообщения, перерасчитываем доход провинций, изменение количества населения, выполняем другую рутинную работу.
Первую фазу можно распараллелить. Допустим, компьютер выбирает решение, какой сайт взять, просто штурмуя все сайты подряд, при этом запоминая результаты боя за каждый сайт. За один ход он может так взять, например, несколько десятков сайтов. Затем выбирает тот, в котором он выиграл, и ждёт второй фазы. Провинцию игрока он, кстати, может "взять" таким же образом. Результаты придётся пересчитать только в том случае, если игрок сменит охрану, либо поставит защитные сооружения, наложит на провинцию заклинания.
На второй фазе если игрок не напал на компьютер, то тот просто применяет вычисленные на первой фазе результаты оптимального боя.
А третья фаза проходит быстро.
Компьютер видит результаты предыдущего хода, и в этом находится в одинаковом положении с игроком.
могут быть технические трудности из-за "старости" технологий или ограничений конкретной реализации.
Согласен, что могут быть трудности. Я просто указал возможный путь решения.