Micrurus

1.173.1.46 Сбитие самолета при промахе

Я был на И185.  Bf.109F-4 стрелял мимо, но попал и оторвал крыло.

Серверный повтор.

И другой ракурс. Повтор из моего клиента.

Пинг в пределах 60, потерь пакетов не было.

Замечал такое частенько. Но думал может противник в последний момент довернул и сбил. Тут решил посмотреть повтор и удивился.

#2017.11.03 23.15.37.wrpl#2017.11.03 23.15.37.wrpl

 

Как мне прикрепить лог если он весит 50МБ, а можно только 1МБ?

medal medal

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Опять это произошло, точно так же.

2017_11_21_21_13_43__5776.clog

#2017.11.21 22.22.26.wrpl

Вот на сервер повторов https://warthunder.ru/ru/tournament/replay/type/260471882260188992

Потерь пакетов не было пинг в районе 60

Объясните хотя бы, как это происходит.

Почему молчите?

Или дайте и мне такую способность.

И так я не умею толком летать в РБ, так еще и подстава такая происходит.

medal medal

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

там такая система: может быть у другого игрока плохой пинг и чтоб он не был "отсталым" среди остальных игроков, попадание по самолетам\технике на его клиенте могут проходить и на сервер. Типа если враг уехал, но у этого игрока еще едет - попадание может засчитать..

Потому это тяжело назвать багом.. Это сделано, чтоб игроки с плохим интернетом могли играть, а не только страдать :)

todace (Опубликовано: )

Это далеко неверное представление о сетевой модели синхронизации - см. ниже
medal medal medal medal medal medal medal medal medal medal medal medal medal medal medal

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Конечно же, это совершенно неверное представление о сетевом коде и модели синхронизации.

Все решает сервер, клиент никаким образом не может сообщить серверу что он попал - вообще нет такого типа пакета. Все что приходит от клиента к серверу это ТОЛЬКО _управление_!

 

Если у игрока хороший пинг, то он скорее попадет по другому, чем тот, у кого пинг плохой.


Однако, 1) все игроки видят не реальный мир, а предсказанный мир. Так как реальный мир - он на сервере, а все что видят игроки - на полпинга (_их_ полпинга) отличается от сервера, т.е они видят _прошлое_. Вернее, не совсем прошлое, а из прошлого (из реального, серверного прошлого ) полученное предсказанное-гипотетическое настоящее (не обязательно реальное - ведь другие игроки - тоже играют, управляют своей техникой).
Потому стрельба по мишени - это стрельба по предсказанному положению. В quake3 если у тебя плохой пинг - надо стрелять "на упреждение", т.е. подумать, где на самом деле находится мишень тогда, когда твой пакет "я стреляю" дойдет до сервера (а это зависит от твоего пинга). Так как в quake видишь ты положение мишени В ПРОШЛОМ, а когда твое управление дойдет до сервера - еще время пройдет. В quake пули летят мгновенно, потому вся разница это в положении юнитов. В нашей игре - нет. Однако наша игра услужливо предсказывает за тебя, где же находится игрок в настоящее время. И кстати где ты САМ находишься в настоящее время - тоже предсказывает, так как ТВОЙ клиент знает лишь где ты сам находился и куда смотрел когда сервер отправлял тебе пакет, но за то время которое пакет летел до тебя - могло произойти много событий (например тебе выбили гусеницу или элерон, и ты никак не можешь это знать, а значит неправильно представляешь, где находишься)
В итоге в нашей игре - чем лучше твой пинг, тем лучше ты попадаешь. ВСЕГДА. Нет никакой поблажки игрокам с плохим пингом.
В отличие от модели лагокомпенсации в CS или BF или Overwatch, где игрок видит ЗАПИСЬ положения других игроков (реального настоящего знать нельзя, а вот прошлое - можно). И соответственно чем хуже твой пинг, тем тебе лучше - потому что в этих играх ты видишь запись того, как играли другие игроки, а значит они никак не могут реагировать на твои действия - в BF3-4 допустимый пинг - больше секунды, что значит когда игрок с таким пингом врывается в комнату, то остальные игроки, с хорошим пингом, не увидят его еще полсекунды, и он будет играть в натуральный тир целых полсекунды. В CS допустимый пинг по умолчанию емнип 300 мс - что значит что на 60 фпс у игрока с пингом 300мс есть два-три кадра (не так мало) чтобы выстрелить по противникам которые его даже не видят И ГАРАНТИРОВАННО ПОПАСТЬ. Именно поэтому в CS как правило игры разрешают играть не более 250-300мс пинга по умолчанию
Однако, в нашей игре, чтобы могли играть люди с расстоянием до сервера больше длинны кадра (т.е с пингом больше 10мс - а это почти все игроки на свете), для игроков рассчитывается положение их юнита в их времени. Сервер получив пакет с управлением ("я нажал кнопку направо", отправлен пакет 150мс назад) смотрит, где ты реально был 150мс назад, применяет твое управление, и сообщает тебе в ответ где же ты на самом деле стал. На клиенте ты давно уже оптимистично предполагаешь что ты таки да, нажал кнопку и повернул. А всем другим клиентам сообщает "игрок такойто на самом деле 150мс назад повернул". Если за это время в него никто не попал - то как бы версия реальности о том где он был (НО НЕ ДРУГИЕ ИГРОКИ!) корректируется, и становится такой, как у него. Для других игроков это может выглядеть как дергание - в большинстве случаев весьма небольшое, так как физические тела весьма инерционны. При этом, если ты "попал" (на сервер) в того кто еще не прислал свое управление - то это у него дернется его танк\самолет.
. Если твой пинг превышает некий барьер, то управление начинает "тормозить" (а потом выкинет из игры)

Предвосхищая вопросы какая модель лучше - у всех есть свои преимущества - в модели синхронизации CS ты почти всегда, если попал на клиенте, то попал на сервере, что конечно приятно, но зато играть проще тому, у кого пинг хуже - а ухудшить себе пинг может каждый. Кроме того, в CS и большинстве названных шутеров, большинство снарядов попадают МГНОВЕННО - что значит что если ты выстрелил, то на клиенте ты сразу увидел, попал или нет - и сильно неприятнее узнать, чуть позже что на самом деле не попал. В физическом смысле при расстояниях уровня CS (максимальная длинна уровня - 100м, большинство выстрелов производятся с расстояния меньше 30м) - разницы между мгновенным и реальном - очень немного. В WT даже если у всех 0пинг, то как правило расстояния исключают возможность мгновенного попадания - а значит часто можно промахнуться (или попасть) даже когда думал что попадешь (промажешь). 

Но есть и решающий фактор:

Модель WT (наша) неизбежна тогда, когда есть некий "измеритель", в физическом смысле "наблюдатель", т.е. если удаленно управляемые физические тела взаимодействуют с чем-то динамическим и независимым от управления, что видят все игроки. Например, самым простым таким механизмом являются волны на море.
В самом деле, модель аля CS просто не может работать - если ты будешь видеть ЗАПИСЬ других игроков, а волны в настоящем (предсказанном) времени - то корабли\самолеты будут отставать от волны (слишком поздно выныривать, и слишком поздно начинать падать) - и даже типовом пинге аля 300мс это будет вполне заметно (не говоря уж о большем).
А если ты будешь видеть воду "из прошлого" - то все остальные корабли\самолеты будут идеально, но теперь уже ты сам не сможешь плыть по волнам - они будут не соответстовать реальности.
А волну, как не трудно понять, нельзя иметь для одного корабля в прошлом, а для другого в настоящем (будущем) - она должна быть в одном времени.
Ну или надо делать совсем какие-то нефизичные вещи (типа плоской для физики воды, а волны лишь визуальные + покачивание корабля независящее от волн и гидродинамики).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Должно быть исправлено на версии 1.73.5.18 и выше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Гость
Эта тема закрыта для публикации сообщений.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу