singlepost

Как работают игры типа клиент-сервер? << На главную или назад  

Кто именно просчитывает в онлайн играх физику? И по какому протоколу – собственному или HTTP? Я хочу написать какую-нибудь такую игру на DirectX 9, в связи с чем приглашаю к сотрудничеству )

12 ответов в теме “Как работают игры типа клиент-сервер?”

  1. 12
    Павел Тотолин ответил:

    UDP хоть и не гарантирует доставку сообщений, но эффективность его весьма высока.. из 100 пакетов может затеряются парочка.. Ничего страшного.. А вот TCP медленна.. Столько лишних проверок, постоянная проверка наличия соединения.. Если разорвалось то кирдык.. UDP в данном случае выгоднее ИМХО.

  2. 11
    Микхаил Владимирович ответил:

    я про боардкасты…

  3. 10
    Роман Воробец ответил:

    #10,
    > "UDP посланный в инет, затеряется на первом же роутере провайдера("
    Это вы сами придумали, или вам кто-то сказал?
    > поэтому им шлют только эхо пакеты, типа я здесь)
    А как же тот факт, что "UDP посланный в инет, затеряется"?

    И как, интересно, тогда я подключаюсь по UDP к домашнему VPN-серверу, расположенному в 400 километрах от меня? ;)

  4. 9
    Микхаил Владимирович ответил:

    UDP ничего не гарантирует… и это печально) поэтому им шлют только эхо пакеты, типа я здесь) UDP посланный в инет, затеряется на первом же роутере провайдера(

  5. 8
    Роман Воробец ответил:

    Для более плавной физики и сервер, и клиенты рассчитывают всю физику, но клиенты вносят поправки в свои расчёты на основе данных, полученных от сервера.

  6. 7
    Роман Труба ответил:

    UDP используется зачастую в шутерах, не только в локальной сети. Многие шутеры от Valve (если не все) используют UDP.
    Потому что он является удобным в плане скорости: серверу не надо ждать, пока там подтвердится полная передача данных. Всё на лету: взял – молодец. Не взял – если не возьмешь еще пару раз, пойдешь гулять.
    Примерно так…

  7. 6
    Александр Lert ответил:

    Почему это UDP применяется только в локальной сети?
    У меня другие сведения :)

  8. 5
    Микхаил Владимирович ответил:

    Сервер, по протоколу TCP(UDP только для локальной сети, и только для обнаружения серверов в ней), обрабатывает только текущии координаты и тд, только это уже достаточно большая нагрузка)
    Насчёт физики иногда используються экзотические приемы, кто вызвал действие, тот его и обрабатывает, и предаёт координаты.

  9. 4
    Александр Lert ответил:

    К сожалению в контру давно играл, не помню.
    Ну, к примеру, в F.E.A.R. Combat уж точно, если бочку (или что-нибудь) толкнуть, то она падает у каждого по-своему :)

  10. 3
    Евгений Тихонов ответил:

    А если бочка например в контре упадёт там, где будет идти противник? =) Она у всех будет в одном месте?

  11. 2
    Александр Lert ответил:

    Если бы сервер рассчитывал всю физику, то клиенты бы давно повесились от нетерпения. Из-за сетевой задержки данные о физических взаимодействиях, рассылаемые сервером, становятся неактуальными еще до того, как вычислены (так как во время задержки надо включать один путь "туда", и один "обратно" – свои действия клиент тоже должен передавать). Физика требует мгновенного реагирования (естественно, имеется в виду "настоящая" физика).
    Поэтому вообще сетевая физика обычно очень сложная вещь. В большинстве сетевых шутеров все упрощено: физика сделана так, что не влияет на игровой процесс (то есть присутствует только для красоты), и поэтому расчитывается каждым клиентом лично для себя. А сервер может передавать только данные, которые влияют на геймплей – например, точное положение выброшенного оружия (чтобы все могли его подобрать в одном и том же месте, а не каждый в своем), но никак не потоковую анимацию падения этого самого оружия по протоколу UDP.
    Все известные мне попытки сделать сетевую физику, отличающуюся от данного сценария, адекватных результатов не показывали.

  12. 1
    Евгений Тихонов ответил:

    Сервер рассчитывает всю физику, а клиенты только передают положение себя в пространстве. Сервер получает эти данные, рассчитывает взаимодействия и чаще всего по протоколу UDP рассылает данные о положении всех интерактивных предметов и прочую информацию. Чтобы не заниматься ещё и рассылкой каждому, сервер просто пишет в свой порт информацию, а клиенты считывают. Принцип широковещательной сети. Когда один "говорит", а все остальные слушают

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.