ZXNet эхоконференция «spbzxnet.games»


тема: Master Of Orion - Speccy, Clon. ;)



от: Ivan Kuvshinov
кому: Aleksey Senilov
дата: 23 Dec 2003
Идеи, теперь, такие: Вооружение кораблей противником, сделать с помощью генетических алгоритмов. ИИ моделирует сражение, раза три, со своим предъидущем прототипом и по результатам принимает, или нет, в серию. Также, со временем, туда будут входить и все корабли противников, с которыми он повстречался. Причём и попытки заделать такие корабли из своих деталей, послужат оптим- зации и обучению ИИ. Бои. Первое, это надо выявить, приоритетные цели, то есть то, что уничтожать в первую очередь. Это делается из расчёта: быстрота ликвидации, причинение ущерба кораблей противника. То есть моделируются сражения по упрощённому сценарию и оцениваются корабли противника: очки за каждый убийственный выстрел, за повреждения систем и просто повреждения (у всех разные коэффициенты). Так определяются наиболее опасные, но могут быть и слабые бронёй, но сильные на удар, поэтому дополнительно моделируются сражения с форой в пару ходов (не отстреливаться), для реализации возможностей этих задохликов, даже можно не сражение, а несколькоходовая атака на пассивный по выстрелам строй. Потом оценивается баланс, на предмет вывести из строя максимальное количество, наиболее опасных кораблей, в первые минуты боя. Очерёдность применения оружия и передвижения, к целям или расстрел с дальней дистанции и сохранение своих ключевых сил, не говоря уже о расчёте последствий взрывов и абодаже, как и его предотвращении - это уже высший пилотаж и должен решаться с помощью нескольких эвристик и просчёта в глубину на несколько ходов, как в шахматах. Это тоже реализуемо, но и первый вариант даст значительный интеллект компьютеру. Вторая часть важна при выработке тактик, против оригинальных кораблей и захвата планет и разрушения орбитальных баз. При создании флотов, для атаки защищённых звёздных систем, либо облюбованных монстрами, так же придётся проводить виртуальные учения для определения количества и состава флота спрвляющегося с этой задачей, при потерях в процентах.. Это же, может использоваться, для решения о принятии боя. Да, свои конструкторские подвижки ИИ должен обсчитывать, во время хода человека. И, что характерно, можно опробовать уже сейчас, так как наборы вооружения и опыт игры уже есть. КИА

от: Ivan Kuvshinov
кому: All
дата: 28 Jan 2004
IK> Идеи, теперь, такие: Вооружение кораблей противником, IK> сделать с помощью генетических алгоритмов. ИИ моделирует Здесь такой затык. Собственно сам-то генетический алгоритм прост и работает, но только с обычными генами, а вот здесь получается иная ситуация. Так как вооружение и системы корабля ограниченны его объёмом и занимают разное место, да ещё и некоторые системы его увеличивают, то в процессе скрещивания геномов - это место деления может прейтись на середину какой- либо объёмной системы, да и в общем случае, границы генов не будут совпадать. Конечно, можно пододвинуть чуть в одну или другую сторону при скрещивании, но оставшееся место придётся чем-то заполнять, а это шаг в сторону обычного случайного поиска, да и если система окажется в хвосте, то она скорее всего будет урезанна, высвобождая много места, которое придётся заполнить. Что делает весь процесс подобным осаждению песка и выпячивании больших камней, то есть все ситемы рискуют быть не включёнными в конфигурацию кораблей, и быть отрезанными, как не уместившиеся. Да и при прохождении участка скрещивания на середине такой системы её сдвиг слишком сильно деформирует соостветствие генов в геноме, что значительно ухудшает наследственную память и делает весь процесс менее детерменированным. Есть какие-нибудь идеи? КИА

от: Ivan Kuvshinov
кому: Ivan Kuvshinov
дата: 01 Feb 2004
IK>>> Идеи, теперь, такие: Вооружение кораблей IK>>> противником, сделать с помощью генетических алгоритмов. IK>> другую сторону при скрещивании, но оставшееся место IK>> придётся чем-то заполнять, а это шаг в сторону обычного IK>> случайного поиска, да и если система окажется в хвосте, то IK> Пока, думаю сделать так: разбить все системы и IK> вооружение на элементарные еденицы и считать экземпляр IK> укомплектованным, при достаточном количестве едениц IK> соответствующего типа. Правда заполненность корабля будет, В общем-то это может заработать, на досуге проверю. Для этого нужна модель сражения учитывающая эффективность, а не просто побольше оружия и смять. То есть например, когда я играл с человком, то построил очень хорошие корабли с автовсстановлением, благо опыта мне - не занимать, ну и мой противник построил похожие, в результате чего несмотря на то, что один такой кораблик, с каждой стороны, мог остановить целый компьютерный флот, мы немогли причинить друг другу урон, достаточный, для хоть каких-то видимых повреждений. Да и из-за пенальти, в свойствах рассы - я почти не попадал по противнику (он также, специально использовал технологии усиливающии мой негативный эффект). Тогда я построил корабли с плазмосетью, которая никогда не промахивается, да ещё и суммируется от хода к ходу, что способно погубить, даже такие навороченные корабли, как наши, а он - гад, уменьшил размер кораблей, сделав применение моего оружия не эффективным, так как причиняемый ущерб зависит от размеров корабля, а потеря одного малого кораблика не сравниться с моим, да и системы он переориентировал на большую вероятность попадания и в купе с увеличением количества источников, это привело к ситуации, когда мои потери дают квадратичный эффект снижения боеспособности в защите - пришлось отступить. Здесь же, такую сложную систему вооружения, с ходу реализовывать - сложно. Так что попробую сыграть на эффективности ионной пушки, против не защищённых полями кораблей, либо на эффективности плазмо пушки, против защищённых полями, за исключением влажного поля, в обоих случаях. То есть, подставлю противника, соответствующим образом укомплектованного, и посмотрю на эффективность выбранного решения, надеюсь оно будет найденно, а не какой- нибудь середнячёк, с лазерными установками, который будет чуть сильнее - в среднем. Теперь самое главное - подобный подход, в реализации генома, не подходит, для Speccy по причине требуемой памяти, а именно: у Звезды Смерти, вместимость 1200 едениц, с коконом 1800 и с мегафлуксером 2400, то есть 2500 байт на один геном, для 255 видов вооружения, включая системы, поля и модификации, что может ещё и не хватить. А размер популяции желателен большой, иначе она будет быстро вырождаться, конечно эта память, нужна будет кратковременно, но это ни в какие рамки не лезет - надо думать дальше, а пока, всё же проверю саму идею, как настроение будет. КИА

от: Aleksey Senilov
кому: Ivan Kuvshinov
дата: 02 Feb 2004
Привет тебе, _/Ivan/_! 28 января 2004 18:01, Ivan Kuvshinov писал(а) All: IK>> Идеи, теперь, такие: Вооружение кораблей противником, IK>> сделать с помощью генетических алгоритмов. ИИ моделирует IK> Здесь такой затык. Собственно сам-то генетический алгоритм IK> прост и работает, но только с обычными генами, а вот здесь IK> получается иная ситуация. Так как вооружение и системы корабля IK> середине такой системы её сдвиг слишком сильно деформирует IK> соостветствие генов в геноме, что значительно ухудшает IK> наследственную память и делает весь процесс менее IK> детерменированным. Есть какие-нибудь идеи? Значит надо все генетические операции производить не на уровне битов. Лучше всего наверно так: каждая система корабля - это один его ген, и неважно сколько он занимает места, 1 бит или 100 байт. В любом случае по описанию корабля мы видим отсутствие или наличие систем, и то, какие именно системы, так что с определением длин генов не должно быть проблем. Единственная проблема - это грамотная оценочная функция. Как отбирать совсем негодные варианты, и лучших "родителей" для следующего поколения. Все операции сделать реально и относительно легко. Только ввиду неопределенности общей длины одной особи надо динамическое распределение памяти. До новых встреч! С уважением, Тхэнн.

от: Ivan Kuvshinov
кому: Aleksey Senilov
дата: 26 Feb 2004
AS> Значит надо все генетические операции производить не на AS> уровне битов. Да, в общем-то так и есть, но всё равно пришлось разделить на части, для учитывания объёма. AS> Лучше всего наверно так: каждая система корабля - это один AS> его ген, и неважно сколько он занимает места, 1 бит или 100 AS> байт. В любом случае по описанию корабля мы видим отсутств AS> ие или наличие систем, и то, какие именно системы, так что AS> с определением длин генов не должно быть проблем. Стоп, каждый ген - это номер системы или оружия, причём 20 лазеров - это вполне заурядное дело. И, самое главное, это не наличие или отсутствие систем, а баланс, между ними и оружием, граничным условием где является - предоставленное место. Если же рассматривать только системы, то можно заранее наделать шаблонов, с отличными и не изменными характеристиками, а в отсутствии некоторых систем заполнять оружием, но хочется сделать интеллектуального, подобного человеку противника, который и ошибиться может и проявит незаурядную гибкость и сможет играть в очень нестандартных условиях. AS> Единственная проблема - это грамотная оценочная функция. Оценочная функция - это результат смоделированных боёв (скажем, один на один, в защите), с известными, в каждом конкретном случае, типами кораблей. То есть, игрок будет делать эффективные против противника корабли, а не вообще, используя слабые стороны противника. AS> совсем негодные варианты, и лучших "родителей" для AS> следующего поколения. А здесь вопрос тонкий, так как это сузит поле поиска. То есть негодная особь, это ещё не значит, что в ней плохие гены. Hапример, развитие популяции происходит так: появляется несколько элитных вариантов и сразу же отсеиваются значительное количество средних, так как вероятность их исключения возрастает, затем в результате долгих эволюций, во всех остальных особях накапливаются гены элиты, хотя сами по себе эти особи оцениваются очень плохо. Если на этом этапе не будет найденн новый геном, то буквально в течении нескольких мгновений, те, оставшиеся отличия в "плохих" особях будут устраняться, любым скрешиванием и популяция выродится - произойдёт, своего рода клонирование. Этот процесс можно всячески замедлять, но смысл остаётся тем же. КИА




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Программирование - Ещё раз о преррываниях.
Жизнь вне спектрума - бредовый рассказ от WL: ДУХ ПРЕЗРЕHИЯ.
Проект года - презентация версии игры Robo от KT-soft/ETC.
Что-где-почем - новый каталог от Nemo и спешу ознакомить вас с его кpатким содеpжанием (21.06.99 г.).
DEЛAЙ SAM - Кaк-то в прошлоm году meня стaло пропирaть от того, что крaсивый польский блок питaния от mоeго Cпeкa нeплохо грeeтся и meня стaло рaспирaть нeудeржиmоe жeлaниe постaвить нa нeго cооler...

В этот день...   8 мая