Сейчас 20:03:56 Воскресенье, 7 августа, 2022 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Раздел картостроителя » [СТАТЬЯ] Уменьшение лагов в карте
[СТАТЬЯ] Уменьшение лагов в карте
PUVerДата: Воскресенье, 23 Мая 2010, 00:35:41 | Сообщение # 26
Сухопутные крысы!
Группа: Модераторы
Сообщений: 4462
Награды: 8
Репутация: 1845
Блокировки:
Quote (Banzay89)
Освобождает вар от такой рутинной работы, как запись реплеев в даной карте, тем самым бросив все силы вара на обработку кода и прочего

Как вариант неплохо)Но многие любят записывать реплеи и я уверен, что столкнувшись с такой штукой они будут несколько огорчены...
 

Banzay89Дата: Воскресенье, 23 Мая 2010, 12:54:58 | Сообщение # 27
9 уровень
Группа: Проверенные
Сообщений: 858
Награды: 1
Репутация: 77
Блокировки:
Quote
Как вариант неплохо)Но многие любят записывать реплеи и я уверен, что столкнувшись с такой штукой они будут несколько огорчены...

Ну это на тот случай, если автору пох на реплеи))) Я так всегда делаю)))

 

SirNikolasДата: Воскресенье, 30 Мая 2010, 14:56:11 | Сообщение # 28
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
А как обнулять "Pick every unit in unit group"?

 

[DUОS]Дата: Воскресенье, 30 Мая 2010, 15:19:40 | Сообщение # 29
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
SirNikolas,
Перед этой строчкой написать кастом скриптом:

set bj_wantDestroyGroup = true


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

kaisarДата: Понедельник, 31 Мая 2010, 17:39:31 | Сообщение # 30
9 уровень
Группа: Проверенные
Сообщений: 814
Награды: 0
Репутация: 91
Блокировки:
премного благодарен.
 

MaHBeДата: Четверг, 03 Июня 2010, 11:35:47 | Сообщение # 31
7 уровень
Группа: Проверенные
Сообщений: 260
Награды: 2
Репутация: 138
Блокировки:
Quote (Banzay89)
call DoNotSaveReplay() при инициализации карты

Из статьи ничего нового, а вот ЭТО интересно)
 

Banzay89Дата: Четверг, 03 Июня 2010, 19:37:43 | Сообщение # 32
9 уровень
Группа: Проверенные
Сообщений: 858
Награды: 1
Репутация: 77
Блокировки:
Quote
call DoNotSaveReplay()

самому понравилось, когда нашел такое=)

 

MrakinBlackДата: Четверг, 19 Мая 2011, 08:00:25 | Сообщение # 33
3 уровень
Группа: Пользователи
Сообщений: 66
Награды: 0
Репутация: 3
Блокировки:
Quote (PUVer)
Как вариант неплохо)Но многие любят записывать реплеи и я уверен, что столкнувшись с такой штукой они будут несколько огорчены...

Quote (Banzay89)
Ну это на тот случай, если автору пох на реплеи))) Я так всегда делаю)))

А почему бы не потрудиться сделать диалог для откл или вкл записи реплея?
Кому надо из игроков - те отключат чтобы быстрее шло!
Кому ненадо из игроков - те включат чтобы реплэем потом хвастаться!
сделать наработку что ли? (задумался о целесообразности)


Мир - Игра с непонятным сюжетом и странной графой.
Карта которую делаю:
Fight of Shinoby Taskete Hime v1.43b
Ландшафт: 50%
Триггеры: 70%
Итемы: 85%
Герои: 95% (для первый тест)
Оптимизация: 30%
 

SirNikolasДата: Четверг, 19 Мая 2011, 14:05:53 | Сообщение # 34
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
MrakinBlack, эту функцию можно использовать только при инициализации, так что диалогами не получится. Можно, правда, привязать включение записи ролика к map flag'ам, вроде "Случайный выбор героев" и проч.

 

MrakinBlackДата: Пятница, 20 Мая 2011, 07:21:52 | Сообщение # 35
3 уровень
Группа: Пользователи
Сообщений: 66
Награды: 0
Репутация: 3
Блокировки:
Quote (SirNikolas)
MrakinBlack, эту функцию можно использовать только при инициализации, так что диалогами не получится. Можно, правда, привязать включение записи ролика к map flag'ам, вроде "Случайный выбор героев" и проч.

действительно жаль...
интересно, а есть команда включения записи реплея? тогда вообще всё просто было бы.

В итоге, чтобы избежать лагов придёться всё таки переходить на локальные и на Джасс.


Мир - Игра с непонятным сюжетом и странной графой.
Карта которую делаю:
Fight of Shinoby Taskete Hime v1.43b
Ландшафт: 50%
Триггеры: 70%
Итемы: 85%
Герои: 95% (для первый тест)
Оптимизация: 30%
 

BublGumДата: Четверг, 23 Февраля 2012, 20:42:25 | Сообщение # 36
5 уровень
Группа: Проверенные
Сообщений: 121
Награды: 0
Репутация: 25
Блокировки:
call RemoveLocation на самом деле это ложь! ничего эта команда не удаляет по крайне мере так написано в статье ФКОФА
 

Ty3uKДата: Четверг, 23 Февраля 2012, 21:19:07 | Сообщение # 37
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Все она удаляет, это можно проверить счетчиком хэндлов

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

SirNikolasДата: Пятница, 24 Февраля 2012, 18:28:16 | Сообщение # 38
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
BublGum, с ней все нормально. А вот DestroyForce, DestroyGroup и bj_wantDestroyGroup действительно ничего не делают.

 

ImpregnableДата: Пятница, 24 Февраля 2012, 19:21:54 | Сообщение # 39
6 уровень
Группа: Проверенные
Сообщений: 231
Награды: 0
Репутация: 92
Блокировки:
Quote (SirNikolas)
А вот DestroyForce, DestroyGroup и bj_wantDestroyGroup действительно ничего не делают


Ах ну да Близы же криворукие придурки(мы бы написали war лучше, но что-то...) и эти нативки создали от ... делать

Загляни на 10 минуте в Диспетчер задач
Code

function DestroyGroupWhy takes nothing returns nothing
     local group gr = CreateGroup()

     call GroupEnumUnitsInRange(gr, 0, 0, 9000, null)

     set gr = null
endfunction

function q takes nothing returns nothing
     local integer i = 0

     loop
         call TimerStart(CreateTimer(), .04, true, function DestroyGroupWhy)

         set i = i + 1
         exitwhen i == 50
     endloop
endfunction


P.S.
Я, конечно, извиняюсь, но уже надоело видеть подобное.
 

Ty3uKДата: Пятница, 24 Февраля 2012, 19:59:56 | Сообщение # 40
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Может все дело в том, что надо сначала заглянуть внутрь бж и включить мозг, а не задвигать псевдоумные вещи. Ник говорит про массовое заблуждение о том, что при пике юнитов в группу с помощью бж (на гуи именно так и происходит) идет утечка локальной переменной. И все, умничать не надо, а сарказм не нужен никому -_-

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

ImpregnableДата: Пятница, 24 Февраля 2012, 20:32:29 | Сообщение # 41
6 уровень
Группа: Проверенные
Сообщений: 231
Награды: 0
Репутация: 92
Блокировки:
Ладно "попытаюсь включить мозг" - с DestroyGroup идет утечка локальное переменной, а DestroyForce наверное опечатка. Теперь все сходится. Вопросов больше нету...
 

Ty3uKДата: Пятница, 24 Февраля 2012, 20:38:10 | Сообщение # 42
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Нет, утечка идет не с DestroyForce(), а с бж на пик юнитов. Из-за утечки локальной переменной в ней юзать функу уничтожения группы почти нет смысла. Вот и все :)

Добавлено (24 Февраль 2012, 20:38:10)
---------------------------------------------
Фу, очепятка- DestroyGroup()


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

ImpregnableДата: Суббота, 25 Февраля 2012, 05:42:07 | Сообщение # 43
6 уровень
Группа: Проверенные
Сообщений: 231
Награды: 0
Репутация: 92
Блокировки:
Ty3uk напиши, что ты не серьезно. А вообще хотелось бы прочитать, что скажет Сам SirNikolas.
 

Ty3uKДата: Суббота, 25 Февраля 2012, 09:09:46 | Сообщение # 44
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
warcraft3ft.info/forum/22-35043-3 уже обсуждали. Ник там все сказал

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

SirNikolasДата: Воскресенье, 26 Февраля 2012, 08:21:52 | Сообщение # 45
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Code
//===========================================================================
function GetForceOfPlayer takes player whichPlayer returns force
     local force f = CreateForce()
     call ForceAddPlayer(f, whichPlayer)
     return f
endfunction

//===========================================================================
function GetPlayersByMapControl takes mapcontrol whichControl returns force
     local force f = CreateForce()
     local integer playerIndex
     local player  indexPlayer

     set playerIndex = 0
     loop
         set indexPlayer = Player(playerIndex)
         if GetPlayerController(indexPlayer) == whichControl then
             call ForceAddPlayer(f, indexPlayer)
         endif

         set playerIndex = playerIndex + 1
         exitwhen playerIndex == bj_MAX_PLAYER_SLOTS
     endloop

     return f
endfunction

//===========================================================================
function GetPlayersAllies takes player whichPlayer returns force
     local force f = CreateForce()
     call ForceEnumAllies(f, whichPlayer, null)
     return f
endfunction

//===========================================================================
function GetPlayersEnemies takes player whichPlayer returns force
     local force f = CreateForce()
     call ForceEnumEnemies(f, whichPlayer, null)
     return f
endfunction

//===========================================================================
function GetPlayersMatching takes boolexpr filter returns force
     local force f = CreateForce()
     call ForceEnumPlayers(f, filter)
     call DestroyBoolExpr(filter)
     return f
endfunction
Возвращается локальная переменная. Не обнуляется. Ссылка остается висеть в памяти. Сколько не юзай DestroyForce, объект не удалится.


 

ImpregnableДата: Воскресенье, 26 Февраля 2012, 11:46:45 | Сообщение # 46
6 уровень
Группа: Проверенные
Сообщений: 231
Награды: 0
Репутация: 92
Блокировки:
Quote (SirNikolas)
Возвращается локальная переменная. Не обнуляется. Ссылка остается висеть в памяти. Сколько не юзай DestroyForce, объект не удалится.


Опять же приведу пример:
Code

function DestroyGroupWhy takes nothing returns nothing  
      local force f = CreateForce()
endfunction  

function q takes nothing returns nothing  
      local integer i = 0  

      loop  
          call TimerStart(CreateTimer(), .04, true, function DestroyGroupWhy)  

          set i = i + 1  
          exitwhen i == 100
      endloop  
endfunction  

и
Code

function DestroyGroupWhy takes nothing returns nothing  
      local force f = CreateForce()
      call DestroyForce(f)
endfunction  

function q takes nothing returns nothing  
      local integer i = 0  

      loop  
          call TimerStart(CreateTimer(), .04, true, function DestroyGroupWhy)  

          set i = i + 1  
          exitwhen i == 100
      endloop  
endfunction  


Думаю, по разнице занимаемой памяти в Диспетчере задач будет ясно, что DestroyForce(и подобные нативки) не для красоты.
А что касается того, что не обнуляется переменная, то тут есть вполне логическое объяснение, но кому это интересно...
 

Ty3uKДата: Воскресенье, 26 Февраля 2012, 12:39:21 | Сообщение # 47
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
А теперь функцию таймера замени на функцию, которая будет возвращать группу игроков и возвращай локальную группу. Сколько ты не будешь юзать функу уничтожения там, в функции вызова- эффекта не будет. Я уже это третий раз говорю. А если уничтожать группу после ее создания внутри той же функции, то офк толк будет, не держи нас за умалишенных

Добавлено (26 Февраль 2012, 12:39:21)
---------------------------------------------
Был бы с компа- написал бы пример, на который стоит ориентироваться, раз ты так сильно уверен в нашей неправоте, но увы не могу


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

ImpregnableДата: Воскресенье, 26 Февраля 2012, 13:06:27 | Сообщение # 48
6 уровень
Группа: Проверенные
Сообщений: 231
Награды: 0
Репутация: 92
Блокировки:
Так чтоли?
Code

function GetForce takes nothing returns force
     local force f = CreateForce()
     return f
endfunction  

function Test takes nothing returns nothing
     local force f = GetForce()

     call DestroyForce(f)

     set f = null
endfunction  

function q takes nothing returns nothing  
      local integer i = 0  

      loop  
          call TimerStart(CreateTimer(), .04, true, function Test)  

          set i = i + 1  
          exitwhen i == 100
      endloop  
endfunction  

Результат тот же. Да и странно видеть как вы, пользуясь, тем, что сделали программисты, считаете, себя умнее их и лучше разбираетесь в их же продукте.
 

Ty3uKДата: Воскресенье, 26 Февраля 2012, 13:12:37 | Сообщение # 49
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Пруф что я считаю себя умнее

Добавлено (26 Февраль 2012, 13:12:37)
---------------------------------------------
Результат надо проверят не через диспетчер задач, а через счетчик утечек. Если он покажет, что хэндл не съезжает хотя бы на 1 цифру- я не прав. И насколько я знаю, пустая группа занимает меньше памяти, чем заполненная (могу ошибаться)


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

ImpregnableДата: Воскресенье, 26 Февраля 2012, 14:15:06 | Сообщение # 50
6 уровень
Группа: Проверенные
Сообщений: 231
Награды: 0
Репутация: 92
Блокировки:
Quote (Ty3uk)
Пруф что я считаю себя умнее

Я вроде бы не переходил на личности. Да и я уверен ты понял, что я имел ввиду.

Quote (Ty3uk)
Результат надо проверят не через диспетчер задач, а через счетчик утечек

Что-то ты отошел от темы спора "DestroyForce, DestroyGroup и bj_wantDestroyGroup действительно ничего не делают". Уф, замучил ты меня: каждый раз приходится тестить. Результат - без уничтожения объектов war жрет много памяти, а ведь не у всех мощные компьютеры.

Quote (Ty3uk)
И насколько я знаю, пустая группа занимает меньше памяти, чем заполненная (могу ошибаться)

Возможно. Тестить не хочу. А причем тут это?
 

Форум о Warcraft 3 » Раздел для картостроителей » Раздел картостроителя » [СТАТЬЯ] Уменьшение лагов в карте
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Поиск:

Copyright © 2006 - 2022 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz