Добавлено: Чт Мар 01, 2018 12:10
Заголовок сообщения:
Если ИИ научится играть хорошо, то, действительно, возникнет проблема с балансом. Сейчас уровни сложности регулируются тем, что ИИ быстрее прокачивается. В новом ИИ это может дать компьютеру слишком большое преимущество.
У меня есть идея, как переделать уровни сложности так, чтобы даже с умным ИИ, компьютер находился в примерно равных условиях с игроком. Суть вот в чём:
1. Сначала мы в скрипте прописываем для каждого уровня сложности последовательность получения зданий и юнитов. Например: кузница - на втором ходу, мечник - на третьем, и так далее. Чем выше уровень сложности, тем быстрее компьютер должен всё это получать. Последовательности могут ветвиться: например, на определенном этапе компьютер может пойти в сторону колдунов или в сторону конницы, и так далее. Выбор ветвей либо случаен, либо можно поставить какие-то условия.
2. На основе скрипта рассчитываем, сколько золота и кристаллов нам понадобится для строительства зданий и покупки юнитов, снаряжения, ремонта. Составляем таблицу по ходам: на этом ходу, допустим, нам нужно получить столько золота и кристаллов. Записываем стоимость содержания войска на каждом ходу (с учётом возможных медалей).
3. При генерации осколка мы генерируем его не случайно. В окрестностях базы компьютера мы нарочно размещаем такие сайты, взятие которых даст ИИ ровно столько золота и кристаллов, сколько ему нужно для развития. Например, мы вычислили на основе скрипта, что на 4 ходу компьютеру нужно будет получить 100 золота и 50 кристаллов, знаем, какая у него к этому моменту армия (мы заранее прописали её в скрипте), и генерируем именно такой сайт, который комп может взять, и получить столько золота. Провинции в окрестностях его базы тоже генерируются так, чтобы давать ему нужный доход.
4. Сайты генерируются с учётом разных ветвей развития. То есть, должны быть сайты, которые дадут золото, если комп вдруг выберет ветвь, где нужно золото, и сайты, которые дают кристаллы, если комп выберет другую ветвь.
Такая система меняет стратегический ИИ. Раньше он решал задачу: "В моих окрестностях - такие сайты, такие провинции. Какое же здание мне построить, какого юнита купить?", а теперь будет решать обратную: "В скрипте у меня записано, что сейчас я должен добыть золото, чтобы на следующем ходу купить конницу. А для этого сгенерирован этот сайт, который я по плану должен взять".
При новой системе уровней сложности, ИИ не будет получать бонусов к скорости прокачки. Он будет лучше играть за счёт подтасовки начальных условий.
Эта система решает проблему, когда компьютер на ранних ходах прибегает с армией 30 уровня. Также эта система решает проблему невыхода ИИ в юниты Т3, Т4: теперь эти юниты будут прописаны в скрипте, который ИИ будет выполнять.
---------
Скрипт может выглядеть, условно говоря, так:
D1: // На уровне сложности 1
if worldtype = swamp: //если осколок - болотистый
goto magic1 // переходим к ветви развития magic1
end
[magic1] // название ветви
build 1 // строим здание 1
unit 4 // покупаем юнит 4
site // берём сайт, чтобы получить ресурсы
wait // на этом ходу ничего не делаем
unit 5 or 6 // покупаем юнит 5 или 6
site
unit 5[2] // покупаем 2 юнита типа 5
goto magic2[70] or war1[10] // случайный переход к следующей ветви. В скобках - вероятность перехода.
// с вероятностью 20% мы остались в этой ветви
site
build 2
[magic2] // следующая ветвь
...
Это - только набросок языка. Например, возможно будет удобнее писать не "купить юнит на этом ходу", а "на этом ходу должен быть такой состав армии"
army 2[7], 3, 4[2] or 5[2] // армия должна содержать: 7 юнитов типа 2, один юнит типа 3, 2 юнита типа 4 или 2 юнита типа 5
Последний раз редактировалось: rankor (Чт Мар 01, 2018 12:55), всего редактировалось 2 раз(а)