ПрограммированиеФорумСеть

Синхронизация, и временная ('шаги') разница с клиентами, при RealTime вычисления на сервере. (2 стр)

Страницы: 1 2
#15
14:45, 12 мар 2012

stim644
В тобой описанной ситуации, при optimistic consistency, клиент не будет применять собственные данные совсем сразу. Например перемещение можно применять сразу, но собственные незамедлительные действия будут иметь медленную скорость, до того как мы начнём получать данные с сервера с нашей позицией. Как только это происходит, мы уже применяем собственные данные, но всё равно с задержкой в свой пинг. Трюк с медленным перемещением когда нету данных с сервера, дает эффект клиенту почувствовать что действия незамедлительны, при этом плавно переходит в реальные данные с задержкой - что позволяет не ждать сервера, и при этом быть эквивалентным как реально на сервере сейчас состояние.
От клиентов данные экстраполируются длиной в собственный пинг, таким образом клиент будет стараться симулировать идентичную ситуацию как для себя, так и для "чужих" сущностей.
Но это только по поводу перемещение / поворота, и т.п. продолжительных данных. Они имеют постоянную и простую логику, поэтому предсказать их очень просто.
Проблема как раз в том что предсказать действия другого игрока, относительно не постоянных действий - просто не возможно. Это получается попытка угадать, которая будет удачна лишь для тех кто следует стилю подобному под который настроены предсказания.
Поэтому предсказывать такие данные просто нельзя.
Я бы в такой ситуации просто анимировал сразу собственного игрока. Но очки при попадании, тряска экрана, кровь, анимация противника и т.п. происходили бы только после того как мы примем данные с сервера о попадании.
По сути также, если анимация удара, и сам удар происходят с мелкой задержкой, типо размаха. Если взять игру Rune, то там пример отличный: игрок при нажатии на удар, замахивается оружием, и удар происходит чуток позже. Таким образом можно очень сильно улучшить ситуацию: при отпускании клика, персонаж начинает удар (т.к. при зажатии клика, он замахивается), отсылать пакет серверу нужно при отпускании клика. На клиенте удар будет также позже, т.к. персонаж лишь размахивается. При этом сервер уже получит данные и сделает свои вычисления. И может послать данные клиентам. Таким образом можно избежать разницу в задержках, т.к. послать сервер может данные о "ближайшем будущем".
Большинство действий, которые сильно завязаны на взаимодействии двух игроков, лучше делать с минимальным "кастом" - они не осуществляются по незамедлительному клику (например), а требуют чуток времени. В WoW, это почти любой каст. Таким образом мы сможем все при этом держать консистентно синхронизированными.

Pushkoff
> ссылка не работает
Только что проверил, это PDF файл на скачку, скачал без проблем.
Вот закинул на rghost: http://rghost.net/36980403

Страницы: 1 2
ПрограммированиеФорумСеть

Тема в архиве.