Кто именно просчитывает в онлайн играх физику? И по какому протоколу – собственному или HTTP? Я хочу написать какую-нибудь такую игру на DirectX 9, в связи с чем приглашаю к сотрудничеству )
Кто именно просчитывает в онлайн играх физику? И по какому протоколу – собственному или HTTP? Я хочу написать какую-нибудь такую игру на DirectX 9, в связи с чем приглашаю к сотрудничеству )
Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.
3 июля 2009 в 1:02
UDP хоть и не гарантирует доставку сообщений, но эффективность его весьма высока.. из 100 пакетов может затеряются парочка.. Ничего страшного.. А вот TCP медленна.. Столько лишних проверок, постоянная проверка наличия соединения.. Если разорвалось то кирдык.. UDP в данном случае выгоднее ИМХО.
3 июля 2009 в 0:05
я про боардкасты…
3 июля 2009 в 0:01
#10,
> "UDP посланный в инет, затеряется на первом же роутере провайдера("
Это вы сами придумали, или вам кто-то сказал?
> поэтому им шлют только эхо пакеты, типа я здесь)
А как же тот факт, что "UDP посланный в инет, затеряется"?
И как, интересно, тогда я подключаюсь по UDP к домашнему VPN-серверу, расположенному в 400 километрах от меня?
3 июля 2009 в 0:00
UDP ничего не гарантирует… и это печально) поэтому им шлют только эхо пакеты, типа я здесь) UDP посланный в инет, затеряется на первом же роутере провайдера(
2 июля 2009 в 20:05
Для более плавной физики и сервер, и клиенты рассчитывают всю физику, но клиенты вносят поправки в свои расчёты на основе данных, полученных от сервера.
2 июля 2009 в 20:01
UDP используется зачастую в шутерах, не только в локальной сети. Многие шутеры от Valve (если не все) используют UDP.
Потому что он является удобным в плане скорости: серверу не надо ждать, пока там подтвердится полная передача данных. Всё на лету: взял – молодец. Не взял – если не возьмешь еще пару раз, пойдешь гулять.
Примерно так…
2 июля 2009 в 16:04
Почему это UDP применяется только в локальной сети?
У меня другие сведения
2 июля 2009 в 3:02
Сервер, по протоколу TCP(UDP только для локальной сети, и только для обнаружения серверов в ней), обрабатывает только текущии координаты и тд, только это уже достаточно большая нагрузка)
Насчёт физики иногда используються экзотические приемы, кто вызвал действие, тот его и обрабатывает, и предаёт координаты.
1 июля 2009 в 18:04
К сожалению в контру давно играл, не помню.
Ну, к примеру, в F.E.A.R. Combat уж точно, если бочку (или что-нибудь) толкнуть, то она падает у каждого по-своему
1 июля 2009 в 18:02
А если бочка например в контре упадёт там, где будет идти противник? =) Она у всех будет в одном месте?
1 июля 2009 в 17:03
Если бы сервер рассчитывал всю физику, то клиенты бы давно повесились от нетерпения. Из-за сетевой задержки данные о физических взаимодействиях, рассылаемые сервером, становятся неактуальными еще до того, как вычислены (так как во время задержки надо включать один путь "туда", и один "обратно" – свои действия клиент тоже должен передавать). Физика требует мгновенного реагирования (естественно, имеется в виду "настоящая" физика).
Поэтому вообще сетевая физика обычно очень сложная вещь. В большинстве сетевых шутеров все упрощено: физика сделана так, что не влияет на игровой процесс (то есть присутствует только для красоты), и поэтому расчитывается каждым клиентом лично для себя. А сервер может передавать только данные, которые влияют на геймплей – например, точное положение выброшенного оружия (чтобы все могли его подобрать в одном и том же месте, а не каждый в своем), но никак не потоковую анимацию падения этого самого оружия по протоколу UDP.
Все известные мне попытки сделать сетевую физику, отличающуюся от данного сценария, адекватных результатов не показывали.
1 июля 2009 в 16:00
Сервер рассчитывает всю физику, а клиенты только передают положение себя в пространстве. Сервер получает эти данные, рассчитывает взаимодействия и чаще всего по протоколу UDP рассылает данные о положении всех интерактивных предметов и прочую информацию. Чтобы не заниматься ещё и рассылкой каждому, сервер просто пишет в свой порт информацию, а клиенты считывают. Принцип широковещательной сети. Когда один "говорит", а все остальные слушают