Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум студии Seaward.Ru _ Разработка на Unity. Мини-игры "Пиратики" и т.п. _ ИИ для морского боя

Автор: ALexusB May 20 2009, 21:31

Нужна ваша помошь!

Некоторые знают, а кто-то догадывается, но я не забросил поприще пиратски игр с концами smile.gif
Дело движется, медлено и как обычно ночами, но идет - кубики уже играбельны.

Начитался статей, много думал - понял, что к моменту начала кодинга ИИ кораблей нужно иметь базу знаний.
Помогите ее сделать!

Знания - это калька поведения нас - игроков в бою. Берем за основу бой в КВЛ-ГПК и текстом записываем свои действия.

Начну с себя, как пример, без деталей.

В бою у меня сразу идет
1. анализ состояния:
* сил противника (примерно равны, больше, меньше, сильно больше, сильно меньше).
* направления ветра

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

3. Корректировка стратегии со временем, то есть повтор 1. и смена на 2.

4. Шаги для достижения цели 2.
* перезарядка
* выстрел
* маневрирование
* поднять-опустить паруса
* абордаж
* выкинуть товар

что еще обычно бывает?

И давайте лезть в детали - на что смотрим, когда оцениваем больше-меньше?

Паруса, корпус, команда, типы кораблей?

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

Автор: Dir May 20 2009, 21:47

Цитата(ALexusB @ May 20 2009, 22:31) *

В бою у меня сразу идет
1. анализ состояния:
* сил противника (примерно равны, больше, меньше, сильно больше, сильно меньше).
* направления ветра

*сила ветра
*дистанция до ближайшего противника.

Автор: makarena May 20 2009, 22:24

Для меня:
1.анализ состояния:
* сил противника (примерно равны, больше, меньше, сильно больше, сильно меньше).
* направления ветра

Цель – всех абордировать. После боя уже разбираюсь с призовыми корабликами (хватит ли команды на всех, чтоб доплыть до ближайшего острова).
Использую книппеля и картечь, т.к. ядра и бомбы с собой не таскаю.
Паруса в боевом положении. Маневр.
Часто приходиться защищать захваченный призовой кораблик, кэпу командуешь уплыть, а он прёт прямо под пушки противника, в итоге он или потоплен, а скорей всего захвачен, т.к. команды на нем нету.

Автор: Black Angel May 21 2009, 00:49

1.1 Количество кораблей противника(не важен класс)
1.2 сила ветра
1.3 направление ветра
1.4 дистанция до ближайшего противника
1.5 скорость корабля противника
1.6 каким зарядом заряжены орудия противника
2. Зависит от 1.1:
Если кораблей >=3 то одного на дно и ходу,если меньше то на абардаж всех,за исключение каковы повреждения нанесены мне.
4. Бортовой залп книпелями,спуск парусов,разворот кормой для получения меньших повреждений и кормовой залп,следующий борт.Перезарядка бомбами если >=3,картечью <3.
/*Лирическое отступление:
Морские противники в ВМЛ были намного лучше нежели в последующих версиях игры.Но всем им не хватает одного-нелогичности в своих действиях,т.к.чем будет стрелять и куда поплывёт бот можно элементарно понять.*/
При убегании выкидываю товары по весу,а не по необходимости-жизнь дороже :-) На что смотрим?На паруса конечно же!Неподвижный пративник-мертвый пративник!

Автор: dima12 May 21 2009, 09:34

Оценка противника:
*Эскадра или одиночка
*Оценка сил эскадры/одиночки и моих сил (моей эскадры)

#Если я слаб.
Обстрел книпелями парусов ближайшего противника и дёру, держась ветра + облегчение трюма, если меня доганяют (т.е. моя скорость меньше ближайшего корабля).
#Если я равен по силам или больше.
Обстрел опять же книпелями парусов, разворот, играя скоростью корабля за счёт подъёма, спуска парусов (учитывая нацелены ли на меня заряженные пушки или нет).

Цель такая, чтобы сбить хотя бы 1 мачту, тогда противник менее повротлив и более медлен. После этого принимаюсь за другой корабль. После "обезвреживания" пары самых опасных судов либо топлю, либо абордаж.

*Если в бою проигрываю (не потопил ни одного корабля)+(остаётся ~60% от корпуса и парусов), то пытаюсь удрать. Опять же книпели, используя.

Автор: Джафар May 21 2009, 14:23

Оценка противника:
Оценка : Эскадра/одиночка (класс роляет)
Оценка моих сил: Одиночка

Направление и сила ветра:

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

Если противник равный мне:
я на корвете
Если нападает эскадра из Корвета, брига и военника, ухожу в бейд, когда они выстоенны в ряд, разворчиваюсь, иду на сближение потом начинаю атаковать, преймущественно использую картечь для последующего абордажа, от военника убегаю используя книпелли и бейд, если команды у него мало абордирую

Таскать за собой эскадру не люблю.

Автор: ALexusB May 21 2009, 16:25

Усложним задачу - как бы вы играли против себя?
Вы описываете игру "ас из" (текущую) с "тупым" ИИ компа.
Правильно сказано - он предсказуем.

Речь о построении новой мат модели - не как играть против ИИ "секрет победы", а как играть ИИ против вас самих

На это акцент, плис.

Автор: dima12 May 21 2009, 19:28

Это сложнее.

*Противник равен мне по силам или сильнее.
Оценка уровня моего корабля и противника.

#Если я слабее
1)дёру, пытаясь отсреливаться книпелями по парусам
2)сброс товара из трюмя (если моя скорость меньше ближайшего приследователя)

#Если на равне
1)даю бой, НО
2)держусь дистанции, стараясь её выдерживать, если её длина от А до Б меняется.
3)В сражении использовал бы книпели и бомбы.

*Главное использовать промахи противника
1)повенулся не той стороной
2)опустошил 2 борта подряд
- тогда идём быстрее в атаку при условии попутного ветра. Сделали бортовой залп по нему и вернулись снова назад для удержания дистанции.

PS: Вопрос в браузерке предполается зарядка бортов разным видов снарядов? Тондем книпели + бомбы был бы интересен.
1)Подходим к противнику на близкое расстояние.
2)Обстреливаем бомбами.
3)И пытаемся отойти на безопасное расстояние, попутно стараясь книпелями порвать его паруса в клочья, чтобы сбавить его скорость.

PS2: Для проведения сравнения игры живых людей друг против друга можно использовать режим игры через инет в К3/К3СМ, используя Хамачи.

Цитата
Любое сближение

Но книпели же имеют самую дальную дистанцию обстрела. Если не приближаться на дистанцию, доступную для выстрела, тогда и обстреливать нет смысла. Не долетят.

Автор: Dir May 22 2009, 06:31

Цитата(dima12 @ May 21 2009, 20:28) *

#Если на равне
1)даю бой, НО
2)держусь дистанции, стараясь её выдерживать, если её длина от А до Б меняется.
3)В сражении использовал бы книпели и бомбы.

*Главное использовать промахи противника
1)повенулся не той стороной
2)опустошил 2 борта подряд
- тогда идём быстрее в атаку при условии попутного ветра. Сделали бортовой залп по нему и вернулись снова назад для удержания дистанции.

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

Автор: ALexusB May 22 2009, 08:14

Цитата
PS: Вопрос в браузерке предполается зарядка бортов разным видов снарядов? Тондем книпели + бомбы был бы интересен.

Заряд разный по бортам будет.

Автор: Bers May 22 2009, 11:47

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

Если он (я) слабее, то беру на абордаж. Т.к. он будет извиваться и отстреливаться книппелями, то также придется стрелять ими. Главное нести паруса, тогда победа.
Самая большая ошибка ИИ в бою со мной: стрельба по парусам, когда они убраны и не правильная оценка сил.
Все же самая главная задача для ИИ в бою против мня - это сбить паруса. Это проще всего, и в тоже время ИИ этого не делает.

Для торговцев, логичее было бы, чтоб они чаще пытались уйти, а не догнать меня, когда я ухожу, т.к. чаще эта погоня становится для них последней.

Автор: Dir May 22 2009, 11:54

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

Автор: Джафар May 22 2009, 11:58

Тогда можно будет использовать так называемые "мертвые зоны", там где пушек нет.

Автор: Bers May 22 2009, 12:19

Цитата(Dir @ May 22 2009, 11:54) *

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

Это половина победы или как минимум ничья smile.gif
Как правильно отметил Джафар - это реальная возможность пользоваться мертвыми зонами, а также сближаться во время перезарядки противника, и отходить, не переживая, что он догонит.

Автор: Golden Hind May 22 2009, 14:08

Анализ действий обычно начинается с оценки сил противника:

1. Класс кораблей противника и их расположение. Таким образом я определяю очерёдность столкновения с вражескими кораблями.
2. Выбор первой жертвы из чего определяется какой вид боеприпасов должен быть заряжен в первую очередь - книпеля, картечь или бомбы. Причём первая жертва это не обязательно первый корабль вражеского каравана. Если первый корабль противника по классу значительно превосходит мой, то заряжаю книпелями, чтобы лишить того скорости и манёвренности. Но более одного-двух раз по ниму обычно не стреляю, а перезаряжаю картечью и иду к выбранной жертве, если конечно эта выбранная жертва не скоростной корабль.
3. При атаке естественно учитываю направление и силу ветра, а также стараюсь зайти между двумя кораблями, чтобы обстрелять их одновременно с двух бортов и даже картечью, ибо выбивание команды снижает не только скорость и манёвренность вражеских кораблей, но и скорость зарядки их пушек.
4. После абордирования первой жертвы выбираю вторую жертву, если это позволяет состояние моего корабля - паруса и корпус. В противном случае покидаю поле боя, зарядив пушки книпелями.
5. Если же у меня значительное превосходство в силе корабля, в размере команды и в опыте команды с офицерами, то обычно самые "толстые и вкусные" корабли торговцев оставляю напоследок, чтобы увести их как трофеи с грузом на борту. В этом случае стараюсь в первую очередь потопить корабли охранения бомбами (реже ядрами), предварительно сделав их малоподвижными обстреляв книпелями.

Применяемые боеприпасы во время боя:

1. Чистое абодирование: книпеля - 30%, картечь - 70%.
2. Нормальный бой: бомбы - 30%, книпеля - 30%, картечь - 40%.

Советы по созданию отличного AI вражеcких кораблей:

1. Поведение кораблей охранения и патрульных кораблей во время боя. Пиратские корабли действуют идентично с патрульными кораблями.

Корабли охранения и патрульные корабли не должны гнаться за ГГ до тех пор пока не собъют его паруса до 66%. А для этого поведение подобных кораблей должно быть таким:

а) зарядка книпелями (реже ядрами);
б) выход на дистанцию огня в 2/3 от возможного обстрела книпелями (реже ядрами);
в) разворот к противнику бортом с поворотами на другой борт;
г) после уничтожения парусов противника погоня;
д) выход на дистанцию огня в 2/3 от возможного обстрела бомбами (для кораблей охранения) или картечью (для патрульных кораблей)
е) потопление противника кораблями охpанения или его абордирование патрульными кораблями

2. Поведение для малоподвижных торговых кораблей во время боя. Cкоростные корабли стараются уйти:

а) зарядка ядрами;
б) выход на дистанцию огня в 2/3 от возможного обстрела ядрами (реже книпелями);
в) разворот к противнику бортом с поворотами на другой борт;
г) при приближении противника перезарядка на картечь (реже бомбами)
д) выход на дистанцию огня в 2/3 от возможного обстрела картечью (реже бомбами);
е) потопление противника бомбами, когда у противника состав команды падает до 33%
ж) погони нет, только перезарядка с картечи, на бомбы, книпеля и в конце на ядра

Автор: Rаvеn May 22 2009, 15:24

Проще всего рассмотреть тактику боя на примере, когда вы и соперник равны по силам, либо уступаете ему. Допустим, что по вооружению, команде и скорости примерно равны.
Прежде всего, конечно же, оцениваем силу и направление ветра, тип парусов косые или прямый, - это немаловажно.
1.В самом начале боя главное, как было уже сказано, сохранить свои паруса и нанести достаточный урон парусам противника. Поэтому пока паруса у обеих сторон целые и скорость равна, стараемся занимать в бою такую позицую относительно противника, чтобы ветер дул от него в нашу сторону. Это может показаться глупым, потому как дает преимущество противнику в случае, если он решит неожиданно сблизиться. Однако если он думает, как мы, то не велика вероятность, что он бросится на абордаж пока силы наших команд равны. Кроме того, когда ветер дует от противника, то мы задаем дистанцию а не он, ведь на данный момент боя нужно держаться на расстоянии. Для атак используем книпели, стараемся бить, когда противник перезаряжается и стоит поперек линии нашего огня, т.е в борт, так больше шансов сломать больше мачт. Стрелять в корму или нос, пытаясь порвать паруса, бесполезно, если ИИ думает как мы, то его паруса в боевом положении (сумеет их сберечь).
Когда он производит залп, подставляем корму, + если выдержали позицую, то в момент его атаки увеличиваем дистанцию уходя по ветру (противник сам будет сокращать дистанцию). Таким образом действуем, пока скорость и маневренность врага не упадет.
2.Дальше в зависимости от целей, сначала можно пройтись по противнику бомбами (имеют приличную дальность и наносят наибольший урон команде после картечи, ну может пару пушек удасться выбить + еще потеря скорости от дыр в корпусе) или сразу зарядившись картечью, сократить дистанцию и пристроится у кормы. Пытатся не попадать под бортовой залп и выбивать команду. При этом надо помнить, что целью почти поверженного противника, теперь не имеющего шансов на побег, становится абордаж. Он наверняка, тоже будет атаковать картечью. Так что у кормы удержаться немаловажно.

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

Если сами остались без мачты или не сберегли паруса.
Прежде всего,конечно же, пытаемся то же самое сделать с противником, используем книпели. Но если враг идет на сближение, то заряжаем картечь, пытаемся подставлять под залпы корму или нос и по возможности атаковать с борта. Тем самым сохраняя свою команду и выбивая команду противника.

У меня был случай, по-моему, на ГПК уже, когда в одном из боев невыгодных мне по числу врагов мой корабль (фрегат) остался без мачт и пороха 1 на 1 против БШ, который был почти в идеальном состоянии, правда капитан мазила. А у меня было преимущество в команде и ветер дул от меня в сторону НПС. БШ держался на дистанции и атаковал бомбами. Мне кроме как встать носом к противнику, чтобы уменьшить площадь поражаемого снарядами корабля и ждать, ничего не оставалось (пороха нет). В итоге простоял так минут 40 реального времени, потом БШ перестал стреять и просто уплыл по ветру 1.gif Не знаю, то ли ему надоело, то ли у него порох кончился. Но он уплыл.
Почему я не начал бой снова, когда все так повернулось, а ждал так долго? А все потому, что у меня команды было раза в 1.5 больше и статус "морсие волки". Я был на 100% уверен, что если случится абордаж, то выиграю я. И поэтому надеялся, что БШ попытается взять на абордаж, а я до того времени не потеряю превосходство в команде. Да и сама по себе ситуация интересная оказалась, как и развязка в итоге.
Это был единственный раз на моей практике, когда кораблик НПС отступил сам, имея такое превосходство.

Автор: mr.Li May 22 2009, 21:08

Так, ну что же, я играл бы против себя так:
1 Осторожное сближение, форма - уход и позволение себя нагнать.
2 Лавирование, позволяющее открывать бортовые залпы ядрами и снижение скорости для уменьшения дистанции.
3 при вхождении корабля псевдоменя в зону поражения книппелей, открыть огонь по парусам.
4 при падении первой псевдомоей мачты - резкий разворот в сторону корабля, жесткий обстрел книппелями.
5 когда у псевдомоего корабля останется не больше 10 хп парусов, я буду уже в зоне поражения картечью. Заняв удобную позицию, а именно - перед-бок псевдомоего корабля - мертвая зона, развернуться бортом и вести огонь картечью.
6 дать бой на палубе или утопить бомбардировками.

Автор: Black Angel May 22 2009, 23:20

Цитата(ALexusB @ May 21 2009, 17:25) *

Усложним задачу - как бы вы играли против себя?
Вы описываете игру "ас из" (текущую) с "тупым" ИИ компа.
Правильно сказано - он предсказуем.

Речь о построении новой мат модели - не как играть против ИИ "секрет победы", а как играть ИИ против вас самих

На это акцент, плис.

Задача не cложная надо бpatь наши же пpиемы и иcпользоваtь их пpоtив наc.Пpоще вcего эtо tyпое подpожание.Каких бы не cделали ИИ человек бyдеt вcё pавно yмнее пpatивника.Человек мыcлиt логичеcки и неt,a машина не yмееt пока.
Cкоpee вceго любой игpок caм пpоtив ceбя не ctaл бы бица,а yбегал бы taк как оctaлиcь бы оба без паpycов и не cмогли бы биtьcя дpyгими боепpипаcами tak kak оба находилиcь бы далеко-tолько книпели даctaвали бы.
2мr.Li
A teпеpь пpeдctaвь чtо tвой пpatивник делаеt tоже caмое.Как tогда бы tы делал?Воt чtо инtepecyet ALexusB'а.

Автор: ALexusB May 22 2009, 23:28

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

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

Автор: Black Angel May 22 2009, 23:46

2ALexuSB
Надо чtобы наpод pаcкaзал как он боpetца c 'tyпыми' а поtом взяtь их меtоды и оtдаtь ИИ.Повtоpив tak неcколько paз,оtдавая в наpод для tecta.Tak пpоще;-)

Автор: ALexusB May 23 2009, 09:20

любой ИИ (даже тупой) нужно сделать, делать его сразу тупым - бред.
Любой регулятор сложности (скилы, ранги) - всегда идут на понижение ИИ, а не наоборот, как логично думается.
Есть эталонный ИИ, умнее он не будет, глепее сделать можно - спецом чтоб ошибался.
Описание нужно "против себя" - тк ИИ с людьми играть

Автор: navy May 23 2009, 13:30

Цитата
Любой регулятор сложности (скилы, ранги) - всегда идут на понижение ИИ, а не наоборот, как логично думается.

Ага, для примера, вы играетесь с ПГГ на коэффициенте 0.3 smile.gif А срисовывал я их рост с себя

Автор: Golden Hind May 23 2009, 19:56

Цитата(ALexusB @ May 23 2009, 00:28) *

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

Ну так а для чего тогда уровни сложности? cool.gif
Кстати, именно по караванам торговцев с сопровождением необходима для ИИ торговцев дать следующую формулу: Держаться кораблей охранения. И всё. А то торговцы как бы сами по себе, а их охраники тоже сами по себе.

Автор: mr.Li May 23 2009, 20:18

Хочу заявить, что это не единственная моя тактика.

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

Автор: Kamil May 24 2009, 19:16

Гм... Чтобы я делал играя против себя - нападать только при большом преимуществе в классе и количестве кораблей (допустим против корвета паре бригов и шхуне делать нечего), в начале игры с равным игроком справится еще можно, но потом ловить нечего. Пушки по умолчанию оставить заряженными книпелями, и обязательно сделать залп ими, а не пытаться постоянно перезарядится. Ну и главное если ИИ научат действовать командно то будет очень интересно и хорошо.

Автор: Black Angel May 24 2009, 23:37

ALexusB вы меня не поняли.Я имел в видy 'tyпые' эtо te чtо на ypовне невозможный.
Для новых ИИ на лёгком ypовне можно взяtь ceчашний невозможный.Пyctь игpоки pacпишyt kak они c ними боpяtcя.И на ypовнях выше бpatь taktики игpakов и их иcпользоваtь пpоtив caмих игpаков.

Автор: Bucaneer May 25 2009, 14:51

Для эталонного ИИ вполне можно взять существующий для Невозможного. Поскольку играл только на этом уровне, сравнить с другими уровнями не могу, но обзывать его тупым dry.gif я бы не стал. Во многих случаях, там где ИИ нацелен на атаку ( ОЗГи, патрули, каратели ), он ведет себя вполне адекватно (особенно, когда в эскадре есть скоростная мелочь типа люгеров), т.е. старается в первую очередь лишить противника маневра, а далее - утопить или абордировать, если нужно взять ГГ в плен smile.gif. Меня почему-то на абордаж никогда не брали smile.gif
Другой момент - торговые караваны. Торговцы разбегаются, охрана ковыряет в носу, делай что хочешь. С точки зрения командира конвоя - торговцы должны сохранять боевой порядок и вести стрельбу только на максимальное поврежнение атакующего (бомбы - ядра) всегда. Корабли охранения должны быть нацелены на немедленную атаку и иметь пушки заряженые книппелями, а трюма пустые smile.gif . Задача - лишить нападаюшего маневра, связать боем и дать каравану уйти. Как все это смешать в одном флаконе, я не знаю. Причем охрана не должна сдаваться на милость вообще dry.gif .
При таком раскладе еще подумаешь, стоит ли в одиночку нападать на конвой. Отсюда другая задача - компаньоны должны выполнять приказы ГГ :)правильно.
Тактика у всех одна - лишить противника маневра, отсюда появляется шанс победить. Как для атакующего, так и для обороняющегося. А чем стрелять и когда, зависит от типа и калибра орудий..ИМХО

Автор: Denis May 26 2009, 11:02

В данной задаче необходимо посмотреть на ситуацию с ИИ не со стороны игрока, а со стороны ИИ, прописав ИИ строго оговоренные (уставные) действия. Только в этом случае, если мы не ставим задачу создания самообучающегося ИИ, действия ИИ будут сбалансированно правильными.

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

Типичные ситуации встреч в море – это:
1. Конвоирование торговых кораблей.
2. Плавание торгового корабля в составе каравана
3. Патрулирование.
4. Нападение.
5. Одиночное плавание.

Изначальные задачи, стоящие перед ИИ (приоритеты) выходят из описанных выше ситуаций. Это:
1. Защита каравана / конвоируемого судна и доставка его к пункту назначения.
2. Держать строй и не отставать от других кораблей, что бы не стать добычей атакующей стороны, минимизировать потери и добраться до пункта назначения.
3. Поиск вражеских кораблей и охрана объектов на строго ограниченной территории.
4. Целенаправленный поиск вражеских кораблей, а также: потенциальных призов; нападение на конвои и торговые караваны; нападение на прибрежные поселения и города.
5. Передвижение из пункта А в пункт Б.

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

Оценка превосходства сторон проводиться сравнением: соотношение количества кораблей с обеих сторон; количество орудий и их калибр; скорость кораблей с обеих сторон, причем для каравана эта формула вычисляется по принципу «скорость передвижения каравана равна скорости самого тихоходного судна в нем»; количество солдат на борту, готовых участвовать в абордаже или его отражении.

Вариабельность. Это то, что позволит разнообразить типичные ситуации. Сюда входит: фактор внезапности; погодные условия; диспозиция сторон относительно друг-друга; время суток; мораль и ментальность, предустановленная в национальных отличиях с учетом коэффициента торговец/военный/пират; состояние флотилии; наличие третей стороны в столкновении.

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

1. Национальная принадлежность.
2. Намерения ГГ.
3. Состояние флота.
4. Соотношение сторон.
5. Поведение ГГ.

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

Автор: sergo-kon May 26 2009, 21:38

В большинстве случаев на низких уровнях развития ГГ иду в бурую на абордаж, будучи заряженым картечью. Один, максимум два залпа при максимальном, приабордажном сближении, что бы прорядить экипаж противника.
Таким образом будучи одиноким волком на судне четвёртого класса, если в эскадре противника три судна, до второго класса включительно, все абордируются и топятся. Если в эскадре четыре и более кораблей, смотрю соотношение количества экипажа, каждого отдельно взятого судна, выбираю самый ближайший шип и двигаясь в его сторону, обстреливаю книпелями самый крупный, далее по возможности маневрирую и сближаюсь с самым наглым из быстроходных(т.к. они обычно тоже прут в бурую учитывая численное приимущество своего экипажа или орудий). После абордажа смотрю соотношение сил с другими членами вражеской эскадры.
Если чувствую что на пролом хватает сил, иду на следующий абордаж с ближайшим. Если нет то пытаюсь отдалиться и вести обстрел книпелями по любому кто приближается больше других. Разумеется так же стараюсь беречь собственные паруса и по возможности убирать их если кто то из противников поварачивается бортом с явным намерением дать залп.
Прилично попортив паруса судам противника, если ещё позволяет состояние моего судна, опять иду на ближайшего. Разумеется стараюсь следить чем он заряжен и соответственно либо виляние, либо атакующий рывок на сближение с последующим абордажем.
Пару раз такая тактика срабатывала против эскадры из пяти шипов, где были: один военный корабль, два тяжолых галеона, два корвета и бриг или два брига и корвет. У меня же был пузатый и заточеный галеон с перегрузом экипажа в количестве 461 человек. Всех топил и шол на следующего.
В некоторых случаях такая тактика не оправдывалась т.к. состояние судна не позволяло эфективно вести бой маневрируя между врагом.
Получается так.
1. Опредиление задачи. (уничтожение или захват)
2. Оценка соотношения сил.(число судов, численность экипажей на них, маневренасть вр.шипов)
3. Оценка навыка капитана на вр.шипе, точность противника, при стрельбе с дистанции ядер, по отношению с моим навыком.
4. Выбор. Атака или ал бе бак. smile.gif
5. Если атака, книпелируем ( если такая возможность предоставляется)
А). При высокой точности стрельбы противника, максимально возможное по скорости сближение и абордаж с последующим потоплением или захватом, если есть офицеры.
Б). При не высокой точности, максимально возможное по скорости сближение с одним-двумя залпами картечью, с последующим захватом или потоплением.
6). Повторная оценка соотношения сил.(состояние судов, количество экипажей)
7). Выбор. Атака или ал бе бак. smile.gif
Схема простая как топор. 1.gif

Автор: Ван дер Декен May 27 2009, 12:22

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

Автор: Mitrich May 28 2009, 06:35

Вот и пришло время заняться многострадальным ИИ. Приятно, черт меня подери!
Однако для того, чтобы потрудиться более плодотворно, хотелось бы уточнить задачу, т.е. вопросы, поставленные Алексусом, поскольку я не вполне представляю, что входит в зону ответственности этого самого ИИ. Итак,
1. Вопросы по сбору статистики, поставленные разработчиком, касаются только собственно морского боя, т.е. поведение противников сразу после встречи в море.
Вопрос: это все, за что отвечает ИИ? Если это так, то в предыдущих постах уже все сказано. Порядок действий одинаков, различия лишь в поведении конкретных игроков.

2. Если же ИИ отвечает за более широкую область игры (что подтверждает пост Denis'а), то просьба уточнить пределы этой области, а именно:
а) регулирует ли ИИ поведение кораблей всех наций на глобальной карте?
б) учитывает ли ИИ поведение кораблей различного назначения при выполнении ими характерных для них задач (пост Denis'а составлен так, что учитывает, а я в этом не уверен)?
в) входит ли в ИИ мод с флагами или это отдельная песня?
г) какие имеются ограничения, преодолеть которые (пусть в настоящее время) невозможно?

Далее хотелось бы знать - стоит задача создания "нормального" играбельного ИИ или модернизации (шлифовки) только морской боевки?

Автор: ALexusB May 28 2009, 12:04

Я понял, что у игроков (не программистов) есть устойчивое заблуждение в пониманиие ИИ в играх.
Для начала это вообще не ИИ smile.gif
Это ЭС (экспертныке системы) - они не делают новых знаний, могут не иметь памяти и тп
Это калька с эксперта (разработчика или дизайнера). Набор условий и формул вычисления сравниваемых коэффициентов.

Противник компьютерный -это не человек, у него нет единого интеллекта на все. Это куча процедур.
Тут (в теме) речь идет о мор бое - че там на карте - это пофиг совершенно - это другой ИИ. Как и в абордаже.
Они тоже нужены, но не сейчас.
Связь этих ИИ есть - в передачи стратегии поведения - если преследовал на карте, то агрессия, если убегал, то бегство. Вот и вся связь.

В ММО ИИ тем более не человек, это как Остап Бендер - одновременный шахматный турнир. Это тогда скорее паук.

Еще есть ИИ мира - его обсчет периодически и выстраивания переменных.

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

так вот - игроки играют - и пусть играют дальше, они верят в мир игры - а реально там, если капнуть - железные подпорки и никакой воды нет smile.gif

Не нужно туда лазить! smile.gif
"Ах, обмануть меня не трудно, я сам обманываться рад"(С)<АС Пушкин>

Автор: Denis May 28 2009, 20:45

Mitrich
В своем посте я попытался сделать кальку морского боя, в которой определенной ситуации соответствует определенная задача, т.е., если ситуации в море условно соответствуют нынешним игровым, то задачи, которые я расписал для этих ситуаций, относятся к "идеальным" (шаблонным) задачам, которые, как мне кажется, должны были бы быть в разрабатываемой модели.

Именно поэтому я предлагаю посмотреть на ситуацию не со стороны того, как воюет игрок, а со стороны того как должен воевать ИИ. Вопрос выбора боеприпаса, например, безусловно важен, но это скорее третьестепенная задача для данного вопроса. Главное - модель поведения, на которую и будет надстроены паруса и ядра. Здесь я абсолютно согласен с ALexusB, что необходимо выстраивать те самые подпорки, которые будут держать картинку именуемую ИИ.

ALexusB
У меня есть вопрос, возможно ли в данной моделе прописать разные модели поведения купцам, кораблям охранения, охотникам и пр., с помощью которых можно было бы и решить типовые задачи?

Автор: ALexusB May 28 2009, 21:38

Denis, да, возможно.
Только дело не в типе, а в стратегии на данный момент, "задаче" по-твоему.

Те же ОЗГи имеют цель - преследовать, но в процессе боя переключатся на убегать smile.gif
тк
"3. Корректировка стратегии со временем, то есть повтор 1. и смена на 2."

А вообще, в играх есть одна заповедь про ИИ. Он не должен выиграть у игрока! Он должен ему красиво проиграть!

Только в ММО свои законы, там всегда кто-то проиграет, если это ПвП, там ИИ может просто и не быть.

Автор: Mitrich May 29 2009, 06:25

ALexusB
Отвечу за себя. У меня нет никаких "заблуждений в понимании ИИ" по той причине, что у меня полностью отсутствует это самое "понимание ИИ". Данное обстоятельство меня очень даже устраивает, потому что я действительно "обманываться рад", и очень надеюсь, что никогда не увижу этих "подпорок". В отличие от разработчиков - Game для меня не работа, а ИГРА.
Из твоего поста я понял, что в данной теме речь идет только о морском бое. Морской бой - это "набор условий и коэф-фициентов". Очень хорошо, предельно ясно. Из последующих постов я уяснил, что можно прописать "правила" поведения кораблям различного назначения. Замечательно! Из этого я делаю вывод: для того, чтобы помочь тебе я должен с точки зрения геймера описать свое видение поведения кораблей компьютера, т.е. описать "условия", а для того, чтобы ИИ красиво проигрывал, ты уже самостоятельно расставишь коэффициенты. Поправь меня, если я ошибаюсь в чем-то.

Denis
Твой подход совершенно правомерен. Лично меня еще с ВМЛовской жизни всегда раздражало то, что все абсолютно корабли противника действуют совершенно одинаково, без учета решаемых задач. Люгеры прут на линкоры, компаньоны спасаясь уплывают прямо под орудия враждебных фортов и т.д. Справедливости ради следует признать, что в последних играх ИИ существенно усовершенствовался, но проблема с привязкой к конкретным задачам не решена. Ну вот, настала пора ее решать. Только, чтобы наши дискуссии в данной теме имели смысл, надо договориться о словах (только представь, каково мне было узнать, что ИИ - это вовсе не ИИ, а ЭС).

Излагаю свою точку зрения.
1) Задачи - у каждой категории участника (со стороны компа) игры своя, каждый геймер может видеть их по-своему. Как пример может служить перечень задач ГГ-я, как это понимаю я (см.ниже).
2) Цели - основные и промежуточные, достижение которых ведет к решению задачи (иногда они совпадают, я, если честно, зачастую их путаю).
3) Способы достижения целей (решения задачи) - потопление, абордаж и бегство. Каждому из них присущ определенный набор (порядок) действий.
4) Действия - стрельба различными боеприпасами, маневр, паруса и т.д.
Поправьте, пожалуйста, если чего не так.

Итак, предлагаю немного систематизировать нашу дискуссию и далее излагать свое видение поведения ИИ (или чего там есть на самом деле) в морском бою применительно к следующим категориям участников игры:
1. Пираты
2. ОЗГи
3. Военные корабли
4. Купцы

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

Пожалуй, на сегодня все. Если я слишком навертел проблему в плане возможности воплотить все это в жизнь, то остановите меня (жду реакции Алексуса). Если чего упустил или загнул лишнего – поправьте. Свое видение изложу чуть позже – сейчас просто нет времени.

Автор: Denis May 29 2009, 08:27

Mitrich
Ты прав в том, что надо определиться с терминологией, без этого никакой научности нет 1.gif
Другой вопрос, а нужно ли, что бы ИИ учитывал то, что собирается делать ГГ? Как то не логично. Зачем, к примеру, золотому флоту знать, что ГГ перевозит пасажира? blink.gif

На мой взгляд, более логично выглядят "уставные отношения" или же набор формул по которым происходят события. Пример такой формулы:

1. Купец-одиночка встретив корабль игрока в море по формуле "свой-чужой" (оценка принадлежности к нации) должен опознать ГГ и:

если ГГ "свой" - плыть спокойно дальше
если ГГ "чужой" то:
а) попытаться сбежать
б) если сбежать не получается, то оценив соотношение сил:
- сдаться;
- сражаться.

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

Автор: ALexusB May 29 2009, 08:39

Цитата
Поправь меня, если я ошибаюсь в чем-то.

Да, все так
Цитата
Если я слишком навертел проблему в плане возможности воплотить все это в жизнь, то остановите меня (жду реакции Алексуса).

А тут остановлю.

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

Комп имеет все теже механизмы, что и игрок. Потому и аналогия с ГГ.

Стык шаблонов - это как запись макроса, проигрывание шаблонов подряд и есть стратегия (поведение типажа)
Пример,
- маневрируем на сближение (тоже задача, не ясно как делать - учитывать векропы курсов, ветра и тп)
- палить книппелями по парусам
- при близкой дистанции (заранее) заряд картечи (либо 1 борт картечью, а другим книпели)
- залп картечью
- сближение
- абордаж


Своими словами уже расписали, инфы достаточно - давайте вводить стратегии и шаблоны, а потом последовательность шаблонов внутри стратегии.
Чтоб в итоге я понял список задач уже для кода -оценил в часах, ужаснулся и забил болт smile.gif

Автор: Denis May 29 2009, 09:26

Цитата
Своими словами уже расписали, инфы достаточно - давайте вводить стратегии и шаблоны, а потом последовательность шаблонов внутри стратегии. Чтоб в итоге я понял список задач уже для кода -оценил в часах, ужаснулся и забил болт


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

Автор: ALexusB May 29 2009, 09:47

так выше дал

Идет сперва перечень шаблонов (кратное название- описание)
Потом список стратегий (тут последовательность шаблонов)

Потом список ролей и присущих им стратегий, с условиями выбора одной из них в один момент времени

Потом уже детализация шаблонов на состовляющие реализации (типа - маневр разворота - это последовательность команд лево руля)

Итого списки
шаблоны
стратегии
типажи

Автор: sergo-kon May 30 2009, 13:32

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


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

Автор: Mitrich May 30 2009, 16:00

2Denis
Тут ты прав, «золотому флоту» незачем знать, что именно везет ГГ-й. Но я не зря попытался расписать участников игры (со стороны компа) по типам. Кстати сказать, «золотой конвой» не участник, это совокупность участников - купцов и охраны. Отличается от другого конвоя только своим составом, ну может более жесткой задачей по охране. Да, им это знать ни к чему. А пирату? Нужно ему знать, чем он может поживиться, чтобы принять решение на абордаж? Мне кажется нужно. Иными словами, я подошел к данному вопросу в более широком смысле, нежели просто частный случай охраны (также купец, свободный капитан и т.д.). Так что тут, я считаю, все правильно. Хотя и не бесспорно.

2 ALexusB
Ну вот, помаленьку приходим к пониманию существа вопроса. Ты только запасись терпением, поскольку для дилетантов программирования, таких как я, далеко не все вещи очевидны. Еще немало глупостей придется спросить.
Относительно необязательности привязки поведения типажей (если я тебя правильно пронял) к задачам ГГ-я я не вполне согласен, но сейчас спорить не буду. Уверен, что к этому мы еще вернемся. Еще вернемся и на тот самый стык локаций «моря» и «глобальной карты».

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

Спокойное плавание.
Типаж встречается с ГГ-ем. У противников по одному кораблю. ГГ-й агрессивности не проявляет, но нет никакой гарантии того, что он не сменит флаг и не начнет атаку. Посему
1) анализ проводится по полной схеме:
- ветер, его сила и направление
- состояние своего корабля (целостность корпуса, парусного вооружения и орудий, комплектность команды)
- состояние корабля ГГ-я противника по тем же позициям
- соотношение классов кораблей, их огневой мощи (калибр и количество орудий и, как следствие, скорость их перезарядки), ходовых качеств и преимуществ (скорости, скорости хода в бейдевинд, маневренность), сравнительная численность команды
- дистанция до корабля возможного противника (дистанция расхождения)
- характеристики капитана, если такое возможно
2) заряд орудий ядрами, как универасального боеприпаса, обладающего наибольшей дальностью стрельбы
3) маневр с целью расхождение с ГГ-ем на предельной дистанции стрельбы (возможно на запредельной дистанции стрельбы орудий корабля ГГ-я).
Если у ГГ-я несколько кораблей, то по этим позициям делается анализ группы кораблей (эскадры).
В таком состоянии корабли расходятся.

Дальнейшее будет попозже, если это описание удовлетворит, прежде всего, Алекуса.

Автор: ALexusB May 30 2009, 21:49

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

Погоды не будет визуально - влияение ее в виде коэфф высоты волны и ветра, а они уж влияют по законам физики-игры.

2Mitrich
Да, все так, пока делаем поверхностные сценарии - потом уже по реализации будет разбито на отдельные блоки, если что-то сделать не получится, будет заглушка или отказ от вида стратегии.

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

Автор: delfin_ May 31 2009, 00:16

Против себя, играл бы так:
Если 1х1 - снести мачты. Если и выйграю бой - я не хочу доплывать до острова за несколько недели, а потом еще платить за ремонт. Если на линейнике сбили первые 2 мачты - лоадинг.

Если >2х1 - тут всеми дружно надо стремится на абордаж - попутно обрабатывая меня картечью. Корабль с наибольшем количеством команды должен остатся "напоследок". После абордажей численость моей команды сильно понижется, т.ч. либо я проиграю последний абордаж, либо не смогу отсреливатся - и меня можно будет спокойно потопить.

Если меня больше и я сильнее - нужно уплывать отстреливаясь книпелями (очень я это дело не люблю).

Прмечание. Основную работу в бою делаю я сам, а не мои напарники. Чаще всего они служат чтобы принять на себя огонь, и повреждения. По этому - все внимание на флагмэновский корабль. Отношение к остальным должно быть "держать дистанцию" - не более того.

Автор: Denis May 31 2009, 12:03

Тут есть важный момент для правильной оценки ситуации и соблюдения видимости исторических реалий. Любой корабль есть определенная материальная ценность + то что находиться на нем является добычей. Соответственно зачастую приоритетной задачей является захват корабля. Для пирата - это задача №1, иначе зачем он выходит в море? Другой вопрос - грамотная оценка ситуации, т.е определенная модель поведения в бою без учета торговец/пират/военный:
1. Агрессивное поведение. Силы нападающего больше или равны: приоритет в тактике - обездвиживание и захват судна (книпель - картечь).
2. Сбалансированно агрессивное поведение. Силы нападающего равны или меньше: удержание на расстоянии, маневрирование с целью уровнять шансы или добиться преимущества в виде приведения корабля к ветру, тактической ошибки противника, поломки (выведения из строя) мачты, руля и пр. (ядра - книпеля).
3. Сбалансировано осторожное поведение. Силы нападающего меньше: сбежать (оторваться от преследования) (ядра - книпеля), если не получилось - принять бой и стараться нанести кораблю максимальный вред - потопить (ядра - бомбы). Ближний бой - бомбы - картечь.
4. Осторожное/трусливое поведение. Силы нападающего изначально меньше (торговец): сбежать, стараясь облегчить трюм (не отстреливаться!). Догнали - сдаться.

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

Автор: delfin_ May 31 2009, 14:34

Цитата
Приоритет в уничтожении корабля как материальной ценности

Ну или в том случае если корабль особой ценности не предстовляет(маленкий класс корабля).

Цитата
обездвиживание и захват судна (книпель - картечь).

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

Автор: Mitrich May 31 2009, 14:52

2ALexusB
"Траектория движения". Я об этом не думал, поскольку подходил немного с другой точки зрения. А что если рассматривать это как выбор позиции? В действующем ИИ уже кое-что есть. Например, он способен произвести замер дистанции до враждебного корабля или цели (стрельба ведется как правило издалека, корабль спускает паруса при опасном сближении с другим кораблем и др.). Если использовать данное обстоятельство + учесть ветер и свойства (возможности) противника, то можно определить ближайшую точку, куда следует двигаться. Может и не нужно формировать траекторию движения как нечто глобальное, тем более, что обстановка при встрече с противником меняется весьма динамично.
Относительно погоды у меня только один "пунктик" - при встрече с противником во время шторма он не прекращается до полной победы, что часто приводит к катострофическим повреждениям собственного корабля силами природы. Я, как правило, в таких ситуациях применяю релоад, как это ни противно.

2Denis
Ну вот. Для пирата абордаж - задача №1. Ты прав. Только хочется уточнить. Если пират знает, что ты ничего не везешь, то станет ли он рисковать и абордировать тебя? Думается нет.
Еще уточнение. Бой, абордаж, бегство и др. - это только способ достижения цели, решения "уставной" задачи, но никак не сама задача. Это может начаться (или не начаться) в результате анализа данных (возможно и по твоей схеме). Задачи различны и присущи разным типажам. Захват корабля, на мой взгляд, вряд ли может быть присуща какому-либу типажу (разве что ПГГ, если это возможно реализовать), и, во всяком случае для данной игры, является лишней. В реальной жизни и для ГГ-я эта задача безусловно существует, но в этой теме обсуждается ИИ.

Продолжаю описание шаблонов (излагаю свое мнение).
Удержание на определенной дистанции.
Данный шаблон может быть использован для решения многих задач и присущ многим типажам. Цель - удержать противника на заранее определенной дистанции от охраняемого объекта (корабль, береговая линия). Цели абордажа и преследования для уничтожения нет. Уничтожение корабля противника не является приоритетной целью, но она имеется в виду при проявлении противником агрессивности или повышенной активности. Позиция выбирается между противником и охраняемым объектом (Алексус несколько смутил меня своей "траекторией").
Действия. Обстрел противника книпелями, ядрами и бомбами (исходя из дальности стрельбы) с целью снижения его характеристик скорости и маневра, нанесения максимального урона с целью заставить противника выйти из боя и удалиться. Если противник уходит, то он не преследуется. Если упорствует - то уничтожается. Как мне кажется, действия по обстрелу в теперешнеи ИИ вполне приемлемы, разве что добавится возможность заряда разными боеприпасами.
Здесь, я думаю, анализ большой роли не играет, т.к. решаемые таким образом задачи предусматривают их решение любой ценой.
----------------------------------------------------------------------------------------------------
Я тут поиграл, подумал и пришел к некоторым умозаключениям, несколько не совпадающим с заданными вопросами. Остановка общения в данной теме лишний раз подтвердило мои догадки.
В чем, собственно, заключается "тупизм" ИИ? Что конкретно нас (или большинство из нас) не устраивает? Ведь никогда речь не шла о том, когда и каким зарядом ведется огонь, хотя модернизация ИИ в данном направлении, скорее всего, также нужна. Но, прав Алексус, инфы по данному вопросу выложено предостаточно. Основные же претензии к ИИ сводились к неадекватности поведения кораблей противника, полного его несоответствия "уставным" задачам, нелогичности действий при выполнении команд компаньонами и др. Возможно я торотплюсь и вторгаюсь не в ту область, хотелось бы узнать мнение Алексуса.

Однако, продолжу описывать шаблоны.
Абордаж
Прежде всего этот вид боя присущ пиратам и ОЗГам. Остальным только по квестам. Для пиратов важно, чтобы ГГ-й что-либо перевозил, тогда обордируется его корабль, или сопровождал купца (купцов), тогда абордируется купец, а в отношении ГГ-я исполняется шаблон "удержание на дистанции" или "потопление". ОЗГи, само собой, должны стремитьсяк захвату ГГ-я с целью получения максимальной выгоды. (Кстати сказать, реализация такого сценария могло бы обогатить игру новыми направлениями ее развития, например, пленение ГГ-я, о чем ранее говорилось не раз).
Что анализируется: дистанция до противника, направление ветра, соотношение численности команды, соотношение характеристик корабля скорости и маневренности, мораль команды. При анализе учитываются статы капитана авторитет и морские навыки. Для успешного абордажа вначале необходимо привести указанные показатели к такому виду, чтобы у пирата (ОЗГа) было преимущество. Используются заряды книпели и картечь. Перед залпом противника (благо ИИ может это определить по умолчанию) нужно убирать паруса, чтобы сохранить свои возможности в скорости и маневре. Маневрирование с целью выхода в более благоприятную позицию с учетом направления ветра. Вот, пожалуй, и все.

Потопление
Задача присуща всем типажам, когда не удается решить задачи мирного расхождения, удержания на дистанции или абордажа. Используются заряды ядра (в основном), на близком расстоянии бомбы. Книпели только в случае необходимости кардинально снизить характеристику противника "маневренность".

Бегство
Для пирата это задача №2. Кроме пиратов этот шаблон используется купцами, ОЗГами и военными кораблями при одиночном плавании или патрулировании в водах враждебной нации. Не применяется военными кораблями при сопровождении конвоя купцов и патрулировании своих прибрежных вод. Используются книпели и ядра, если книпелями достать невозможно или какой-нибудь шустрый, но маленький кораблик приближается на опасное расстояние. Сдача в плен, на мой взгляд, решена неплохо - в момент абордажа.
Некоторые особенности. На мой взгляд, тут особую роль играеют возможности корабля ходить в бейдевинд, следовательно анализ направления ветра играет основную роль. Разумеется, нужно учитывать позиции объектов (кораблей и форта), могущих нанести ущерб. Сброс товра (груза) производится лишь в том случае, если огневое воздействие на противника не привело к желаемому результату.

Последнее. Стратегии (смены шаблонов по типажам).
Пираты. Если ГГ-й что-либо перевозит, то вначале он абордируется. Если в результате противодействия ГГ-я абордаж становится невозможным, то он топится. Если же обстановка меняется таким образом, что скорее можно самому погибнуть, чем утопить ГГ-я, то бежим. Получается "абордаж"-"потопление"-"бегство". Та же схема и для ОЗГов.
Если ГГ-й ничего не везет и соотношение сил позволяет, то сразу применяется "потопление", поскольку с точки зрения пиратов этого козла (ГГ-я), который берет задания у губеров и кошмарит весь пиратский бизнес в прибрежных водах просто святое дело утопить и как можно скорее. Однако может не получиться и тогда бежим. Получается "потопление"-"бегство".
Если ГГ-й сопровождает купца, то при наличии достаточных сил ГГ-й связывается боем, а купец абордируется. После абордажа пират сматывается. Получается "удержание на дистанции"-"абордаж"-"бегство". Потопление ГГ-я не рассматривается, потому что это приводит к геймоверу.

К сожалению, больше нет возможности продолжить описание стратегий. Если заинтересовало (в первую очередь Алексуса), то чуток позже.

Автор: Oceanlab Jun 14 2009, 01:47

В дебри размышлений заходить не буду опишу свой метод ведения боёвок. Итак:

Входим на тактическую карту:

вопервых: оцениваю не общее количество кораблей а самый дамажный корабль(ли) флотилии (кол-во пушек на одном борту/кол-во команды).

вовторых: направление ветра и положение флота противника относительно него

Идеальные для меня условия:
1.Направление ветра +(север)/-(юг)15* относительно линии запад-восток.
2. Сила ветра выше 5 узлов.
3. Среди дамажных кораблей нет оснащённых 8-ми фунтовыми орудиями (больная для меня тема)
....север/\............
запад<ЧС> восток
........юг\/...........

...[E3]............<- ветер ->

...... [E2].........

......... [E1]......




..................[I]

Цель №1 для меня:
(если корабли (до галеона/пинаса/флейта включительно) одинаково небольшой силы[пушки/кол-во команды]) маневрируя зигзагами по боковому ветру держась в их "слепых" носовых зонах атакуются по очереди: 2-4 залпа картечью и на абордаж - Е1->E2->E3

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

(если не справиться) - просто убегаю, благо скорость корвета позволяет.

Что мне бы попортило жизнь:
если идущие сзади корабли разъезжались в разные стороны создавая мешок, но для этого во флоте сопровождения должно быть по больше скоросных кораблей, чтобы успеть создать его:

.........................[E3]
...... [E2].........
.............. [E1]......
..................[I]

если бы все корабли были оснащены 8-ми фунтовыми пушками что = убыткам: корабли легче потопить чем взять на абордаж.

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

.................................................[E3]..................<-ветер
................... [E2]................................................
............<разворот бортом \/[E1]............................
.........................................../\[I]>чтобы не подставлять борта сначало приходится держаться прямо и после залпа противника избегая столкновения с ним вместе с возможным но ненужным пока для нас абордажем приходится уходить в бейдвинд, что тормозит дальнейший разворот относительно вражеских кораблей.

если бы при приближении орудия на кораблях противников не переключались в зависимости от зон действия с ядра-бомбы-книппеля(и то не факт)-картечь. А лупили одними книппелями, переходя в близких дистанциях на картечь/бомбы.


Пока всё.

Автор: Rolando Jun 14 2009, 08:43

Цитата(ALexusB @ May 20 2009, 22:31) *

Пойдет рассказ "как я брал золотой флот" и типа того.


Как я брал золотой флот.

Место - между лагуной Каратаска и Ямайкой
У меня - СП, МВ, хороший по скорости пинас.
У них - 3 военника, 1 фрегат, 2 галеона, 2 ТГ

Спускаю паруса, выдерживая первые залпы охраны. Стреляю книпелями.
Пинасу - команда уходить, МВ - защищать меня.

Через несколько часов игрового времени - все оторвались от охраны на километр.
Меня по ветру преследуют военник, фрегат и "скоростной" ТГ, пинас в 3 км от меня - преследуют 2 военника, остальные растянулись.

Обхожу преследующую меня группу в бейдевинд, попутно беру "скоростной" ТГ на абордаж.
Отрываюсь, перегруз золота и серебра ч/з интерфейс на пинас, с него - перегруз команды.
Беру один из галеонов, отбившихся от охраны на абордаж. Те же действия по перегрузу.

Анализ ситуации: Паруса на СП порваны процентов на 30, МВ - почти целый. Пинас достиг берега и зашел в бухту (придурок lol.gif ), отстреливается, но жить осталось час-полтора игрового времени.
Пересаживаюсь на МВ, Синей Птице команда стоять (тоже близко к берегу находились, но вблизи вокруг - никого), абордирую еще отбившийся галеон. Те же действия по перегрузу.

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

Анализ ситуации. Единственная возможность - поменяться через интерфейс кораблем с СП (она ближе всех к последнему вражьему ТГ с учетом ее возможностей по бейдевинду) и на абордаж ! При этом важно, чтобы к МВ не приблизились - после обмена он стоит на месте.

Беру последний ТГ на абордаж. Последний перегруз - с пинаса все золото на СП и МВ и остаток команды распределяю по СП, МВ и ТГ (хватает всем на минимальный экипаж ! Если не хватило - пришлось бы бросить МВ). Выход на карту за 1-2 секунды до режима боя (фрегат догонял).

Автор: Джафар Jun 14 2009, 08:57

На днях играл, вышла такая фигня:

Прижали меня возле Бермуд две эскадры, Пираты и Англичане, а поскольку был на бриге решил драпать, когда посмотрел в подзорку удивило то что плывут себе приспокойненько рядом английские корабли и пираты, и мысль появилась: Почему? ведь они враги вроде, по идее должны хотябы перестреливатся а тут нет, только в мою сторону палят и всё.

=======

Хотя наверное это в другую тему надо.

Автор: Rolando Jun 14 2009, 10:17

Цитата(Джафар @ Jun 14 2009, 09:57) *

Почему? ведь они враги вроде, по идее должны хотябы перестреливатся а тут нет, только в мою сторону палят и всё.


А под каким флагом шли Вы и какой нации и НГЗ были ?

У меня такого удивительного не было, но был случай, когда около Порт-Ройала я француз "поймал" две исключительно крупные эскадры испанцев и голландцев. Они спокойно шли в 2 кильватера на небоевом расстоянии друг от друга. Я попытался их сцепить между собой, но испанцы на абордаж одного своего корабля активно не среагировали, а вот голландцы, которые шли ближе к форту сначала ринулись на меня, когда я уходил от испанцев, но большая часть их кораблей ушла мимо меня бомбить враждебный им английский форт. В общем абордировал и утопил кораблей 15. Если бы они "договорились" между собой или хотя бы не обратили особое внимание на форт, мне пришлось бы переигрывать - у меня был СЛ и 2 тормозных корабля 1 класса, а у них и мановары, и фрегаты, и торговые суда - 3 мировая война практически 1.gif

Автор: Джафар Jun 14 2009, 13:15

Цитата(Rolando @ Jun 14 2009, 16:17) *

А под каким флагом шли Вы и какой нации и НГЗ были ?


Голландский флаг был у меня, НЗГ небыло ни от одной сторон, а даже наоборот "Восхищение".

Автор: Serginio Jun 14 2009, 14:45

Не буду описывать какое-то конкретное сражение, т.к. сути основных тактических моментов это не изменит.

Итак самыми важными стратегическими факторами для оценки ситуации до схватки считаю.
1. Направление ветра.
2. Сила ветра.
3. Калибр орудий противника(ов), т.к. от этого зависит дистанция стрельбы.
4. Количество и скоростные данные кораблей противника.
5. Умения вражеских кэпов, по убыванию значения: защита, пушки, меткость, абордаж, нава.

Практически всегда хожу парой. Целью ставлю "Всех абордировать". Перед боем опустошаю трюм своего флагмана оставляю только и исключительно: картечь (количество на 10 круговых выстрелов), книппеля и бомбы (в половину от картечи), порох (на 10 круговых), оружие и лекарства по числу максимальной команды с перегрузом. Всё остальное перегружаю компаньону. Команду перегружаю себе.
Но это индивидуальная тактика геймера и для ИИ она как бы бесполезна. Но вот дальнейшие мои действия ИИ должен бы учитывать-прогнозировать, иначе ему придётся худо biggrin.gif

Итак. Команда компаньону "Уплыть", иначе ему начинают сбивать паруса и выбивать команду, а я этого очень не люблю. Сам, сохраняя недоступную для стрельбы противника дистанцию, ухожу так, чтоб оказаться от него с наветренной стороны. Первой жертвой выбираю противника (в порядке убывания приоритетов):
1. С максимально мощным вооружением. Если вооружение одинаковое, то с макчимальными статами "пушки и меткость" у вражеских кэпов. Если и тут разница небольшая, то с минимальной "защитой" у кэпа.
2. Максимально скоростного (корветы, заразы достают).
3. Ближайшего в строю.

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

Последовательность действий при такой тактике:
1. Провоцирую, чтоб противник разрядил борт(а) на максимальной дистанции (обычно это ядра). Принимая залп, становлюсь к нему носом (или кормой) и спускаю паруса.
2. Пока противник разворачивается, активно с ним сближаюсь. Заряжен всегда картечью.
3. Если у противника дальнобойные орудия, то таких рывковых сближений иногда приходится делать по 2-3 до момента моего первого залпа.
4. Выбиваю команду и абордирую.
5. При маневрировании вблизи противника активно использую "Манёвренный разворот" и "Быструю перезарядку". Всегда стараюсь держаться в глухой необстреливаемой противником зоне (45 градусов от его носа или кормы).
6. Подхожу к борту противника только непосредственно после его бортового залпа или, когда он начинает перезарядку на другой вид боеприпасов.

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

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

Такая тактика возможна благодаря бестолковости ИИ. Если бы корабли противника сохраняли строй независимо от повреждения парусов (т.е. самые быстрые равнялись на самых медленных), эта тактика была бы непреемлима. А корветы и бриги охраны не пёрлись бы в догонку за моим люггером, а конвоировали бы кильватерный строй противника по бокам, увеличивая тем самым зону обстреливаемую орудиями эскадры, то против них пришлось бы использовать другую тактику.
Для караванов противника можно было бы прописать тактику ИИ, чтоб грузовые суда уходили к ближайшему форту, стремясь укрыться под огнём его орудий, а боевая охрана такой отход прикрывала. И отход не беспорядочный, а клином, к примеру, или уступом (лучше - каре), в зависимости от втера и изначального строя в эскадре. Боевой корабль эскорта не должен гнаться за мной, он должен стермиться занять позицию между мной и основной частью грузового каравана.

Но для этого у меня есть ещё одна тактика.
Тактика "Барракуда" - в сложных и неудобных боёвках или когда нас застали врасплох. Абордируем ближайший, доступный для абордажа с минимальными потерями, шип (пусть даже самый небольшой). Грабим и отпускаем. Дальше используем его, как щит, и высовываясь из-за него разряжаем борта в противника. Бывали случаи, когда этому шипу его же компаньоны мачты сбивали, пытаясь попасть по мне. Но пустой шип будет иметь большую скорость и манёвренность, поэтому его нужно удерживать от побега, постоянно баражируя перед его носом. В конце концов, он всё равно слиняет, оставив нас против мощных врагов. Продолжаем ту же тактику. Только теперь наша жертва - самый мощный с большими пушками противник. Абордируем, сразу снимаем с него всю команду (в особых случаях, сажаем компаньона с перком "Спасение на шлюпке"). Вот это будет щит, который уже никуда от нас не денется, лишь бы корпус выдержал. Даём ему команду "Уплыть", чтоб не вертелся как ни попадя, а дальше преследуем свои цели. Основной огонь принимает на себя "щит". Когда противник будет рассеян, то можно спокойно перегрузить товар из "Щита", а его затопить, чтоб не мучался.

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

Есть ещё тактика "Анаконда", когда битва планируется заранее. Покупаем галеон или ТГ, загружаем его командой лохов с перегрузом. Опустошаем трюм, оставляем только картечь и порох на 1-2 круговых выстрела, оружие, лекарство. После выхода в "Море" командуем компаньону "Уплыть", а сами на этой "Анаконде" прём быстро напролом к самому мощному кораблю эскадры противника. Немного его обстреляв, абордируем и пересаживаемся. Свой галеон чаще всего топим, в особых случаях можно очистить трюм и посадить компаньона с перком "Спасение на шлюпке" (всё равно это корыто будет потоплено противником). Теперь наша крепость находится в колце неприятеля. "Манёвренный разворот", "Быстрая перезарядка" и после 2-3 оборотов вокруг нас только пузыри или лоханки без парусов или экипажей (в зависимости от того, какие цели перед нами стоят). Но чаще всего, приходится уводить эту крепость, активно работая картечью, по ходу абордируя обескровленного противника с небольшой командой, набивая себе трюм или разбрасывая вокруг себя свои и чужие "щиты". А завершается разгром обычно на корабле своего компаньона (он остаётся менее повреждён при такой тактике). И корабли, которые мы планируем оставить себе обычно абордируются последними, чтоб их бывшие союзники не попортили им шкурку.

Какие корабли я топлю без абордажа? Обычно корабли охраны при контрабанде, пиратов, ОЗГов, т.е. те, чьи трюмы заведомо пустые. Также очень не люблю абордировать большие корабли с мушкетным залпом. Если удаётся, то переигрываю сцены и топлю их без абордажа.

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

Буду рад, если хоть что-то из написанного пригодится для конструирования поведения виртуального противника...

Автор: Rolando Jun 14 2009, 19:05

Цитата(Serginio @ Jun 14 2009, 15:45) *

Буду рад, если хоть что-то из написанного пригодится для конструирования поведения виртуального противника...


Чувствую, у уважаемых разработчиков против такого разнопланового корсара будет большое искушение ограничиться тактикой "Черепаха" для всех противников 1.gif

Автор: ALexusB Jun 14 2009, 22:03

Да уж... пока искушение токо одно - оставить токо бои человек-человек, чтоб не мучать "бедных зверушек ИИ" smile.gif

Автор: СТРАННИК Jun 15 2009, 09:56

Много тут наговорили уже.
Позвольте и мне вставить свои 5ть копеек.
Вот Mitrich говорит
" Для пирата абордаж - задача №1. Ты прав. Только хочется уточнить. Если пират знает, что ты ничего не везешь, то станет ли он рисковать и абордировать тебя? Думается нет."

Почему нет? пустой галеон стоит 50 000-60 000 это что не деньги?
При месячных расходах на команду в 200 000 это четвёртая часть тоже нормально.

Serginio играйте в патч 1.2.3 - бейтесь с Джентельменами удачи и предлагайте нам новые тактики.

Тактиа "Акула",
прекрасная тактика. противник на расстоянии сливает 2 борта книппелей
иду к нему на сближение с картечью, и тут он разворачивается и в упор расстреливает меня бомбами с двух бортов.

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

Вот как раз в 1.2.3 Дж. удачи. они так и заряжены.

Тактиа "Дельфин": прекрасно беру на вооружение.
Тактика "Барракуда" пробовал (палка о 2х концах этот корабль мешает противнику и тебе тоже)

Тактика "Пиранья": у Дж. удачи что последний что первый корабли мощные идут сплочённой группой экипаж всегда по полонй (с горкой) замыкающий обычно большой корабль.

Тактика "Анаконда", (пробовал) подходит великолепно, только когда один корабль противника мощный а другие слабые.

Автор: ALexusB Jun 15 2009, 12:05

разница в перезарядки бортов КВЛ и ГПК есть и она существенная - это разные алгоритмы принятия решения когда заряжать и чем.

Для построение алгоритмов ИИ новой игры это не криично, тк там будет все свое (но близкое именно КВЛ), просто к слову.

Автор: Serginio Jun 15 2009, 21:31

Цитата(СТРАННИК @ Jun 15 2009, 09:56) *
Serginio играйте в патч 1.2.3 - бейтесь с Джентельменами удачи и предлагайте нам новые тактики.

Так об этом и речь. За убегающими обычно не гоняюсь. Только, если беглец жирным был, иногда море в его кильватере серфлю.
А тактики у каждого геймера свои. Изобретайте, нарабатывайте...

Цитата(СТРАННИК @ Jun 15 2009, 09:56) *
Тактиа "Акула",
прекрасная тактика. противник на расстоянии сливает 2 борта книппелей
иду к нему на сближение с картечью, и тут он разворачивается и в упор расстреливает меня бомбами с двух бортов.

А трубой подзорной пользуетесь?
Бомбы и картечь - это самое неприятное. Но с картечью бороться легче. Как только ИИ начинает картечью заряжать, нужно успевать подготовить и осуществить абордаж или разорвать дистанцию до окончания перезарядки.
Если же начинается зарядка бомбами, а дистанция велика для обстрела картечью или абордажа, то лучше сразу рвать дистанцию. Здесь главное уловить момент, когда опять пойдёт перезарядка на книппеля или бомбы, тогда время не теряй. И не забывайте принимать залп носом или кормой, а лучше резко спускать паруса и делать манёвренный разворот. Тогда очень часто получается недолёт...

Цитата(СТРАННИК @ Jun 15 2009, 09:56) *
Вот как раз в 1.2.3 Дж. удачи. они так и заряжены.
Дык топите их нафиг! Чего Вы ис-под них хотите? Отморозки - они и есть отморозки.

Цитата(СТРАННИК @ Jun 15 2009, 09:56) *
Тактика "Барракуда" пробовал (палка о 2х концах этот корабль мешает противнику и тебе тоже)
Не спорю, но тебе он ещё и помогает, а противнику только мешает...

Цитата(СТРАННИК @ Jun 15 2009, 09:56) *
Тактика "Пиранья": у Дж. удачи что последний что первый корабли мощные идут сплочённой группой экипаж всегда по полонй (с горкой) замыкающий обычно большой корабль.
Вот опять ДУ!
Да зачем же против них "Пиранью" применять? Эта тактика для маленького ГГ, чтоб флейты и пинассы из конвоируемых караванов выхватывать.

Автор: Rolando Jul 4 2009, 11:12

Недавно встретилась явная "дыра" в поведении противника.

Дело было так. Загнал я преследующую меня голландскую военную эскадру в бухту Порт-Ройала 1.gif
Флагман эскадры (военник) вошел в бухту за моими 3-мя кораблями и как буриданов осел остановился примерно в центре бухты чуть ближе к маленькой части форта Порт-Ройала. Практически не стрелял. Остальные корабли занялись фортом.
При попытке атаковать флагмана 3-мя кораблями (абстрел картечью) он начал двигаться и отвечать. Но когда я переиграл и приблизился к нему на СП (остальные - в дрейфе) он активно двигаться не стал и отвечал только кормовыми пушками. Короче вынес ему большую часть команды и перк мушкетного залпа его капитану не помог wink.gif

Дальше с 5-й попытки вырвался из бухты без больших повреждений и причалил у ближайшей бухты. Иду на СП посмотреть, как там у эскадры с фортом дела - гляжу, впритирку к берегу справа (с другой стороны, не где форт) идет бэтлшип. Понял, что это добыча - бысторо к нему, книпелями мачты кроме задней снес и картечью стал стрелять. Он мог прицельно попадать только из носовых - попытку развернуться сделал только в самом конце и стал ко мне кормой (берег сильно ему мешал отчалить lol.gif ). У этого капитана тоже был перк мушкетного залпа, но как штурман он салага.

Предлагается сделать вражеским кораблям явный приоритет в целях на атаку корябля ГГ и попутно, особенно если корабли крупные типа бэтлшипов - ввести для них запретную зону вблизи берега хотя бы на длину корабля

Автор: СТРАННИК Jul 4 2009, 12:11

Проходил квест 20 моноваров
Лин кор у меня был.

Использовал тактику Serginio тактику "Дельфин"
Только так и прошёл

А как вы проходите 20 мановаров?

Автор: Serginio Jul 4 2009, 19:57

Цитата(СТРАННИК @ Jul 4 2009, 12:11) *
А как вы проходите 20 мановаров?

1.gif Дык для них родимых и придумал эту тактику. Иначе они очень больно кусаются.

Автор: Rolando Jul 6 2009, 20:32

Цитата(СТРАННИК @ Jul 4 2009, 13:11) *

А как вы проходите 20 мановаров?


Использую Арабеллу для взятия описи методом с/л: корабли прочностью поменьше не успевают после взятия нужного мановара улепетнуть, пропуская смертельный залп, а корабли покрупнее проигрывают в скорости.

Далее отрываюсь от мановаров, причаливаю к бухте Аматика и - о-ля-ля lol.gif

Автор: Serginio Jul 6 2009, 21:44

Цитата(Rolando @ Jul 6 2009, 20:32) *
Использую Арабеллу для взятия описи методом с/л: корабли прочностью поменьше не успевают после взятия нужного мановара улепетнуть, пропуская смертельный залп, а корабли покрупнее проигрывают в скорости.

Я С/Лом опись никогда не ищу. Использую его только, если мой кораблик генерится в центре их стаи и не успевает из неё выбраться в приличном состоянии.
А если уж выбрался, то им хана.
И эта, для дельфина Арабелла слишком уж медленная, её лучше для акулы юзать. Я мановары на ПВ беру. Как и ЗФ впрочем.

Автор: Blood5 Jul 9 2009, 02:13

Всем привет!

И так конкретное:
1. Вижу эскадру - нападаю если:
а) У меня пустые трюмы;
б) У меня нет компаньонов (редко они есть, как боевые);
в) У меня достаточно команды, есть оружие, лечилки и т.д.;
г) Мой корабль соответствует кол-ву соперников (бриг - на 2-3 врага; корвет - на 4-6 врагов; фрегат или варшип - на 7-8 врагов( в том числе и на ЗК); "Пёс войны" - пофиг сколько их);

2. Нападаю сначало:
а) Если моя цель деньги - на торговцев, потом на охрану;
б) Если мне надо попросто прокачаться, то топлю всех пофигу! Но 1-2 всё равно беру на абордаж - это, в основном, охрана, так как там всё вкусненькое - серебро и золото.

3. Смываюсь:
а) Нет настроения;
б) Меня преследует 1 баркас;
в) За мной эскадра пиратов более, чем из 2 кораблей ;
г) У меня малая команда или мало HP корпуса или парусов;
д) Рядом шторм (что бы не оказаться между молотом и наковальней);

4. Использую:
а) Ядра - если мне охота поржать, топлю всех ядрами... 5%
б Картечь - если иду на абордаж (корвет против Галеон, ТГ корвет, Пинас, Варшип, Батл и Лайн Шип, а так же Ман-О-Вар) - 25%
в) Книпели - если только смываюсь или делать нечего - 10%
г) Бомбы - почти всегда. Даже если иду на абордаж - мне пофиг! - 60%
_________________________
Принципы:
1. Не люблю эскадры за собой таскать;
2. Не люблю брать штурмом города;
3. Ненавижу Ман-О-Вары брать на абордаж;
4. Ненавижу книпели, летящие в мои паруса;
5. Ненавижу ветер 3-5 узла посреди Карибского моря, далеко у островов;
6. Ненавижу дальние бои;

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

Но против себя я бы сразу пошёл на абордаж! Или подошёл в упор, если противник сильнее и пару залпов картечи решили бы всё вмиг! Для этого подойдёт использование ПГГ 2-х перков - "Быстрая перезарядка" и "Манёвренный поворот корабля".
Тут выиграет тот, у кого пушки поменьше и канонир лучший.
Для этого корветы и сделаны, наверное... biggrin.gif
______________________________
Ну вот, собственно, и всё!
Ссори, что длинно, в 3:14 голова уже не варит... sad.gif

Автор: Миротворец Aug 5 2009, 20:56

Если выхожу на охоту , то используя перк у меня на корабле паруса той нации на кого охочусь , пушки заряжены картечью , подхожу в плотную , стараясь занять позицию между двумя кораблями , далее залп из двух бортов и моментальный абордаж обречённых судов , если добыча меня устраивает и трюм под завязку то перезаряжаю на книпеля и дёру , снося по ходу отступления паруса особо рьяным преследователям smile.gif Так почему бы не дать и пиратам использовать такую же тактику , вроде решил напасть на купцов , и на тебе , они рядом с тобой подняли Весёлого Роджера ))

Автор: VladNiP Aug 5 2009, 21:12

Расскажу о своей тактике в морском бою:
В зависимости от ситуации, если требуется потопить или если требуется взять на абордаж.
Взять на абордаж.
Если пираты, то тупо иду на них ( корабли у них по большей части маленькие ), при этом у меня заряжена картечь.
Если военная эскадра, то заряжаю книппелями. Стараюсь им максимум снести параметр "Паруса".
После того, как они уже не в состоянии что-либо сделать, заряжаю картечью.
Как правило, противник даже не пытается отбится. Стреляю по нему картечью, чтобы довести параметр "Команда" до максимально низкого уровня. Тактика относится и к торговцам.
Если потопить, то всегда покупаю кулеврины 32 фунта.
Использую максимально дальнюю дистанцию, чтобы противник не нанес или нанес минимум повреждений.
Если противник изначально союзник мне, но при этому он находится в категории "Торговцы", то я максимально близко плыву к нему, заранее заряжаю картечью и, как только зарядится, меняю флаг на пиратский и стреляю. Как правило, у противника остается малая часть команды. Сразу беру на абордаж.
Если же все-таки команды у противника относительно много, то повторяю.

Цитата
Паруса, корпус, команда, типы кораблей?

Оцениваю противника по команде - для абордажа.
Или по корпусу - для морского боя.
Насчет золотого флота. Брал. Сейчас расскажу как. ( брал на голландце )
Сначала у противника было оченб большое численное превосходство. Нужно было лишить противника прыти. В этом случае помогает только книппель.
Еще перед тем, как напасть на флот, я заряди корабль книппелями.
Я топил корабли с помощью абордажа по одному.
Для этого я первому снес мачты, и вплотную подошел к нему, стреляя картечью. От выстрелов других кораблей я прятался за этим кораблем. Пару залпов хватало, чтобы лишить противника команды. Сразу брал на абордаж. Аналогичную операцию повторял с следующим кораблем. Примерно половину абордировал. Команды у меня не было, чтобы продолжать вести авбордаж.
Не задумываясь, зарядил бомбами. Теперь цель была только одна - выжить. Постепенно потопил всех.
Цитата
Усложним задачу - как бы вы играли против себя?

В таком боя я бы исключительно держался на дальних дистанциях. Сначала я бы попытался ослабить соперника, максимально уничтожив ему паруса. Не исключено, что он тоже бы попытался это сделать.
Но, поскольку, я играю против живого игрока, то он бы не стал стоять на месте, а начал бы маневрировать. Ослабив его, я бы попытался немного уйти от него.
Вел бы обстреля ядрами.
Для абордажа.
Начала тоже, дабы он не ушел от меня.
При сближении заряжаю картечью. Поскольку играю против живого, то он мог бы зарядить бомбами.
В таком случае сраху бы взял его на абордаж.
При каждом случае такого боя поглядывал в трубу, чтобы оценить текущий заряд, кол-во команды и HP врага.
Если бы у врага калибр был меньше, то держался в мертвой зоне.
Книппелями бы не стрелял. Часто, попадения ядер тоже немного рвут паруса.

Автор: Керосин Aug 6 2009, 13:01

предлагаю таким образом усовершенствовать тактику боя ИИ:
Торговый караван под охраной военных судов.
1. Корабли охранения не должны мотаться в хвосте, а находиться, если их два – справа и слева от основного каравана на уровне чуть впереди второго судна. Если их три – то третий еще в конце каравана.
2. Корабли каравана не должны растягивать караван в ходе боя, т.е. соблюдать дистанцию между собой, чтобы противник в случае атаки на абордаж находился под обстрелдом нескольких судов.
3. При подходе чужого судна под дружеским флагом все корабли каравана должны вести перезарядку орудий соответствующую расстоянию. Ядра – книппели – бомбы.
4. При приближении чужого корабля на дистанцию, позволяющую нанести эффективный выстрел картечью и абордаж, корабли каравана должны давать предупредительный выстрел и если сближение продолжается – первыми начинать обстрел.
5. Так как целью торговца является не захват или потопление пирата, а доставка грузов по назначению – то и торговые корабли и корабли охранения должны вести оборонительную, а не наступательную тактику – т.е. не уходить в погоню за пиратом, а охранять торговые суда. А торговые суда - занимать компактную оборону с общим разворотом или на нападающего – или от него.
6. Военные корабли должны быть быстрее торговых. Так, например ТГ охранения из-за недостатка скорости и маневренности – не может оказаться вовремя там, где нужно и способен, в лучшем случае, защитить только себя.
7. при появлении корабля даже под дружеским флагом корабли охранения должны приближаться к нему на расстояние эффективного выстрела книппелями/бомбами.
8. и отменить возможность быстрого перехода - "доплыть до"
Думаю подобные меры значительно бы осложнили мне захват торгового каравана

Автор: Rolando Aug 6 2009, 16:52

Цитата(Керосин @ Aug 6 2009, 14:01) *

предлагаю таким образом усовершенствовать тактику боя ИИ:


Полностью согласен, но для старших уровней ГГ

Когда у ГГ корабль до 4 уровня включительно, нужны некоторые послабления - например, перезарядку адекватную, а компактный строй кораблей - нарушить одним двумя торговцами, или расположение компактное, а кто-то зарядит неадекватно - если у ГГ хорошая труба, он должен уловить слабое место.

Автор: Керосин Aug 7 2009, 10:33

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

Автор: FoKyS Sep 22 2009, 10:32

В бою у меня сразу идет
1. анализ состояния:
* сил противника (примерно равны, больше, меньше, сильно больше, сильно меньше).
* направления ветра

#Если я слабее
1)Отступаю

#Если на равне
1)Беру на абордаж.
2)В сражении использую в основном картечь.

Автор: ALexusB Apr 27 2010, 08:58

Прочел книжецу
C / С++ : C++ мастер-класс. 85 нетривиальных проектов, решений и задач - М. В. Мозговой
http://www.ozon.ru/context/detail/id/2985461/

Пришел к некому концепту реализации ИИ для мор боя, как кальки с действий человека. Чтоб не в коде зашивать, а было во внешних файлах и можно было один ИИ на другой натравить, потестить.
Ответа по ИИ в книге нет, есть разные идеи и их решения, которые наводят на другие идеи smile.gif
Рекомендую.

Автор: N.tony Apr 27 2010, 09:25

Цитата(ALexusB @ Apr 27 2010, 07:58) *
Пришел к некому концепту реализации ИИ для мор боя, как кальки с действий человека. Чтоб не в коде зашивать, а было во внешних файлах и можно было один ИИ на другой натравить, потестить.
Обычно в таком случае ИИ сильно неловкий получается. Я тоже думал делать через "интерфейс", чтобы доступ к игровому персонажу был реализован только через стандартные операции ввода (типа, все возможные клавиши которые нажимает геймер). Но так как делать самообучающийся ИИ сложно, будет сильно муторно подбирать контроллер для него через одну лишь допустимую информацию о состоянии поля боя. Проще будет, если количество разных вводов сильно ограничено (а ходы дискретны) - делать "натуральный" контроллер для всяких игр типа шахмат куда проще.

Автор: Hawcker Apr 27 2010, 17:49

Цитата(ALexusB @ May 20 2009, 22:31) *

2.* слинять из боя
* всех потопить

Слинять из боя можно и при помощи мин, если кораблик имеет хорошую скорость( как и у ГГ )
...как обычно я делаю если корабль имеет гдето равную скорость как и корабль противника, ~1000-2000 ед. корпуса (иначе долго топить) ..
стараюсь держать по возможности гдето 2000 ед. пороха т.е. хотяб на 10 мин ... rolleyes.gif

Автор: m-traxx Apr 27 2010, 19:04

Постараюсь рассказать, что на мой взгляд позволяет легко справляться с ИИ соперника.

ИИ не умеет делать массу важных вещей:

1. Не бережёт паруса - смена положения парусов зависит только от его маневров, а иногда от балды - на залпы не реагирует.

2. Распыляется - может сделать 1 залп по одному кораблю, следующий залп по другому.

3. Меняет заряды в зависимости от дистанции - может начать перезаряжаться картечью, хотя мог уже бомбами пустить на дно.

4. Не ходит галсами против ветра - часто складывается впечатление, что ИИ вообще не умеет учитывать направление ветра.

5. Пытается догнать корабли, которые имеют большое преимущество в скорости - именно это позволяет растягивать его эскадры и валить всех поодиночке.

6. Не ставит промежуточных задач. Например, не пытается получить абсолютного преимущества в скорости а уж потом топить, или сначала выбить всю команду, а уж потом абордировать.
Т.е. ИИ конечно и паруса клацает и команду выбивает, но до абсолюта не доводит и даже не пытается.

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

Автор: bullet Apr 27 2010, 20:17

Кста, а мона в сетке где-нить нарыть основы/правила морского боя на парусных судах ? Ну те, которым 300 лет назад в Навигацкой школе обучали.

Автор: Captain Flint Apr 27 2010, 21:45

Цитата(bullet @ Apr 27 2010, 21:17) *

Кста, а мона в сетке где-нить нарыть основы/правила морского боя на парусных судах ? Ну те, которым 300 лет назад в Навигацкой школе обучали.

http://lib.aldebaran.ru/author/shtencel_alfred/shtencel_alfred_istoriya_voin_na_more_s_drevneishih_vremen_do_konca_xix_veka/
Она у меня на полке стоит. Прочитал от корки до корки. Это, конечно, не сборник наставлений по ведению морского боя. Это - "История войн на море", написанная профессионалом. Там кроме собственно истории есть и "разбор полётов" - анализ сражений и действий флотоводцев.
Также были ещё Мэхэн и Коломб, труды которых изучали в Морском Корпусе больше века назад, но их я не искал.
В Библиотеке Конгресса США есть кое-какие наставления касательно парусных флотов, в том числе и сочинение Павла Госта. Однако я не нашёл, как их оттуда скачать. Может, Тимофей подскажет?

Автор: ALexusB Apr 30 2010, 23:43

Цитата(N.tony @ Apr 27 2010, 10:25) *

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

Я отказался от самообучения - мне проще самому идти не по пути ИИ, а по ЭС (экспертным системам) - обучая (дописывая) по ходу тестов и игры самому.
Со временем, имея базу боев в виде логов, можно натравить на них обработку и эти данные превратить в знания. Но это же другая утилита, она не работает во время боя, а потом (отдельно на локале, тк долгая).
Сам же НПС в бою будет именно "жать" доступные игроку кнопки команд. Иначе это какие-то сверх читы.
Другое дело, чем он будет мотивироваться и куда смотреть (какие статы видеть без подзорной трубы, как прикидывать в своем комьютерном уме траектории движения и тп) - тут тупизна ИИ может компенсироваться его сверхосведомленностью.
Скилы капитана - это понижение возможностей ИИ. То есть изначально он должен быть оч хитрым, а скилами тупеть.

Многие не задумываются, что сложность игры задается понижением возможностей в упрощении, а не наоборот. То есть все игры имеют максимум возможностей, которые потом снижаются.
Исключение составляют количественные сложности - это когда урон ГГ снижается, а получаемый начинает зашкаливать - это уже простой трюк "невозможных" уровней. Логики ИИ тут нет.

Автор: N.tony May 1 2010, 00:02

Цитата(ALexusB @ Apr 30 2010, 22:43) *
Я отказался от самообучения - мне проще самому идти не по пути ИИ, а по ЭС (экспертным системам) - обучая (дописывая) по ходу тестов и игры самому.
Да, это именно то что я имел в виду. Из меня просто программер кустарный, поэтому я некоторых определений не знаю smile.gif

Цитата(ALexusB @ Apr 30 2010, 22:43) *
Со временем, имея базу боев в виде логов, можно натравить на них обработку и эти данные превратить в знания. Но это же другая утилита, она не работает во время боя, а потом (отдельно на локале, тк долгая).
Сколько раз встречал подобные заявления - ни разу не видел воплощения на практике.

Цитата(ALexusB @ Apr 30 2010, 22:43) *
Сам же НПС в бою будет именно "жать" доступные игроку кнопки команд. Иначе это какие-то сверх читы.
Не сверхчиты, но читы, да. А как иначе? Достаточно посмотреть на любой автосимулятор - с 99% вероятностью поведение машины ИИ лишь отдаленно напоминает поведение машины, управляемой ручками. ИИ не "крутит баранку", а доворачивает колеса напрямую, да и прочими параметрами скорее всего управляет напрямую - т.е. акселерацией, скоростью, смещением и т.п. Потому как написать контроллер, ведущий машину по оптимальной траектории, да еще и замечающий препятствия - задача настолько нетривиальная, что уже десятки лет по ней научные статьи пишут.

В общем, считаю что подход с "симуляцией ввода" - обречен на тупизм, если только не выполнены условия, о которых я писал выше. Т.е. если ходы дискретны по времени (а еще лучше и в пространстве) - тогда вариант вполне жизнеспособен. Если же все реалтайм - будут проблемы. Они, кстати, могут решаться тем самым способом с "у меня больше, у тебя меньше". Например, считая что компьютерные оппоненты имеют при прочих равных лучшие параметры по сравнению с игроком. Типа скорость, ускорение, скорость поворота и все такое у них выше.

Автор: ALexusB May 1 2010, 00:35

Пробовать буду - тема интересная мне, потому и делаю прототип для моделирования в виде игры, чтоб зря не тратить время smile.gif

"Докручивать" я не могу - тк все пишется в лог, кто что сделал и куда повернул.
Потому и сложности - проще ИИ не делать вообще, а ПвП оформить.

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

Автор: HenMoR Nov 2 2010, 00:45

Цитата(ALexusB @ May 1 2010, 00:35) *

Пробовать буду - тема интересная мне, потому и делаю прототип для моделирования в виде игры, чтоб зря не тратить время smile.gif

"Докручивать" я не могу - тк все пишется в лог, кто что сделал и куда повернул.
Потому и сложности - проще ИИ не делать вообще, а ПвП оформить.

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


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

Автор: ALexusB Nov 25 2010, 10:33

Статья в тему ИИ
http://xitri.com/2010/10/27/ai-creation-tool-casual-connect-kiev-2010.html

Не со всем я согласен по итоговой реалиазции, в комментах к статье минусы верно описали.

Но общий принцип реализации по задачам ИИ верный - сам так думаю.
Автор статьи - флашер-художник со стажем, но только начал переходить на AS3 с его ООП, потому не все ООП использует, где-то по старинке мерками AS2 пишет.

О сайте этом уже говорил - кладезь полезного, жаль, что стал редко обновлять.

Автор: Shadow Nov 25 2010, 14:07

Цитата
Но общий принцип реализации по задачам ИИ верный - сам так думаю.

Э-э-э, разве это не описание реализации ИИ на основе стэйт машины? И при том весьма дубово, правда, может флэш и не вытянет тяжелых алгоритмов.

Автор: ALexusB Nov 25 2010, 15:31

Не знаю, открою ли я тайну, но во многих играх, даже когда в описании пишут "используется улучшенный, продвинутый ИИ", никакие научные изыскания из теории ИИ и ЭС не используются вообще smile.gif
Или куча ифоф или шаблоны задач (сами шаблоны задач - тоже формализовано в теории ии и эс, но делают сами на глаз)

Тут влияет цель - игра (визуальное состояние и восприятие), а не супер цель прикрутить к игре нейронную или другую сесть и тп
Опять же ОЗУ и вычислитель лимитирован.
Иногда достаточно расставить врагов в редакторе и задать скрипт их выпрыгивания по тригерам, либо сделать "мега ИИ" из ранд() функций выбора направления движения с парой ифоф проверок статов ГГ.

Это в шутера. В стратегиях и тактиках несколко иначе, там нужно смотреть "свысока" на саму диспозицию и принимать групповые решения и иметь план действий (тактику).

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

Рефреш нужен, да, но по таймеру раз в 1-2 сек, а не 20-30 раз в сек. Что изменится за 1/20 секунды? Пользователь ничего не успеет нажать.
А если изменится, то есть прерывание - вот его и нужно обработать.
Иначе при >100 объектах будут жуткие тормоза, если каждый начнет на каждый кадр обрабатывать сложную логику.
Что оч просто видно, если в презентации из статьи прокликать добавку зомби, глядя на загруз проца.

Именно так и устроена боевка в Сторм-2.х
Тоже есть шаблоны и обработчики прерываний.

Автор: Shadow Nov 25 2010, 15:34

Цитата
Не знаю, открою ли я тайну, но во многих играх, даже когда в описании пишут "используется улучшенный, продвинутый ИИ", никакие научные изыскания из теории ИИ и ЭС не используются вообще smile.gif

Не откроете.

Цитата
Это в шутера.

Иногда, но не всегда. Вот, почитайте про ИИ в F.E.A.R, если интересуетесь темой: http://www.media.mit.edu/~jorkin/gdc2006_orkin_jeff_fear.pdf Они юзают FSM вообще только с 3 стэйтами на чара и им хватает smile.gif

Автор: ALexusB Dec 28 2010, 00:21

В тему ИИ
книжка аж 1975года, но от того даже интереснее smile.gif
М.М.Ботвинник. О кибернетической цели игры
http://www.mirknig.com/2007/03/23/mmbotvinnik_o_kiberneticheskojj_celi_igry.html

Книга экс-чемпиона мира по шахматам Ботвинника, в которой он рассказывает про свой опыт создания алгоритма игры в шахматы. Она дополняет его же книгу <алгоритм игры в шахматы>.
Книга будет очень интересна тем, кто умеет играть в шахматы и задумывался о том, как этому можно научить компьютер.
Книга научно-популярная и может читаться человеком с любой подготовкой.

Автор: Commandor_S Dec 28 2010, 08:46

Цитата(ALexusB @ Dec 27 2010, 23:21) *

В тему ИИ
книжка аж 1975года, но от того даже интереснее smile.gif
М.М.Ботвинник. О кибернетической цели игры
http://www.mirknig.com/2007/03/23/mmbotvinnik_o_kiberneticheskojj_celi_igry.html

Книга экс-чемпиона мира по шахматам Ботвинника, в которой он рассказывает про свой опыт создания алгоритма игры в шахматы. Она дополняет его же книгу <алгоритм игры в шахматы>.
Книга будет очень интересна тем, кто умеет играть в шахматы и задумывался о том, как этому можно научить компьютер.
Книга научно-популярная и может читаться человеком с любой подготовкой.

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

Автор: Hovgaard Feb 8 2011, 16:43

По теме:

1. Оценка погодных условий;
2. Проверка месторасположения вражеских кораблей(я) относительно
собственного корабля(ей) и (если есть) берегового ландшафта, рифов;
3. Анализ предположительных ходовых характеристик кораблей(я)
противника по предположительной загруженности его трюма, класса
корабля (парусного вооружения) и текущей скорости относительно вектора ветра.
4. Анализ условной опасности противника (каждого корабля отдельно,
и всех вместе).
5. Подсчет возможных затрат и потерь (в т.ч., временных) на уничтожение
противника.
6. Определение боевой задачи - бегство, расстрел, абордаж (кого именно,
судьба неабордированных кораблей) прикрытие за союзными силами или
рельефом берега/рифов (если есть).
7. Определение боевой тактики - алгоритм сближения/ухода/укрытия/расстрела.

Автор: Golden Hind Feb 16 2011, 06:03

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

1. Оценка ситуации перед боем. Здесь учитывается соотношение сил. Скорость и направление ветра. Для этого необходимо заложить в действия ИИ несколько вариантов поведения в той или иной ситуации.

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

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

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

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

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

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

Автор: Serginio Feb 16 2011, 13:08

Цитата(Golden Hind @ Feb 16 2011, 07:03) *
Слабость ИИ в практически любых компьютерных играх состоит в том, что он не умеет мыслить абстрактно...
Мне кажется, что не меньшей слабостью ИИ является неумение оперативно менять стратегические задачи.

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

Но, если ИИ научить быть хитрым, то играть с ним станет невозможно, т.к. обсчёты возможностей противника он делает мгновенно (в отличие от геймера)...

Автор: ALexusB Feb 17 2011, 16:01

Наконец-то подошел к задачам уровня ИИ для их практического решения. Есть полигон для применения - кораблики плывут, палят, тонут.
Есть замысел вообще для режима отладки сделать в коде возможность подключения разных ИИ, что б их можно было натравливать друг на друга. И тем калибровать параметры.

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

Автор: Hovgaard Feb 21 2011, 11:10

Цитата(ALexusB @ Feb 17 2011, 17:01) *

Наконец-то подошел к задачам уровня ИИ для их практического решения. Есть полигон для применения - кораблики плывут, палят, тонут.
Есть замысел вообще для режима отладки сделать в коде возможность подключения разных ИИ, что б их можно было натравливать друг на друга. И тем калибровать параметры.

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


Я не программист и не математик (базовые/средние познания), но немного читал о применении эвристического подхода в кибернетике, заинтересовало. Популярно и красиво изложен в книге Стаффорда Бира "Мозг фирмы" (рус. пер.), очень рекомендую всем, кому интересна теория управления. Исходя из почерпнутых сведений, осмелюсь предложить где-то такую структуру расчетов ИИ:
Глобальная задача , определяется со старта, по входным параметрам. Инициализирует дробный (например, [0 - 1]) управляющий параметр, или "параметр успеха" (ПУ) на пути достижения глобальной задачи. Дальнейшие действия ИИ будут его повышать (в случае успешных тактик) либо понижать (противник успешно огрызается). При выборе одной из возможных тактик (оформленных в в виде дочерних к глобальной задаче процедур) достижения задачи ИИ пытается грубо просчитать, каким будет ПУ через (например) минутные интервалы в результате применения каждой из шаблонных тактик (процедур).
Среднесрочная стратегия боя будет избрана та, которая в прогнозе дала наибольший ПУ (или сумму ПУ дискретных чекпоинтов прогноза) в виде запуска действия по программе одной из алгоритмических тактик или их комбинации (ход в лоб 40с, залп ядрами, сближение, на книппеля и т.п.). При этом, сама стратегия НЕ является алгоритмом - через определенный промежуток времени, либо при драматическом изменении ключевых параметров (успешный залп бомбами с тремя критикалами) проводится извлечение текущего значения ПУ и проводится новый среднесрочный расчет (прогноз) его значения как результата применения различных стандартных тактик или их комбинаций. В итоге, предположительно наиболее успешная (с наибольшим ПУ) среднесрочная стратегия заменяет собой текущую.

Такой подход устраняет сразу несколько классических недостатков ИИ:
1. Узколобость, ограниченность в инструментарии тактик и стратегии в целом.
2. Стоический консерватизм - удержание давно неактуальной стратегии боя, определенной в начале боя или просто по слишком устаревшим параметрам.
3. Предсказуемость - даже если оставить в стороне постоянное жонглирование алгоритмическими тактиками (хотя бы, "в уме" компа, при прогнозировании на чекпоинтах, пускай он и будет выбирать одну пол-боя), эвристический подход будет иногда вносить "непредсказуемый тупизм" наряду с оригинальными, свежими боевыми комбинациями (вторых будет меньше), неизбежных вследствие проявления главного недостатка эвристического подхода - принципиальной сложности оценки и прогнозирования ПУ в процессе выполнения задачи. Собственно, оценка ПУ и есть самым сложным во всем этом.
4. Ну и резюмируя, он не страдает этим
Цитата
Слабость ИИ в практически любых компьютерных играх состоит в том, что он не умеет мыслить абстрактно и тем самым он не может мыслить комбинационно. Другими словами ИИ действует только по обстановке, но он не может создать логически направленную цепь определённых действий, имеющую общую конечную цель.
, так как именно увеличение ПУ и есть той нитью Ариадны, ведущей ИИ к успеху (выполнению глобальной задачи.

Автор: Serginio Feb 21 2011, 11:53

Цитата(Hovgaard @ Feb 21 2011, 12:10) *
Глобальная задача , определяется со старта, по входным параметрам...
Интересный метод, но его применение чревато ситуацией, которую мы можем наблюдать и сейчас - реагируя на тактическое изменение ситуации, ИИ постоянно перезаряжает орудия на различные боеприпасы (по мере приближения к нему противника), в конечном итоге гибнет, так и не сделав ни единого выстрела.
Причина в том, что не идёт просчёт "предполагаемых действий противника" - игрока.
Поэтому игроку не составляет труда растянуть караван ИИ так, как ему (игроку) будет удобнее его щипать.

ИМХО - обучать ИИ нужно с того, что определить ему чёткие "варианты боевого построения" в зависимости от выбранной тактики. А тактику выбирать исходя из единой стратегической задачи, как то - утопить ГГ; абордировать ГГ; сохранить все свои корабли; сохранить грузовые корабли каравана (один спецкорабль); увести грузовой транспорт в порт; и т.д....

В этом случае действия ИИ будут более адекватны и похожи на морской бой, а не настойчивые попытки суицида.

Автор: Hovgaard Feb 21 2011, 18:50

Цитата(Serginio @ Feb 21 2011, 12:53) *

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

ИМХО - обучать ИИ нужно с того, что определить ему чёткие "варианты боевого построения" в зависимости от выбранной тактики. А тактику выбирать исходя из единой стратегической задачи, как то - утопить ГГ; абордировать ГГ; сохранить все свои корабли; сохранить грузовые корабли каравана (один спецкорабль); увести грузовой транспорт в порт; и т.д....

В этом случае действия ИИ будут более адекватны и похожи на морской бой, а не настойчивые попытки суицида.


Не спорю, контроль за приемлемостью "отрыва от своих" у кораблей быть должен.
Но его вполне можно запрограммировать в простенький алгоритм.
А вот ввести истинную непредсказуемость действий алгоритмически невозможно.
Думаю, просчет предполагаемых действий игрока - вещь весьма простая в краткосрочном
прогнозировании (линейная экстраполяция параметровЮ описывающих статус игрока)
и очень сложная - в длительных прогнозах. Кто его знает, что этому человеку в голову взбредет?

Автор: Serginio Feb 22 2011, 11:54

Цитата(Hovgaard @ Feb 21 2011, 19:50) *
Думаю, просчет предполагаемых действий игрока - вещь весьма простая в краткосрочном
прогнозировании (линейная экстраполяция параметровЮ описывающих статус игрока)
и очень сложная - в длительных прогнозах. Кто его знает, что этому человеку в голову взбредет?
Совершенно верно.
Но из всего возможного многообразия действий игрока, для ИИ важны только те, которые могут помешать ему выполнить генеральную стратегическую задачу. И не только действия предпринятые противником, но и возможные его действия.
Другими словами - идёт караван ИИ в порт (по ветру). Корабли находятся в предустановленном для случая конвоирования боевом порядке. А тут генерится геймер со своим люггером и пытается против ветра атаковать караван. ИИ просчитывает, что к моменту, когда этот камикадзе подойдёт на расстояние выстрела, последнее судно из каравана уже войдёт под прикрытие порта. Какие действия должен выполнить хитрый ИИ?
Варианта 2:
1. Никаких.
2. Изменить боевой порядок так, чтобы корабли охранения находились между вражеским люггером и охраняемым караваном. Сбалансировать скорости всех судов в эскадре, чтобы этот строй сохранялся, зарядить борта боевых кораблей книппелями, а конвоируемых - бомбами. Эти действия будут очень полезны на случай, если значительно поменяется ветер.

Согласитесь, что прописать указанные действия для ИИ не так уж сложно. Алгоритм будет универсальный для многих случаев. Просто в данной иллюстрации не затрагивается такой важный аспект, как изменение направления движения каравана (его цель находится по ветру).

Автор: ALexusB Feb 23 2011, 01:24

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

А так все по делу, закопипастил себе в Ворд стратегии по этой теме по оглавлению, от кого инфа. Для перечитываний и вывода модели. Спасибо - помогает.

Автор: Kunla Mar 17 2011, 22:26

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

Для примера если кому интересно существуют в ней люди оснащающие специальные корабли именно под абордаж и более ни для чего, задача получить скоростное и маневренное судно с длинным корпусом и лёгкими быстро зарядными орудиями и значительной по численности командой, в 99% случаев это Шебека, затачивают её на скорость и зацеп, задача в бою быстро сблизиться пересекающимся встречным курсом, пользуясь косым парусным вооружением и возможностью идти круто бейдевинд, дать залп картечью и остановить более тяжелый и неповоротливый корабль собственным длинным корпусом и воспользовавшись снижением скорости и отсутствием команды взять на абордаж, в случае же, если бой затянулся Фрегат увернулся и не дал снизить себе скорость, и Шебека будучи обстреленной получила значительные повреждения, она уходит крутым галсом от преследования и судно с прямым парусным вооружением отстает. Таким вот видом пиратства промышляют многие на серверах PotBS. Открытую перестрелку с Фрегатами Шебека вести не может, так как она более картонная с более легким вооружением, но может какое то время держать удар сбивая паруса противнику но не более. Однако она легко уходит практически от любого преследования (за редкими исключениями), и может атаковать практически любой по тяжести одиночный корабль, хоть 1вый рейт, риск конечно в этом случае огромен, т.к очень тяжелый корабль пустит картонную Шебеку на дно с одного двух залпов, но тут всё зависит от рукастости пилота cool.gif быстро войти в мертвую зону и очень быстро взять на обордаж иначе труп, более легкие фрегаты не способные утопить Шебеку в залп зачатую оставшись с ней 1на1 очень сильно рискуют.

Интересен так же способ противодействия подобного рода атакам, в частности фрегату попавшему под настойчивую атаку Шебеки важно самому лишить её команды и не дать ей притереть себя к ветру, для этого необходимо разойтись с шебекой на встречных курсах вплотную и произвести залп в упор ни в коем случае не поворачиваясь и не ведя бой на параллельных курсах, т.к в этом случае Шебека подойдет по касательной пользуясь косым парусным вооружением и поставит Фрегат "носом в ветер" и возьмет на абордаж.

Алекс если интересны подробности могу расписать более подробно, не знаю как это соотносится с реальными боевыми тактиками но в Корсарах Онлайн это всё довольно занимательно и сложно, сам играю в эту игру более 2ух лет.

Автор: ALexusB Mar 17 2011, 23:57

пока это все мне рано, базовых вещей нет. Такие тонкости скорее всего будут на уже открытой бете балансироваться.
Но пока с начала марта времени нет у меня на разработку ИИ, так что опять придется заново все восстанавливать в памяти, тк ОЗУ головы было обнулено и перегружено оперативной работой не по играм.

Автор: ALexusB Nov 28 2022, 13:30

Однако, какая хорошая тема и она снова актуальна для нового проекта по корабликам по настолке.
http://www.seaward.ru/forum/index.php?showtopic=14552

Всем большое спасибо за ответы, прям восстановление знаний из бакапа в мозг произошло!
Книги, что упоминались, тоже нашел.

Флаш заглох как раз в 2012 и теперь на Юнити порт делаю всего арта и идей. Пока по простой схеме. пошаговых правил

10 лет, я как-то был на паузе в части геймдева, т.к. тогда не получилось быстро войти в новую платформу.
Перегрузы на работе, фриланс заказы, если было время. Это не оставляло место творчеству без монетизации и НИОКР.

Перечитал тему с интересом, что-то опять перенес в ДизДок, т.к теперь акцент уже не на реалтайм игру и чем заряжено орудие, там проще, но тоже сложно делать.

И забавно, я 10-12 лет назад был более оптимистичен в "сча тут все быстро сваяем" smile.gif
Теперь уже нет, задача ИИ оч сложная и еще вчера я даже не знал, как начать думать ее делать. А 10 лет назад знал выходит, но забыл... ага.
Но.... обчитался инфой и теорией вчера и.. мысли есть.

За прошедшее время я сталкивался с нейронной сетью на работе, с год ее учили помогать на вопросы отвечать, но.... вырубли в итоге.
Хотя мы видим, как это все реально работает - дип-фейки, восстановление фото по куску и прочие автопилоты.

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

До самого ИИ я дойду сильно позже, когда будет кликабельная игра с PvP на одном экране.
Пока просто отмечу, что тема будет обсуждаться и прошу, кто мимо проходил и заглянул - заглядывать чаще, тут была тишина, да
Но теперь есть движуха в моем лице - так что "велкам бэк на борт"!

Автор: ALexusB Dec 10 2022, 17:57

Полезные статьи про ИИ в играх-стратегрях
https://dtf.ru/gamedev/91889-razrabotka-iskusstvennogo-intellekta-iz-iskusstvennogo-idiota-v-poshagovoy-takticheskoy-igre

https://gamedev.ru/code/articles/?id=6143

Автор: ALexusB Jan 5 2023, 22:05

Добрался до ИИ
Пока сделал просто выбор всех вариантов хода в массив и рандом по нему.
Пока делал, собрал кучу проблем, которые порешал, чтоб "мультик" хода ИИ не рвался.
Теперь даже играется, просто случайно тыкая в плашки хода, даже стрельнуть может.
Давать такое не буду, т.к. нужно же какую-то тактику сделать
Куда плыть, держать курс. Приоритет стрельбы и по кому, когда и где в ремонт.

Автор: ALexusB Jan 6 2023, 21:51

Я это сделал!

ИИ игровой

http://seaward.ru/pirates/ - сборка на тест

"маленький шаг для человека, но...." хотя это не про меня, но чувство у меня такое, т.к. месяц назад я даже не знал, как начать это делать.

Тут нет нейросетей, тут все "экспертная система" (как в вузе курсовую делал 25 лет назад).
Но слепок с меня самого - как бы я играл сам.

Есть что еще учесть, но и так норм.
Я сыграл пару игр с ПК и продул одну, вторую в ничью.

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

Для тестов можно натравить ПК на ПК
Ход будет через 5 сек сам закрываться для ПК-ПК игры (но вот рекламу нужно жать закрыть, если будет, хотя игра продолжится под ней, я так оставлял и тестил фоном, пока ужинал). Для ПК-Чел нужно ручками жать, как было

Подробные правила на 4х языках в как играть справке.

В табличке хода - название миссии, а то не ясно где что.

Какие-то еще правки по мелочи, забыл уже где, по ходу находил.

Иконки кораблей выдают название корабля при автоходе и выстреле - чтоб понято было, что это за корабль.

Оставил вероятности где-то, чтоб корабли могли сами что-то решить, как в +, так и минус - где-то реально тупят.
Люггер по испанскому золоту ищ-за Кубы еле выплывает - не понимает куда ему поворачивать

Хотя поиск пути сделан по матрицы полные "фронтом волны" и как бы обплыть может.

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

У меня вечно бой шел.
А у ИИ есть фича "не проходить мимо", если можно бахнуть в упор smile.gif

В логику ИИ вдаваться не буду - интереснее ее понять по ходу игры.

Где тупит - пишите кейсы, буду делать заплатки.

Еще клик по пробел и энтер закрывает ход корабля и плашку хода - тоже удобно, если нужно тестить именно ИИ игру.

https://wampi.ru/image/RL1ApHl
Вот это ПК против ПК результат.
И это у меня уже третья игра - в пользу испанцев.
Пиратам е везет или таки баланс не за них.
Тут было два абордажа, но в взяли 1, у меня было 0/2 до того. Так-то если бы "да", то оставшиеся корабли 1 бы загоняли.

Уровень Спасти пирата буду балансить - пока там без шансов проплыть.
Может ТТХ кораблей еще изменю
===
Да, поменял
В спасти пирата - корвет вместо брига и у галеона 4/6 в начале, а не 3/6, а то любой шторм и его не довести, т.к. негде чинить.
У корвета 2 галса, он слабее флейта и пинаса, но будет маневр.
У шхуны сделал 3 галса.

Вопрос (для ответов в соседней теме) - какие еще миссии на этих 12и типах кораблей сделать?

Автор: ALexusB Jan 11 2023, 09:54

Я прилично доработал ИИ по шаблонам и ситуациям поведения.

И теперь уровень Испанского золота 2 х 6 кораблей у меня ИИ-ИИ пираты выигрывать перестали, т.к. галеоны перестали тупить, пользуются всеми залпами на всех дистанциях, чинятся и даже отступают, если есть ход.
А вот абордаж парой я не делал (пока не понимаю, как синхронизировать пары). И все эти отступления как раз не дают делать абордаж.

Просьба проверить - можно ли, играя за человека, выиграть пиратами?

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

Автор: GOST 8479-70 Jan 11 2023, 20:49

Цитата(ALexusB @ Jan 11 2023, 09:54) *

Просьба проверить - можно ли, играя за человека, выиграть пиратами?

Можно)
https://dropmefiles.com/KMeoG
Прямо с первой попытки получилось, причем без шансов для испанцев. Пошли толпой сначала на одного, затем на другого. Они оказались к такому не готовы, только пободались для приличия.

Был еще второй бой, но я забыл нажать кнопку записи smile.gif поэтому видеопруфов не будет, да и проиграл я его, потопив только одного в самом конце.
Что может представлять интерес - попробовал новую тактику. 5 пиратов стали в одну вертикальную линию перед испанцами. Выглядело это как-то так:
................../////


........................... /////
....###................./////
............................/////
..............###......./////
............................/////

///// - пираты, ### - испанцы. Один пират сверху держится достаточно далеко (чтобы испанец не агрился) и контролит возможность обхода, снизу - испанский Мейн. 5 кораблей стоят в позиции и игнорируют любое направление ветра.
Испанец вынужден сам подходить и отрываться от друга, подставляясь под огонь и абордаж.
ИИ оказался достаточно умен, чтобы не идти в ловушку сразу - отстреливался через 3 клетки с крохотной вероятностью попадания.
В итоге дернулся в мою сторону, и я его окружил. Но случилось так - из 5-6 моих выстрелов попал один, а он потопил мой бриг. В следующей перестрелке я оставил ему половину хп, но совершил роковую ошибку - не создал условий для абордажа. В итоге он вместе с подошедшим другом потопил 2 моих мелких корабля.
Дальше уже по наклонной - один галеон стоит лоу хп, но я не могу его абордировать, только потопить. Другой галеон фулл хп против каравеллы, шлюпа и люггера в полупозициях. Все пробитые.
Когда остался один шлюп, добил этот злосчастный галеон-бисмарк, но игра все равно засчитала поражение.

Автор: ALexusB Jan 11 2023, 21:44

Отлично, спасибо!
Тогда ок. Пока так оставлю.

Нужно еще проверить испанцами против пиратов
Но тут должно быть проще, ИИ будет тупить, ну или потопит и будет Ничья.

У меня тесты идут ИИ-ИИ пока что.
Вот Французский барк - там баланс, три игры 1 0 ничья 0 1
А вот испанское золото - у меня пираты не могут по ИИ стаей плыть.
И от того оч редко делают абордаж.
Я им выключил отступление, если отстрелялся и есть ход. Это пзволяет абордаж делать толпой, но без тактики спасти корабль, если есть возможности уйди из сектора выстрела
А вот галеоны как раз могут и отойти, но у них галсов мало, потому не заметно
Заметно в болей у Порт Рояля.. там корветы и мелкие прям маневрируют.


Автор: Черный Корсар Jan 11 2023, 21:51

Ни чего себе, несколько дней не появлялся и сколько всего нового. 1.gif
Алекс, снимаю шляпутреуголку! smile.gif
Вчера попробовал захват голландца, новичкам и дуракам везет, так что с первой попытки захватил.
https://ibb.co/hCwKFdp 10 минут.
Линкор стреляет по люггеру, но у голландцев канониры не очень или у пиратов штурман хороший, все мимо. 1.gif
Был забавный момент люггер сидел в Кюрсао, а голландец не мог зайти smile.gif
Шхуна два залпа, два попадания, но ответным огнем голландец топит шхуну. Люггер выходит, стреляет мимо. Бригантина, мажет, вторым залпом попадает и идет на абордаж! С первой попытки ПОБЕДА!

А вот https://ibb.co/ZTBzHqb, продул, за 9 минут.
Северный ветер отправил нас на край карты. Голландец с попутным ветром подходит к шхуне и топит ее, следующий залп мажет и последним выстрелом топит люггер. Дальше маневры, неудачные с моей стороны и после неудачной перестрелки последний пират отправился на дно к остальным. sad.gif Голландия победила.

С ИИ играть забавно, плюс уже точно можно сказать что не подыгрываешь. Сыграю еще в другие режимы отпишусь.

Автор: ALexusB Jan 11 2023, 22:34

>>С ИИ играть забавно, плюс уже точно можно сказать что не подыгрываешь.
Это да
Я тестил лидерборд, нужна была победа. Два раза продул smile.gif
Потому попал туда с 0 балами (баг был, с ноль не нужно же попадать, заодно поправил это)
Сча уже наиграл и выиграл.
Так то в лидерборды можно читить - играть Ч-Ч и сливать игру, будет победа человеку все равно.
Не знаю как такое латать и нужно ли... весь этот борд - показатель игр самих.
Я сперва вообще штуки игр туда писать хотел, а не победы
Но тогда с моими тестами (а я на сервере тещу, т.к. только там можно на Андройд виртуалке это запускать фоном) я бы уже был с 40+ игр smile.gif
А вот побед у меня всего 2,т.к. К-К игры в счет побед не идут, там игрок всегда продувает, но денежка капает. А в ничью так и +100, что тоже чит.

Но такой себе, смотреть игру (рекламу кликать). Мне то пофиг - игра идет, реклама лезет. Так что пусть так.

Я допилил банерную рекламу, т.к. без нее игра не попадет в популярные (без шанса), нужно все SDK функции яндекса юзать мне тут сказали в суппорте.

Но... чтоб не мешало - только в меню и на паузу хода.
И ее можно вообще убрать, если сделать на весь экран.

Автор: ALexusB Jan 12 2023, 15:22

В поиски расстояния до цели применял поиск "фронт волны" по матрице. И там были учтены все препятствия, корабли тоже.
Были моменты, когда корабль плыл в обход, т.к. на пути был другой корабль (свой или враг). Но они же все в движении и человек бы на это не смотрел (ну типа перекрыт путь между островами, но отойдет же шип)
А ИИ пускался в обход совсем в др сторону.

Так же был баг с выбором вектора пути и иногда визуально даже не по ветну в нужную сторону плыл, а в бакштаг как бы в бок (человек бы так не пошел).

Должно теперь иначе быть

Т.к. меня заколебало тестить долгие крутилки. В девТул моде при К_К игре вращение без звука и в 3 раза быстрее, 1 сек.
Без этих режимов тоже ускорил крутилку, порезал звук с 3.8 до 2.5 сек и крутит теперь 2.4.-2.7сек, а не 3.8-4, шустрее на 1.4 сек
Скорость кораблей на +5%, больше уже со звуками конфликтует и прочей анимацией, не истребители все же.
Снизил громкость выстрела, т.к. он был громче прочего.

Автор: GOST 8479-70 Jan 12 2023, 21:41

Потестил испанское золото за испанцев.
Картина ожидаемая - если галеоны не калечат себя сами в штормах, то с ними трудно пиратам что-то сделать.
У меня один галеон потопил бриг и почти потопил каравеллу, а больше и не надо было. Второй разобрался со всеми остальными сам.
Пираты окружили меня разок, что уже хорошо, но на абордаж взять не смогли.
https://dropmefiles.com/ffu1Z
===========================================================
Да, пират слабенько соображает, когда поставлена задача взять на абордаж - в первой катке, не вошедшей в запись, он потопил оба моих галеона, в итоге ничья.
Может попробовать прописать им приоритет в логике, чтобы они стремились держаться на минимальном расстоянии друг от друга? Может так станет меньше камикадзе-гейминга в их исполнении.

Приятно, что стрелка стала быстрее давать ответ. Теперь одна игра действительно выходит на заявленные 10-15 минут геймплея, что не может не радовать.
Прибавку к скорости передвижения не заметил.

Автор: ALexusB Feb 28 2024, 21:00

Игра Компьютер -- Компьютер. Запись всех 5 миссий настольной игры Карибские Пираты от SeawardRu

Режим игры, когда два противника - ИИ.
Каждая миссия играется по одному разу. Когда шла разработка ИИ и балансировка миссий, то таких автоигр было наиграно сотни, чтобы более точно распределить корабли и их параметры.
Это не обзор игры - это живой показ логики ИИ и его возможностей.
За счет использования перков ситуация может сильно меняться. Если играть человек--ИИ и перки не применять, то ИИ тоже не будет, до первого применения человеком. То есть, можно играть по классике.
Ссылка на игру в браузере
https://yandex.ru/games/app/208983
Описание игры и ссылки на мобильные версии
http://www.seaward.ru/index.php?page=Game,BoardGame
Если хотите поддерживать проект от студии SeawardRu (автора Корсары КВЛ и ГПК), то, пожалуйста, запустите браузерную версию и поставьте там 5*. Из-за низкого рейтинка в Я.Играх игру уже сложно найти.

https://www.youtube.com/watch?v=IWpN9zjoJHY


Игра Компьютер -- Компьютер. Запись всех 5 миссий



Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)