Перейти к контенту

AI вертолетов


Kirag

Рекомендуемые сообщения

эти параметры в основном используются в оффлайн-алайфе для анализа боев

а так же, вроде, еще и в снайпер-аддоне

 

какие именно где - не помню.

но на стрельбу из оружия никак не влияет

Все, кто стоит на моем пути: идите нахрен и там погибните! ©

Поделиться этим сообщением


Ссылка на сообщение

Ого, баталия. Уважаю, что называется.

 

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

1) такого взаимодействия, как показывает практика не нужно! достаточно создать видимость.

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

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

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

5) все это сводится к ручному манипулированию эвалюаторами - выставление тех или иных в true (просто чуть-чуть модифицируем код эвалюаторов)

6) как следствие - неписи двигаются сами по себе, но внешне это выглядит как групповое действие.

 

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

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

 

Так что верной путей идете, товарищи.

 

PS 2Kirag: к id объектов низзя привязываться для выбора направлений. Так как получится каша. И да, у ПЫС боевая схема в движке, для сталкеров, и она не такая уж и простая. Другое дело, что не очень адекватная.

PPS 2Kirag: тебе с десантом могу предложить вариант такой: составляешь единожды таблицу, кого надо "забрать" и у вертолета смотришь, чтоб таблица была пустая, тогда улетать. У написей же делаем схему, где эвалюатор выдает true, если непись в такой таблице, ну а в схеме - что угодно, например, пробежать от 2 до 5 секунд, присесть пострелять во врага 2 секунды, метнуться в сторону и все это в виде графа с переходами по ребрам из одного состояния в другое. Можно усложнить - если отслеживать через таблицу у кого из группы какое состояние, запрещать переход в какое-либо состояние, если более 70% группы в таком состоянии уже находятся. Не суть, главное - когда добегает непись до цели (проверка расстояния, например), то удаляем себя из этой таблицы, а на finalize экшна непися ... еще раз удаляем себя из таблицы (на тот случай, если финалайз вызван переходом в оффлайн, например, считаем, что добежали), вставить его же собственное удаление через alife():release(), или если вылеты, то косвенными способами - через промежуточные функции и таблицы. Итог: бегут неписи, постреливают, шхерясь и абсолютно несинхронно, к вертушке и один за другим исчезают "в ней" после чего вертушка деловито завывая улетает :) Главное - запоминать состояние таблицы в сейве.

Изменено пользователем xStream

Все, кто стоит на моем пути: идите нахрен и там погибните! ©

Поделиться этим сообщением


Ссылка на сообщение

это и есть реальное взаимодействие :)

они делают общее действие при этом выполняя каждый свои схемы.

а набор этих схем и есть групповое взаимодействие.

надо просто сделать уровень абстракции выше схем

 

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

Изменено пользователем xStream

Все, кто стоит на моем пути: идите нахрен и там погибните! ©

Поделиться этим сообщением


Ссылка на сообщение

а для того и нужен верхний уровень, чтоб определять кого куда и что бы не было конфликтов.

то есть составлять наборы данных, исходя из которых непись переходит под ту или иную схему

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

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

 

"как бы" вместе,но не вместе.

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

Изменено пользователем xStream

Все, кто стоит на моем пути: идите нахрен и там погибните! ©

Поделиться этим сообщением


Ссылка на сообщение

1)При загрузке игры каждому неписю вызывается onregister метод серверного объекта. Ну и в нем, непись отправляет в общее хранилище свои данные. Запись проще - реалтайм, как надо сохранить инфу, сразу в него и пишем, при сохранении все это попадет в сейв.

2)По ид я имел ввиду следующее - если брать непися с ИД=10 и послать налево, а непися с ИД=11 направо, томожет получиться смешно - 10-й стоит справа, а 11 слева, вот и пойдут "крест-накрест".

Только это и ничего более.

Изменено пользователем xStream

Все, кто стоит на моем пути: идите нахрен и там погибните! ©

Поделиться этим сообщением


Ссылка на сообщение

Осталось только убрать сталкеров, посадить меченого на вертолет и устроить воздушное побоище :)

Все, кто стоит на моем пути: идите нахрен и там погибните! ©

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...