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

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

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