DualShock
offline
Опыт:
4,983Активность: |
GetLatency
Когда то давно в академии я спрашивал: можно ли отследить пинг в варкрафте? Как ни странно мне ответили нет. Но вот совершенно случайным образом наткнулся на эту либу, которая позволяет это отловить:
((код jass
library GetLatency initializer OnInit globals private constant real PERIOD=0.7 private constant real MAX_TIME=1000000.0 endglobals globals private gamecache gc private string array Number private timer GameTimer endglobals private function Modules takes real r returns integer if r < 0. then return R2I(-r) endif return R2I(r) endfunction function GetLatency takes player source, player object returns integer return Modules(GetStoredReal(gc,"Test",Number[GetPlayerId(source)]) - GetStoredReal(gc,"Test",Number[GetPlayerId(object)])) endfunction private function Update takes nothing returns nothing local integer i = GetPlayerId(GetLocalPlayer()) call StoreReal(gc,"Test",Number[i],TimerGetRemaining(GameTimer) * 100.) call SyncStoredReal(gc,"Test",Number[i]) endfunction private function OnInit takes nothing returns nothing set Number[0] = "Player 1" set Number[1] = "Player 2" set Number[2] = "Player 3" set Number[3] = "Player 4" set Number[4] = "Player 5" set Number[5] = "Player 6" set Number[6] = "Player 7" set Number[7] = "Player 8" set Number[8] = "Player 9" set Number[9] = "Player 10" set Number[10] = "Player 11" set Number[11] = "Player 12" set GameTimer = CreateTimer() call TimerStart(GameTimer,MAX_TIME,false,null) call FlushGameCache(InitGameCache("GetLatency")) set gc = InitGameCache("GetLatency") call TimerStart(CreateTimer(),PERIOD,true,function Update) endfunction endlibrary )) Тестил в гарене с двумя компами пинг показывал, но некорректно : 62, 72, 0 ... Заметил эту фичу в очередном апдейте любимой тд-шки, версия открытая, собсна код от туда же. Обсуждаем, как это работает я еще не разбирал написал сразу тут |
09.05.2013, 23:15 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Clamp
Lost in space
offline
Опыт:
71,158Активность: |
Забавно, если кэш реально имеет отклик до сервера отдельный, то всё должно нормально работать. |
09.05.2013, 23:28 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
IceFog
online
Опыт:
7,993Активность: |
Похоже, в этой либе пытаются определить задержку игрока, в зависимости от его скорости синхронизации данных. |
09.05.2013, 23:30 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Clamp
Lost in space
offline
Опыт:
71,158Активность: |
Караваса сильный кодер, но он же забил на элемент? то есть это кастомная версия на опенсорсе? |
09.05.2013, 23:30 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DualShock
offline
Опыт:
4,983Активность: |
|
09.05.2013, 23:34 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
ничего общего с пингом эта либа не имеет и показывает на самом деле погоду. |
10.05.2013, 06:27 | #6
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Zetox
offline
Опыт:
1,698Активность: |
я где-то создавал тему, тем отслеживалось время пинга + задержка компьютера. А в карте gondar wars отслеживается хост, по подобной системе.
|
10.05.2013, 14:18 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|