+ Ответить в теме
Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 20 из 28

Тема: Когда AI разрушает города?

Комбинированный просмотр

  1. #1
    Полководец


    Регистрация
    23.11.2005
    Адрес
    г.Чита,Россия
    Сообщений
    146
    Хоть уже и не совсем новичок,но всё-же,а какой логикой руководствуется ии,когда разрушает города и вообще,какой в этом смысл?Читал тута где-то статью,о скрытых мотивах лидеров,дык выходит,что информация не правдоподобна,поскольку видел и как Хубилай разрушает города и Хатшепсут,(даже два порушила)не говоря уш о Людовике 14-том.Версия игры 1.61,оригинал.
    продвинь это сообщение в соцсеть:  
    Нынешняя конфигурация моего компьютера:Athlon 64 3500+,материнская плата:K-8(A939)nforce3,видеокарта:Ati Radeon x800 pro с 256mb,(драйвера:Catalyst 5.13)звуковая карта:Sb live 5.1.

  2. #2
    Божество

    Аватар для Lexad


    Регистрация
    29.12.2005
    Адрес
    Новосибирск-Москва
    Сообщений
    7,396
    <div class='quotetop'>Цитата</div>
    какой логикой руководствуется ии,когда разрушает города [/b]
    Должны быть меньше 5 человек и без чуд. Кроме того, если менее 4 городов, оставит себе.
    продвинь это сообщение в соцсеть:  
    Krieg души

  3. #3
    Бессмертный Аватар для Линник


    Регистрация
    24.03.2006
    Адрес
    Правый берег Днепра
    Сообщений
    3,589
    <div class='quotetop'>Цитата(Lexad * 7.10.2007, 15:12) [snapback]206956[/snapback]</div>
    <div class='quotetop'>Цитата
    какой логикой руководствуется ии,когда разрушает города [/b]
    Должны быть меньше 5 человек и без чуд. Кроме того, если менее 4 городов, оставит себе.
    [/b][/quote]
    И более 5 рушит. Видел и 12 и 15... Если рядом мощный культ.центр и дальнейшая война нецелесообразна или не возможна (противник может отбить город).
    продвинь это сообщение в соцсеть:  
    Знаю, подло завелось теперь на земле нашей; думают только, чтобы при них были хлебные стоги, скирды да конные табуны их, да были бы целы в погребах запечатанные меды их. Перенимают черт знает какие бусурманские обычаи; гнушаются языком своим; свой с своим не хочет говорить; свой своего продает, как продают бездушную тварь на торговом рынке. Милость чужого короля, да и не короля, а паскудная милость польского магната, который желтым чеботом своим бьет их в морду, дороже для них всякого братства. Но у последнего подлюки, каков он ни есть, хоть весь извалялся он в саже и в поклонничестве, есть и у того, братцы, крупица русского чувства. И проснется оно когда-нибудь, и ударится он, горемычный, об полы руками, схватит себя за голову...
    Н.В. Гоголь, "Тарас Бульба"

  4. #4
    Я тоже не замечал строгой привязки к размеру города. Вот полная функция для AI при взятии города.

    CvPlayerAI::AI_conquerCity
    [spoiler][code]void CvPlayerAI::AI_conquerCity(CvCity* pCity)
    {
    продвинь это сообщение в соцсеть:  

  5. #5
    Божество

    Аватар для Lexad


    Регистрация
    29.12.2005
    Адрес
    Новосибирск-Москва
    Сообщений
    7,396
    Спасибо!
    продвинь это сообщение в соцсеть:  
    Krieg души

  6. #6
    Полководец


    Регистрация
    23.11.2005
    Адрес
    г.Чита,Россия
    Сообщений
    146
    А что за доп. условия?То есть иногда в принципе и случайно может ЛЮБОЙ город(в том числе и святой)разрушить?Ещё интересно,а есть у кого-нить объективная информация на тему поведения разнообразных цив в обращении с покорёнными городами?(думаю,что старая не очень-то объективна)
    продвинь это сообщение в соцсеть:  
    Нынешняя конфигурация моего компьютера:Athlon 64 3500+,материнская плата:K-8(A939)nforce3,видеокарта:Ati Radeon x800 pro с 256mb,(драйвера:Catalyst 5.13)звуковая карта:Sb live 5.1.

  7. #7
    Расшифровал алгоритм.

    Разрушать город AI будет если:
    (а)прошло 20 ходов и (б)городов у AI более 4 и (в)город не святой и (г)в городе нет чудес (неустаревших).
    Вероятность разрушения (ВР) будет рассчитана по сл. образом:
    1.
    Если город отобран не у варваров
    1.1. Усли вокруг города в есть более 3 городов врага (на каком-то расстоянии) ВР += 30
    1.2. Если не 1.1. то при расстоянии от ближайшего своего города > 12, ВР += расстояние * 2.
    (условное расстояние, как считается, здесь не написано)
    2.
    Если (а)город имеет общие клетки с другими AI-городами и (б)финансовые проблемы,
    ВР += (70 - 15 * население города)
    3.
    В городе есть гос.религия:
    3.1. Если AI обладает святым городом, ВР -= 50.
    3.2. Иначе ВР -= 10
    4.
    Близость (чего? AI_playerCloseness)
    4.1. Если близость положительная, ВР -= (25 + близость * 2)
    4.1. При отрицательной близости, ВР += 60
    5.
    Если (а)город имеет общие клетки с сдругими Ai-городами и (б) отоборан не у варваров
    ВР += getRazeCityProb (вероятность разрушения городов для данного лидера)
    6.
    Если полученное в пунктах 1-5 ВР положительное, то его умножают на содержание по каждому цивику
    формула множителя: (100 - getUpkeepModifier)
    выполняется для цивиков с содержанием.
    (отрицательную ВР не умножают!)

    7. И, наконец, принятие решения о разрушении на основе рандома:
    Если рандомное число в диапазоне 0-100 меньше ВР, то город - рушить!
    (рандом, по-видимому, для разрушения городов ведется отдельный, и возможно, не повлияют при перезагрузке какие-то другие

    манипуляции (ходы или сделки) на вероятность разрушения).

    Примечания:
    (-= означает уменьшить, += означает увеличить)
    (в фразе "общие клетки" не уверен, может быть это "примыкает к")
    (шаги 1-6 выполняются последовательно и ВР суммируется)
    продвинь это сообщение в соцсеть:  

  8. #8
    Worobjoff, оставайся на связи. Я еще функций по разным темам накидаю. Вот эта "близость AI"

    [code]int CvPlayerAI::AI_playerCloseness(PlayerTypes eIndex, int iMaxDistance)
    {
    продвинь это сообщение в соцсеть:  

  9. #9
    Полководец


    Регистрация
    23.11.2005
    Адрес
    г.Чита,Россия
    Сообщений
    146
    <div class='quotetop'>Цитата</div>
    Близость (чего? AI_playerCloseness) [/b]
    Судя по всему это близость компьютера к границам игрока имеется в виду.(closeness-близость)Вообще,большое вам спасибо за проделанную работу,ещё ни на одном сайте не припомню,чтоб получал столь быструю помощь. Теперича бы переложить бы сие на простой язык,стало бы совсем здорово.По таблице:но ребята,я ведь сам видел как Бисмарк два города порушил,тоже и про некоторых других,у кого вероятность нулевая,те же китайцы.
    продвинь это сообщение в соцсеть:  
    Нынешняя конфигурация моего компьютера:Athlon 64 3500+,материнская плата:K-8(A939)nforce3,видеокарта:Ati Radeon x800 pro с 256mb,(драйвера:Catalyst 5.13)звуковая карта:Sb live 5.1.

  10. #10
    <div class='quotetop'>Цитата</div>
    Судя по всему это близость компьютера к границам игрока имеется в виду[/b]
    Да нет, это скорее близость захваченного города к границам AI-игрока.

    <div class='quotetop'>Цитата</div>
    По таблице:но ребята,я ведь сам видел как Бисмарк два города порушил,тоже и про некоторых других,у кого вероятность нулевая,те же китайцы.[/b]
    Тьфу ты , написано же "дополнительная" вероятность. Выше приведена формула и ее расшифровка - посмотри еще раз. Есть общая вероятность разрушения города, которая считается независимо от конкретного лидера, а есть дополнительный показатель, который повышает вероятность разрушения города конкретным лидером.
    продвинь это сообщение в соцсеть:  

  11. #11
    <div class='quotetop'>Цитата(NeverMind * 8.10.2007, 12:57) [snapback]207095[/snapback]</div>
    [/b]
    Нужен текст функции CvCity->AI_playerCloseness
    продвинь это сообщение в соцсеть:  

  12. #12
    Ага, точно.

    [spoiler][code]int CvCityAI::AI_playerCloseness(PlayerTypes eIndex, int iMaxDistance)
    {
    продвинь это сообщение в соцсеть:  

  13. #13
    Интегральная оценка густоты городов вообще (на вскидку).
    Что бы точно разобрать формулу расчета, надо еще несколько функций:
    stepDistance, calculatePathDistance, area->getNumCities

    Но надо ли?
    продвинь это сообщение в соцсеть:  

  14. #14
    Король Аватар для Blacksun


    Регистрация
    10.05.2006
    Адрес
    М.О. г. Раменское
    Сообщений
    1,873
    <div class='quotetop'>Цитата(Worobjoff * 8.10.2007, 15:08) [snapback]207165[/snapback]</div>
    Интегральная оценка густоты городов вообще (на вскидку).
    Что бы точно разобрать формулу расчета, надо еще несколько функций:
    stepDistance, calculatePathDistance, area->getNumCities

    Но надо ли?
    [/b]
    stepDistance - это по мому движение юнита за один шаг (с учетом дорог).

    calculatePathDistance - эта функция используется для прокладки пути АИ юнита от тайла до тайла (ее использует функция - generatePath)

    area->getNumCities - тут по мому все ясно - кол-во городов на континенте...
    продвинь это сообщение в соцсеть:  
    Программирование - это не то, что ты думаешь.... - Это то, что думает о тебе компьютер.
    http://blacksun.civfanatics.ru
    -------------------------------------------------
    MTDG2 - [civ]christianity[/civ]Монархия
    ---------------------------------
    Председатель CFR Awards 2007
    ---------------------------------
    Председатель CFR Awards 2008

  15. #15
    <div class='quotetop'>Цитата(Blacksun * 8.10.2007, 15:31) [snapback]207172[/snapback]</div>
    area->getNumCities - тут по мому все ясно - кол-во городов на континенте...
    [/b]
    Вряд ли. getNumCities - этот метод класса area. Класс area - поле класса CvCity.
    Т.е. getNumCities вычисляет число городов относящихся к этому городу.
    Не очень понятно что именно, правда?
    продвинь это сообщение в соцсеть:  

  16. #16
    Король Аватар для Blacksun


    Регистрация
    10.05.2006
    Адрес
    М.О. г. Раменское
    Сообщений
    1,873
    <div class='quotetop'>Цитата(Worobjoff * 8.10.2007, 15:45) [snapback]207177[/snapback]</div>
    <div class='quotetop'>Цитата(Blacksun * 8.10.2007, 15:31) [snapback]207172[/snapback]
    area->getNumCities - тут по мому все ясно - кол-во городов на континенте...
    [/b]
    Вряд ли. getNumCities - этот метод класса area. Класс area - поле класса CvCity.
    Т.е. getNumCities вычисляет число городов относящихся к этому городу.
    Не очень понятно что именно, правда?
    [/b][/quote]

    Ты немножко неправильно понял класс Area - это отдельный класс и генерируется он в самом начале (после генерации карты). Это не что иное, как попытка разграничить континенты и острова... (чтобы юниты через море не бегали). А в класс City - он попадает после постройки города (вернее ID Area).

    Так что Area->getNumCities() - это количество городов на континенте.

    З.Ы. Класс Area - относится скорее к тайлу а не к городу.
    продвинь это сообщение в соцсеть:  
    Программирование - это не то, что ты думаешь.... - Это то, что думает о тебе компьютер.
    http://blacksun.civfanatics.ru
    -------------------------------------------------
    MTDG2 - [civ]christianity[/civ]Монархия
    ---------------------------------
    Председатель CFR Awards 2007
    ---------------------------------
    Председатель CFR Awards 2008

  17. #17
    Не разбирался с этим никогда. Кусочек программного кода из цивилизации увидел сегодня впервые.
    продвинь это сообщение в соцсеть:  

  18. #18
    Король Аватар для Blacksun


    Регистрация
    10.05.2006
    Адрес
    М.О. г. Раменское
    Сообщений
    1,873
    <div class='quotetop'>Цитата(Worobjoff * 8.10.2007, 16:10) [snapback]207185[/snapback]</div>
    Не разбирался с этим никогда. Кусочек программного кода из цивилизации увидел сегодня впервые.
    [/b]
    Ну, не знаю, по моему папка CvGameCoreDLL - сейчас есть везде и в ваниле и в Варлордах и в БТС (для всех разные).
    продвинь это сообщение в соцсеть:  
    Программирование - это не то, что ты думаешь.... - Это то, что думает о тебе компьютер.
    http://blacksun.civfanatics.ru
    -------------------------------------------------
    MTDG2 - [civ]christianity[/civ]Монархия
    ---------------------------------
    Председатель CFR Awards 2007
    ---------------------------------
    Председатель CFR Awards 2008

  19. #19
    Ээ...это все, конечно, замечательно, но что мы можем из этого выжать для интересущего нас игрового вопроса?
    продвинь это сообщение в соцсеть:  

  20. #20
    <div class='quotetop'>Цитата(NeverMind * 8.10.2007, 16:53) [snapback]207197[/snapback]</div>
    Ээ...это все, конечно, замечательно, но что мы можем из этого выжать для интересущего нас игрового вопроса?
    [/b]
    А что тут голову ломать-то?
    Компы любит уничтожать города если экономика стагнирует, если захваченный город может убежать или слишком тесно или далеко расположен.
    Не любят уничтожать если там есть религия.
    Не будет уничтожать в начале игры или если это святой город или с чудами.

    Тупой алгоритм - не учитывает перспективы наступательной кампании, географию (зачем ему город в пустыне или в тундре? А зачем рушить город на очень нужном ресурсе? Особенно если свой воткнуть туда ни культура ни запас войск не позволит), геометрию... Геометрия вообще - самая большая тупость AI. Город может быть нужен для получения дороги к другим цивам. Или к морю. Об этом AI напрочь думать отказывается. Тем более выбирать нужный город для захвата с учетом геометрии.
    Не учитывает алгоритм и перспктивы перенести свою столицу. Похоже AI никогда не пытается выбраться из клоаки в которой стартует - из вечных льдов или тупика.
    продвинь это сообщение в соцсеть:  

+ Ответить в теме
Страница 1 из 2 12 ПоследняяПоследняя

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
Рейтинг@Mail.ru

free counters