Можно ли как-то пофиксить фризы ИИ?
Суть причины фризов ИИ - попытка сделать 100 тыщ приказов в секунду. Он может попытаться 1000 раз нанять юнита, которого нет. И это вызывает сильнейшие протормозы. По факту ИИ не оставляет права на ошибку для того, кто его пишет. Нужно точно указать условия и прочие вещи, но это не всегда возможно. Не существует ни дебагов, ни способов нахождения этих фризов. Остаётся только терпеть, и внимательно прочёсывать весь скрипт, тратя много времени и сил на устранение проблемы.
Можно ли как-то переписать ядро ИИ, например изменить common.ai или другие сценарий, которые будут обращаться к кастомным функциям, или же просто добавить в них куда-нибудь функцию Sleep, чтобы избежать фризов? Можно ли как-то установить лимит на число приказов бота в секунду? Какими угодно способами.
Я в курсе про AMAI, но он не работает с кастом расами. И он тоже фризит. А мне бы хотелось создать такой ИИ, с которым можно было бы играть комфортно. Возможно ли это?
`
ОЖИДАНИЕ РЕКЛАМЫ...
27
Суть причины фризов ИИ - попытка сделать 100 тыщ приказов в секунду. Он может попытаться 1000 раз нанять юнита, которого нет.
А зачем ты пытаешься сделать 100 тыщ приказов в секунду?
15
Makeba, это делаю не я. Это делают разрабы зачем-то. Я пишу ИИ через ИИ-редактор. Если я забыл прописать условия для создания юнита, комп будет пытаться 100 тыщ раз его нанять, и из-за этого фризить по итогу. И я хочу узнать, как сделать так, чтобы этого не происходило. Т.к. ИИ у меня много, и каждого проверить на ошибки просто нереально. Т.к. карта разрабатывается, в ней постоянно что-то меняется. Ну и кроме того это не единственная причина. Если ИИ где-то застревает, он тоже может фризы давать, например. И такие вещи я уже не могу контролировать.
27
WilliamBz, не знаю что должен генерировать редактор ИИ, но если заглянуть в стандартные ИИ скрипты близзов, то можно увидеть, что в каждом постоянном цикле стоит Sleep на 1-2-3 секунды, то есть на этом уровне долбёжку движка по идее должен исключать скриптописатель. Сравни то, что выдаёт редактор ИИ и то, что сделано у близзов во всяких human.ai и т.д., должны быть аналогичные циклы со слипами. Ну я сомневаюсь, что в игровом коде близзы могли написать ИИ так, что он 1000 раз в секунду пытается нанять несуществующего юнита, это всё должно было работать на компах 2002-го года
32
еще раз - логика работы ИИ описана в game.dll и никак её не поменять, все что можно редактировать в ИИ скриптах экономику и последовательность и состав атак, всё. Никакого микро, никаких финтов с микроконтролем для окружения врагов или пулинга нейтрального сильного крипа и прочих чудес. Точно так же с юнитами, у ИИ должны быть в доступе юниты, если чо в кампании дирижабли продаются у ИИ в ратуше, он не идите покупать рабочим или пехотинцем дирижабль - почему? Наверное не просто так.
Так что либо в коде карты сами пишем ИИ доступными способами - либо довольствуемся багами близардовского ИИ.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.