Какво е пинг и за какво се яде
Какво е пинг и за какво се яде?
Реших да играя Counter-Strike: Source, за да се види и разбере действието на играта и, ако е възможно, за парчета, които би било хубаво да се знае, когато играете Counter-Strike: Source гледам. И това е довело до факта, че аз ги намери. Някои от тях трудно, някои лесно, някои интересни, но най-скучния =).-
Описани са следните три ситуации, които ще обясня.
- Можете да получите иззад стена / ъгъл на полето и след това бързо се върна. Вие не виждате врага, но вие получавате щети.
- Бягаш зад ъгъла на врага засадени пълен клип и да умре в него. След това, отворете конзолата и да видим какво го удари само два пъти, въпреки факта, че тя е била освободена пълен клип от близко разстояние.
- Можете стреля на врага, да - може да се види, че тялото му наоколо и има кръв, но в крайна сметка се удари не са били регистрирани, а врагът няма да получи никаква вреда.
Така че, за да започнем с няколко дефиниции:
Latency (пинг) - Ping - периодът от време, за който пакета изпратен от компютъра си отива сървър (и обратно) на. В милисекунди
Сървър - Сървър - Собствен сървър в Интернет, който се намира на всеки компютър.
Client Client - игра на вашия компютър. Клиентът се свързва със сървъра. На сървъра могат да се определят броя на възможните свързани клиенти.
Shot траектория - траекторията на един изстрел - линия между края на дулото на оръжието си, и на мястото, където отиде си куршум.
Hitbox - хит кутия - модел играчи в Counter-Strike: Source са разделени на така наречените hitboxes (hitboxes), които блокират различни части на модела. В един модел, има много hitbox. Ако снимате хит поле, след което стойността на здравето и Player bronyai намалява.
CS: Source - Основите
В абсолютно всяка мрежова 3D шутър, основният проблем, който е решен на първо място, е Ping. Всеки играч трябва да видя това, което виждат, а съперниците му. Претенденти трябва да се движат плавно, без тласъци и закъснения - защото в действителност играта се актуализира периодично, както и времето между изпращането и получаването на пакета понякога може да бъде много дълъг празнина.
Част от информацията
Вашата позиция на картата на вашия екран за теб е на сървъра и вие също върху други екрани клиенти никога няма да бъдат същите. Това се дължи на забавянето, което се дължи на факта, че компютърът ви изпраща пакета към сървъра с информация за местоположението ви, сървърът симулира, тъй като това са рамката на играта, актуализации на информация за вас, и след това да изпратите информация за вас на други клиенти, и те получават и актуализация има информация за вас, като у дома си. Този проблем във връзка с факта, че имате на екрана, всичко изглежда гладка, е неприятна картина.
![Какво е пинг и за какво се яде (брояч) Какво е пинг и за какво се яде](https://webp.images-on-off.com/25/634/380x209_4xqkag9inps6bdx89o5j.webp)
Ситуация 1 "Slide Show на hitbox":
"Можете да получите иззад стена / ъгъл на полето и след това бързо се върна. Вие не виждате врага, но можете да получите на щетите. "
обяснение:За да се обясни причината за това поведение на играта, трябва да се вземе предвид всичко, което се случва на вашия компютър, на сървърния компютър и на компютрите на другите играчи.
-
Нещата, които трябва да знаете, преди да отидете на
- Действително щети (или местоположението на hitbox ако е така по-ясно) се изчисляват на сървъра страна. Но от страна на клиента се проследяват и позицията на hitbox, но само за визуализация (например искри от куршумите, когато popodanii броня, кръвни пръски от тялото и така нататък.), Но ще говорим повече, когато стигнем до третата ситуация.
- В идеалния случай, обмен на пакети настъпва в рамките на 30 милисекунди. Това е времето, за което на сървъра може да се актуализира информацията за вас, а вие - на сървъра. Но на практика, тази цифра е много пъти по-, според пинг.
- прекарано от клиента и сървъра за обработка на информацията, получена Времето е толкова малка, че дори няма смисъл да се вземе предвид.
0 милисекунди (сцена 1)
Играч 1: рязко от ъгъла, 2 вижда на играча, който е неподвижен.
Сървър: Нищо не се случва (все още не е постигнато пакет)
Играч 2: Тя трябва да бъде, и никой не гледа
30 милисекунди (Етап 2)
Играч 1: Връща се в приюта.
Сървър: приеме пакет с информация от сцената 1, че играч 1 излезе иззад скривалището си и изпраща тази информация на играч 2.
Играч 2: Нищо не се случва (не забравяйте пакета е 30 милисекунди като играчът към сървъра и обратно?).
60 милисекунди (Етап 3)
Играч 1: на вашия компютър, той се скри в приют.
Сървър: Вземете пакет от Сценарий 3 до информацията, че играч 1 е отново зад капак (така че синхронизирани данни на сървъра и играч 1)
Играч 2: Взима пакета със ситуацията вижда играч 1 го стреля, но, разбира се стреля в празно пространство, тъй като играчът вече като преди 60 милисекунди се появи отново в своя подслон.
Нека разгледаме, за по-голяма яснота, визуална схема
![Какво е пинг и за какво се яде (яде) Какво е пинг и за какво се яде](https://webp.images-on-off.com/25/634/380x285_1itxarx66j1lvtwhogol.webp)
И това е съвсем разумно възниква въпросът: как да се реши този проблем? Източник на двигателя прави следното. А именно, програмата изчислява траекторията на удара Player 2 и я носи, като че ли той стреля по истински играч 1, независимо от това, когато последният е сега.
Сървърът изчислява идеални за трансфер на стойност изстрела темповете на увеличение на базата на пинг на всички играчи.
![Какво е пинг и за какво се яде (яде) Какво е пинг и за какво се яде](https://webp.images-on-off.com/25/634/380x304_fi9fkpi9ei9ha00oqe5b.webp)
А сега да разгледаме кулисите с "корекция пинг"
0 милисекунди (сцена 1)
Играч 1: рязко от ъгъла, 2 вижда на играча, който е неподвижен.
Сървър: Нищо не се случва (пакет все още не е постигнато)
Играч 2: Тя трябва да бъде, и никой не гледа
30 милисекунди (Етап 2)
Играч 1: да се върнете в приюта
Сървър: приеме пакет с информация, на сцената 1, играч 1 на открито, но никой не знае за това.
Играч 2: Тя трябва да бъде, и никой не гледа
60 милисекунди (Етап 3)
Играч 1: скрит
Сървър: приеме пакет с информация за етап 2 (т.е. сървъра е синхронизирано с клиента 1: и тук и там един играч седи в приюта)
Играч 2: 2 Player приеме пакет с информация за Етап 1 вижда играч 1 стреля по него. Но при получаване на информация за изстрелите, сървърът се прави корекция по отношение на пинг и Player 2 отнема здравето на играча 1, който най-вече това време, както казахме, е в нелегалност. 1 недоумение Player.
Сега ситуацията е по-справедлив, въпреки факта, че играч 1 вече се е укривал, Играч 2, виждайки ударът му, като по този начин сървърът е броят на първите щети. Единственият проблем е, че първият играч се повреди, след като е наведе, която вече е в приюта и това е вероятно, че ще напиша нещо познато на всички от "как стигнах тези трупи!" =). По този начин, "корекция изостава", е, че играч 2 е възможно да доведе до увреждане на играч 1, не се обръща внимание на забавянето в същото време, докато се движи играч 1 и че докато не го забелязах Player 2. Не е лош старт.
Друго предимство на корекцията за закъснение е, че сега не е нужно да се поддържа от поглед целта да се кача на него, и когато двама играчи се срещат лице в лице, а след това играчът с най-ниската пинг не получава никакви привилегии.
Вижте тези снимки на екрани (получен чрез sv_showimpacts 1). Те показват разликата между позициите на играчите на сървъра (в синьо hitbox) и клиента (в червено), и траекторията на топката, която е показана на червени и сини кубчета. Обърнете внимание - сървъра коригира траекторията на изстрела по отношение на врага.
![Какво е пинг и за какво се яде (източник) Какво е пинг и за какво се яде](https://webp.images-on-off.com/25/634/380x304_t3znu3bgixgn9sq7luwe.webp)
![Какво е пинг и за какво се яде (Counter-Strike) Какво е пинг и за какво се яде](https://webp.images-on-off.com/25/634/380x304_siw5e1f5pe31pnkr9ht8.webp)
2 Ситуацията е "Що за глупости! Аз го пусна целия клип ":
"Ти тече зад ъгъла на врага засадени пълен клип и да умре в него. След това, отворете конзолата и да видим какво го удари само два пъти, въпреки факта, че тя е била освободена пълен клип от близко разстояние. "
обяснение:
настъпва (подобно на първия пример) заради забавянето между нещата, които се случват на сървъра и на компютъра Тази ситуация.
Основното нещо е да се разбере, че нещата, които се случват на сървъра да се появят по-рано, отколкото имате на компютъра си - вашия клиент. За да се улесни разбирането на ситуацията, при условие, че и двата клиентите изостават (пинг) едни и същи, така че не се притеснява и да изчисляват корекцията между двете машини.
Така че, когато играч 1 идва в корнер, а след това както на клиента (а играчът 1 и 2 Player) са наясно с това, няма забавяне, както синхронизира информация. Позволява и двете започнете да снимате. Сега, заради закъснението (има обмен на информация за изстрелите) всеки да види друг клиент стрелба изисква 60 милисекунди (помнят първата ситуация, както и да изпращат щети. Това означава, че по времето, докато децата споделят тази информация, можете да стреля купчината боеприпаси. и ако опонентът ви е започнал да стреля по една малка част от секундата, преди да (или дори по-рано, но той трябва да ви, да речем, в главата), а най-вероятно са мъртви, но вашият клиент не знае все още за това защото тя не взема 60 милисекунди между времето, което виждате на врага както добре! В резултат на това, сървърът просто игнорира всички ваши снимки, освободени, докато, докато не убият, и да убие вас. И вие имате илюзията, че сте уволнен целия клип, преди да е убил.
3 Положението на "Single удар!":
"Трябва да се стреля на врага, да - може да се види, че тялото му наоколо и има кръв, но в крайна сметка се удари не са били регистрирани, а врагът няма да получи никаква вреда."
Сега нека разгледаме как сървъра превежда изстрел ни към нов път, като се вземат корекциите в профила. Както е известно, сървърът се справя не само всички обекти на картата, позицията на моделите, но и анимиране на моделите (бягане, ходене, и така нататък.). Когато снимате, ударът се излъчва на сървъра, тествани за степента на увреждане, без значение в каква позиция е модела. Поради забавяне в модела на сървъра и от модела на клиент рядко са в едни и същи позиции. Например, анимация много рядко в една рамка, се оказва, че всеки поза в същото време е малко по-различно точки. Най-движещ анимация се управлява и ругатня. Swing главата, ръцете и краката - всичко в движение. Оказва се, че ако снимате в рамото, вашата снимка се предава към сървъра, когато моделът, който беше уволнен Може вече да е в различна позиция, например, главата се обърна в обратна посока, кракът се мести и така нататък.
Обърнете внимание на снимката и вижте и се уверете, че моделът на сървъра и на клиента и, обаче, в различни пози.
![Какво е пинг и за какво се яде (пинг) Какво е пинг и за какво се яде](https://webp.images-on-off.com/25/634/380x252_vx4qear3y65ye6iv72xc.webp)
И тук е типичен пример, при влизане в сървъра не е регистриран - снимам в края на раница (което естествено има различна позиция както на сървъра и на моя монитор) и синьото поле беше на стената зад себе си, защото сървърът не регистрирал раната.
![Какво е пинг и за какво се яде (Counter-Strike) Какво е пинг и за какво се яде](https://webp.images-on-off.com/25/634/380x304_wi00o5zada9cswqcgpwc.webp)
На 16 локален сървър ще получи следното:
16h15 = 240 позиции на моделите, които трябва да бъдат обработени, за да се изчисли и тест за получаване, че всички модели са в области, засегнати или не, както и да се регистрират и да отреже хитове и пропуска (в най-лошия).
По този начин, тази задача е просто невъзможно да се изчисли.
Но не забравяйте, че има и обратната ситуация (липсваш на вашия компютър, но сървърът ви удари брои), така че стрелбата е равен.