Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Шатер Тетушки Акары. > Main > Cast, Stopcasting, Latency, Etc...


Автор: Poul 7.05.2008 - 14:56
В принципе это ерунда, ну зачем обычному игроку знать как синхронизируются клиент и сервер? Жили раньше без этого и дальше проживем. Не вопрос, проживем, но если хочется занять ту самую строчку в метре, а может и не занять, но позволить сказать - "Я сделал максимум! Выжал из этого чара всё, на что он в настоящий момент способен!", то этот кусочек текста надо прочитать. wink.gif

Не секрет, что события в комбатлоге записываются с точностью до миллисекунд (для проверки достаточно в игре набрать /combatlog, а потом посмотреть в записанный файл по адресу ...WoW\Logs\WoWCombatLog.txt). Это делается для нивелирования разницы в пинге для различных игроков. То есть если у вас пинг 1000, но вы использовали свою абилку, то оппонент с пингом в 100 ее однозначно получит в тот самый момент. Правда он за эту секунду может сместиться в пространстве, но с этим вам придется мириться. Если мириться не хочется, меняйте провайдера, а не ругайте близов, они делают что могут и не виноваты, что до их пианины вы долго тянетесь.

Итак, постулат первый - событие произошедшее в клиенте, произойдет на сервере в то-же время, с точностью до миллисекунды.
Постулат второй - если за то время, пока пакет с этим событием доходит до сервера, на сервере совершится какое-нибудь действие, оно не отменится, даже если ваше событие направлено на его отмену.
Факт первый - инициация события происходит в момент отпускания кнопки.
Факт второй - стандартная частота опроса клавиатуры в биосе - 150 мс.

До патча 2.3 никакой компенсации для игроков с плохим пингом не существовало. Процесс двухсекундного каста с пингом в 200 происходил таким образом:
0.000 - Начало каста.
2.000 - Окончание каста.
- 150 - Время на реакцию клавиатуры.
- 200 - Пинг.
2.350 - Начало следующего каста.
4.350 - Окончание второго каста.
user posted image
Никакой дополнительной информации не отсылалось. Если на клиенте шел каст, пакеты не отправлялись пока он не завершится. Спамя кнопку можно было только удачно избежать задержки на опрос клавиатуры.

После 2.3 Близзы ввели синхронизацию опроса и все стало выглядеть так (при тех-же условиях и спаме кнопки каста):
0.000 - Начало каста.
1.750 - Отправление пакета с таймингом.
1.900 - Отправление второго пакета с таймингом.
1.950 - Проверка первого пакета на сервере. Каст не окончен, пакет игнорируется.
2.000 - Окончание каста.
2.100 - Проверка второго пакета. Предыдущий каст окончен, пакет принимается.
2.101 - Начало следующего каста.
4.101 - Окончание второго каста.
user posted image
Спамя кнопку стало возможно добиться минимального разрыва между кастами.

Quartz и stopcasting:
Всё вышеизложенное - теория, а нам надо добиться повышения ДПС. Что мы можем сделить для этого? Берем аддон http://www.wowace.com/wiki/Quartz, заменяющий собой стандартный каст бар. Несмотря на его полезность во многих областях, нас интересует его модуль показывающий нашу текущую задержку каста (latency, красная зона в конце бара).
user posted image
Основное отличие от стандартного близзардовского индикатора в том, что индикатор показывает нам усредненный пинг за миинуту, а этот модуль - на предыдущий каст. Для каждого нашего спелла пишем макрос с командой /stopcasting, которая принудительно прерывает каст на текущий момент времени. Например -

/stopcasting
/cast MegaSpell

Что мы получаем в этом случае? А вот что:
0.000 - Начало каста
1.850 - Отправление пакета с таймингом стопкаста.
2.000 - Окончание.
2.050 - Обработка пакета на безусловное прерывание и запуск следующего каста по таймингу 1.850.
2,051 - Следующий каст уже 201 мс кастится.
3.850 - окончание второго каста.
user posted image
Плюс - фактическое уменьшение времени каста за счет пинга. Минусы - больше нельзя спамить кнопку и есть шанс что пакет дойдет до сервера еще до окончания каста на сервере, тогда каста не произойдет.

Мувик хорошо показывающий результат манипуляций с серверной стороной, http://www2.akara.ru/MM/Vurtne_net_Steam_e.wmv, 126М. Один нюанс, большей части эффектов невозможно достичь только средствами ВоВа, 90% получено с помощью комбинации из макросов со стопкастом и программирования клавиатуры для избегания задержки на опрос.

ЗЫ. Как вы понимаете, никаких официальных постов на эту тему быть не может. Я не могу утверждать что данная модель на 100% верна, но она объясняет все изветстные мне эффекты.
ЗЗЫ. За картинки просьба не стукать, первый раз анимашки рисовал. smile.gif

Автор: joker99 7.05.2008 - 15:56
2Poul:
Начиная с 2.3(или 2.4 не помню точно) нажатие на кнопку спела, во время каста спела, даже без макроса стопкастинга отправляеться на сервер, и только там происходить проверка может ли пройти каст или клиент все еше что то кастует. Т.е тот же самый ефект достигаеться за счет спама кнопки каста без макроса.

На самом деле ефект получаеться даже лучше, так как нет шаса случайно оптменит' обычный каст, что случаеться с использованием стопкастинга, так как пинг все таки скачет.

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

Автор: Poul 7.05.2008 - 17:58
2joker99:
Саша, прочитай внимательно что я написал. Особое внимание обрати на второй таймлайн! censored.gif

Автор: joker99 8.05.2008 - 02:18
2Poul:
я прочитал его раза 3, но так и не понял как два каста каждый из которых идет 2 сек проходят за 3.8 сек, учитываю что время замеряеться сервером которому на твой пинг пофиг.

Автор: Joker 8.05.2008 - 08:15
Да, в данный момент /stopcasting макрос эффективно юзать только с G15, иначе все кровопролитно отбитые у провайдера милисекунды нивилируются одним слишком ранним нажатием.
а с G15 при спаме болтов вполне можно поднять дпс аж на ~15% (мой случай с пингом 400-500)

Автор: Poul 8.05.2008 - 08:49
2joker99:
Я же написал, что нарисую картинки и прикреплю, будет понятнее. К сожалению мне вчера уже объяснили, что то что кажется очевидным мне, нифига не понятно остальным. sad.gif Мои способности выражения хода собственных мыслей оставляют желать лучшего. Текст тоже подредактирую.

2Joker:
Если пинг не рваный и латенси постоянная, то и без клавы справляться можно очень хорошо.

Автор: johnvb 8.05.2008 - 10:15
2Poul:
QUOTE
Если пинг не рваный и латенси постоянная, то и без клавы справляться можно очень хорошо

угу, это факт. Но к сожалению при пинге 180-200 у меня по кварцу пинг скачет от 50 до 1000, а то и до 1500. Поэтому стопкастинг зло для меня sad.gif

в общем надо попробовать, то что ты написал - понятно. Единственное сомнительное место
QUOTE
1.850 - Отправление пакета с таймингом стопкаста.

есть подозрение, что тут каст прервется и спелл не вылетит ...

Автор: puzo 8.05.2008 - 10:32
2Poul:
я всё понял, стоило тока сесть вдуматься, ну и прочитать 3 раза.

Автор: kinvar 8.05.2008 - 10:34
я правильно понимаю что под "пакет с тайменгом" подразумеваетса пакет с инфой об моменте начала каста(по клиентскому времени) следующего каста и инфа о том какой именно каст?
если да то это получаетса некая машина времени потому что происходит обман сервера со временем начала второго каста в 1.850 а не в 2.000, болие того если я правильно все понял то при пинге 1.85 сек и при юзе макроса с стопкастом можно будет кастить с частотой опроса клавиатуры? оО
ps
QUOTE
QUOTE
QUOTE
1.850 - Отправление пакета с таймингом стопкаста.


есть подозрение, что тут каст прервется и спелл не вылетит ...

вылетит потомучто пакет со стоп кастом придет на сервер в 2.050 т.е. уже после оканчания его каста и так как
QUOTE
Постулат второй - если за то время, пока пакет с этим событием доходит до сервера, на сервере совершится какое-нибудь действие, оно не отменится, даже если ваше событие направлено на его отмену.
то эфект каста не будет отменен.

Автор: Poul 8.05.2008 - 10:45
2kinvar:
QUOTE
это получаетса некая машина времени потому что происходит обман сервера со временем начала второго каста в 1.850 а не в 2.000, болие того если я правильно все понял то при пинге 1.85 сек и при юзе макроса с стопкастом можно будет кастить с частотой опроса клавиатуры?

Угу. Только для надежности надо пинг в 1.9. wink.gif

Автор: joker99 8.05.2008 - 11:27
все, понял.

Автор: Eldgeil 8.05.2008 - 12:52
2Poul:

Насчет клавиатуры.

Получается что лаг клавиатуры 150мс (миллисекунда?). Не верю smile.gif

Насколько я помню, у пс2 клавиатуры частота опроса 40Гц(у усб выше). Что является 40 кадрам (снимкам) в секунду. В секунде 1000 миллисекунд. Делим тысячу на 40 и получаем лаг 25мс. Практический возможно там будет и все 50мс(скорее до 35мс), но выше точно нет. Быстро печатать уже нереально будет.

На практике я чувствую разницу между 20 и 50 очень четко. 50мс очень заметная задержка. 20мс незаметная для меня.

Автор: Harm 8.05.2008 - 13:34
на практике:
пользование кварцом не отменил, пользую как - дошел до красной зоны отпустил спам кнопку и нажал еще раз. последний БТ спамил. но заметил резкое падение дпс и дамаг дан (и какое-то чудо от рендом близарда -мисов было убийственно много при том что кап и в мильтигейт ушло 4% - тож много как я понимаю). Что интересно - латенси в последние 2я вырос в два раза, но - это всего 180, т.е вполне удобоваримо, но визуально - ощущения что вся 1000. (был опыт игры с 700 -900 латенси) собственно вот, стоп кастинг из макроса давно убрал - т.к. и латенси и то как кастую позволяли не пользовать, теперь опять начал думать.

ЗЫ пошел ка я сегодня за G15.....
ЗЫ Паш, копирайтить можно - на вов ру повешу, с ссылкой на тебя ессно.

Автор: BarbaCat 8.05.2008 - 13:35
"Мне всё нравится, мне цена не нравится"(с) реклама

А серньёзна, тема очень интересная, но к сожалению реально работающая только для людей с более менее постоянной латенси, т.к. к сожалению быстрым нажатием клавиш у человека заведует моторика, а не сознание.
Соответственно изменять частоту нажатия клавиши макроса очень проблематично, и будут происходить 2 вещи:
1. Или нажал рано и таки отменил каст на сервере
2. Или нажал чуть позже и этим "съел" всю выгоду от применения макроса(напоминаю мы говорим о времени примерно в 0.2с-0.3с! )

Конечно всё выше написаное имеет огромный смысл и может реально сильно увеличить дпс! Просто не всем это подходит.

Паш, огромное спасибо тебе за объяснения!
Я очень давно уже пользуюсь стопкастом на всех своих твинко-магах - результатом очень доволен! А вот написать так не смог huh.gif

ЗЫ: Кстати, когда стал использовать стоп кастинг, вполне стало нормально получался убивать мобов только основными болтами, без "отступлений" с фростновой wink.gif

Автор: Poul 8.05.2008 - 13:38
2Eldgeil:
Кроме возможной частоты опроса, есть еще параметры указывающие не чаще какого времени принимать сигнал, сколько сигналов в секунду будет генериться при постоянно нажатой кнопке и сколько времени должно пройти с момента нажатия, до момента когда клавиша будет считаться постоянно нажатой. Эти установки выставляются в биосе. В большинстве биосов которые я видел, первая задержка 150 мс, второе значение - 12 нажатии в секунду, и третья задержка - 250 мс. Поэтому всегда выгоднее держать зажатой клавишу и отпускать её в нужный момент. Многие знают это из собственного опыта.

Автор: BarbaCat 8.05.2008 - 13:38
2Joker:
Если можно по подробнее о особенностях использования Стопкастинга с G15!
Почему там можно спамить?
Как оно работает?

Автор: Poul 8.05.2008 - 13:43
2BarbaCat:
QUOTE
Если можно по подробнее о особенностях использования Стопкастинга с G15! Почему там можно спамить? Как оно работает?

Данный кусок уже за пределами лицензионного соглашения с Близзард.

2Joker:
Слав, наверно если захочешь Роме объяснить, то лучше в приват.

Автор: Harm 8.05.2008 - 13:44
QUOTE
Поэтому всегда выгоднее держать зажатой клавишу и отпускать её в нужный момент. Многие знают это из собственного опыта.

да, собственно сам и дошел, не имея при этом *научного объяснения* - только кварц и помог в определении этого.
спасибо за разъяснения.

П.С. про цитирование тебя (на вов.ру) ответь пожалуйста. можно/нет

Автор: BarbaCat 8.05.2008 - 13:47
2Poul:
Ок.

Автор: Poul 8.05.2008 - 13:49
2Harm:
QUOTE
П.С. про цитирование тебя (на вов.ру) ответь пожалуйста. можно/нет

А в чём проблема? Мне всё равно.

Автор: Harm 8.05.2008 - 13:55
QUOTE (Poul @ 8.05.2008 - 13:49)
2Harm:
QUOTE
П.С. про цитирование тебя (на вов.ру) ответь пожалуйста. можно/нет

А в чём проблема? Мне всё равно.

ну как-то нарвался на человека которому было не всеравно (мне лично тоже всеравно) - в итоге - теперь спрашиваю, так надежнее.

Автор: Eldgeil 8.05.2008 - 14:48
2Poul:

Тобишь получается что любое мое нажатие или просто отпускание произойдет через минимум 150 миллисекунд?

Вот к примеру отрывок из рекламы игровой клавиатуры.

Razer Tarantula - единственная клавиатура, которая работает с частотой опроса 1000 Гц и времением отклика 1 мс. Стандартная клавиатура имеет время отклика 8 мс - задержка между нажатием на клавишу и реакцией. Быстрое время реакции дает Вам преимущество под опонентом.


ps наверное я что-то недопонимаю

Автор: BarbaCat 8.05.2008 - 14:54
2Eldgeil:
Дело не в клаве, клава то делает это бысто. Дело в том как это принимает комп!

Автор: Poul 8.05.2008 - 15:38
2Eldgeil:
Рома прав, дело не в клаве. И могу поспорить, всё что про нее написано реализуется только после установки пакета программ для нее. Если ты просто включишь ее в порт, то и получишь обычную клаву со стандартными показателями.

ЗЫ. Предугадываю след вопрос, комп можно настроить на более быстрое реагирование как изменением установок в биосе, так и программно.

ЗЗЫ. Отвлеченно, представил себе человека, с моторикой позволяющей ему воспользоваться преимуществами клавиатуры про которую написал Андрей... rolleyes.gif Я знаю одну даму, которая печатает 400 знаков в минуту, но это ураган!

Автор: Harm 8.05.2008 - 16:49
Паш, один вопрос, если провайдера вдург в лоб ударит что, и пинг станет меньше, = минус магспел критовый? smile.gif
1.850 - Отправление пакета с таймингом стопкаста.
2.000 - Окончание.
2.050 - Обработка пакета на безусловное прерывание и запуск следующего каста по таймингу
и тут на провайдера снизошло озарение и он выдал 90 пинг = ?

Автор: Joker 8.05.2008 - 16:59
2Poul: Паш использование G15 официально разрешено близзардом. Ссылку не дам, я читал блю пост давно.

По поводу стопкастинга без G15. Я играл со стопкастингом почти год (около 9 месяцев ежедневных рейдов). Да, вручную это делать можно, НО. Можно сделать 15 кастов с идеальным таймингом экономя на каждом по 0.2 секунды, но на 16м нажать на 0.1 секунды раньше чем нужны и в результате получить оборванный трех-секундный каст и все предидущие 15 идеальных таймингов идут на смарку. Именно поэтому я считаю, что без G15 игра не стоит свеч, особенно при пинге меньше 200.

Автор: Eldgeil 8.05.2008 - 17:42
Паша а не может быть что про те настройки биоса то ты говоришь являются

Обработка длительного нажатия на клавишу: Typematic delay, задержка перед генерацией последовательности одинаковых символов и Typematic rate, частота их генерации...?

ps я наверное уже надоел, но мне жутко хочется узнать для себя истинну biggrin.gif

Автор: Eldgeil 8.05.2008 - 17:57
А ну ты именно это и имел ввиду, но я спрашивал про реакцию на нажатие.

Автор: Poul 8.05.2008 - 18:07
2Joker:
Я нажимаю так, чтобы экономить немного, я и раньше времени не попаду и если попадаю в конец каста, то не будет игнора пакета. Это все равно лучше чем спам, порядка 100 мс железно экономятся. А вот еще и клаву программить мне лениво. smile.gif

ЗЫ. Картинки вставил.

Автор: johnvb 8.05.2008 - 20:01
кста, посмотрел мувег, 90% багоюзание залипшего ПоМА и пуляние инста-пирами или инста кап флагов. Но надо признать он как-то научился регулярно вызывать этот баг.

Автор: petrovich 8.05.2008 - 22:33
QUOTE (johnvb @ 8.05.2008 - 20:01)
кста, посмотрел мувег, 90% багоюзание залипшего ПоМА и пуляние инста-пирами или инста кап флагов. Но надо признать он как-то научился регулярно вызывать этот баг.

Вот пытаюсь вспомнить и найти где я видел как это делать, знаю на 100% что за это близы банят. Даже в мувике было написано что рискуете на свой страх и риск. Хотя основано все это на том же стоп каста.

Автор: dmi 23.05.2008 - 04:29
Результат некорректно сформулирован - это не уменьшение времени каста, а снижение задержки _между_ кастами за счёт предугадывания времени задержки отклика.

Вот это
QUOTE

0.000 - Начало каста
1.850 - Отправление пакета с таймингом стопкаста.
2.000 - Окончание.
2.050 - Обработка пакета на безусловное прерывание и запуск следующего каста по таймингу 1.850.
2,051 - Следующий каст уже 201 мс кастится.
3.850 - окончание второго каста.


считая длительность каста 2с и latency 200ms я бы расписал так:

0.000 - Игрок отпустил кнопку, запущена начальная анимация каста отправлен пакет startcasting, запущен клиентский таймер гкд. В лог помещено сообщение "xx begins casting ..." клиентский флажок "мы кастуем" взведён
0.100 - Пакет на каст получен сервером (200ms пинг - это полное время оборота пакета, значит время получения пакета сервером можно условно принять за половину значения latency). Сервером запущен таймер каста (2с), таймер кулдауна. Флажок "мы кастуем" взведён
0.200 - пользователь получил подтверждение старта каста, запущена анимация каста, побежала полосочка, запущен клиентский таймер каста.
0.300 - сервером получено подтверждение "мы кастуем, рисуем бар, у нас всё в порядке"
2.100 - каст состоялся, запущен таймер кулдауна, флажок "мы кастуем" сброшен, таймер каста (точнее доступности каста?) сброшен.
2.200 - пользователь получает уведомление о завершении каста. клиентский флажок "мы кастуем" сброшен.

при спаме кнопок следующий каст пойдёт только в 2.300
А фактически, при программируемой задержке, его можно начать в 2.150
Т.е. выиграть как минимум 75% времени latency.
Для этого нужно команду отмены каста/начала следующего отправить где-то в 2.050

Может что-то не учёл, подумаю.

Вот кстати тут статейка про использование многоверсионности в базах данных, с картинками:
http://citforum.ru/database/articles/multiversion/
Не совсем конечно на тему кастов, но к разговору о версионных базах данных.






Автор: dmi 23.05.2008 - 04:38
Кстати про клавиатуру - не может быть там задержки в 150мс. Настройки в биосе касаются только "залипания" клавиш. Так удержание 'w' вероятно определяется только через 150 мс, а повторные нажатия через сколько-то там.

Но! Нажатие клавиши - это один сканкод, отпускание - другой. Т.е. если клавиша нажата и отпущена, то это уже меньше 150мс smile.gif Задержка с момента отпускания клавиши до момента запуска игрового обработчика нажатия велика, но она меньше одной десятой секунды. Значительно меньше.
К тому же некоторые пользуются мышой. Я вот в грид мышом тыкаю.





Автор: Eldgeil 23.05.2008 - 11:07
2dmi:

У клавы ps/2 8мс сейчас по докам. Для человека это можно принять равное нулю.

Автор: dmi 23.05.2008 - 14:07
2Eldgeil:
По докам частота опроса PS/2 порта 125 Hz. И как-то я сомневаюсь что там говорится про 8 мс, т.к. это было бы слишком смелым заявлением

Если быть дотошным, то время отклика будет не более 8 мс. Но это только попадание данных в порт. У прерывания свои задержки, у надстроек высокого уровня свои. Все они сильно зависят от загрузки процессора.
И расчитать их (и то довольно приблизительно) можно только в системе реального времени

В любом случае, это на порядок меньше 150 мс указанного Пашей, и на порядок меньше сетевой задержки. Если считать что процессор(ы) загружен(ы) не до предела, то можно и пренебречь.









Автор: Eldgeil 23.05.2008 - 14:29
Это подсчитанное теоретическое число. Ответ на вопрос - какой лаг клавиатуры. Реально оно конечно различное и меняется, но где-то около него smile.gif.


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)