Вы находитесь на сайте модмейкеров.
Четверг, 28.03.2024, 15:49
Статьи Warcraft3 Триггеры

Засорение памяти Memory Leaks

Введение.

Memory Leak (англ. Утечка памяти) это опасная вещь, которая очень часто встречается в Warcraft и приводит к небольшим / невыносимым лагам или просто напросто повисанию.

Что может вызывать утечку памяти?

Утечку памяти вызывают GUI триггеры которые оставляют за собой не удалённые вещи:

- Точка
- Группа юнитов
- Группа игроков
- Спецэффекты
- Звуки

Расскажу я про самое распространённое (про точку)

- Позиция воина (Position of unit)
- Точка с полярным смещением (Point with Polar offset)
- Точка со смещением по оси координат (Point with offset)
- И все остальные точки (включая центр региона и случайную точку там-же)

Начнём с элементарного (эффекты, звуки).

Чтобы убрать мемори лик от спецэффекта или звука нужно просто-напросто сделать после него действие:
для спецэффекта
Destroy (Last created special effect)
для звука
Destroy (Last played sound)

Теперь посложнее (точки).

Позиция юнита / Точка в области:

Перед тем как использовать точку пихаем её в переменную
Set Loc = (Position of (Triggering unit))
или
Set Loc = (Center of (Playable map area))
или
Set Loc = (Random point in (Playable map area))
или то что вам нужно

Далее следует ваше действие

Сразу после действия удаляем точку
Custom script: call RemoveLocation(udg_Loc)

Ещё сложнее (Точка со смещением)

Точка со смещением создаёт двойную утечку памяти, а именно:
- Точка от которой ведётся смещение
- Конечная точка

Для того чтобы устранить утечку требуется 2 переменных, а далее всё по плану

Set Loc = (Position of (Triggering unit))
Set Loc2 = (Loc offset by 256.00 towards 90.00 degrees)

Далее идёт ваше действие с использованием второй (!) переменной

Custom script: call RemoveLocation(udg_Loc2)
Custom script: call RemoveLocation(udg_Loc)

Вот собственно и всё

Категория: Триггеры | Добавил: DoomDemon (01.12.2010) | Автор: DoomDemon
Просмотров: 2347 | Комментарии: 2 | Рейтинг: 5.0/1
Всего комментариев: 2
avatar
1 Jugg • 22:10, 02.12.2010
как все сложна)))))) biggrin biggrin biggrin biggrin biggrin biggrin biggrin biggrin biggrin
avatar
2 Glaber • 19:08, 23.03.2011
Можно добавить что :
ДАже если все удалил , но остались хоть какие-то данные о утечке
то она останется и будет засорять память .
Т.е надо удалить еще и все ссылки на утечку(и переменные тож обнулить)
ComForm">
avatar
W3 - Всё для картостроения. 2024-2010 |