“ХОСТ ЛАГИ”, или почему герои плохо слушаются

Задержка в варкрафте – постоянная проблема для всех. Кто-то не может добить крипа, а кто-то не удержал сфа от поворота и промазал койлом. И вроде латенси стоит 25, и вроде канал в гигабит, и сервер в соседней квартире, а все равно – герой слушается позже, чем нужно. А в коннекте ли дело?

lagi_suka_2000

Есть в WC3 такая настройка – задержка реакции (Reaction Delay). Она присутствует с самой первой бета-версии и хранится в константах каждой карты. По умолчанию её значение – 0.25 с. Что это значит для игрока? Что ЛЮБОЙ приказ, отданный юниту, выполнится через 0-0.25 секунд. Т.е., грубо говоря, мгновенной реакции на приказ не будет практически никогда (шанс выпадения нуля при рандоме от 0 до 0.25 находится около него же). Накой же это надо?

net_speed_2000

Вспомним на секунду, что варкрафт – это не RPG, а RTS. Это стратегия, а не диабла. В ней участвует куча юнитов, подконтрольных игроку, и куча разных триггеров. Естественно, благодаря возможности выделять кучу юнитов и организовывать группы можно было собирать армии на два экрана. А когда сходились две такие армии, то.. Обрабатывать всё это счастье в 2000 году, когда разрабатывалась игра, было просто нечем. Интернет был 56 кбит, а лучшим домашним процессором только только стал Pentium 3 766 МГц. И Blizzard подумали – как же доделать игру, чтобы она не плавила процессор, при этом не урезая размеры армий?

В результате мозгового штурма появилась идея разбить события на некоторый промежуток времени, выполняя каждое из них с некоторой задержкой. Т.е. вместо того синхронного удара по зданию от 100 пехотинцев каждый удар запаздывает на долю секунды (0.001, 0.002, 0.0034, 0.0051 и т.п.). В результате процессор обрабатывает события последовательно и не перегружается расчетами, а игрок особой разницы не замечает. К тому же звуковое сопровождение становится просто великолепным!

Игра не тормозит, армии сражаются красиво и смачно, новый кулер покупать не нужно, все счастливы. А теперь вернемся к DotA.

Здесь задержка – абсолютное зло. Гигантских армий нет, проблем со звуком тоже. Однако константу не изменяли, и по-прежнему КАЖДЫЙ приказ, отданный игроком, запаздывает на x секунд. А прибавив скорость интернета, удаленность сервера и встроенную задержку (Battle.net – 250ms, LAN – 100 ms, iCCup – по -latency) мы вполне можем ожидать исполнения отданного приказа 0.5 секунды. За это время СФ может развернуться назад и потерять нужный угол. А крип – умереть от руки более удачливого противника, которому рандом выдал меньшую задержку.

В общем и целом – не всегда вина хоста, что ты не успел развернуться и ударить, хотя явно должен был успеть. Это вина варкрафта и фрога в частности, ленящегося установить эту бесполезную для карты константу на 0.

Кстати, случаи, когда Juggernaut не может ударить врага ни разу за свой ульт, или когда Xin не бьет некоторых юнитов, стоящих в AoE Sleight of Fist, тоже происходят из-за этой константы. Задержка реакции просто не позволяет успеть сделать атаку за отведенное время.

Голд и башни

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

Уровень Голд союзникам Голд убийце Голд каждому при убийстве крипами
1 200 450-470 200+460*0.7/x
2 240 500-520 240+510*0.7/x
3 280 550-570 280+560*0.7/x
4 320 600-620 320+610*0.7/x

где x – количество играющих игроков.

x\уровень 1 2 3 4
5 264 311 358 405
4 281 329 378 427
3 307 359 411 462
2 361 419 476 534
1 522 597 672 747

Ну а для наглядности:

График золота за башни

График золота за башни (клик для увеличения)

Итак, не принимая в учет голд для союзников, разрушать башню самостоятельно нужно всегда, кроме случая, когда все союзники ливнули. Это даст наибольшую выгоду для игрока, но не для команды в целом.