[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Модератор форума: Jery, Rey  
Форум » Knights and Merchants: Remake » Идеи и предложения » КАМ ИИ (Предложения...)
КАМ ИИ
KromДата: Суббота, 24.03.2012, 22:11 | Сообщение # 16
Воитель
Группа: Супер Модераторы
Сообщений: 2526
Награды: 25
Репутация: 153
Статус: Offline
Поискал я статьи по ИИ, посмотрел другие открытые проекты ... и что-то с нормальным ИИ все очень сложно получается. Вроде на простых примерах легко, а как начинаешь их на КаМ интерполировать - абзац. Слишком много компонентов и слишком мала желания писать и обучать генетический алгоритм.

Так что решил пока накидать простой скрипт, что в каком порядке строим.


Нашли баг в КаМ Ремейке? Отправьте отчет на с пометками, желательно на английском, в какой версии, что и когда случилось, приложите реплей или сохраненную игру в которой этот баг воспроизводится.
 
DIVДата: Воскресенье, 25.03.2012, 00:46 | Сообщение # 17
Гвардеец
Группа: Друзья
Сообщений: 1227
Награды: 12
Репутация: 59
Статус: Offline
Может тогда со временем сделать кучу скриптов на все случаи жизни? И с каждым новым релизом добавлять новых и допиливать старые. А там будет видно.

div@kamclub.ru
 
KromДата: Воскресенье, 25.03.2012, 17:01 | Сообщение # 18
Воитель
Группа: Супер Модераторы
Сообщений: 2526
Награды: 25
Репутация: 153
Статус: Offline
Пока мучаю первый скрипт и планировщик города )))

Есть заметные огрехи в виде несоединенных дорог и пока еще не брался за планировку полей и виноградников.
Прикрепления: 4517015.jpg(294.6 Kb)


Нашли баг в КаМ Ремейке? Отправьте отчет на с пометками, желательно на английском, в какой версии, что и когда случилось, приложите реплей или сохраненную игру в которой этот баг воспроизводится.
 
AntonPДата: Воскресенье, 25.03.2012, 17:28 | Сообщение # 19
Дозорный
Группа: Проверенные
Сообщений: 339
Награды: 1
Репутация: 7
Статус: Offline
Красава! Ура!)
Вот по поводу схем, у меня сразу на ум прилетает Warcraft 3, там есть редактор ИИ. Но суть в чем, он строит здания не тупо по схеме, а взависимости от условий, допустим, если колличество гражданских у ИИ выше 60, строим четвертую ферму, если враг построил оружейню, а у нас нету, то строим оружейню, и т.д. Тоесть в каждой конкретной ситуации ИИ будет подстраиваться под данную ситуацию, под вражеских игроков и т.д.


Война и мир лучшая!

Сообщение отредактировал AntonP - Воскресенье, 25.03.2012, 17:28
 
KromДата: Воскресенье, 25.03.2012, 17:43 | Сообщение # 20
Воитель
Группа: Супер Модераторы
Сообщений: 2526
Награды: 25
Репутация: 153
Статус: Offline
Вот примерно так и попробуем пока сделать. Надо написать свод таких правил. Пока все просто - строим все здания по 1-2, в заданном порядке...

И еще желательно в этот свод ввести правила типа если АИ строитель то строить больше, если Рашер, то иначе, если Трус то строить башен в 2 раза больше и т.п. Возьмешься попробовать для первых 7 зданий?


Нашли баг в КаМ Ремейке? Отправьте отчет на с пометками, желательно на английском, в какой версии, что и когда случилось, приложите реплей или сохраненную игру в которой этот баг воспроизводится.
 
BurДата: Понедельник, 26.03.2012, 00:00 | Сообщение # 21
Отец основатель
Группа: Супер Модераторы
Сообщений: 1535
Награды: 18
Репутация: 107
Статус: Offline
Надо проработать еще вариант, чтобы АИ помогали друг другу. Например общая оборона ключевых позиций. Или при атаке игрока, часть войск АИ2 шло на подмогу АИ1. Ну и общая атака...
 
AntonPДата: Понедельник, 26.03.2012, 11:14 | Сообщение # 22
Дозорный
Группа: Проверенные
Сообщений: 339
Награды: 1
Репутация: 7
Статус: Offline
Рашер:Быстрый, обезбашенный, любит жесткую игру. Своего рода падальщик нападает на самых уязвимых и мало-защищенных врагов. Если ты остался без войска, берегись, рашер уже идет за тобой.
Особенности:
1)Любит строить ополчение и конницу, может быстро собрать себе войско.
2)Нападает минимум 40 боевых едениц.
3) Любит быстрые вылазки на игроков у которых небольшое войско, или которые потеряли войска в результате "стычек".

Строитель: мне представляется мудрый, обдумывающий свои решения ИИ, не станет нападать если сила войска противника
превышает силу его воинов. Хороший дипломат, может кооперироваться с другими ИИ для совместной атаки, любит большую
развитую базу.
Особенности:
1) Нападает минимум 60 боевых едениц.
2) Может кооперироваться с другими строителями или рашерами для совместной атаки.
3) Любит сильное войско ближнего боя, "берет" не числом а качеством.

Трус: не нападает вовсе, играет в оборону, но тоже очень ценный союзник для любого игрока. Если другие союзные игроки
неудачно напали и лишились своего войска, трус всегда их прикроет, до тех пор пока они не восстановят силы для новой атаки.
Особенности:
1)Не нападает, играет в оборону
2)Любит войска дальнего боя.
3)Любит большую, хорошо укрепленную базу

Такчто эти ИИ образуют очень сильное Трио=)

Правила:
1) Склад, после каждых 7 построенных зданий нужно строить Склад.
2) Школа, После постройки казармы, строим 1-2 Школы.
2) Харчевня, после каждых 10 построенных зданий, нужно строить харчевню.
3) Каменаломня, если колличество камней <50, если колличество зданий "Каменаломня"<3, достраиваем еще несколько
таких зданий, чтобы в сумме их было 3.
4)Хижина лесоруба, если ИИ "Рашер", строим несколько "Хижин Лесоруба", чтобы их в сумме было 6. Если ИИ не "Рашер" и если досок<50, строим несколько "Хижин лесоруба", чтобы их в сумме было 4.
5)Лесопилка, на каждые 3 Хижины Лесоруба строим 1 Лесопилку.
6)Ферма, На каждые 15 людей (Воины не в счет), строим по 1 "Ферме". На каждые 2 "Свинарника" строим 1 "Ферму". На каждые 2 "Мельницы" строим 1 ферму.
7)На каждые 2 "Фермы" строим 1 "Мельницу".
Ну примерно так, дополняйте:)


Война и мир лучшая!

Сообщение отредактировал AntonP - Понедельник, 26.03.2012, 11:17
 
KromДата: Понедельник, 26.03.2012, 12:59 | Сообщение # 23
Воитель
Группа: Супер Модераторы
Сообщений: 2526
Награды: 25
Репутация: 153
Статус: Offline
AntonP, Мне нравятся выбранные стили, за исключением того что Строитель и Трус получаются сильно похожими - оба делают ставку на развитие. Может быть стоит их больше дистанцировать.

Союзные действия это далекое будущее, на данный момент хорошо если мы сможем сделать ИИ индивидуалистов.

По части правил есть такие соображения:
1. Склад слишком часто получается, нигде не видул 10 складов на большой город. Скорее после 16-18 зданий 1 скад.
2. в зависимости от ИИ. Рашер строит +2/+3.
3. харчевню на каждых 40 горожан (все кроме войск и половины рекрутов в казарме например)
6. вот тут поподробнее надо бы. я бы считал от количества горожан и планируемых войск (Пекарню+Мясника+Винодельню+Кожевню+Оружейни), а далее для них необходимое количество ферм/свиноферм/мельниц подгонять


Нашли баг в КаМ Ремейке? Отправьте отчет на с пометками, желательно на английском, в какой версии, что и когда случилось, приложите реплей или сохраненную игру в которой этот баг воспроизводится.
 
AntonPДата: Понедельник, 26.03.2012, 13:21 | Сообщение # 24
Дозорный
Группа: Проверенные
Сообщений: 339
Награды: 1
Репутация: 7
Статус: Offline
Quote (Krom)
Строитель и Трус получаются сильно похожими - оба делают ставку на развитие.

Да делают, но для разных целей. Строитель для качественной атаки, Трус для качественной обороны и поддержки союзников.

Quote (Krom)
Может быть стоит их больше дистанцировать.

Думаю они и так дистанционированы, ну конечно вам решать.

Quote (Krom)
1. Склад слишком часто получается, нигде не видул 10 складов на большой город. Скорее после 16-18 зданий 1 скад.

Quote (Krom)
2. в зависимости от ИИ. Рашер строит +2/+3.

Quote (Krom)
3. харчевню на каждых 40 горожан (все кроме войск и половины рекрутов в казарме например)

Согласен

Quote (Krom)
6. вот тут поподробнее надо бы. я бы считал от количества горожан и планируемых войск (Пекарню+Мясника+Винодельню+Кожевню+Оружейни), а далее для них необходимое количество ферм/свиноферм/мельниц подгонять

Ну по идее, допустим у ИИ будет 3 свинарника, 2 Мельницы, 2 пикарни (Лично мне этого хватает), Тогда ферм будет примерно 5-6. Можно конечно на практике подстроить.


Война и мир лучшая!
 
NuutburzДата: Понедельник, 26.03.2012, 13:38 | Сообщение # 25
Пикейщик
Группа: Проверенные
Сообщений: 390
Награды: 4
Репутация: 12
Статус: Offline
По поводу ферм есть такое соображение:
1 мельница = 1 ферма (из-за быстрого производства муки этого вполне достаточно).
1 свинарник = 2 фермы.
1 конюшня = 2 фермы.
И по поводу рыбы, если есть водоем, то должен ли строить хижину рыбака?
Как дела будут обстоять с рынком? Кроме того надо подумать о распределении товаров. Будет ли оно фиксированным, либо меняться в ходе игры у каждого типа ИИ?


Стреляй по цели!

Сообщение отредактировал Nuutburz - Понедельник, 26.03.2012, 17:32
 
KromДата: Понедельник, 26.03.2012, 13:54 | Сообщение # 26
Воитель
Группа: Супер Модераторы
Сообщений: 2526
Награды: 25
Репутация: 153
Статус: Offline
Nuutburz, Рынка у ИИ пока не будет. Давайте для начала сделаем простой город и пару разных ИИ, чтобы оценить его жизнеспособность. С остальным согласен.

Для ИИ важно не только эффективность, но и достоверность. Поэтому, сколько бы не было камня или рыбы, но если есть каменные горы и водоем, то 1 каменоломня и 1 рабацкая точно будет, и то же с остальными зданиями.

Распределение товаров будет зависеть от типа ИИ, Строитель сделает больше конюшен и больше зерна направит в них.

AntonP, У меня к тебе просьба - сделать документик на ГуглДокс (умеешь?) в котором будет хранится актуальное состояние описания типов ИИ, веток развития и т.п. А то в форуме это просто пропадет.


Нашли баг в КаМ Ремейке? Отправьте отчет на с пометками, желательно на английском, в какой версии, что и когда случилось, приложите реплей или сохраненную игру в которой этот баг воспроизводится.
 
AntonPДата: Понедельник, 26.03.2012, 15:11 | Сообщение # 27
Дозорный
Группа: Проверенные
Сообщений: 339
Награды: 1
Репутация: 7
Статус: Offline
Quote (Krom)
сделать документик на ГуглДокс (умеешь?)

Не умею:)
Quote (Krom)
актуальное состояние описания типов ИИ, веток развития и т.п.

Имеете в виду схемы стрительства?


Война и мир лучшая!
 
KromДата: Понедельник, 26.03.2012, 15:54 | Сообщение # 28
Воитель
Группа: Супер Модераторы
Сообщений: 2526
Награды: 25
Репутация: 153
Статус: Offline
AntonP, Да, только не совсем схемы, а алгоритмы. Например то что на моем скриншоте:

Code
procedure TKMayor.CheckVitalCount;
begin
    if HouseCount(ht_Store) = 0 then
      TryBuildHouse(ht_Store);

    if HouseCount(ht_School) = 0 then
      TryBuildHouse(ht_School);

    if HouseCount(ht_Inn) = 0 then
      TryBuildHouse(ht_Inn);
end;

procedure TKMayor.CheckMiningCount;
begin
    if (fPlayers[fOwner].Stats.HouseReleased[ht_Quary]) then
    begin
      if (HouseCount(ht_Quary) = 0) then
        TryBuildHouse(ht_Quary);

      if (HouseCount(ht_Sawmill) > 1) and (HouseCount(ht_Quary) < 2) then
        TryBuildHouse(ht_Quary);
    end;

    if (fPlayers[fOwner].Stats.HouseReleased[ht_Woodcutters]) then
    begin
      if (HouseCount(ht_Woodcutters) = 0) then
        TryBuildHouse(ht_Woodcutters);

      if (HouseCount(ht_Sawmill) > 1) and (HouseCount(ht_Woodcutters) < 2) then
        TryBuildHouse(ht_Woodcutters);
    end;

    if (fPlayers[fOwner].Stats.HouseReleased[ht_Sawmill]) and (HouseCount(ht_Sawmill) = 0) then
      TryBuildHouse(ht_Sawmill);
end;

procedure TKMayor.CheckFoodCount;
begin
    if (fPlayers[fOwner].Stats.HouseReleased[ht_Farm]) and (HouseCount(ht_Farm) < 2) then
      TryBuildHouse(ht_Farm);

    if (fPlayers[fOwner].Stats.HouseReleased[ht_Mill]) and (HouseCount(ht_Mill) = 0) then
      TryBuildHouse(ht_Mill);

    if (fPlayers[fOwner].Stats.HouseReleased[ht_Bakery]) and (HouseCount(ht_Bakery) = 0) then
      TryBuildHouse(ht_Bakery);

    if (fPlayers[fOwner].Stats.HouseReleased[ht_Swine]) and (HouseCount(ht_Swine) < 1) then
      TryBuildHouse(ht_Swine);

    if (fPlayers[fOwner].Stats.HouseReleased[ht_Butchers]) and (HouseCount(ht_Butchers) = 0) then
      TryBuildHouse(ht_Butchers);

    if (fPlayers[fOwner].Stats.HouseReleased[ht_Wineyard]) and (HouseCount(ht_Wineyard) < 2) then
      TryBuildHouse(ht_Wineyard);
end;


(fPlayers[fOwner].Stats.HouseReleased[ht_Wineyard]) - доступно ли здание
HouseCount(ht_Wineyard) - число построенных зданий такого типа
TryBuildHouse(ht_Wineyard) - построить здание (если местность позволяет)

Как видно тут еще нет ни проверок на количество ресурсов на складе, ни количества жителей.


Нашли баг в КаМ Ремейке? Отправьте отчет на с пометками, желательно на английском, в какой версии, что и когда случилось, приложите реплей или сохраненную игру в которой этот баг воспроизводится.
 
AntonPДата: Понедельник, 26.03.2012, 16:21 | Сообщение # 29
Дозорный
Группа: Проверенные
Сообщений: 339
Награды: 1
Репутация: 7
Статус: Offline
Алгоритмы, чудненько:)
Не моглибы вы сюда список зданий и их обозначений написать, допустим
ht_School - Школа
ht_Store - Склад
ht_Sawmill - Лесопилка и т.д.
Как проверить сколько у игрока Ресурсов? И не помешало бы обозначение ресурсов.
И класс fPlayers напишите из чего состоит.
И как идентифицируется ИИ, у которого проверяем Колличество зданий "HouseCount(ht_Sawmill)"?


Война и мир лучшая!

Сообщение отредактировал AntonP - Понедельник, 26.03.2012, 16:29
 
KromДата: Понедельник, 26.03.2012, 16:43 | Сообщение # 30
Воитель
Группа: Супер Модераторы
Сообщений: 2526
Награды: 25
Репутация: 153
Статус: Offline
AntonP, Названия зданий - дословный перевод на английском. Вот список:

Code
  THouseType = ( ht_None, ht_Any, //Эти два "волшебные"
      ht_ArmorSmithy,     ht_ArmorWorkshop,   ht_Bakery,        ht_Barracks,      ht_Butchers,
      ht_CoalMine,        ht_Farm,            ht_FisherHut,     ht_GoldMine,      ht_Inn,
      ht_IronMine,        ht_IronSmithy,      ht_Marketplace,   ht_Metallurgists, ht_Mill,
      ht_Quary,           ht_Sawmill,         ht_School,        ht_SiegeWorkshop, ht_Stables,
      ht_Store,           ht_Swine,           ht_Tannery,       ht_TownHall,      ht_WatchTower,
      ht_WeaponSmithy,    ht_WeaponWorkshop,  ht_Wineyard,      ht_Woodcutters    );


Ресурсы:
Code
  TResourceType = (
      rt_None,  //Special resource types
      rt_Trunk, rt_Stone, rt_Wood, rt_IronOre, rt_GoldOre,
      rt_Coal, rt_Steel, rt_Gold, rt_Wine, rt_Corn,
      rt_Bread, rt_Flour, rt_Leather, rt_Sausages, rt_Pig,
      rt_Skin, rt_Shield, rt_MetalShield, rt_Armor, rt_MetalArmor,
      rt_Axe, rt_Sword, rt_Pike, rt_Hallebard, rt_Bow,
      rt_Arbalet, rt_Horse, rt_Fish,
      rt_All, rt_Warfare, rt_Food); //Тоже волшебные


У игрока есть статистика fPlayers[fOwner].Stats в которой мы все дописываем по необходимости.
Code
    property HouseReleased[aType: THouseType]: boolean read GetHouseReleased write SetHouseReleased;
      property Ratio[aRes: TResourceType; aHouse: THouseType]: Byte read GetRatio write SetRatio;

      //Output
      function GetHouseQty(aType: THouseType): Integer;
      function GetHouseWip(aType: THouseType): Integer;
      function GetUnitQty(aType: TUnitType): Integer;
      function GetArmyCount:Integer;
      function GetCanBuild(aType: THouseType):boolean;

      function GetCitizensTrained:cardinal;
      function GetCitizensLost:cardinal;
      function GetCitizensKilled:cardinal;
      function GetHousesBuilt:cardinal;
      function GetHousesLost:cardinal;
      function GetHousesDestroyed:cardinal;
      function GetWarriorsTrained:cardinal;
      function GetWarriorsKilled:cardinal;
      function GetWarriorsLost:cardinal;
      function GetGoodsProduced:cardinal;
      function GetWeaponsProduced:cardinal;


Все вычисления идут для каждого ИИ независимо. Так что никаких пересечений с игроком или другими ИИ пока нет. Но в принципе можно добавить "чит" по типу "Если у врага 5 лесопилок, то выбираем тактику Раша".

Весь код все равно пока пишется в Делфе (в отличии от других игр, где ИИ часто бывает написан на скриптовом языке типа Луа) так что все равно, если ты не программист Делфи, то я буду переводить твои планы в код вручную.


Нашли баг в КаМ Ремейке? Отправьте отчет на с пометками, желательно на английском, в какой версии, что и когда случилось, приложите реплей или сохраненную игру в которой этот баг воспроизводится.
 
Форум » Knights and Merchants: Remake » Идеи и предложения » КАМ ИИ (Предложения...)
Поиск: