Нужна ваша помошь!
Некоторые знают, а кто-то догадывается, но я не забросил поприще пиратски игр с концами
Дело движется, медлено и как обычно ночами, но идет - кубики уже играбельны.
Начитался статей, много думал - понял, что к моменту начала кодинга ИИ кораблей нужно иметь базу знаний.
Помогите ее сделать!
Знания - это калька поведения нас - игроков в бою. Берем за основу бой в КВЛ-ГПК и текстом записываем свои действия.
Начну с себя, как пример, без деталей.
В бою у меня сразу идет
1. анализ состояния:
* сил противника (примерно равны, больше, меньше, сильно больше, сильно меньше).
* направления ветра
2. мои цели
* слинять из боя
* всех потопить
* всех абордировать
* часть абордировать и часть потопить
* часть абордировать и слинять из боя
Подзадачи:
* продержаться какое-то время (если это задача такая по квесту)
* защитить купца
- все это сводится в списку выше
3. Корректировка стратегии со временем, то есть повтор 1. и смена на 2.
4. Шаги для достижения цели 2.
* перезарядка
* выстрел
* маневрирование
* поднять-опустить паруса
* абордаж
* выкинуть товар
что еще обычно бывает?
И давайте лезть в детали - на что смотрим, когда оцениваем больше-меньше?
Паруса, корпус, команда, типы кораблей?
Попробуйте на примере конкретного боя описать свои действия - мне нужна статистика, я сам сведу по полочкам.
Пойдет рассказ "как я брал золотой флот" и типа того. Но в описании решений и критериев их оценки, а не литературных изысков про "отлетающие доски после бортового залпа".
Для меня:
1.анализ состояния:
* сил противника (примерно равны, больше, меньше, сильно больше, сильно меньше).
* направления ветра
Цель – всех абордировать. После боя уже разбираюсь с призовыми корабликами (хватит ли команды на всех, чтоб доплыть до ближайшего острова).
Использую книппеля и картечь, т.к. ядра и бомбы с собой не таскаю.
Паруса в боевом положении. Маневр.
Часто приходиться защищать захваченный призовой кораблик, кэпу командуешь уплыть, а он прёт прямо под пушки противника, в итоге он или потоплен, а скорей всего захвачен, т.к. команды на нем нету.
1.1 Количество кораблей противника(не важен класс)
1.2 сила ветра
1.3 направление ветра
1.4 дистанция до ближайшего противника
1.5 скорость корабля противника
1.6 каким зарядом заряжены орудия противника
2. Зависит от 1.1:
Если кораблей >=3 то одного на дно и ходу,если меньше то на абардаж всех,за исключение каковы повреждения нанесены мне.
4. Бортовой залп книпелями,спуск парусов,разворот кормой для получения меньших повреждений и кормовой залп,следующий борт.Перезарядка бомбами если >=3,картечью <3.
/*Лирическое отступление:
Морские противники в ВМЛ были намного лучше нежели в последующих версиях игры.Но всем им не хватает одного-нелогичности в своих действиях,т.к.чем будет стрелять и куда поплывёт бот можно элементарно понять.*/
При убегании выкидываю товары по весу,а не по необходимости-жизнь дороже :-) На что смотрим?На паруса конечно же!Неподвижный пративник-мертвый пративник!
Оценка противника:
*Эскадра или одиночка
*Оценка сил эскадры/одиночки и моих сил (моей эскадры)
#Если я слаб.
Обстрел книпелями парусов ближайшего противника и дёру, держась ветра + облегчение трюма, если меня доганяют (т.е. моя скорость меньше ближайшего корабля).
#Если я равен по силам или больше.
Обстрел опять же книпелями парусов, разворот, играя скоростью корабля за счёт подъёма, спуска парусов (учитывая нацелены ли на меня заряженные пушки или нет).
Цель такая, чтобы сбить хотя бы 1 мачту, тогда противник менее повротлив и более медлен. После этого принимаюсь за другой корабль. После "обезвреживания" пары самых опасных судов либо топлю, либо абордаж.
*Если в бою проигрываю (не потопил ни одного корабля)+(остаётся ~60% от корпуса и парусов), то пытаюсь удрать. Опять же книпели, используя.
Оценка противника:
Оценка : Эскадра/одиночка (класс роляет)
Оценка моих сил: Одиночка
Направление и сила ветра:
Если я слаб:
В зависимости от класса корабля атакую, в основном на шлюпе могу пойти на абордаж шхуны или брига, если у противника корвет убегаю, используя бейд и книппеля.
если будет два шлюпа и люггер однозначно вступаю в бой.
Если противник равный мне:
я на корвете
Если нападает эскадра из Корвета, брига и военника, ухожу в бейд, когда они выстоенны в ряд, разворчиваюсь, иду на сближение потом начинаю атаковать, преймущественно использую картечь для последующего абордажа, от военника убегаю используя книпелли и бейд, если команды у него мало абордирую
Таскать за собой эскадру не люблю.
Усложним задачу - как бы вы играли против себя?
Вы описываете игру "ас из" (текущую) с "тупым" ИИ компа.
Правильно сказано - он предсказуем.
Речь о построении новой мат модели - не как играть против ИИ "секрет победы", а как играть ИИ против вас самих
На это акцент, плис.
Это сложнее.
*Противник равен мне по силам или сильнее.
Оценка уровня моего корабля и противника.
#Если я слабее
1)дёру, пытаясь отсреливаться книпелями по парусам
2)сброс товара из трюмя (если моя скорость меньше ближайшего приследователя)
#Если на равне
1)даю бой, НО
2)держусь дистанции, стараясь её выдерживать, если её длина от А до Б меняется.
3)В сражении использовал бы книпели и бомбы.
*Главное использовать промахи противника
1)повенулся не той стороной
2)опустошил 2 борта подряд
- тогда идём быстрее в атаку при условии попутного ветра. Сделали бортовой залп по нему и вернулись снова назад для удержания дистанции.
PS: Вопрос в браузерке предполается зарядка бортов разным видов снарядов? Тондем книпели + бомбы был бы интересен.
1)Подходим к противнику на близкое расстояние.
2)Обстреливаем бомбами.
3)И пытаемся отойти на безопасное расстояние, попутно стараясь книпелями порвать его паруса в клочья, чтобы сбавить его скорость.
PS2: Для проведения сравнения игры живых людей друг против друга можно использовать режим игры через инет в К3/К3СМ, используя Хамачи.
Если сражаться против себя, и силы равны.
То не стал бы сближаться, т.к. он (я) предпочитает снести паруса, дабы сразу лишить противника маневренности и скорости. Тогда бой превращатится в затяжной. Главное не потерять свои паруса. Если такое произошло, то уже сближаюсь, и пытась либо захватить, либо потопить противника.
Если он (я) слабее, то беру на абордаж. Т.к. он будет извиваться и отстреливаться книппелями, то также придется стрелять ими. Главное нести паруса, тогда победа.
Самая большая ошибка ИИ в бою со мной: стрельба по парусам, когда они убраны и не правильная оценка сил.
Все же самая главная задача для ИИ в бою против мня - это сбить паруса. Это проще всего, и в тоже время ИИ этого не делает.
Для торговцев, логичее было бы, чтоб они чаще пытались уйти, а не догнать меня, когда я ухожу, т.к. чаще эта погоня становится для них последней.
В бою с равным соперником,потеря им части парусного вооружения ещё не победа.Малейшая ошибка, при сближении, может привести к ещё более серьёзным потерям уже у атакующего.
Тогда можно будет использовать так называемые "мертвые зоны", там где пушек нет.
Анализ действий обычно начинается с оценки сил противника:
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%
ж) погони нет, только перезарядка с картечи, на бомбы, книпеля и в конце на ядра
Проще всего рассмотреть тактику боя на примере, когда вы и соперник равны по силам, либо уступаете ему. Допустим, что по вооружению, команде и скорости примерно равны.
Прежде всего, конечно же, оцениваем силу и направление ветра, тип парусов косые или прямый, - это немаловажно.
1.В самом начале боя главное, как было уже сказано, сохранить свои паруса и нанести достаточный урон парусам противника. Поэтому пока паруса у обеих сторон целые и скорость равна, стараемся занимать в бою такую позицую относительно противника, чтобы ветер дул от него в нашу сторону. Это может показаться глупым, потому как дает преимущество противнику в случае, если он решит неожиданно сблизиться. Однако если он думает, как мы, то не велика вероятность, что он бросится на абордаж пока силы наших команд равны. Кроме того, когда ветер дует от противника, то мы задаем дистанцию а не он, ведь на данный момент боя нужно держаться на расстоянии. Для атак используем книпели, стараемся бить, когда противник перезаряжается и стоит поперек линии нашего огня, т.е в борт, так больше шансов сломать больше мачт. Стрелять в корму или нос, пытаясь порвать паруса, бесполезно, если ИИ думает как мы, то его паруса в боевом положении (сумеет их сберечь).
Когда он производит залп, подставляем корму, + если выдержали позицую, то в момент его атаки увеличиваем дистанцию уходя по ветру (противник сам будет сокращать дистанцию). Таким образом действуем, пока скорость и маневренность врага не упадет.
2.Дальше в зависимости от целей, сначала можно пройтись по противнику бомбами (имеют приличную дальность и наносят наибольший урон команде после картечи, ну может пару пушек удасться выбить + еще потеря скорости от дыр в корпусе) или сразу зарядившись картечью, сократить дистанцию и пристроится у кормы. Пытатся не попадать под бортовой залп и выбивать команду. При этом надо помнить, что целью почти поверженного противника, теперь не имеющего шансов на побег, становится абордаж. Он наверняка, тоже будет атаковать картечью. Так что у кормы удержаться немаловажно.
1. Этот способ так же идельно подходит в том случае, когда нужно пустить врага на дно. Только само собой, заряжаем бомбы или ядра.
Если сами остались без мачты или не сберегли паруса.
Прежде всего,конечно же, пытаемся то же самое сделать с противником, используем книпели. Но если враг идет на сближение, то заряжаем картечь, пытаемся подставлять под залпы корму или нос и по возможности атаковать с борта. Тем самым сохраняя свою команду и выбивая команду противника.
У меня был случай, по-моему, на ГПК уже, когда в одном из боев невыгодных мне по числу врагов мой корабль (фрегат) остался без мачт и пороха 1 на 1 против БШ, который был почти в идеальном состоянии, правда капитан мазила. А у меня было преимущество в команде и ветер дул от меня в сторону НПС. БШ держался на дистанции и атаковал бомбами. Мне кроме как встать носом к противнику, чтобы уменьшить площадь поражаемого снарядами корабля и ждать, ничего не оставалось (пороха нет). В итоге простоял так минут 40 реального времени, потом БШ перестал стреять и просто уплыл по ветру Не знаю, то ли ему надоело, то ли у него порох кончился. Но он уплыл.
Почему я не начал бой снова, когда все так повернулось, а ждал так долго? А все потому, что у меня команды было раза в 1.5 больше и статус "морсие волки". Я был на 100% уверен, что если случится абордаж, то выиграю я. И поэтому надеялся, что БШ попытается взять на абордаж, а я до того времени не потеряю превосходство в команде. Да и сама по себе ситуация интересная оказалась, как и развязка в итоге.
Это был единственный раз на моей практике, когда кораблик НПС отступил сам, имея такое превосходство.
Так, ну что же, я играл бы против себя так:
1 Осторожное сближение, форма - уход и позволение себя нагнать.
2 Лавирование, позволяющее открывать бортовые залпы ядрами и снижение скорости для уменьшения дистанции.
3 при вхождении корабля псевдоменя в зону поражения книппелей, открыть огонь по парусам.
4 при падении первой псевдомоей мачты - резкий разворот в сторону корабля, жесткий обстрел книппелями.
5 когда у псевдомоего корабля останется не больше 10 хп парусов, я буду уже в зоне поражения картечью. Заняв удобную позицию, а именно - перед-бок псевдомоего корабля - мертвая зона, развернуться бортом и вести огонь картечью.
6 дать бой на палубе или утопить бомбардировками.
В хорошем ИИ есть плохая сторона для игр - ИИ должен проигрывать игроку, интересно, качественно, захватывающе, но проигрывать
Если он будет выигрывать - тоже плохо
Преимущество у ИИ есть - это точность движения (просмотр результатов приказов по формулам), тогда как человек в уме не сможет оценить без линейки и калькулятора.
Но соглашусь, сделать качественный ИИ сложно и долго - нуэно сделать интересный и масштабируемый (на потом докрутить).
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 вы меня не поняли.Я имел в вид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аков.
Для эталонного ИИ вполне можно взять существующий для Невозможного. Поскольку играл только на этом уровне, сравнить с другими уровнями не могу, но обзывать его тупым я бы не стал. Во многих случаях, там где ИИ нацелен на атаку ( ОЗГи, патрули, каратели ), он ведет себя вполне адекватно (особенно, когда в эскадре есть скоростная мелочь типа люгеров), т.е. старается в первую очередь лишить противника маневра, а далее - утопить или абордировать, если нужно взять ГГ в плен . Меня почему-то на абордаж никогда не брали
Другой момент - торговые караваны. Торговцы разбегаются, охрана ковыряет в носу, делай что хочешь. С точки зрения командира конвоя - торговцы должны сохранять боевой порядок и вести стрельбу только на максимальное поврежнение атакующего (бомбы - ядра) всегда. Корабли охранения должны быть нацелены на немедленную атаку и иметь пушки заряженые книппелями, а трюма пустые . Задача - лишить нападаюшего маневра, связать боем и дать каравану уйти. Как все это смешать в одном флаконе, я не знаю. Причем охрана не должна сдаваться на милость вообще .
При таком раскладе еще подумаешь, стоит ли в одиночку нападать на конвой. Отсюда другая задача - компаньоны должны выполнять приказы ГГ :)правильно.
Тактика у всех одна - лишить противника маневра, отсюда появляется шанс победить. Как для атакующего, так и для обороняющегося. А чем стрелять и когда, зависит от типа и калибра орудий..ИМХО
В данной задаче необходимо посмотреть на ситуацию с ИИ не со стороны игрока, а со стороны ИИ, прописав ИИ строго оговоренные (уставные) действия. Только в этом случае, если мы не ставим задачу создания самообучающегося ИИ, действия ИИ будут сбалансированно правильными.
Для того, что бы задать ИИ вариант правильного решения, необходимо классифицировать наиболее типичные ситуации столкновений; изначальные задачи, поставленные перед ИИ (приоритеты); превосходство сторон; вариабельность.
Типичные ситуации встреч в море – это:
1. Конвоирование торговых кораблей.
2. Плавание торгового корабля в составе каравана
3. Патрулирование.
4. Нападение.
5. Одиночное плавание.
Изначальные задачи, стоящие перед ИИ (приоритеты) выходят из описанных выше ситуаций. Это:
1. Защита каравана / конвоируемого судна и доставка его к пункту назначения.
2. Держать строй и не отставать от других кораблей, что бы не стать добычей атакующей стороны, минимизировать потери и добраться до пункта назначения.
3. Поиск вражеских кораблей и охрана объектов на строго ограниченной территории.
4. Целенаправленный поиск вражеских кораблей, а также: потенциальных призов; нападение на конвои и торговые караваны; нападение на прибрежные поселения и города.
5. Передвижение из пункта А в пункт Б.
Еще один важный пункт в изначальных задачах - корабль ГГ не может являться приоритетом для врага, если это не ситуация 3, 4. Иначе получается, что игровой мир вертится вокруг игрока, а надо создать ситуацию, что игрок пытается вписаться в игровой мир и стать его частичкой. Пример неправильных приоритетов: корабли охранения бросили торговый караван, погнавшись за ГГ, в то время как компаньон ГГ громит торговцев.
Оценка превосходства сторон проводиться сравнением: соотношение количества кораблей с обеих сторон; количество орудий и их калибр; скорость кораблей с обеих сторон, причем для каравана эта формула вычисляется по принципу «скорость передвижения каравана равна скорости самого тихоходного судна в нем»; количество солдат на борту, готовых участвовать в абордаже или его отражении.
Вариабельность. Это то, что позволит разнообразить типичные ситуации. Сюда входит: фактор внезапности; погодные условия; диспозиция сторон относительно друг-друга; время суток; мораль и ментальность, предустановленная в национальных отличиях с учетом коэффициента торговец/военный/пират; состояние флотилии; наличие третей стороны в столкновении.
Исходя из этого можно описать типичные схемы поведения ИИ, которые он будет применять по отношению к ГГ. Причем, для большей достоверности у ИИ должен быть также вариант выбора, исходя из действий ГГ, а именно:
1. Национальная принадлежность.
2. Намерения ГГ.
3. Состояние флота.
4. Соотношение сторон.
5. Поведение ГГ.
Это позволит избежать таких ситуаций, как например, преследование корабля ГГ на протяжении трех-четырех суток прибрежным патрулем, при котором скорость кораблей одинакова, или нападение вражеского люгера на меновар ГГ.
В большинстве случаев на низких уровнях развития ГГ иду в бурую на абордаж, будучи заряженым картечью. Один, максимум два залпа при максимальном, приабордажном сближении, что бы прорядить экипаж противника.
Таким образом будучи одиноким волком на судне четвёртого класса, если в эскадре противника три судна, до второго класса включительно, все абордируются и топятся. Если в эскадре четыре и более кораблей, смотрю соотношение количества экипажа, каждого отдельно взятого судна, выбираю самый ближайший шип и двигаясь в его сторону, обстреливаю книпелями самый крупный, далее по возможности маневрирую и сближаюсь с самым наглым из быстроходных(т.к. они обычно тоже прут в бурую учитывая численное приимущество своего экипажа или орудий). После абордажа смотрю соотношение сил с другими членами вражеской эскадры.
Если чувствую что на пролом хватает сил, иду на следующий абордаж с ближайшим. Если нет то пытаюсь отдалиться и вести обстрел книпелями по любому кто приближается больше других. Разумеется так же стараюсь беречь собственные паруса и по возможности убирать их если кто то из противников поварачивается бортом с явным намерением дать залп.
Прилично попортив паруса судам противника, если ещё позволяет состояние моего судна, опять иду на ближайшего. Разумеется стараюсь следить чем он заряжен и соответственно либо виляние, либо атакующий рывок на сближение с последующим абордажем.
Пару раз такая тактика срабатывала против эскадры из пяти шипов, где были: один военный корабль, два тяжолых галеона, два корвета и бриг или два брига и корвет. У меня же был пузатый и заточеный галеон с перегрузом экипажа в количестве 461 человек. Всех топил и шол на следующего.
В некоторых случаях такая тактика не оправдывалась т.к. состояние судна не позволяло эфективно вести бой маневрируя между врагом.
Получается так.
1. Опредиление задачи. (уничтожение или захват)
2. Оценка соотношения сил.(число судов, численность экипажей на них, маневренасть вр.шипов)
3. Оценка навыка капитана на вр.шипе, точность противника, при стрельбе с дистанции ядер, по отношению с моим навыком.
4. Выбор. Атака или ал бе бак.
5. Если атака, книпелируем ( если такая возможность предоставляется)
А). При высокой точности стрельбы противника, максимально возможное по скорости сближение и абордаж с последующим потоплением или захватом, если есть офицеры.
Б). При не высокой точности, максимально возможное по скорости сближение с одним-двумя залпами картечью, с последующим захватом или потоплением.
6). Повторная оценка соотношения сил.(состояние судов, количество экипажей)
7). Выбор. Атака или ал бе бак.
Схема простая как топор.
было бы не плохо если бы были специальные маневры кораблей и у гг и у вражеских. пытался взять караван по наводке пгг. и вот что получилось: (уверен что случайно) вражеские корабли начали окружать меня, ни чего сложного (особого, но нада простараться). Вот сейв, если интересно то посмотрите
Вот и пришло время заняться многострадальным ИИ. Приятно, черт меня подери!
Однако для того, чтобы потрудиться более плодотворно, хотелось бы уточнить задачу, т.е. вопросы, поставленные Алексусом, поскольку я не вполне представляю, что входит в зону ответственности этого самого ИИ. Итак,
1. Вопросы по сбору статистики, поставленные разработчиком, касаются только собственно морского боя, т.е. поведение противников сразу после встречи в море.
Вопрос: это все, за что отвечает ИИ? Если это так, то в предыдущих постах уже все сказано. Порядок действий одинаков, различия лишь в поведении конкретных игроков.
2. Если же ИИ отвечает за более широкую область игры (что подтверждает пост Denis'а), то просьба уточнить пределы этой области, а именно:
а) регулирует ли ИИ поведение кораблей всех наций на глобальной карте?
б) учитывает ли ИИ поведение кораблей различного назначения при выполнении ими характерных для них задач (пост Denis'а составлен так, что учитывает, а я в этом не уверен)?
в) входит ли в ИИ мод с флагами или это отдельная песня?
г) какие имеются ограничения, преодолеть которые (пусть в настоящее время) невозможно?
Далее хотелось бы знать - стоит задача создания "нормального" играбельного ИИ или модернизации (шлифовки) только морской боевки?
Я понял, что у игроков (не программистов) есть устойчивое заблуждение в пониманиие ИИ в играх.
Для начала это вообще не ИИ
Это ЭС (экспертныке системы) - они не делают новых знаний, могут не иметь памяти и тп
Это калька с эксперта (разработчика или дизайнера). Набор условий и формул вычисления сравниваемых коэффициентов.
Противник компьютерный -это не человек, у него нет единого интеллекта на все. Это куча процедур.
Тут (в теме) речь идет о мор бое - че там на карте - это пофиг совершенно - это другой ИИ. Как и в абордаже.
Они тоже нужены, но не сейчас.
Связь этих ИИ есть - в передачи стратегии поведения - если преследовал на карте, то агрессия, если убегал, то бегство. Вот и вся связь.
В ММО ИИ тем более не человек, это как Остап Бендер - одновременный шахматный турнир. Это тогда скорее паук.
Еще есть ИИ мира - его обсчет периодически и выстраивания переменных.
Вообще игры изнутри - это как шок героя Джима Керри в Шоу Трумана, когда он зайдя в неучтенный банк увидел, что там вместо лифта гардеробная статистов, а за гранью его мира - стенка купола.
так вот - игроки играют - и пусть играют дальше, они верят в мир игры - а реально там, если капнуть - железные подпорки и никакой воды нет
Не нужно туда лазить!
"Ах, обмануть меня не трудно, я сам обманываться рад"(С)<АС Пушкин>
Mitrich
В своем посте я попытался сделать кальку морского боя, в которой определенной ситуации соответствует определенная задача, т.е., если ситуации в море условно соответствуют нынешним игровым, то задачи, которые я расписал для этих ситуаций, относятся к "идеальным" (шаблонным) задачам, которые, как мне кажется, должны были бы быть в разрабатываемой модели.
Именно поэтому я предлагаю посмотреть на ситуацию не со стороны того, как воюет игрок, а со стороны того как должен воевать ИИ. Вопрос выбора боеприпаса, например, безусловно важен, но это скорее третьестепенная задача для данного вопроса. Главное - модель поведения, на которую и будет надстроены паруса и ядра. Здесь я абсолютно согласен с ALexusB, что необходимо выстраивать те самые подпорки, которые будут держать картинку именуемую ИИ.
ALexusB
У меня есть вопрос, возможно ли в данной моделе прописать разные модели поведения купцам, кораблям охранения, охотникам и пр., с помощью которых можно было бы и решить типовые задачи?
Denis, да, возможно.
Только дело не в типе, а в стратегии на данный момент, "задаче" по-твоему.
Те же ОЗГи имеют цель - преследовать, но в процессе боя переключатся на убегать
тк
"3. Корректировка стратегии со временем, то есть повтор 1. и смена на 2."
А вообще, в играх есть одна заповедь про ИИ. Он не должен выиграть у игрока! Он должен ему красиво проиграть!
Только в ММО свои законы, там всегда кто-то проиграет, если это ПвП, там ИИ может просто и не быть.
ALexusB
Отвечу за себя. У меня нет никаких "заблуждений в понимании ИИ" по той причине, что у меня полностью отсутствует это самое "понимание ИИ". Данное обстоятельство меня очень даже устраивает, потому что я действительно "обманываться рад", и очень надеюсь, что никогда не увижу этих "подпорок". В отличие от разработчиков - Game для меня не работа, а ИГРА.
Из твоего поста я понял, что в данной теме речь идет только о морском бое. Морской бой - это "набор условий и коэф-фициентов". Очень хорошо, предельно ясно. Из последующих постов я уяснил, что можно прописать "правила" поведения кораблям различного назначения. Замечательно! Из этого я делаю вывод: для того, чтобы помочь тебе я должен с точки зрения геймера описать свое видение поведения кораблей компьютера, т.е. описать "условия", а для того, чтобы ИИ красиво проигрывал, ты уже самостоятельно расставишь коэффициенты. Поправь меня, если я ошибаюсь в чем-то.
Denis
Твой подход совершенно правомерен. Лично меня еще с ВМЛовской жизни всегда раздражало то, что все абсолютно корабли противника действуют совершенно одинаково, без учета решаемых задач. Люгеры прут на линкоры, компаньоны спасаясь уплывают прямо под орудия враждебных фортов и т.д. Справедливости ради следует признать, что в последних играх ИИ существенно усовершенствовался, но проблема с привязкой к конкретным задачам не решена. Ну вот, настала пора ее решать. Только, чтобы наши дискуссии в данной теме имели смысл, надо договориться о словах (только представь, каково мне было узнать, что ИИ - это вовсе не ИИ, а ЭС).
Излагаю свою точку зрения.
1) Задачи - у каждой категории участника (со стороны компа) игры своя, каждый геймер может видеть их по-своему. Как пример может служить перечень задач ГГ-я, как это понимаю я (см.ниже).
2) Цели - основные и промежуточные, достижение которых ведет к решению задачи (иногда они совпадают, я, если честно, зачастую их путаю).
3) Способы достижения целей (решения задачи) - потопление, абордаж и бегство. Каждому из них присущ определенный набор (порядок) действий.
4) Действия - стрельба различными боеприпасами, маневр, паруса и т.д.
Поправьте, пожалуйста, если чего не так.
Итак, предлагаю немного систематизировать нашу дискуссию и далее излагать свое видение поведения ИИ (или чего там есть на самом деле) в морском бою применительно к следующим категориям участников игры:
1. Пираты
2. ОЗГи
3. Военные корабли
4. Купцы
Это поведение должно, на мой взгляд, учитывать задачи ГГ-я, решаемые им в данном конкретном случае (будем считать, что противник имеет возможность получить эту инфу в таверне через своих шпионов), а именно:
а) сопровождение купца
б) перевозка пассажира
в) доставка груза
г) перевозка денег
д) доставка документов
е) уничтожение пирата по заданию губера
ж) грабеж каравана
з) грабеж золотого каравана
и) одиночное плавание, т.е. без конкретной задачи (возможно это надо было поставить первым пунктом).
Пожалуй, на сегодня все. Если я слишком навертел проблему в плане возможности воплотить все это в жизнь, то остановите меня (жду реакции Алексуса). Если чего упустил или загнул лишнего – поправьте. Свое видение изложу чуть позже – сейчас просто нет времени.
Mitrich
Ты прав в том, что надо определиться с терминологией, без этого никакой научности нет
Другой вопрос, а нужно ли, что бы ИИ учитывал то, что собирается делать ГГ? Как то не логично. Зачем, к примеру, золотому флоту знать, что ГГ перевозит пасажира?
На мой взгляд, более логично выглядят "уставные отношения" или же набор формул по которым происходят события. Пример такой формулы:
1. Купец-одиночка встретив корабль игрока в море по формуле "свой-чужой" (оценка принадлежности к нации) должен опознать ГГ и:
если ГГ "свой" - плыть спокойно дальше
если ГГ "чужой" то:
а) попытаться сбежать
б) если сбежать не получается, то оценив соотношение сил:
- сдаться;
- сражаться.
В любом случае, пнадо что бы ALexusB ограничил рамки задачи, уточнив правильный ли подход мы обсуждаем.
так выше дал
Идет сперва перечень шаблонов (кратное название- описание)
Потом список стратегий (тут последовательность шаблонов)
Потом список ролей и присущих им стратегий, с условиями выбора одной из них в один момент времени
Потом уже детализация шаблонов на состовляющие реализации (типа - маневр разворота - это последовательность команд лево руля)
Итого списки
шаблоны
стратегии
типажи
А развороты к сзади нагоняющему противнику, будут учитывать подветренную и наветренную сторону?
Тактика изматывания противника при защите торговых караванов, типа вызов огня на себя с целью нарушить стремительность смертоносной атаки ГГ, в виде книпелирования с приближением и последующей попыткой отдаления от ГГ или кораблей его искадры(с привязкой к навыкам капитанов судов, дабы салага кэп с низкими штурманскими статами не проявлял виртуозности лётчиков люфтвафе)?
И вот адекватные поступки согласно имитации погодных условий, это наверное будет посложнее.
Правда тут опять одна оказия влазит, это смена направления ветра при переходе с глобалки на открытое море, ну да шут с ней, компу это пофиг, только игрок кайфаломится(хотя нужно отметить достаточно сильно. Очень сильная фрагментация последовательности событий).
2Denis
Тут ты прав, «золотому флоту» незачем знать, что именно везет ГГ-й. Но я не зря попытался расписать участников игры (со стороны компа) по типам. Кстати сказать, «золотой конвой» не участник, это совокупность участников - купцов и охраны. Отличается от другого конвоя только своим составом, ну может более жесткой задачей по охране. Да, им это знать ни к чему. А пирату? Нужно ему знать, чем он может поживиться, чтобы принять решение на абордаж? Мне кажется нужно. Иными словами, я подошел к данному вопросу в более широком смысле, нежели просто частный случай охраны (также купец, свободный капитан и т.д.). Так что тут, я считаю, все правильно. Хотя и не бесспорно.
2 ALexusB
Ну вот, помаленьку приходим к пониманию существа вопроса. Ты только запасись терпением, поскольку для дилетантов программирования, таких как я, далеко не все вещи очевидны. Еще немало глупостей придется спросить.
Относительно необязательности привязки поведения типажей (если я тебя правильно пронял) к задачам ГГ-я я не вполне согласен, но сейчас спорить не буду. Уверен, что к этому мы еще вернемся. Еще вернемся и на тот самый стык локаций «моря» и «глобальной карты».
Итак, предлагаю, вернее, излагаю свою точку зрения.
Шаблоны (вернее их список):
- спокойное (неагрессивное) плавание;
- удержание противника на определенной дистанции, уничтожение его возможно, но не обязательно;
- бой на уничтожение противника путем его потопления. (Тут хотелось бы уточнить - данный шаблон будет применяться типажами только по отношению к ГГ-ю или же и в других ситуациях, например, сражение военных кораблей (купцов) с пиратами, сражение эскадр враждующих наций, где ГГ-й будет принимать живое участие?);
- абордаж;
- выход из боя (бегство);
Спокойное плавание.
Типаж встречается с ГГ-ем. У противников по одному кораблю. ГГ-й агрессивности не проявляет, но нет никакой гарантии того, что он не сменит флаг и не начнет атаку. Посему
1) анализ проводится по полной схеме:
- ветер, его сила и направление
- состояние своего корабля (целостность корпуса, парусного вооружения и орудий, комплектность команды)
- состояние корабля ГГ-я противника по тем же позициям
- соотношение классов кораблей, их огневой мощи (калибр и количество орудий и, как следствие, скорость их перезарядки), ходовых качеств и преимуществ (скорости, скорости хода в бейдевинд, маневренность), сравнительная численность команды
- дистанция до корабля возможного противника (дистанция расхождения)
- характеристики капитана, если такое возможно
2) заряд орудий ядрами, как универасального боеприпаса, обладающего наибольшей дальностью стрельбы
3) маневр с целью расхождение с ГГ-ем на предельной дистанции стрельбы (возможно на запредельной дистанции стрельбы орудий корабля ГГ-я).
Если у ГГ-я несколько кораблей, то по этим позициям делается анализ группы кораблей (эскадры).
В таком состоянии корабли расходятся.
Дальнейшее будет попозже, если это описание удовлетворит, прежде всего, Алекуса.
ираектории джижения судов - это отдельная задача на "сделать" - как сделаем, так и будет - сча ничего нет вообще.
Комп имеет теже возможности (приказы), что и игрок
Соотв траекторию разворота с учетом ветра - это опытноопределяемая или теоретически обосновонная последовательность.
Погоды не будет визуально - влияение ее в виде коэфф высоты волны и ветра, а они уж влияют по законам физики-игры.
2Mitrich
Да, все так, пока делаем поверхностные сценарии - потом уже по реализации будет разбито на отдельные блоки, если что-то сделать не получится, будет заглушка или отказ от вида стратегии.
Еще момент - тупизна (ограниченность) ИИ компенсируется микрочитами, которые ему доступны.
Тот же анализ противника - у ГГ ограничен наличие подзорки и % отображения ей, тогда как комп может видеть точно "в граммах".
Против себя, играл бы так:
Если 1х1 - снести мачты. Если и выйграю бой - я не хочу доплывать до острова за несколько недели, а потом еще платить за ремонт. Если на линейнике сбили первые 2 мачты - лоадинг.
Если >2х1 - тут всеми дружно надо стремится на абордаж - попутно обрабатывая меня картечью. Корабль с наибольшем количеством команды должен остатся "напоследок". После абордажей численость моей команды сильно понижется, т.ч. либо я проиграю последний абордаж, либо не смогу отсреливатся - и меня можно будет спокойно потопить.
Если меня больше и я сильнее - нужно уплывать отстреливаясь книпелями (очень я это дело не люблю).
Прмечание. Основную работу в бою делаю я сам, а не мои напарники. Чаще всего они служат чтобы принять на себя огонь, и повреждения. По этому - все внимание на флагмэновский корабль. Отношение к остальным должно быть "держать дистанцию" - не более того.
Тут есть важный момент для правильной оценки ситуации и соблюдения видимости исторических реалий. Любой корабль есть определенная материальная ценность + то что находиться на нем является добычей. Соответственно зачастую приоритетной задачей является захват корабля. Для пирата - это задача №1, иначе зачем он выходит в море? Другой вопрос - грамотная оценка ситуации, т.е определенная модель поведения в бою без учета торговец/пират/военный:
1. Агрессивное поведение. Силы нападающего больше или равны: приоритет в тактике - обездвиживание и захват судна (книпель - картечь).
2. Сбалансированно агрессивное поведение. Силы нападающего равны или меньше: удержание на расстоянии, маневрирование с целью уровнять шансы или добиться преимущества в виде приведения корабля к ветру, тактической ошибки противника, поломки (выведения из строя) мачты, руля и пр. (ядра - книпеля).
3. Сбалансировано осторожное поведение. Силы нападающего меньше: сбежать (оторваться от преследования) (ядра - книпеля), если не получилось - принять бой и стараться нанести кораблю максимальный вред - потопить (ядра - бомбы). Ближний бой - бомбы - картечь.
4. Осторожное/трусливое поведение. Силы нападающего изначально меньше (торговец): сбежать, стараясь облегчить трюм (не отстреливаться!). Догнали - сдаться.
Приоритет в уничтожении корабля как материальной ценности может быть только в случаях:
1. Поставлена задача уничтожить (крейсерская операция по нарушению коммуникаций противника, уничтожение кораблей охранения, патрулей)
2. Неравный бой.
2ALexusB
"Траектория движения". Я об этом не думал, поскольку подходил немного с другой точки зрения. А что если рассматривать это как выбор позиции? В действующем ИИ уже кое-что есть. Например, он способен произвести замер дистанции до враждебного корабля или цели (стрельба ведется как правило издалека, корабль спускает паруса при опасном сближении с другим кораблем и др.). Если использовать данное обстоятельство + учесть ветер и свойства (возможности) противника, то можно определить ближайшую точку, куда следует двигаться. Может и не нужно формировать траекторию движения как нечто глобальное, тем более, что обстановка при встрече с противником меняется весьма динамично.
Относительно погоды у меня только один "пунктик" - при встрече с противником во время шторма он не прекращается до полной победы, что часто приводит к катострофическим повреждениям собственного корабля силами природы. Я, как правило, в таких ситуациях применяю релоад, как это ни противно.
2Denis
Ну вот. Для пирата абордаж - задача №1. Ты прав. Только хочется уточнить. Если пират знает, что ты ничего не везешь, то станет ли он рисковать и абордировать тебя? Думается нет.
Еще уточнение. Бой, абордаж, бегство и др. - это только способ достижения цели, решения "уставной" задачи, но никак не сама задача. Это может начаться (или не начаться) в результате анализа данных (возможно и по твоей схеме). Задачи различны и присущи разным типажам. Захват корабля, на мой взгляд, вряд ли может быть присуща какому-либу типажу (разве что ПГГ, если это возможно реализовать), и, во всяком случае для данной игры, является лишней. В реальной жизни и для ГГ-я эта задача безусловно существует, но в этой теме обсуждается ИИ.
Продолжаю описание шаблонов (излагаю свое мнение).
Удержание на определенной дистанции.
Данный шаблон может быть использован для решения многих задач и присущ многим типажам. Цель - удержать противника на заранее определенной дистанции от охраняемого объекта (корабль, береговая линия). Цели абордажа и преследования для уничтожения нет. Уничтожение корабля противника не является приоритетной целью, но она имеется в виду при проявлении противником агрессивности или повышенной активности. Позиция выбирается между противником и охраняемым объектом (Алексус несколько смутил меня своей "траекторией").
Действия. Обстрел противника книпелями, ядрами и бомбами (исходя из дальности стрельбы) с целью снижения его характеристик скорости и маневра, нанесения максимального урона с целью заставить противника выйти из боя и удалиться. Если противник уходит, то он не преследуется. Если упорствует - то уничтожается. Как мне кажется, действия по обстрелу в теперешнеи ИИ вполне приемлемы, разве что добавится возможность заряда разными боеприпасами.
Здесь, я думаю, анализ большой роли не играет, т.к. решаемые таким образом задачи предусматривают их решение любой ценой.
----------------------------------------------------------------------------------------------------
Я тут поиграл, подумал и пришел к некоторым умозаключениям, несколько не совпадающим с заданными вопросами. Остановка общения в данной теме лишний раз подтвердило мои догадки.
В чем, собственно, заключается "тупизм" ИИ? Что конкретно нас (или большинство из нас) не устраивает? Ведь никогда речь не шла о том, когда и каким зарядом ведется огонь, хотя модернизация ИИ в данном направлении, скорее всего, также нужна. Но, прав Алексус, инфы по данному вопросу выложено предостаточно. Основные же претензии к ИИ сводились к неадекватности поведения кораблей противника, полного его несоответствия "уставным" задачам, нелогичности действий при выполнении команд компаньонами и др. Возможно я торотплюсь и вторгаюсь не в ту область, хотелось бы узнать мнение Алексуса.
Однако, продолжу описывать шаблоны.
Абордаж
Прежде всего этот вид боя присущ пиратам и ОЗГам. Остальным только по квестам. Для пиратов важно, чтобы ГГ-й что-либо перевозил, тогда обордируется его корабль, или сопровождал купца (купцов), тогда абордируется купец, а в отношении ГГ-я исполняется шаблон "удержание на дистанции" или "потопление". ОЗГи, само собой, должны стремитьсяк захвату ГГ-я с целью получения максимальной выгоды. (Кстати сказать, реализация такого сценария могло бы обогатить игру новыми направлениями ее развития, например, пленение ГГ-я, о чем ранее говорилось не раз).
Что анализируется: дистанция до противника, направление ветра, соотношение численности команды, соотношение характеристик корабля скорости и маневренности, мораль команды. При анализе учитываются статы капитана авторитет и морские навыки. Для успешного абордажа вначале необходимо привести указанные показатели к такому виду, чтобы у пирата (ОЗГа) было преимущество. Используются заряды книпели и картечь. Перед залпом противника (благо ИИ может это определить по умолчанию) нужно убирать паруса, чтобы сохранить свои возможности в скорости и маневре. Маневрирование с целью выхода в более благоприятную позицию с учетом направления ветра. Вот, пожалуй, и все.
Потопление
Задача присуща всем типажам, когда не удается решить задачи мирного расхождения, удержания на дистанции или абордажа. Используются заряды ядра (в основном), на близком расстоянии бомбы. Книпели только в случае необходимости кардинально снизить характеристику противника "маневренность".
Бегство
Для пирата это задача №2. Кроме пиратов этот шаблон используется купцами, ОЗГами и военными кораблями при одиночном плавании или патрулировании в водах враждебной нации. Не применяется военными кораблями при сопровождении конвоя купцов и патрулировании своих прибрежных вод. Используются книпели и ядра, если книпелями достать невозможно или какой-нибудь шустрый, но маленький кораблик приближается на опасное расстояние. Сдача в плен, на мой взгляд, решена неплохо - в момент абордажа.
Некоторые особенности. На мой взгляд, тут особую роль играеют возможности корабля ходить в бейдевинд, следовательно анализ направления ветра играет основную роль. Разумеется, нужно учитывать позиции объектов (кораблей и форта), могущих нанести ущерб. Сброс товра (груза) производится лишь в том случае, если огневое воздействие на противника не привело к желаемому результату.
Последнее. Стратегии (смены шаблонов по типажам).
Пираты. Если ГГ-й что-либо перевозит, то вначале он абордируется. Если в результате противодействия ГГ-я абордаж становится невозможным, то он топится. Если же обстановка меняется таким образом, что скорее можно самому погибнуть, чем утопить ГГ-я, то бежим. Получается "абордаж"-"потопление"-"бегство". Та же схема и для ОЗГов.
Если ГГ-й ничего не везет и соотношение сил позволяет, то сразу применяется "потопление", поскольку с точки зрения пиратов этого козла (ГГ-я), который берет задания у губеров и кошмарит весь пиратский бизнес в прибрежных водах просто святое дело утопить и как можно скорее. Однако может не получиться и тогда бежим. Получается "потопление"-"бегство".
Если ГГ-й сопровождает купца, то при наличии достаточных сил ГГ-й связывается боем, а купец абордируется. После абордажа пират сматывается. Получается "удержание на дистанции"-"абордаж"-"бегство". Потопление ГГ-я не рассматривается, потому что это приводит к геймоверу.
К сожалению, больше нет возможности продолжить описание стратегий. Если заинтересовало (в первую очередь Алексуса), то чуток позже.
В дебри размышлений заходить не буду опишу свой метод ведения боёвок. Итак:
Входим на тактическую карту:
вопервых: оцениваю не общее количество кораблей а самый дамажный корабль(ли) флотилии (кол-во пушек на одном борту/кол-во команды).
вовторых: направление ветра и положение флота противника относительно него
Идеальные для меня условия:
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]>чтобы не подставлять борта сначало приходится держаться прямо и после залпа противника избегая столкновения с ним вместе с возможным но ненужным пока для нас абордажем приходится уходить в бейдвинд, что тормозит дальнейший разворот относительно вражеских кораблей.
если бы при приближении орудия на кораблях противников не переключались в зависимости от зон действия с ядра-бомбы-книппеля(и то не факт)-картечь. А лупили одними книппелями, переходя в близких дистанциях на картечь/бомбы.
Пока всё.
На днях играл, вышла такая фигня:
Прижали меня возле Бермуд две эскадры, Пираты и Англичане, а поскольку был на бриге решил драпать, когда посмотрел в подзорку удивило то что плывут себе приспокойненько рядом английские корабли и пираты, и мысль появилась: Почему? ведь они враги вроде, по идее должны хотябы перестреливатся а тут нет, только в мою сторону палят и всё.
=======
Хотя наверное это в другую тему надо.
Не буду описывать какое-то конкретное сражение, т.к. сути основных тактических моментов это не изменит.
Итак самыми важными стратегическими факторами для оценки ситуации до схватки считаю.
1. Направление ветра.
2. Сила ветра.
3. Калибр орудий противника(ов), т.к. от этого зависит дистанция стрельбы.
4. Количество и скоростные данные кораблей противника.
5. Умения вражеских кэпов, по убыванию значения: защита, пушки, меткость, абордаж, нава.
Практически всегда хожу парой. Целью ставлю "Всех абордировать". Перед боем опустошаю трюм своего флагмана оставляю только и исключительно: картечь (количество на 10 круговых выстрелов), книппеля и бомбы (в половину от картечи), порох (на 10 круговых), оружие и лекарства по числу максимальной команды с перегрузом. Всё остальное перегружаю компаньону. Команду перегружаю себе.
Но это индивидуальная тактика геймера и для ИИ она как бы бесполезна. Но вот дальнейшие мои действия ИИ должен бы учитывать-прогнозировать, иначе ему придётся худо
Итак. Команда компаньону "Уплыть", иначе ему начинают сбивать паруса и выбивать команду, а я этого очень не люблю. Сам, сохраняя недоступную для стрельбы противника дистанцию, ухожу так, чтоб оказаться от него с наветренной стороны. Первой жертвой выбираю противника (в порядке убывания приоритетов):
1. С максимально мощным вооружением. Если вооружение одинаковое, то с макчимальными статами "пушки и меткость" у вражеских кэпов. Если и тут разница небольшая, то с минимальной "защитой" у кэпа.
2. Максимально скоростного (корветы, заразы достают).
3. Ближайшего в строю.
Тактиа "Акула", как наиболее используемая - быстрое сближение по ветру, активный обстрел картечью выбранной в эскадре противника жертвы (возможно абордаж), быстрый разрыв дистанции по ветру. Такие атаки повторяю циклически, до полного уничтожения противника. Абордируемых или топлю предварительно ограбив, или сажаю на них компаньонов и командую "уплыть". Экипаж обычно перегружаю назад на флагмана, игра это позволяет при постановке борт к борту (делаю это больше для сохранения команды). Активный обстрел жертвы провожу из зоны, где атакуемый мною шип прикрывает меня от залпов своих же компаньонов.
Последовательность действий при такой тактике:
1. Провоцирую, чтоб противник разрядил борт(а) на максимальной дистанции (обычно это ядра). Принимая залп, становлюсь к нему носом (или кормой) и спускаю паруса.
2. Пока противник разворачивается, активно с ним сближаюсь. Заряжен всегда картечью.
3. Если у противника дальнобойные орудия, то таких рывковых сближений иногда приходится делать по 2-3 до момента моего первого залпа.
4. Выбиваю команду и абордирую.
5. При маневрировании вблизи противника активно использую "Манёвренный разворот" и "Быструю перезарядку". Всегда стараюсь держаться в глухой необстреливаемой противником зоне (45 градусов от его носа или кормы).
6. Подхожу к борту противника только непосредственно после его бортового залпа или, когда он начинает перезарядку на другой вид боеприпасов.
Об это нужно сказать особо. Иногда ИИ постоянно перезаряжает свои корабли, некоторые уходят на дно, так и не успев выпустить ни одного заряда. Если бы кто-то из вражеской эскадры был постоянно заряжен книппелями, другой - картечью, а третий - бомбами не зависимо от дистанции, они смогли бы навредить мне гораздо больше. С такими "тугодумами" всегда возни больше. Практически никогда не удаётся подойти к ним в борт, отсюда и обстреливуаю их только из "мёртвой зоны", да ещё и маневрировать приходится в ущерб скорострельности.
Тактиа "Дельфин" применяется при неблагоприятном ветре или неудачной конфигурации береговой линии - беспорядочно разряжаю борта, заряженные книппелями и ухожу в крутой бейдевинд (обычно в противоположную от компаньона сторону, чтоб отвлеч на себя внимание). Ухожу дооолго, иногда использую команду "Доплыть до...", чтоб макимально растянуть караван противника. Когда расстояние между кораблями противника начинает превышать максимальную дальность стрельбы их орудий, разворачиваюсь и уже поветру быстро атакую одного за другим. Корабли, которые планирую оставить после абордажа себе, абордирую последними.
Такая тактика возможна благодаря бестолковости ИИ. Если бы корабли противника сохраняли строй независимо от повреждения парусов (т.е. самые быстрые равнялись на самых медленных), эта тактика была бы непреемлима. А корветы и бриги охраны не пёрлись бы в догонку за моим люггером, а конвоировали бы кильватерный строй противника по бокам, увеличивая тем самым зону обстреливаемую орудиями эскадры, то против них пришлось бы использовать другую тактику.
Для караванов противника можно было бы прописать тактику ИИ, чтоб грузовые суда уходили к ближайшему форту, стремясь укрыться под огнём его орудий, а боевая охрана такой отход прикрывала. И отход не беспорядочный, а клином, к примеру, или уступом (лучше - каре), в зависимости от втера и изначального строя в эскадре. Боевой корабль эскорта не должен гнаться за мной, он должен стермиться занять позицию между мной и основной частью грузового каравана.
Но для этого у меня есть ещё одна тактика.
Тактика "Барракуда" - в сложных и неудобных боёвках или когда нас застали врасплох. Абордируем ближайший, доступный для абордажа с минимальными потерями, шип (пусть даже самый небольшой). Грабим и отпускаем. Дальше используем его, как щит, и высовываясь из-за него разряжаем борта в противника. Бывали случаи, когда этому шипу его же компаньоны мачты сбивали, пытаясь попасть по мне. Но пустой шип будет иметь большую скорость и манёвренность, поэтому его нужно удерживать от побега, постоянно баражируя перед его носом. В конце концов, он всё равно слиняет, оставив нас против мощных врагов. Продолжаем ту же тактику. Только теперь наша жертва - самый мощный с большими пушками противник. Абордируем, сразу снимаем с него всю команду (в особых случаях, сажаем компаньона с перком "Спасение на шлюпке"). Вот это будет щит, который уже никуда от нас не денется, лишь бы корпус выдержал. Даём ему команду "Уплыть", чтоб не вертелся как ни попадя, а дальше преследуем свои цели. Основной огонь принимает на себя "щит". Когда противник будет рассеян, то можно спокойно перегрузить товар из "Щита", а его затопить, чтоб не мучался.
Тактика "Пиранья" используется в случаях, когда нам не нужна вся эскадра противника, но топить абордированных не с руки (имеем малый трюм) - уходим в крутом бейдевинде, затем делаем дугу и атакуем последний(е) корабли в колонне (обычно это грузовики). Потом их легко увести по ветру от основных сил противника.
Опять же ИИ увлекается погоней, а не защитой.
Есть ещё тактика "Анаконда", когда битва планируется заранее. Покупаем галеон или ТГ, загружаем его командой лохов с перегрузом. Опустошаем трюм, оставляем только картечь и порох на 1-2 круговых выстрела, оружие, лекарство. После выхода в "Море" командуем компаньону "Уплыть", а сами на этой "Анаконде" прём быстро напролом к самому мощному кораблю эскадры противника. Немного его обстреляв, абордируем и пересаживаемся. Свой галеон чаще всего топим, в особых случаях можно очистить трюм и посадить компаньона с перком "Спасение на шлюпке" (всё равно это корыто будет потоплено противником). Теперь наша крепость находится в колце неприятеля. "Манёвренный разворот", "Быстрая перезарядка" и после 2-3 оборотов вокруг нас только пузыри или лоханки без парусов или экипажей (в зависимости от того, какие цели перед нами стоят). Но чаще всего, приходится уводить эту крепость, активно работая картечью, по ходу абордируя обескровленного противника с небольшой командой, набивая себе трюм или разбрасывая вокруг себя свои и чужие "щиты". А завершается разгром обычно на корабле своего компаньона (он остаётся менее повреждён при такой тактике). И корабли, которые мы планируем оставить себе обычно абордируются последними, чтоб их бывшие союзники не попортили им шкурку.
Какие корабли я топлю без абордажа? Обычно корабли охраны при контрабанде, пиратов, ОЗГов, т.е. те, чьи трюмы заведомо пустые. Также очень не люблю абордировать большие корабли с мушкетным залпом. Если удаётся, то переигрываю сцены и топлю их без абордажа.
Вот, собственно, почти все тактические схемы, применяемых мною боёвок. некоторые возможны только благодаря неповоротливости ИИ, другие достаточно универсальны, чтоб быть успешными ипри любых схемах поведения компьютера...
Буду рад, если хоть что-то из написанного пригодится для конструирования поведения виртуального противника...
Да уж... пока искушение токо одно - оставить токо бои человек-человек, чтоб не мучать "бедных зверушек ИИ"
Много тут наговорили уже.
Позвольте и мне вставить свои 5ть копеек.
Вот Mitrich говорит
" Для пирата абордаж - задача №1. Ты прав. Только хочется уточнить. Если пират знает, что ты ничего не везешь, то станет ли он рисковать и абордировать тебя? Думается нет."
Почему нет? пустой галеон стоит 50 000-60 000 это что не деньги?
При месячных расходах на команду в 200 000 это четвёртая часть тоже нормально.
Serginio играйте в патч 1.2.3 - бейтесь с Джентельменами удачи и предлагайте нам новые тактики.
Тактиа "Акула",
прекрасная тактика. противник на расстоянии сливает 2 борта книппелей
иду к нему на сближение с картечью, и тут он разворачивается и в упор расстреливает меня бомбами с двух бортов.
разница в перезарядки бортов КВЛ и ГПК есть и она существенная - это разные алгоритмы принятия решения когда заряжать и чем.
Для построение алгоритмов ИИ новой игры это не криично, тк там будет все свое (но близкое именно КВЛ), просто к слову.
Недавно встретилась явная "дыра" в поведении противника.
Дело было так. Загнал я преследующую меня голландскую военную эскадру в бухту Порт-Ройала
Флагман эскадры (военник) вошел в бухту за моими 3-мя кораблями и как буриданов осел остановился примерно в центре бухты чуть ближе к маленькой части форта Порт-Ройала. Практически не стрелял. Остальные корабли занялись фортом.
При попытке атаковать флагмана 3-мя кораблями (абстрел картечью) он начал двигаться и отвечать. Но когда я переиграл и приблизился к нему на СП (остальные - в дрейфе) он активно двигаться не стал и отвечал только кормовыми пушками. Короче вынес ему большую часть команды и перк мушкетного залпа его капитану не помог
Дальше с 5-й попытки вырвался из бухты без больших повреждений и причалил у ближайшей бухты. Иду на СП посмотреть, как там у эскадры с фортом дела - гляжу, впритирку к берегу справа (с другой стороны, не где форт) идет бэтлшип. Понял, что это добыча - бысторо к нему, книпелями мачты кроме задней снес и картечью стал стрелять. Он мог прицельно попадать только из носовых - попытку развернуться сделал только в самом конце и стал ко мне кормой (берег сильно ему мешал отчалить ). У этого капитана тоже был перк мушкетного залпа, но как штурман он салага.
Предлагается сделать вражеским кораблям явный приоритет в целях на атаку корябля ГГ и попутно, особенно если корабли крупные типа бэтлшипов - ввести для них запретную зону вблизи берега хотя бы на длину корабля
Проходил квест 20 моноваров
Лин кор у меня был.
Использовал тактику Serginio тактику "Дельфин"
Только так и прошёл
А как вы проходите 20 мановаров?
Всем привет!
И так конкретное:
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-х перков - "Быстрая перезарядка" и "Манёвренный поворот корабля".
Тут выиграет тот, у кого пушки поменьше и канонир лучший.
Для этого корветы и сделаны, наверное...
______________________________
Ну вот, собственно, и всё!
Ссори, что длинно, в 3:14 голова уже не варит...
Если выхожу на охоту , то используя перк у меня на корабле паруса той нации на кого охочусь , пушки заряжены картечью , подхожу в плотную , стараясь занять позицию между двумя кораблями , далее залп из двух бортов и моментальный абордаж обречённых судов , если добыча меня устраивает и трюм под завязку то перезаряжаю на книпеля и дёру , снося по ходу отступления паруса особо рьяным преследователям Так почему бы не дать и пиратам использовать такую же тактику , вроде решил напасть на купцов , и на тебе , они рядом с тобой подняли Весёлого Роджера ))
Расскажу о своей тактике в морском бою:
В зависимости от ситуации, если требуется потопить или если требуется взять на абордаж.
Взять на абордаж.
Если пираты, то тупо иду на них ( корабли у них по большей части маленькие ), при этом у меня заряжена картечь.
Если военная эскадра, то заряжаю книппелями. Стараюсь им максимум снести параметр "Паруса".
После того, как они уже не в состоянии что-либо сделать, заряжаю картечью.
Как правило, противник даже не пытается отбится. Стреляю по нему картечью, чтобы довести параметр "Команда" до максимально низкого уровня. Тактика относится и к торговцам.
Если потопить, то всегда покупаю кулеврины 32 фунта.
Использую максимально дальнюю дистанцию, чтобы противник не нанес или нанес минимум повреждений.
Если противник изначально союзник мне, но при этому он находится в категории "Торговцы", то я максимально близко плыву к нему, заранее заряжаю картечью и, как только зарядится, меняю флаг на пиратский и стреляю. Как правило, у противника остается малая часть команды. Сразу беру на абордаж.
Если же все-таки команды у противника относительно много, то повторяю.
предлагаю таким образом усовершенствовать тактику боя ИИ:
Торговый караван под охраной военных судов.
1. Корабли охранения не должны мотаться в хвосте, а находиться, если их два – справа и слева от основного каравана на уровне чуть впереди второго судна. Если их три – то третий еще в конце каравана.
2. Корабли каравана не должны растягивать караван в ходе боя, т.е. соблюдать дистанцию между собой, чтобы противник в случае атаки на абордаж находился под обстрелдом нескольких судов.
3. При подходе чужого судна под дружеским флагом все корабли каравана должны вести перезарядку орудий соответствующую расстоянию. Ядра – книппели – бомбы.
4. При приближении чужого корабля на дистанцию, позволяющую нанести эффективный выстрел картечью и абордаж, корабли каравана должны давать предупредительный выстрел и если сближение продолжается – первыми начинать обстрел.
5. Так как целью торговца является не захват или потопление пирата, а доставка грузов по назначению – то и торговые корабли и корабли охранения должны вести оборонительную, а не наступательную тактику – т.е. не уходить в погоню за пиратом, а охранять торговые суда. А торговые суда - занимать компактную оборону с общим разворотом или на нападающего – или от него.
6. Военные корабли должны быть быстрее торговых. Так, например ТГ охранения из-за недостатка скорости и маневренности – не может оказаться вовремя там, где нужно и способен, в лучшем случае, защитить только себя.
7. при появлении корабля даже под дружеским флагом корабли охранения должны приближаться к нему на расстояние эффективного выстрела книппелями/бомбами.
8. и отменить возможность быстрого перехода - "доплыть до"
Думаю подобные меры значительно бы осложнили мне захват торгового каравана
или вот пример морского боя (реально бывший в игре): торговец на 4 флейтах, и охранение - 2 мановара!, оба в конце каравана. идут курсом почти по ветру.
Поставь один мановар впереди другой сзади, или по бокам, и флейтам не давать от них отрываться - пришлось бы помучаться с этим караваном - а так просто все - вытягиваем караван, пока мановары не отстанут - и последовательный абордаж с бригантины всех 4 флейтов. Первый мановар на расстояние выстрела успел подойти только при захвате четвертого флейта. а потом - все вместе дружно бежать от них по ветру
В бою у меня сразу идет
1. анализ состояния:
* сил противника (примерно равны, больше, меньше, сильно больше, сильно меньше).
* направления ветра
#Если я слабее
1)Отступаю
#Если на равне
1)Беру на абордаж.
2)В сражении использую в основном картечь.
Прочел книжецу
C / С++ : C++ мастер-класс. 85 нетривиальных проектов, решений и задач - М. В. Мозговой
Пришел к некому концепту реализации ИИ для мор боя, как кальки с действий человека. Чтоб не в коде зашивать, а было во внешних файлах и можно было один ИИ на другой натравить, потестить.
Ответа по ИИ в книге нет, есть разные идеи и их решения, которые наводят на другие идеи
Рекомендую.
Постараюсь рассказать, что на мой взгляд позволяет легко справляться с ИИ соперника.
ИИ не умеет делать массу важных вещей:
1. Не бережёт паруса - смена положения парусов зависит только от его маневров, а иногда от балды - на залпы не реагирует.
2. Распыляется - может сделать 1 залп по одному кораблю, следующий залп по другому.
3. Меняет заряды в зависимости от дистанции - может начать перезаряжаться картечью, хотя мог уже бомбами пустить на дно.
4. Не ходит галсами против ветра - часто складывается впечатление, что ИИ вообще не умеет учитывать направление ветра.
5. Пытается догнать корабли, которые имеют большое преимущество в скорости - именно это позволяет растягивать его эскадры и валить всех поодиночке.
6. Не ставит промежуточных задач. Например, не пытается получить абсолютного преимущества в скорости а уж потом топить, или сначала выбить всю команду, а уж потом абордировать.
Т.е. ИИ конечно и паруса клацает и команду выбивает, но до абсолюта не доводит и даже не пытается.
7. Не оценивает состояние корабля, на который пересаживается после абордажа.
Например, если я подставлю фрегат без мачт под абордаж целёхонькому корвету, то кэп корвета пересядет на эту баржу и станет совершенно уязвим.
Кста, а мона в сетке где-нить нарыть основы/правила морского боя на парусных судах ? Ну те, которым 300 лет назад в Навигацкой школе обучали.
Пробовать буду - тема интересная мне, потому и делаю прототип для моделирования в виде игры, чтоб зря не тратить время
"Докручивать" я не могу - тк все пишется в лог, кто что сделал и куда повернул.
Потому и сложности - проще ИИ не делать вообще, а ПвП оформить.
Пока я до ИИ мор боя не дошел, хоть с него и начал - сча окучиваю прочие ядерные вещи. Все же есть разница - делать аддон на все готовое, развивая его до восприятия новой игры или с нуля писать двигу, да еще и сетевую.
Статья в тему ИИ
Не со всем я согласен по итоговой реалиазции, в комментах к статье минусы верно описали.
Но общий принцип реализации по задачам ИИ верный - сам так думаю.
Автор статьи - флашер-художник со стажем, но только начал переходить на AS3 с его ООП, потому не все ООП использует, где-то по старинке мерками AS2 пишет.
О сайте этом уже говорил - кладезь полезного, жаль, что стал редко обновлять.
Не знаю, открою ли я тайну, но во многих играх, даже когда в описании пишут "используется улучшенный, продвинутый ИИ", никакие научные изыскания из теории ИИ и ЭС не используются вообще
Или куча ифоф или шаблоны задач (сами шаблоны задач - тоже формализовано в теории ии и эс, но делают сами на глаз)
Тут влияет цель - игра (визуальное состояние и восприятие), а не супер цель прикрутить к игре нейронную или другую сесть и тп
Опять же ОЗУ и вычислитель лимитирован.
Иногда достаточно расставить врагов в редакторе и задать скрипт их выпрыгивания по тригерам, либо сделать "мега ИИ" из ранд() функций выбора направления движения с парой ифоф проверок статов ГГ.
Это в шутера. В стратегиях и тактиках несколко иначе, там нужно смотреть "свысока" на саму диспозицию и принимать групповые решения и иметь план действий (тактику).
-------
Еще комент про статью
Вешать обработчик на каждый кадр - плохо, видимо автор не разобрался еще в системе прерываний (мыслит процедурно).
Рефреш нужен, да, но по таймеру раз в 1-2 сек, а не 20-30 раз в сек. Что изменится за 1/20 секунды? Пользователь ничего не успеет нажать.
А если изменится, то есть прерывание - вот его и нужно обработать.
Иначе при >100 объектах будут жуткие тормоза, если каждый начнет на каждый кадр обрабатывать сложную логику.
Что оч просто видно, если в презентации из статьи прокликать добавку зомби, глядя на загруз проца.
Именно так и устроена боевка в Сторм-2.х
Тоже есть шаблоны и обработчики прерываний.
В тему ИИ
книжка аж 1975года, но от того даже интереснее
М.М.Ботвинник. О кибернетической цели игры
Книга экс-чемпиона мира по шахматам Ботвинника, в которой он рассказывает про свой опыт создания алгоритма игры в шахматы. Она дополняет его же книгу <алгоритм игры в шахматы>.
Книга будет очень интересна тем, кто умеет играть в шахматы и задумывался о том, как этому можно научить компьютер.
Книга научно-популярная и может читаться человеком с любой подготовкой.
По теме:
1. Оценка погодных условий;
2. Проверка месторасположения вражеских кораблей(я) относительно
собственного корабля(ей) и (если есть) берегового ландшафта, рифов;
3. Анализ предположительных ходовых характеристик кораблей(я)
противника по предположительной загруженности его трюма, класса
корабля (парусного вооружения) и текущей скорости относительно вектора ветра.
4. Анализ условной опасности противника (каждого корабля отдельно,
и всех вместе).
5. Подсчет возможных затрат и потерь (в т.ч., временных) на уничтожение
противника.
6. Определение боевой задачи - бегство, расстрел, абордаж (кого именно,
судьба неабордированных кораблей) прикрытие за союзными силами или
рельефом берега/рифов (если есть).
7. Определение боевой тактики - алгоритм сближения/ухода/укрытия/расстрела.
Слабость ИИ в практически любых компьютерных играх состоит в том, что он не умеет мыслить абстрактно и тем самым он не может мыслить комбинационно. Другими словами ИИ действует только по обстановке, но он не может создать логически направленную цепь определённых действий, имеющую общую конечную цель. Потому все действия ИИ просчитываются игроком без каких-либо проблем. Могу привести пару примеров как действительно должен действовать ИИ на примере корсарской тематики, чтобы максимально очеловечить его действия.
1. Оценка ситуации перед боем. Здесь учитывается соотношение сил. Скорость и направление ветра. Для этого необходимо заложить в действия ИИ несколько вариантов поведения в той или иной ситуации.
2. Выбор плана боя, исходя из правильной оценки ситуации. План необходимо обязательно сделать многоходовым, то есть очередная фаза действий ИИ начинается лишь по полному завершению предыдущей фазы. Остановимся к примеру на таком плане игры ИИ.
Допустим, что ИИ имеет двойное преимущество перед противником в силе, но не в дальности огня своих пушек и небольшое преимущество в скорости, да к тому же ещё идёт по ветру. ИИ видит также перед собой торговый корабль с возможной добычей, но где в два раза больше чем у ИИ моряков. В данном случае ИИ сразу же назначает конечную цель - абордаж и как промежуточную цель - сведение преимущества большой команды противника на нет. Исходя из того, что скорость корабля ИИ лишь незначительно превышает скорость корабля противника, то ИИ обязательно должен поставить ещё и вторую промежуточную цель - ещё более уменьшить скорость вражеского корабля.
Таким образом ИИ имея конечную цель абордаж уже заранее определяет вид боеприпасов, которые он и должен будет применять во время боя - книпеля, а позже картечь. Причём если ИИ удаётся сблизиться с противником на расстояние картечного выстрела, то он сразу же обязан переключиться на картечь, так как выбивая команду противника, он тем самым не только снижает скорость вражеского корабля, но и интенсивность ответной стрельбы противника.
Если всё проходит для ИИ нормально и после перестрелки ИИ получает значительное преимущество в количестве команды, то ИИ сразу же должен идти на абордаж и довести тем самым до конца первоначальный план боя. Если же противнику всё же удаётся в процессе боя значительно повредить корабль ИИ бомбами, то в этом случае первоначальный план ИИ прекращается и ИИ тогда должен принять новый план:
а) продолжать идти на абордаж, если расчёты ИИ показывают, что он всё же успеет это сделать, несмотря на небольшое преимущество противника в людях;
б) выйти из боя, если есть преимущество в скорости и ветер также способствует этому;
в) подороже продать свою жизнь, переключив стрельбу только на бомбы (или ядра) с целью утопить своего противника, пока тот его не утопит.
Примерно такой же план боя с определённой конечной целью можно составить также и для других возможных вариантов действий ИИ, исходя из определённых параметров, которые ИИ имеет перед боем. Допустим, что ИИ проигрывает по каким-то параметрам противнику или если перед ним военный корабль, который лучше утопить, чем рисковать брать на абордаж. Ну и кроме всего прочего ИИ обязательно должен расчитывать план боя из тех характеристик своего корабля, которые у него более предпочтительные. Так к примеру с более манёвренным кораблём ИИ лучше не идти на сближение с противником, а вести бой со значительного расстояния. Если же у корабля ИИ главное преимущество в скорости, то желательно при всех других преимуществах идти на быстрый абордаж. Другими словами при выборе плана боя ИИ просто обязан исходить из той характеристики своего корабля, которая у него наиболее выгодная по сравнению с кораблём противника.
Наконец-то подошел к задачам уровня ИИ для их практического решения. Есть полигон для применения - кораблики плывут, палят, тонут.
Есть замысел вообще для режима отладки сделать в коде возможность подключения разных ИИ, что б их можно было натравливать друг на друга. И тем калибровать параметры.
Но пока все понятные логики использования стратегий на несколько ходов (что выше описаны по делу) разбиваются о реальность - зрею, с какой стороны это все начать грызть. Кругами хожу и пока не нашел.
Начал с метрик описания всего, что есть в бою (дальности, попадание в сектор и тп). Потом это все нужно как-то анализить, чтоб принимать решения по маневру и уже от них сами команды (лево-право).
То есть, еще и траектории некие или последовательности движения нужно задавать. Чтоб не забыл ИИ в середине оверштага, зачем он его делал и что он вообще его делает
Самое интересно, что навернуть стратегию высокого порядка (посмотри на такие-то корабли, оцени их, сравни с собой) сделать проще, чем примитивные базовые вещи - держать строй, плыть галсами в нужную сторону, выровнять скорость тп
Вот с ними пока вожусь.
А так все по делу, закопипастил себе в Ворд стратегии по этой теме по оглавлению, от кого инфа. Для перечитываний и вывода модели. Спасибо - помогает.
кстати по поводу абордажа, например в PotBS зацепить корабль противника на абордаж значительно сложнее чем в серии Корсары, в частности, прицепить корабль невозможно если скорость хотя бы одного из судов выше определенного значения (8 узлов), корабль имеющий более чем в 2 раза меньшую по численности команду не может зацепить противника, так же значение имеет защита и всевозможные бонусы на зацеп получаемые со скилами и улучшениями корабля. По этому для того чтобы абордировать противника его надо для начала подготовить, т.е сбить команду и снизить его скорость, и тут либо сбить паруса чтобы затормозить его либо притереть его своим корпусом к ветру. Так что если интересно PotBS стала бесплатной и можно свободно ознакомится её игровой механикой, может быть позаимствовать от туда кое какие правила.
Для примера если кому интересно существуют в ней люди оснащающие специальные корабли именно под абордаж и более ни для чего, задача получить скоростное и маневренное судно с длинным корпусом и лёгкими быстро зарядными орудиями и значительной по численности командой, в 99% случаев это Шебека, затачивают её на скорость и зацеп, задача в бою быстро сблизиться пересекающимся встречным курсом, пользуясь косым парусным вооружением и возможностью идти круто бейдевинд, дать залп картечью и остановить более тяжелый и неповоротливый корабль собственным длинным корпусом и воспользовавшись снижением скорости и отсутствием команды взять на абордаж, в случае же, если бой затянулся Фрегат увернулся и не дал снизить себе скорость, и Шебека будучи обстреленной получила значительные повреждения, она уходит крутым галсом от преследования и судно с прямым парусным вооружением отстает. Таким вот видом пиратства промышляют многие на серверах PotBS. Открытую перестрелку с Фрегатами Шебека вести не может, так как она более картонная с более легким вооружением, но может какое то время держать удар сбивая паруса противнику но не более. Однако она легко уходит практически от любого преследования (за редкими исключениями), и может атаковать практически любой по тяжести одиночный корабль, хоть 1вый рейт, риск конечно в этом случае огромен, т.к очень тяжелый корабль пустит картонную Шебеку на дно с одного двух залпов, но тут всё зависит от рукастости пилота быстро войти в мертвую зону и очень быстро взять на обордаж иначе труп, более легкие фрегаты не способные утопить Шебеку в залп зачатую оставшись с ней 1на1 очень сильно рискуют.
Интересен так же способ противодействия подобного рода атакам, в частности фрегату попавшему под настойчивую атаку Шебеки важно самому лишить её команды и не дать ей притереть себя к ветру, для этого необходимо разойтись с шебекой на встречных курсах вплотную и произвести залп в упор ни в коем случае не поворачиваясь и не ведя бой на параллельных курсах, т.к в этом случае Шебека подойдет по касательной пользуясь косым парусным вооружением и поставит Фрегат "носом в ветер" и возьмет на абордаж.
Алекс если интересны подробности могу расписать более подробно, не знаю как это соотносится с реальными боевыми тактиками но в Корсарах Онлайн это всё довольно занимательно и сложно, сам играю в эту игру более 2ух лет.
пока это все мне рано, базовых вещей нет. Такие тонкости скорее всего будут на уже открытой бете балансироваться.
Но пока с начала марта времени нет у меня на разработку ИИ, так что опять придется заново все восстанавливать в памяти, тк ОЗУ головы было обнулено и перегружено оперативной работой не по играм.
Однако, какая хорошая тема и она снова актуальна для нового проекта по корабликам по настолке.
Всем большое спасибо за ответы, прям восстановление знаний из бакапа в мозг произошло!
Книги, что упоминались, тоже нашел.
Флаш заглох как раз в 2012 и теперь на Юнити порт делаю всего арта и идей. Пока по простой схеме. пошаговых правил
10 лет, я как-то был на паузе в части геймдева, т.к. тогда не получилось быстро войти в новую платформу.
Перегрузы на работе, фриланс заказы, если было время. Это не оставляло место творчеству без монетизации и НИОКР.
Перечитал тему с интересом, что-то опять перенес в ДизДок, т.к теперь акцент уже не на реалтайм игру и чем заряжено орудие, там проще, но тоже сложно делать.
И забавно, я 10-12 лет назад был более оптимистичен в "сча тут все быстро сваяем"
Теперь уже нет, задача ИИ оч сложная и еще вчера я даже не знал, как начать думать ее делать. А 10 лет назад знал выходит, но забыл... ага.
Но.... обчитался инфой и теорией вчера и.. мысли есть.
За прошедшее время я сталкивался с нейронной сетью на работе, с год ее учили помогать на вопросы отвечать, но.... вырубли в итоге.
Хотя мы видим, как это все реально работает - дип-фейки, восстановление фото по куску и прочие автопилоты.
Так что в решение анализа логов для самообучения ИИ в игре я уже не верю. Это не тот уровень и бюджет, где это уместно.
Конечный автомат (экспертная система по шаблонам) - это разумный компромисс.
До самого ИИ я дойду сильно позже, когда будет кликабельная игра с PvP на одном экране.
Пока просто отмечу, что тема будет обсуждаться и прошу, кто мимо проходил и заглянул - заглядывать чаще, тут была тишина, да
Но теперь есть движуха в моем лице - так что "велкам бэк на борт"!
Полезные статьи про ИИ в играх-стратегрях
Добрался до ИИ
Пока сделал просто выбор всех вариантов хода в массив и рандом по нему.
Пока делал, собрал кучу проблем, которые порешал, чтоб "мультик" хода ИИ не рвался.
Теперь даже играется, просто случайно тыкая в плашки хода, даже стрельнуть может.
Давать такое не буду, т.к. нужно же какую-то тактику сделать
Куда плыть, держать курс. Приоритет стрельбы и по кому, когда и где в ремонт.
Я это сделал!
ИИ игровой
"маленький шаг для человека, но...." хотя это не про меня, но чувство у меня такое, т.к. месяц назад я даже не знал, как начать это делать.
Тут нет нейросетей, тут все "экспертная система" (как в вузе курсовую делал 25 лет назад).
Но слепок с меня самого - как бы я играл сам.
Есть что еще учесть, но и так норм.
Я сыграл пару игр с ПК и продул одну, вторую в ничью.
Сразу отмечу - ПК не жухлит! хотел такое сделать, как больше шанс или знать ветер, но.. это еще сложнее, чем просто жать плашки честно.
То есть ИИ думает, что жать из плашек хода и жмет - визуально даже видно, что он жмет (она моргает).
Для тестов можно натравить ПК на ПК
Ход будет через 5 сек сам закрываться для ПК-ПК игры (но вот рекламу нужно жать закрыть, если будет, хотя игра продолжится под ней, я так оставлял и тестил фоном, пока ужинал). Для ПК-Чел нужно ручками жать, как было
Подробные правила на 4х языках в как играть справке.
В табличке хода - название миссии, а то не ясно где что.
Какие-то еще правки по мелочи, забыл уже где, по ходу находил.
Иконки кораблей выдают название корабля при автоходе и выстреле - чтоб понято было, что это за корабль.
Оставил вероятности где-то, чтоб корабли могли сами что-то решить, как в +, так и минус - где-то реально тупят.
Люггер по испанскому золоту ищ-за Кубы еле выплывает - не понимает куда ему поворачивать
Хотя поиск пути сделан по матрицы полные "фронтом волны" и как бы обплыть может.
Просьба протестить ситуацию, когда ПК таки доплывет до порта назначения.
Может просто дать ему это сделать, не мешать плыть.
У меня вечно бой шел.
А у ИИ есть фича "не проходить мимо", если можно бахнуть в упор
В логику ИИ вдаваться не буду - интереснее ее понять по ходу игры.
Где тупит - пишите кейсы, буду делать заплатки.
Еще клик по пробел и энтер закрывает ход корабля и плашку хода - тоже удобно, если нужно тестить именно ИИ игру.
Вот это ПК против ПК результат.
И это у меня уже третья игра - в пользу испанцев.
Пиратам е везет или таки баланс не за них.
Тут было два абордажа, но в взяли 1, у меня было 0/2 до того. Так-то если бы "да", то оставшиеся корабли 1 бы загоняли.
Уровень Спасти пирата буду балансить - пока там без шансов проплыть.
Может ТТХ кораблей еще изменю
===
Да, поменял
В спасти пирата - корвет вместо брига и у галеона 4/6 в начале, а не 3/6, а то любой шторм и его не довести, т.к. негде чинить.
У корвета 2 галса, он слабее флейта и пинаса, но будет маневр.
У шхуны сделал 3 галса.
Вопрос (для ответов в соседней теме) - какие еще миссии на этих 12и типах кораблей сделать?
Я прилично доработал ИИ по шаблонам и ситуациям поведения.
И теперь уровень Испанского золота 2 х 6 кораблей у меня ИИ-ИИ пираты выигрывать перестали, т.к. галеоны перестали тупить, пользуются всеми залпами на всех дистанциях, чинятся и даже отступают, если есть ход.
А вот абордаж парой я не делал (пока не понимаю, как синхронизировать пары). И все эти отступления как раз не дают делать абордаж.
Просьба проверить - можно ли, играя за человека, выиграть пиратами?
Пока писал, понял, что если цель абордаж и корабль мелкий, то как раз не нужно отступать, чтоб окружить врага в след ход с др кораблем рядом....
Подумаю, как это учесть.
Отлично, спасибо!
Тогда ок. Пока так оставлю.
Нужно еще проверить испанцами против пиратов
Но тут должно быть проще, ИИ будет тупить, ну или потопит и будет Ничья.
У меня тесты идут ИИ-ИИ пока что.
Вот Французский барк - там баланс, три игры 1 0 ничья 0 1
А вот испанское золото - у меня пираты не могут по ИИ стаей плыть.
И от того оч редко делают абордаж.
Я им выключил отступление, если отстрелялся и есть ход. Это пзволяет абордаж делать толпой, но без тактики спасти корабль, если есть возможности уйди из сектора выстрела
А вот галеоны как раз могут и отойти, но у них галсов мало, потому не заметно
Заметно в болей у Порт Рояля.. там корветы и мелкие прям маневрируют.
Ни чего себе, несколько дней не появлялся и сколько всего нового.
Алекс, снимаю шляпутреуголку!
Вчера попробовал захват голландца, новичкам и дуракам везет, так что с первой попытки захватил.
Линкор стреляет по люггеру, но у голландцев канониры не очень или у пиратов штурман хороший, все мимо.
Был забавный момент люггер сидел в Кюрсао, а голландец не мог зайти
Шхуна два залпа, два попадания, но ответным огнем голландец топит шхуну. Люггер выходит, стреляет мимо. Бригантина, мажет, вторым залпом попадает и идет на абордаж! С первой попытки ПОБЕДА!
А вот
Северный ветер отправил нас на край карты. Голландец с попутным ветром подходит к шхуне и топит ее, следующий залп мажет и последним выстрелом топит люггер. Дальше маневры, неудачные с моей стороны и после неудачной перестрелки последний пират отправился на дно к остальным. Голландия победила.
С ИИ играть забавно, плюс уже точно можно сказать что не подыгрываешь. Сыграю еще в другие режимы отпишусь.
>>С ИИ играть забавно, плюс уже точно можно сказать что не подыгрываешь.
Это да
Я тестил лидерборд, нужна была победа. Два раза продул
Потому попал туда с 0 балами (баг был, с ноль не нужно же попадать, заодно поправил это)
Сча уже наиграл и выиграл.
Так то в лидерборды можно читить - играть Ч-Ч и сливать игру, будет победа человеку все равно.
Не знаю как такое латать и нужно ли... весь этот борд - показатель игр самих.
Я сперва вообще штуки игр туда писать хотел, а не победы
Но тогда с моими тестами (а я на сервере тещу, т.к. только там можно на Андройд виртуалке это запускать фоном) я бы уже был с 40+ игр
А вот побед у меня всего 2,т.к. К-К игры в счет побед не идут, там игрок всегда продувает, но денежка капает. А в ничью так и +100, что тоже чит.
Но такой себе, смотреть игру (рекламу кликать). Мне то пофиг - игра идет, реклама лезет. Так что пусть так.
Я допилил банерную рекламу, т.к. без нее игра не попадет в популярные (без шанса), нужно все SDK функции яндекса юзать мне тут сказали в суппорте.
Но... чтоб не мешало - только в меню и на паузу хода.
И ее можно вообще убрать, если сделать на весь экран.
В поиски расстояния до цели применял поиск "фронт волны" по матрице. И там были учтены все препятствия, корабли тоже.
Были моменты, когда корабль плыл в обход, т.к. на пути был другой корабль (свой или враг). Но они же все в движении и человек бы на это не смотрел (ну типа перекрыт путь между островами, но отойдет же шип)
А ИИ пускался в обход совсем в др сторону.
Так же был баг с выбором вектора пути и иногда визуально даже не по ветну в нужную сторону плыл, а в бакштаг как бы в бок (человек бы так не пошел).
Должно теперь иначе быть
Т.к. меня заколебало тестить долгие крутилки. В девТул моде при К_К игре вращение без звука и в 3 раза быстрее, 1 сек.
Без этих режимов тоже ускорил крутилку, порезал звук с 3.8 до 2.5 сек и крутит теперь 2.4.-2.7сек, а не 3.8-4, шустрее на 1.4 сек
Скорость кораблей на +5%, больше уже со звуками конфликтует и прочей анимацией, не истребители все же.
Снизил громкость выстрела, т.к. он был громче прочего.
Потестил испанское золото за испанцев.
Картина ожидаемая - если галеоны не калечат себя сами в штормах, то с ними трудно пиратам что-то сделать.
У меня один галеон потопил бриг и почти потопил каравеллу, а больше и не надо было. Второй разобрался со всеми остальными сам.
Пираты окружили меня разок, что уже хорошо, но на абордаж взять не смогли.
===========================================================
Да, пират слабенько соображает, когда поставлена задача взять на абордаж - в первой катке, не вошедшей в запись, он потопил оба моих галеона, в итоге ничья.
Может попробовать прописать им приоритет в логике, чтобы они стремились держаться на минимальном расстоянии друг от друга? Может так станет меньше камикадзе-гейминга в их исполнении.
Приятно, что стрелка стала быстрее давать ответ. Теперь одна игра действительно выходит на заявленные 10-15 минут геймплея, что не может не радовать.
Прибавку к скорости передвижения не заметил.
Игра Компьютер -- Компьютер. Запись всех 5 миссий настольной игры Карибские Пираты от SeawardRu
Режим игры, когда два противника - ИИ.
Каждая миссия играется по одному разу. Когда шла разработка ИИ и балансировка миссий, то таких автоигр было наиграно сотни, чтобы более точно распределить корабли и их параметры.
Это не обзор игры - это живой показ логики ИИ и его возможностей.
За счет использования перков ситуация может сильно меняться. Если играть человек--ИИ и перки не применять, то ИИ тоже не будет, до первого применения человеком. То есть, можно играть по классике.
Ссылка на игру в браузере
Описание игры и ссылки на мобильные версии
Если хотите поддерживать проект от студии SeawardRu (автора Корсары КВЛ и ГПК), то, пожалуйста, запустите браузерную версию и поставьте там 5*. Из-за низкого рейтинка в Я.Играх игру уже сложно найти.
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)