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

Принятый ответ

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