Не так давно комрад R1CH в своей статье на tl.net рассказал об особенностях сетевого подключения второго СтарКрафта.
Сразу
оговоримся, что под "латентностью", "пингом" или "лагом" имеется именно
сетевой пинг (тот, что зависит от проводов). В СК2 так же встроен
командный буффер, который предназначен для сглаживания игры при высоких
лагах. С другой стороны он автоматически добавляет некий дополнительный
пинг, который нельзя исправить никакими подрутками.
Введение
СК2
запускается через удаленный сервер, как например HoN. Не p2p как было в
БВ, а через удаленную машину-сервер. Близзард - хост игры, а не вы (не
тестировались Произвольные игры, может быть в них все немного иначе).
Протокол - TCP, а не UDP как было ранее. Я не знаю, почему в Близзард
решили использовать TCP/IP, ведь при равных условиях этот протокол
проигрывает по пингу из-за потерянных пакетов. Вероятно, они не хотели
ломать голову с фрагментацией или NAT.
"Дропхак" и обычные лаги
Т.к.
другие игроки так же подключаются к серверу Близзарда, а не к вам,
вохможность "дропхака" исключена полностью. Дропхак позволяет прервать
соединение какими-либо способами, и десинхронизировав соединение,
выкинуть вас из игры. А т.к. в СК2 соединение идет через сервер, все что
можно сделать - дискнуть себя с сервера. Сервер же остается жив, и
сможет определить, кто остался в игре. Он будет победителем и получит
очки.
Тем не менее, остается потенциальная угроза отправки
каких-нибудь баг-пакетов, которые бы обрубали сервер. Но здесь мы
предполагаем, что уровень защиты, и вообще вся система сервера не
позволяет это сделать (ну или в крайнем случае, баг будет пофиксен в два
счета).
Вы могли заметить, что окно Waiting for players
появляется довольно часто. Сервер настроен так, что при лаге одного
игрока, на паузу ставятся все остальные. Типа не честно было бы
продолжить игру, чтобы "нелагающий" игрок перемикрил, или, того хуже,
поймал на муве лагающего, пока тот не в состоянии что-то сделать. В
теории же, можно сделать как в HoN'е - если игрок лагает, это его
проблемы, у остальных все хорошо. С другой стороны, такая система
позволяет зайти в игру миллиону обсов. Если обс лагает, кому есть до
этого дело?
Port Forwarding
Настраивать
порт-форвардинг не нужно. Вы подключаетесь к battle.net'у как к репсам.
Опять же, это решает вопрос с proxy: 1x1 это, 2x2, 3x3 - разницы нет.
Мапхак
Небольшой
технический взгляд на мапхаки. Т.к. соединение идет через сервер,
технически возможно полностью избавиться от мапхака (сервер отправляет
игроку только то, что он "может видеть"). HoN так делает. Но в HoN'е
мало юнитов, это ж как DotA, но в случае войны лимитов (тем более в
каком-нибудь 4x4, где воюют 4 тосса с батонами). Это означает, что как
только лимит входит в зону вашей видимости, сервер должен отправить в
одно мгновение пару мегабайтов. При этом не должны теряться пакеты,
иначе будет лаг. И если это каким-то хитрейшим способом можно расчитать,
ссылаясь на скорость и вектор движения юнитов, то точка скана - чисто
случайная точка для сервера.
То есть в теории можно замутить очень хитро, но на практике от этого пострадает пинг, а пинг в РТСках крайне важен.
Улучшаем латентность
Как
уже было сказано, СК2 использует TCP. TCP разработан так, что пинг
вторичен по отношению к скорости передачи данных. Практически все
стрелялки используют UDP из-за этого. Особенность TCP - точная передача
данных. Если пакет утерян, его нужно переслать заново (а игра в этот
момент подлагивает).
Тем не менее, можно подкрутить коннект так:
Меняем TcpAckFrequency на единичку
Запускаем редактор реестра (Пуск - выполнить - regedit), затем переходим на закладку:
HKEY_LOCAL_MACHINE SYSTEM CurrentControlSet Services Tcpip Parameters Interfaces
Здесь
должен быть ключик IPAddress с вашим ИПом. Здесь же правой кнопкой
создаем новый ключ DWORD, называем его TcpAckFrequency, значение "1".
Почему это работает?
Обычно
TCP отправляет запросы на подтверждение получения пакетов. Это
происходит до тех пор, пока сервер не получит ответ, либо не прекратит
это дело по тайм-ауту. Таймаут может произойти из-за того, что
отправляющая сторона ожидает от вас подтверждение (ack). Установив
TcpAckFrequency на единичку, вы отправляете подтверждение сразу после
получения данных. Обратите внимание, что это повышает требование каналу,
т.к. вы будете отправлять в разы больше данных.
Что может помочь
Если
вы сидите на ADSL'е, соединение может использовать метод interleaving,
который уменьшает подверженность всяким ошибкам, но опять же, добавляет
пинг. В настройках ADSL модема стоит отключить эту опцию. Опять же,
качество проводов, шумы в телефоне, расстояние до АТС (а также погода на
Марсе и все такое прочее) может заставить вас включить эту опцию (без
нее все станет работать еще хуже). Можно попробовать связаться с провом,
объяснить задачу, но вероятность получить ответ типа: "чоо0???77"
крайне высока.
Провод против беспровода: Правильно настроенная
беспроводная сеть практически исключает лаг. Тем не менее, если вы
находитесь в местности буквально кишащей шумами на частоте 2.4
гигагерца, пинг может стать существенным. Пинг до правильно настроенного
роутера - 1-2ms. Если больше - провод вам в помощь.
На
дешевеньких картах по беспроводу также можно получить лаг в момент
сканирования точек доступа. WlanOptimizer'ом можно отключить
сканирование, но он только для Висты/Вин7.
ХРюшникам можно посоветовать подкрутить RWIN. Информации много, гуглится легко.
Стопудово не поможет
В
сети миллиард твиков, которые типа "улучшают интернет". Как правило их
задача сводится к подкрутке значений TCPNoDelay, NetworkThrottlingIndex,
TcpDelAckTicks, отключению QoS Packet Scheduler. Можно конечно попасть
на уникальный для себя твик-артефакт (один из сотни), который даст
нужный результат. Но у другого он работать уже не будет. Тут дефалтные
настройки - лучший выбор.
Национальный игровой портал GameLinez.Ru даёт вам возможность скачать читы, статьи про игры, файлы бесплатно и без SMS. Скачивание с нашего GameLinez-портала абсолютно бесплатное и очень удобное! Буквально одним кликом вы сможете скачать нужный вам чит, файл или статью с максимальной скоростью! Мы даём возможность скачать читы для многих популярных игр, таких как:Diablo 3, StarCraft 2, MU Online, WarCraft 3, WoW, CS 1.6. Вы узнайте про эти игры всё - прочитав наши статьи онлайн!
Наши коллекции различных файлов не оставят вас равнодушными, и у вас появится желание зайти к нам на сайт ещё не один раз! Мы ждём вас на нашем "Национальном игровом портале - GameLinez.Ru". А так же много различных файлов для различных игр по Интернету ( Например файлы для таких игра, как: Point BLank читы, Point BLank оружие, CoD 7 Black ops, Crossifre игра и другие. ) Новые бесплатные файлы, каждый день обновления и улучшения. У нас огромный пак файлов для ваших любимых игр.