Чем шататься по различным комментариям, решил создать этот топик и прояснить раз и навсегда.
Если создать триггер и зарегать в нем овер 50к событий на получение урона, вц3 занимает порядка 200мбайт памяти(что свидетельствует об относительной ничтожности таких утечек), а затем удалить его - вц3 занимает все те же 200 мбайт. Однако, сохранив игру до и после удаления, а затем загрузить, видим, что память уменьшилась. После уничтожения время сохранения также сильно падает. Упадет ли размер вара со временем если не прибегать к save+load? Короче - есть ли в вц3 нормальный garbage collector и чистит ли он подобные кучи памяти.

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

наличия триггера на получение урона для каждого юнита
так делать нельзя
это же полный бред
просто добавляем событие к уже существующему триггеру вот и всё
нормального сборщика мусора в варе нет и скорее всего не будет(если близы даже рб поленились убрать то о нормальном gc можно забыть)
так же не стоит забывать что сборщик мусора срабатывает не сразу
если мне не изменяет память то save сохраняет объекты и значения переменных
а при загрузке восстанавливает связи (заносит значения в переменные, регистрирует события и прочее)
так что всякий мусор просто не проходит
а вообще лучше забей на это
в варе есть более серьёзные утечки от которых нельзя избавиться
например руны
+ создание и удаление триггеров вредит намного больше чем пара сотен килобайт памяти
да и вряд ли у тебя за игру будет 50к юнитов
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
48
8 лет назад
0
дай пример, долго стряпать блин с такими условиями.
п.с.: во многих примерах урона я видел фиксацию типа урона и количество, потом его удаляют через строку. по сути логики, если тупо удалить триггер, то удалятся только поочередные действия, то есть очередь при условии и действии больше не будет, но след, которые оставляют эти действия остаются в памяти, и так же если загрузить савку, то игра перерендерит порядок действий, кроме тех, которые были удалены через триггер.
в общем болванку в студию, буду долбить свой лоб)
0
20
8 лет назад
0
Ну я тестил вокруг этого
Загруженные файлы
0
48
8 лет назад
0
пес его знает... мне вообще кажется что не все утечки нормально стираются.
0
32
8 лет назад
0
Кароче что я проверял:
Триггер удаляется полностью с условиями и действиями, боллекспры остаются висеть но они не плодятся как тараканы.
События повешенные на конкретного юнита не удаляются, а остаются висеть в памяти даже если полностью удалить юнита.
Посему юзать периодические триггеры или события работающие на конкретного юнита но имеющие аналоги на всех юнитов игрока стоит только в крайнем случаи (когда иначе никак).
Загруженные файлы
0
28
8 лет назад
Отредактирован nvc123
0
событие это 4 байта вроде
50к событий тогда занимают целые 200кб
так что можно особо не волноваться
но вообще если ты удаляешь триггеры значит ты криво написал код
при нормальной архитектуре в этом нету необходимости
0
20
8 лет назад
Отредактирован Diaboliko
0
nvc123:
событие это 4 байта вроде
50к событий тогда занимают целые 200кб
так что можно особо не волноваться
но вообще если ты удаляешь триггеры значит ты криво написал код
при нормальной архитектуре в этом нету необходимости
Идея наличия триггера на получение урона для каждого юнита не нова. Все юниты, которым не нужен специальный триггер, который бы учитывал их особенности, получают свой дефолтный триггер. Такой триггер, потенциально - сплошная утечка ивентов. Поэтому и интересует.
Хотя меня заинтересовал непосредственно факт того что сохраняет вар3 данные без оставшегося в памяти мусора.
Быть может адекватный мусорщик все-таки есть, но используется лишь когда вару не хватает памяти? Все-таки медленная штука.
0
28
8 лет назад
0
наличия триггера на получение урона для каждого юнита
так делать нельзя
это же полный бред
просто добавляем событие к уже существующему триггеру вот и всё
нормального сборщика мусора в варе нет и скорее всего не будет(если близы даже рб поленились убрать то о нормальном gc можно забыть)
так же не стоит забывать что сборщик мусора срабатывает не сразу
если мне не изменяет память то save сохраняет объекты и значения переменных
а при загрузке восстанавливает связи (заносит значения в переменные, регистрирует события и прочее)
так что всякий мусор просто не проходит
а вообще лучше забей на это
в варе есть более серьёзные утечки от которых нельзя избавиться
например руны
+ создание и удаление триггеров вредит намного больше чем пара сотен килобайт памяти
да и вряд ли у тебя за игру будет 50к юнитов
Принятый ответ
0
20
8 лет назад
0
Ну я как бы и имел ввиду что к одному триггеру относятся несколько событий, лол. Не спорю, такие цифры не реальны, но вдруг кто-то углублялся в эту тему.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.