Делаю свою карту с кастомными расами. Делаю ИИ для кастомных рас через стандартный редактор. Jass не знаю. С тех пор как добавил кастомный ИИ, периодически карта дико фризит, потом быстро проматывается вперёд на х20. Вот пример (таймкод 5:05):
Возможно конечно утечки памяти из-за триггеров. Но это вряд ли.
В пример привожу карту, над которой работаю. Можете её затестить если интересно. В ней ИИ с 50% шансом выбирает кастомную расу, кроме Нежити. Для нежити пока нет альтернативной расы.
Вряд ли вы поймаете эти фризы. Они спонтанные. Но раз в 1-3 игры встречаются.
Во время фризов ни процессор, ни диск, ни ОЗУ не загружены. Т.е. это чисто внутриваркрафтовская история.
Возможно фризы происходят из-за плохого интернета моего компаньона, с которым мы тестируем карту. Но я хост, странно что фризы наблюдаются у меня.
Пожалуйста расскажите как избежать этих утечек.

Нашёл в чём ещё была проблема. В редакторе ИИ я неверно указал последовательность строительства войск и апгрейдов. А когда ИИ не видит возможность выполнить приказ, он начинает жёстко фризить. Поэтому он фризит если в списке целей у него есть покупка дирижаблей.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
28
Возможно у тебя где-то идёт какой-то жёсткий перебор группы под таймером, действия которого нужно оптимизировать либо упростить, если там логическое усложнение идёт
Ответы (10)
9
rsfghd, а на каком уровне идёт этот перебор? Триггеры? Редактор ИИ? Где именно это икать. Не совсем понимаю.
9
rsfghd, ты имеешь в виду функцию "peak multiple units" и т.п.? Да у меня есть такие триггеры. Есть способность Mana Drain Aura. Ну и некоторые другие где сортируются юниты.
28
WilliamBz, у тебя на скрине несколько утечек, учитывая что это триггер с низкой периодичностью и что ты сказал, что это лишь пример подобных триггеров, то утечки как минимум у тебя уже есть, которые должны со временем игры понижать ФПС и увеличивать нагрузку вара
9
rsfghd, я правильно понимаю, чтобы не было утечки в данном примере, нужно создать переменную с отрядом, и просто её каждый раз очищать и перезаписывать?
28
WilliamBz, нет, проблема в точке и в кондишене выбора юнитов в группу, где не обнуляется переменная
9
rsfghd, а что если я создам переменную "точка" и перемещу её на "Position of unit". А затем эту точку почищу? Или утечка всё равно останется?
28
WilliamBz, утечка останется, поскольку их две. Первая это точка, решение которой ты знаешь, второе это выбор юнитов в группу, где не обнуляется переменная, решается кастомным выбором юнитов в группу, т.е. GroupEnumUnitsInRangeOfLoc (или как-то так),
Этот комментарий удален
27
Я вашу карту не смотрел, и не знаю в чем проблема. Здесь сложно что то сказать.
  1. Фризы только в мультиплеере, или в синглплеере тоже они есть?
  2. как вы думаете в чем проблема, в вашем коде, или в ии-скрипте? Можно целиком удалить/убрать триггеры, оставив только триггер инициалилизации, и карта может работать без лагов.
Но самый простой и логичный способ - методом отсечения проверять как работает ваша карта. Как выше описал, вы можете отключить триггер, запускать, и проверять как это работает без выключенного триггера. Прекратились ли фризы. Но способ немного идиотский, нельзя будет сказать, что фризы происходит от работы выключенного триггера. В иных случаях, мне этот метод помог бы проверить визуально и пр. А тут неизвестно от чего фризы
Значит, делаем след. Есть такая вещь как дебаг. Выводим на экран в какой части кода происходит лаг. Обычно, помогало понять, где происходит обрыв действия. Обычно, можно было понять только по последним строкам.. след действия могли просто прерваться, и все. Каждое действие триггера, таймера имеет лимит действии, вы не можете настрочить миллиард действии в сек. Возможна, где то вы превысили лимит действии, и происходит обрыв. Сие действие может приводит к подлагиванию (или к вылету)
Третье, наверное, у вас просто код с утечками, много всяких действии, таймеров наверное кучу, миллион триггеров. Лучше заняться оптисизацией карты. Можно поспрашивать тут, назарчик🤩 готов поработать
Ну, и посмотреть, что там с ии-скриптом.
Ответы (2)
9
MpW, спасибо. Попробую ваши способы.
Карта тестируется только онлайн, поэтому не могу сказать на счёт сингла. Есть подозрения что дело в сворачивании игры (Alt-Tab). Играем на 1.29.2. Сегодня катали 10 игроков (2 человека и 8 ботов), было 2 игры, ни разу не фризануло. До этого по 6 игроков и дикие фризы.
Можно кстати ещё реплей глянуть. Посмотреть на каком моменте происходят фризы. Может бот что-то кастует.
28
MpW, не думаю что проблема в утечках, иначе фризы были бы стабильными, а не рандомными, и не прекращались бы, а постепенно снижали фпс
23
Вряд ли это ИИ, а вот из за кривых триггеров, я у себя наблюдал подобные фризы и глюки, особенно когда был перебор юнитов, особенно нестандартных, созданных в редакторе объектов (slk шные юниты-предметы-абилки таким не страдают), потому рекомендую заняться оптимизацией сценария карты
30
Удаляем весь код и тестируем карту. Если фризы не наблюдаются, то проблема явно в коде. А так ка JASS вы не знаете, то остаётся только нанимать жассеров на фрилансе.
Ответы (3)
9
nazarpunk, мне кажется нанимать джассеров это через чур, если варик использует не все ресурсы компьютера. Если вкладывать деньги, то проще тогда сразу работать в Unreal Engine, чтобы охватывать 100% мощностей. Или хотя бы редактор Старика (в который никто не играет). Но это так, вопрос больше философский.
30
WilliamBz, можно самому стать жассером, тогда никого нанимать не придётся.
А по поводу UE можно посмотреть на опыт StormGate.
9
nazarpunk, да классная штука. Буду в ней заниматься как релизнется!
Или там негативный опыт? Вы просто так сформулировали, как будто там что-то плохое.
30
Вы просто так сформулировали, как будто там что-то плохое.
Ничего хорошего я там не заметил.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.