Манифест возрождения героев

Форум предназначен для обсуждения общегеройской тематики, не относящейся к аддону Equilibris. Флуд, флейм и оффтоп, категорически запрещены.
User avatar
Accolon
Level 24 Hero
Level 24 Hero
Posts: 2564
Joined: Mon Jul 04, 2005 03:07

Post by Accolon »

CTPAHHuK
Читал твой труд. Моя думать - пока что много абстракций, которые сами по себе трудно запрограммировать. Но развивай свою тему дальше.

Dalai
ИИ можно попробовать реализовать в виде скриптового языка. Тогда совершенствование ИИ будет сводится к совершенствованию самого скрипта/ скриптового языка ИИ (напр., шлифовка существующих условий и введение новых). Пример для милишников, если тактика идет в среде Четверки:
----
1. Атаковать наиболее весомый стек, который можно полностью уничтожить при атаке, если стек не является суммоном. Если стек невозможно уничтожить, то выбирать тот, атака которого принесет врагу наибольший ущерб. Весомость стека вычислять с учетом summon/ damage-возможностей оного.
Грубо: Если стек из одного джина может насуммонить другого джина за один комбат-раунд, то считаем, что стек из того самого джина равен двум джинам. Если стек из одного джина способен уничтожить 2х джинов, то считаем, что один джин равен 3-м.
2. Если атака невозможна (не успеваем добежать) и наша инициатива больше и у врага есть возможности понизить нашу инициативу /передвижение - немедленно двигаемся к врагу.
3. Если атака невозможна (не успеваем добежать) и наша инициатива больше и у врага есть возможности превысить нашу инициативу - немедленно двигаемся к врагу.
4. Если инициатива у врага выше, то определяем один из стеков в качестве пушечного мяса и рассредоточиваемся так, чтоб чтоб можно было провести безответную контратаку.
5. При выборе точки передвижения двигаться туда, откуда атака будет доступна на максимальное к-во целей.
-----
User avatar
CTPAHHuK
Level 23 Hero
Level 23 Hero
Posts: 2002
Joined: Tue Feb 05, 2008 23:12
Location: Ханты-Мансийск
Contact:

Post by CTPAHHuK »

Accolon wrote:Читал твой труд. Моя думать - пока что много абстракций, которые сами по себе трудно запрограммировать. Но развивай свою тему дальше.
Да, действительно, там конкретики нет ещё. Буду выкладывать частями, вдруг кому-то последовательные мысли в голову прийдут, или где-то косяк обнаружится.

Dalai
На каком языке планируется писать игру?
User avatar
Dalai
Equilibris Core Team
Equilibris Core Team
Posts: 2797
Joined: Sat Apr 02, 2005 17:38
Contact:

Post by Dalai »

Accolon wrote:ИИ можно попробовать реализовать в виде скриптового языка. Тогда совершенствование ИИ будет сводится к совершенствованию самого скрипта/ скриптового языка ИИ (напр., шлифовка существующих условий и введение новых).
Это экспертный подход. Я бы хотел, чтобы он был только самым началом пути. А следующим шагом был сбор и обработка БОЛЬШОГО количества данных как с реальных боев, так и с автоматических симуляций, и модификация ИИ на основе анализа этих данных. Что-то вроде уточнения коэффициентов в примере CTPAHHuK для разных дейстий в зависимости от массы разных условий.
CTPAHHuK wrote: На каком языке планируется писать игру?
Это пока слишком конкретный вопрос. Не знаю. Во-первых - я не программист, и мне трудно принять ОБОСНОВАННОЕ решение без консультации с кем-то компетентным. Во-вторых, и я об этом, вроде бы писал (а если нет - то собирался), я бы хотел, чтобы то, о чем мы говорим в этой теме, было полезным в равной степени любому разработчику, а не только мне, если звезды сложатся.

Четверка была на Си, не уверен насчет плюсов.
Web-designer wanted. "Once a knight, always a knight, but once a King is once too often!" (c) Sir Bella of Eastmarch
User avatar
CTPAHHuK
Level 23 Hero
Level 23 Hero
Posts: 2002
Joined: Tue Feb 05, 2008 23:12
Location: Ханты-Мансийск
Contact:

Post by CTPAHHuK »

Dalai wrote:Это пока слишком конкретный вопрос. Не знаю. Во-первых - я не программист, и мне трудно принять ОБОСНОВАННОЕ решение без консультации с кем-то компетентным. Во-вторых, и я об этом, вроде бы писал (а если нет - то собирался), я бы хотел, чтобы то, о чем мы говорим в этой теме, было полезным в равной степени любому разработчику, а не только мне, если звезды сложатся.
Может Max знает?
User avatar
Accolon
Level 24 Hero
Level 24 Hero
Posts: 2564
Joined: Mon Jul 04, 2005 03:07

Post by Accolon »

Dalai
Элементы этого экспертного подхода ничто не мешает использовать как для "функционирования по умолчанию", так и для развития ИИ. Попробую сформулировать то, че думал.

Можно рассматривать работу ИИ как мозаику квантов условие-действие (куд). И к каждому куд-у накапливать статистику о том, сколько было успешных/ не успешных боев (по классиф. Станника), его задействовавших. Как и статистику, в каком именно комбат-раунде куд был задействован. Думаю, для куд-а имеет смысл сохранять инфу и о процентном ходе боя (т.е., было ли это начало боя, его середина или уже конец). Под "условиями" надо понимать те, что определены человеком. Примеры условий:
у врага есть (массовые) диспелы общего назначения (как курсов, так и блесов);
у врага есть (массовые) диспелы блесов;
у врага есть (массовые) диспелы курсов;
у врага есть суммоны иллюзий;
у врага есть суммоны крич 1-го уровня;
у врага есть суммоны крич 2-го уровня (и так до 5-го, т.е еще 3 условия);
у врага есть raise спеллы крич (1,2,..,5)-го уровня
у врага есть ДД-спеллы для атаки единственного стека;
у врага есть ДД-спеллы для атаки по полю (фаербол, наприм);
у врага есть ДД-спеллы для атаки по обширному полю (инферно);
у врага есть ДД-спеллы для атаки по цепному полю (цепная молния);
у врага есть ДД-спеллы для массовой атаки (армагеддон);
у врага низкий MR;
у врага средний MR;
у врага высокий MR;
у врага 100% MR;
у врага иммунитет к магии;
у врага формация n

и далее.

Под "врагом", по ситуации, понимать как всю армию, так и конкретную цель/ претендент на атаку. Если перед условием ставим "!", то это означает отрицание. ИИ, исходя из статистики боев, выбирает наиболее зарекомендовавший себя куд и приводит его в действие.
Пример куд-а:

Code: Select all

// квант Geine0988978
if
  !(у врага есть массовые диспелы общего назначения)
  !(у врага есть массовые диспелы блесов)
  !(у врага есть диспелы общего назначения)
  !(у врага есть диспелы блесов)
then
  использовать заклинание "Сотворить иллюзию"с наиболее эффективного стека
User avatar
Dalai
Equilibris Core Team
Equilibris Core Team
Posts: 2797
Joined: Sat Apr 02, 2005 17:38
Contact:

Post by Dalai »

Accolon
Все правильно.

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

Другими словами, даже само определение "успешный бой" требует введения интегрального показателя. Вот и отслеживать его нужно пораундово. Заодно и решения могут приниматься не только исходя из статистики (типа: в 80% случаев такой выбор привел к неплохому результату), а и математически. Например - у врага есть 1 стек - минотавры. Каст слоу на минотавров ослабляет их на Х%. (При наличии, или подозрении на возможность снятия замедления, Х заменяем на Х2). Соответственно, интегральный показатель армии уменьшится на К% (или К2). Альтернатива - ударить айс-болтом, количество минотавров уменьшится на У%, интегральный показатель армии - на М%. Сравниваем К и М и решаем. Определение Х - работа эксперта + множество экспериментальных проверок на грани.

Этот метод иногда лучше анализа статистики, т.к. статистика в итоге выдаст достаточно общие выводы, а тут при разнице в 1 минотавра предпочитаемое действие может смениться.
Web-designer wanted. "Once a knight, always a knight, but once a King is once too often!" (c) Sir Bella of Eastmarch
User avatar
Accolon
Level 24 Hero
Level 24 Hero
Posts: 2564
Joined: Mon Jul 04, 2005 03:07

Post by Accolon »

Dalai
Только я бы еще ввел некий интегральный показатель силы армии (своей и врага)
Ок, но как ты его себе представляешь? Например, какой смысл в ослаблении армии кастеров посредством курсов, понижающих физические хар-ки, но не влияющих на инициативу, Spell Power и к-во маны?
Кроме того, понятие успешный бой - это бой, завершившийся с максимально положительным изменением соотношения между этими показателями своей и чужой армии.
Для определения максимально положительного изменения требуется серия боев. Т.е., у Странника таки более удачное определение.
Другими словами, даже само определение "успешный бой" требует введения интегрального показателя. Вот и отслеживать его нужно пораундово.
Сначала нужно определится с самим интегральным показателем.
Например - у врага есть 1 стек - минотавры...
С примером все ок, но он не учитывает расстояние до миносов.
Этот метод иногда лучше анализа статистики, т.к. статистика в итоге выдаст достаточно общие выводы, а тут при разнице в 1 минотавра предпочитаемое действие может смениться.
Только он не зрит дальше своего хода. Например, если на пути минотавров появится пара стеков иллюзий, то может получится так, что минотавры и вовсе не успеют ударить иллюзионистов.

Моя думать, надо и то и то использовать в течении боя, но окончательный ответ таки даст исход боя, а не исход одного раунда.

All
Господа, еще один важный момент касательно базовых свойств стека.
В Четверке стек может: атаковать ранжед без перемещения; кастить без перемещения; использовать итем (бутылка/ ванд) без перемещения; атаковать melee нераздельно от перемещения; единожды ответить на атаку одновременной ответкой(*); преместится без атаки любого вида; остаться на месте, перейдя в режим защиты.
Моя думать, что красивее и тактически гибче дать возможность стеку переместится и атаковать любым доступным ему способом/ уйти в защиту. Собственно, это уже предлагалось у нас на форуме (аж в 2005) и по-своему реализовано Катаури в их сиквел-серии King's Bounty, равно как и в Disciples III от .Dat.

-----
(*) за искл. грифонов и на атаку стека с first strike одновременно получится только у атакуемого с first strike.
User avatar
Max_HMMI
Equilibris Core Team
Equilibris Core Team
Posts: 826
Joined: Sat Apr 02, 2005 19:45
Location: Киев

Post by Max_HMMI »

Dalai wrote:Все правильно. Ты кандидатскую, часом, в поледнее время не писал? Методологический подход чувствуется
К счастью, нет. Просто на доморощеных изобретателей велосипеда насмотрелся. Да и стараюсь уже бережнее ко времени относиться.
Dalai wrote:Было бы желание
Вот что значит задать верный вектор! ;)
Dalai wrote:Четверка была на Си, не уверен насчет плюсов.
Точно не скажу, но те внутренние структуры в памяти, ИМХО, более характерны для плюсов.
CTPAHHuK wrote:Может Max знает?
Нет - мое развитие в этом направлении остановилось на уровне начала века. Т.е., C# и иже с ними пошло уже без меня. Но, думаю, важную роль сыграет язык, на котором написан графический движек - если предполагается использовать готовый, а не писать свой.
User avatar
Dalai
Equilibris Core Team
Equilibris Core Team
Posts: 2797
Joined: Sat Apr 02, 2005 17:38
Contact:

Post by Dalai »

Accolon wrote:Например, какой смысл в ослаблении армии кастеров посредством курсов, понижающих физические хар-ки, но не влияющих на инициативу, Spell Power и к-во маны?
Я привел пример. Твои вопросы показывают, что все сложнее, но на то он и пример, а не решение. С другой стороны, на то компу и дадено миллиарды операций в секунду, чтобы сложность и количество вариантов его не пугало.
Accolon wrote:Для определения максимально положительного изменения требуется серия боев.
Не зря же я так много и часто об этом пишу ;)

Учиться на 1 бое может человек, и то не всегда, а только когда есть хороший опыт. Комп не в состоянии отделить случайное от систематического, свой прокол от чужой хитрости, исключительный случай от типичного.
Accolon wrote:Моя думать, что красивее и тактически гибче дать возможность стеку переместится и атаковать любым доступным ему способом/ уйти в защиту. Собственно, это уже предлагалось у нас на форуме (аж в 2005) и по-своему реализовано Катаури в их сиквел-серии King's Bounty, равно как и в Disciples III от .Dat.
Я играл в игры от Катаури. У них очень интересный тактический бой, но есть один важный момент - ты всегда против компа. Против человека тактический прием "блокировка стрелков милишником" очень важен. А при таком подходе блокировка будет практически бесполезна.

Разве что уменьшать силу выстрела вдвое, если перед выстрелом было движение...
Max_HMMI wrote:Но, думаю, важную роль сыграет язык, на котором написан графический движек - если предполагается использовать готовый, а не писать свой.
Очень здраво.
Web-designer wanted. "Once a knight, always a knight, but once a King is once too often!" (c) Sir Bella of Eastmarch
User avatar
CTPAHHuK
Level 23 Hero
Level 23 Hero
Posts: 2002
Joined: Tue Feb 05, 2008 23:12
Location: Ханты-Мансийск
Contact:

Post by CTPAHHuK »

Max_HMMI wrote:Нет - мое развитие в этом направлении остановилось на уровне начала века.
А Ява это какой век?

Я недавно общался с Camoes'ом, он, помимо того, что знаменитый онлайн игрок героев 4, ещё и преподает программирование. С радостью возьмется за работу на Яве.
User avatar
Dalai
Equilibris Core Team
Equilibris Core Team
Posts: 2797
Joined: Sat Apr 02, 2005 17:38
Contact:

Post by Dalai »

CTPAHHuK wrote:А Ява это какой век?
Ява-Джава считается очень универсальной, но часто весьма тормозной.
Web-designer wanted. "Once a knight, always a knight, but once a King is once too often!" (c) Sir Bella of Eastmarch
User avatar
Accolon
Level 24 Hero
Level 24 Hero
Posts: 2564
Joined: Mon Jul 04, 2005 03:07

Post by Accolon »

Dalai
Твои вопросы показывают, что все сложнее, но на то он и пример, а не решение.
Я к тому, что определение должно быть настолько четким, насколько потребуется для алгоритмического воплощения оного. Оно не обязательно должно быть окончательным, но оно должно быть четким.
А при таком подходе блокировка будет практически бесполезна.
Я затыкал циклопов иллюзорным фениксом (ага - усилил Катауровский закл иллюзорного двойника - у меня он давал 100% от хитов цели-родителя). Циклопам-бедолагам мешала сдвинутся жесткая гексо-сетка, т.е., чуть-чуть они отойти не могли, а соседние поля были заняты стеками-союзниками. Так что, возможность затычки вполне остается и при таком подходе.
Разве что уменьшать силу выстрела вдвое, если перед выстрелом было движение...
Нет смысла. Все будет зависеть от тактической разметки поля боя.
User avatar
CTPAHHuK
Level 23 Hero
Level 23 Hero
Posts: 2002
Joined: Tue Feb 05, 2008 23:12
Location: Ханты-Мансийск
Contact:

Post by CTPAHHuK »

Dalai wrote:Только я бы еще ввел некий интегральный показатель силы армии (своей и врага) и отслеживал применение тех или иных кудов не только в успешных-неуспешных боях, а даже отдельных раундах.
Accolon wrote:Сначала нужно определится с самим интегральным показателем.
Мне кажется, придумывать интегральный показатель силы армии не надо. Существует хороший показатель - опыт (experience).

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

Постараюсь к воскресенью довести до конца раздел с описанием показателей армии в боях ИИ.
User avatar
Accolon
Level 24 Hero
Level 24 Hero
Posts: 2564
Joined: Mon Jul 04, 2005 03:07

Post by Accolon »

CTPAHHuK
Мне кажется, придумывать интегральный показатель силы армии не надо.
Имеется в виду текущая сила армии. Например, если стек милишников/ стрелков находится под действием Weakness, то виртуально/ интегрально (т.е., итогово) он ослабляется на 25%.
User avatar
Dalai
Equilibris Core Team
Equilibris Core Team
Posts: 2797
Joined: Sat Apr 02, 2005 17:38
Contact:

Post by Dalai »

Accolon wrote:Например, если стек милишников/ стрелков находится под действием Weakness, то виртуально/ интегрально (т.е., итогово) он ослабляется на 25%.
Все верно.

То, о чем говоришь ты:
CTPAHHuK wrote:Мне кажется, придумывать интегральный показатель силы армии не надо. Существует хороший показатель - опыт (experience).
- это удобный показатель для стратегического ИИ. На тактическом поле боя в нулевом раунде ничто не мешает пользоваться им же. Но по ходу боя вносятся уточнения - эти отравлены, у того есть диспелл, этот в броньке регенерации, и т.п.
Web-designer wanted. "Once a knight, always a knight, but once a King is once too often!" (c) Sir Bella of Eastmarch
User avatar
CTPAHHuK
Level 23 Hero
Level 23 Hero
Posts: 2002
Joined: Tue Feb 05, 2008 23:12
Location: Ханты-Мансийск
Contact:

Post by CTPAHHuK »

Согласен. Я подумал, вы обсуждаете показатель при анализе итогов боя :oops:
User avatar
Max_HMMI
Equilibris Core Team
Equilibris Core Team
Posts: 826
Joined: Sat Apr 02, 2005 19:45
Location: Киев

Post by Max_HMMI »

CTPAHHuK wrote:А Ява это какой век?

Я недавно общался с Camoes'ом, он, помимо того, что знаменитый онлайн игрок героев 4, ещё и преподает программирование. С радостью возьмется за работу на Яве.
В эпоху своей бурной молодости смотрел на разновидность Явы для программирования мобильников (с целью трудоустройства в сабжевую контору). Фактически, тот же Дельфи. Но да, тормозной, ибо через интерпретатор работает.
User avatar
Accolon
Level 24 Hero
Level 24 Hero
Posts: 2564
Joined: Mon Jul 04, 2005 03:07

Post by Accolon »

10. Богатый и простой редактор карт с возможностью уйти на сложный уровень в тех случаях, где это необходимо (сложный или длинный скрипт, к примеру).
дополню в достаточно важной частности - редактор карт должен уметь импортировать и экспортировать скрипты, написанные любым внешним текстовым редактором (plain текст, txt).
User avatar
CTPAHHuK
Level 23 Hero
Level 23 Hero
Posts: 2002
Joined: Tue Feb 05, 2008 23:12
Location: Ханты-Мансийск
Contact:

Post by CTPAHHuK »

CTPAHHuK wrote:остараюсь к воскресенью довести до конца раздел с описанием показателей армии в боях ИИ.
В Героях все время уходит на организацию Чемпионата мира и участие в зимнем сезоне Портала. Оформления мыслей по концепции окладывается на месяц-два.

Dalai
Есть три новости. Все три хорошие.
Первая хорошая новость, на пару с Camoes'ом проявил желание помочь Экви тим очень крутой игрок - Gustn. Последний Цезарь времен ToH'а. Вторая новость, он не только крутой игрок, но и крутой программист. Третья новость, он ещё и знаком лично с Camoes'ом. Нормальная такая команда. Топовые игроки мирового уровня, программисты, хотят помочь.

Рассказал Gustn'у о идее разработки новой игры, ему понравилось, но больше всего он хочет покапать файлы Героев 4 :)

Может их как-то можно ввести в курс дела?

Ах да. Четвертая новость. Крутой игрок Tyler настоятельно требует разработать новый англоязычный сайт, куда можно будет сообщать о результатах игр, проходящих вне ЧМ. По его мнению, на других сайтах Герои 4 слишком затенены. Нужен конкретный сайт по четверке для репортов и единым форумом.
User avatar
Dalai
Equilibris Core Team
Equilibris Core Team
Posts: 2797
Joined: Sat Apr 02, 2005 17:38
Contact:

Post by Dalai »

Замечательные новости!

У меня тоже есть несколько хороших, но пока не законченных новостей, скорее, заделов (тьфу-тьфу-тьфу :)).

По сайту - сайт проекта устарел морально и физически - это несомненно. Предлагаю открыть отдельную тему.

По "ввести Gustn'a в курс дела" - подергаю всех, кто мог бы помочь.

P.S. Имена-то какие... Прям вспоминается, как трава была зеленее :)
Web-designer wanted. "Once a knight, always a knight, but once a King is once too often!" (c) Sir Bella of Eastmarch
Post Reply