The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Выпуск игры Free Heroes of Might and Magic II (fheroes2) - 0..."
Отправлено Ordu, 08-Окт-21 02:49 
> Насколько я знаю, все объекты на карте детерминированны при создании онной. Поэтому костры для всех равны.

Да, они детерминированы в fheroes2 (даже не поленился, проверил), я чисто для примера взял, потому что такой пример а) легко объяснить; и б) без всякого сомнения пример тому, как быть не должно.

> Вопрос в ином: если я героя, к примеру, подвинул на одну клетку в сторону, а противник, хоть и далеко, но должен на это как-то реагировать? Или же я Обменял все ресурсы на золото и стал первым по богатству в королевстве, должно ли это влиять на ИИ? Или количество моих нанятых или уволенных героев?

Причинно-следственная связь может быть прямой или косвенной. Косвенная -- это значит что она опосредована чем-то. Это "что-то" называют медиатором.

Если моё лутание костра влияет на состояние генератора случайных чисел, а состояние rnd влияет на поведение AI, то состояние генератора -- это медиатор, а влияние лутания на AI -- косвенное.

Если же AI бежал к костру, но я лутнул этот костёр раньше, и AI, увидев это, изменил свои планы, то это прямое влияние лутания на поведение AI.

В целом, если так подумать, я вижу два разных подхода, как можно обобщить моё понимание того, как надо. Первое проще понять. Второе мне больше нравится, может просто потому, что я до сих пор в восторге от каузальных диаграмм. Оно длинее (или без лишней скромности -- это стена текста), за что прошу прощения, но я не смог удержаться и не поделиться восторгом: очень мощный инструмент, и я в экстазе от своей находки, что здесь он тоже работает.

1. Теория информации. Рассмотреть AI как модель игрока-человека, и при таком подходе, любая информация доступная AI, которая была бы недоступна человеку на его месте -- равноценна читерству. Но при этом, использование этим AI любой информации, которую мог бы получить человек -- вполне законно. RNG как способ передачи информации сюда лишь костылём можно пристегнуть, но, я думаю, можно.

2. Каузальные диаграммы. Никаких костылей не надо, чтобы учесть все влияния, и поделить их на законные и незаконные. При этом каузальные диаграммы очень хорошо ложатся на то, как человек интуитивно мыслит о причинах и следствиях, их можно рассматривать как формализацию этой интуиции. Как способ алгеброй гармонию проверить.

Есть причины которые подтолкнули AI действовать так или эдак. Их может быть много, эти причины могут действовать прямо или косвенно (через посредство других причин: как с таверной: денег много у меня -> об этом сообщает таверна -> AI получает знание о факте -> AI меняет своё поведение). Причиной может быть и RNG, если AI выбирает вариант действий рандомом. В качестве определения для понятия "причина" тут удобно взять контрфактическое определение причинно-следственной связи: если изменение переменной X меняет значение переменной Y, то X -- причина Y. Например, если бы у меня не было бы много денег (X -- количество денег у меня), таверна бы не сообщила об этом (M -- сообщение в таверне), AI не изменил бы своего поведения (Y -- поведение AI). Такое определение позволяет и с медиаторами разбираться: если заблокировать таверну (например, запретить AI её строить, или заставить таверну сообщать о чём-нибудь иррелевантном), то сколько бы у меня не было денег, AI об этом не узнает и поведения не изменит. А если изменит, значит он получает информацию каким-то другим путём, не через таверну (может он религиозно строит Thieves Guild'ы во всех городах, или к стоунхенджу подбежал). Может через таверну тоже получает, но явно есть какой-то ещё путь.

Всякие разные переменные можно рисовать точками на плоскости, соединять их стрелками, обозначающими прямое причинно-следственное влияние, и получать ориентированный граф -- каузальную диаграмму.

И на фоне всего этого, чтобы при помощи каузальных диаграмм реализовать (1) достаточно потребовать, чтобы каузальная диаграмма мира, описывающая все игровые закономерности, могла бы ссылаться только на игровые сущности в качестве причин и следствий, то есть сущности которые существуют в игровой вселенной. И чтобы её объяснения стрелкам были бы тоже в терминах игровой Вселенной. Генератор случайных чисел не существует в игровой вселенной -- это деталь реализации (генератор нельзя купить у бродячего инженера, нельзя заплатить астрологам, чтобы те выставили бы состояния rng в заданное значение, в пирамиде на стене нельзя прочитать легенду о Боге Всемогущего Рандома, принести ему в жертву трёх чёрных драконов, чтобы получить нужный расклад -- RNG никак не представлен в игровой вселенной). Поэтому генератору СЧ не следует быть медиатором для передачи каузального влияния от костра к поведению AI: это будет создавать spurious корреляции в данных наблюдений игрока, которые будут необъяснимы каузальной диаграммой. Скажем, гипотетически, если каждый раз когда я оставляю город без обороны, через день появляется вражеский герой движущийся в сторону города -- чё за? Есть корреляция между уровнем защиты города и атаками, она требует объяснений. В данном случае напрашивается объяснение через знание AI. Оно может быть укладываться в игровую механику: при определённых условиях я тоже могу издалека наблюдать сколько армии в каком из вражеских городов сидит. А может и не укладыватся (скажем, я знаю, что этот кусок карты не открыт у AI, но стоит мне оставить замок пустым, как прибегает герой, я гружусь с сейва, оставляю армию, и он не прибегает). И если объяснение не укладывается (нет игрового медиатора, передающего причинно-следственную связь от армии в городе к знанию AI об этом), то каузальную диаграмму придётся подпирать костылями фантазий, или просто смиряться с тем, что игровая программа -- это несовершенная модель игровой вселенной.

Этот подход можно и до проверямых (в т.ч. умозрительно) тестов довести. Скажем, если вопрос, является ли RNG медиатором, передающим влияние от лутания костра к поведению AI, то ответ можно искать блокируя этот потенциальный медиатор любым способом, скажем, заменив rng на фиктивный генератор, который всегда возвращает число 42 (или на генератор на базе /dev/random). Если блокирование приведёт к тому, что костёр прекратит влиять на поведение AI, то значит RNG действительно медиатор: если при нормальном RNG влияние наблюдаемо, при заблокированном влияния не обнаруживается, то значит а) влияние костра на AI есть, б) оно передаётся через медиатор -- RNG, в) это зашквар.

С другой стороны, если допустим, влияние сохраняется при блокировании RNG, то надо смотреть через что оно передаётся (может и через RNG тоже, но явно не только через него). И если это влияние, например, передаётся прямым образом (AI увидел, что я лутнул костёр), то что будет, если блокировать этот каузальный путь? Если AI не увидит, будет сохраняться влияние? Если да, то если мы ещё RNG заблокируем, то будет? Если на этот вопрос ответом окажется нет, то мы видим, что RNG даёт причинно-следственную протечку, и через него протекает влияние костра. Если же на последний вопрос ответ "да", то значит что есть ещё какой-то причинный путь, и чтобы проверить RNG надо заблокировать и его.

Save&load позволяет заблокировать почти всё одним махом. Может быть вообще всё, кроме RNG. А может быть и RNG тоже. И в HOMM2 он блокирует всё, включая RNG, предотвращая влияние неигровых явлений на ход игры (если бы он не сохранял RNG, и тягал бы случайные числа из /dev/random, то save&load влиял бы на ход игры, и таким образом позволял бы манипулировать рандомными событиями). При этом HOMM2 блокирует все spurious влияния передаваемые через рандом, посредством нескольких независимых RNG. Блокирование всего вообще позволяет менять только те переменные, которые под прямым контролем игрока -- его игровые действия. И это позволяет исследовать игровую механику, с минимумом осложнений создаваемых рандомом.

Таким образом мысля можно моделировать человека исследующего игру: выясняя, какие нюансы игровой механики он может узнать, какие закономерности может раскрыть, а какие -- не может. Очень помогает увидеть границы возможностей для интеллекта, поставленного в определённые рамки.

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру