2 to 1500 cross-platform multiplayer units on the map

518
-1

Published on

Ways of sychnronizing multiplayer games of various types – from dynamic “shot’ em’ ups” to strategic games featuring a few thousand units. Authoritative server, independent clients, parallel determined simulation. Non-deterministic floats, cross-platform determinism and multiplayer cross-platform game physics.

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
518
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

2 to 1500 cross-platform multiplayer units on the map

  1. 1. От 2х до 1500 кроссплатформенных мультиплеерных юнитов на карте Как правильно синхронизировать мультиплеерные игры Чому мультплеєр, завжди біг тинг, все з практики, динамічні ігри, шана АоЕ
  2. 2. Авторитарний сервер Топология В 2х словах, Не робіть п2п
  3. 3. Авторитарний сервер Синхронизация Событие с клиента отправляеться на сервер Сервер подтверждает событие и отправляет результат всем клиентам При событии на сервере, сервер отправляет результат всем клиентам
  4. 4. Авторитарный сервер Когда используем: Пошаговые игры Операции с внутриигровыми предметами/валютой Когда не используем: Любая динамика Большое количество юнитов Нюансы Задержка действий юзера Нагрузка на сервер Разработка серверной части Лишний трафик Чому взагалі за це згадав, не робіть так, фізика
  5. 5. Независимая симуляция Топология: Не робіть п2п
  6. 6. Независимая симуляция Синхронизация: Событие моментально исполняется на клиенте и посылается другим клиентам Клиенты регулярно посылают часть своего состояния для синхронизации Клиенты перепросчитывают симуляцию в зависимости от времени отправки сообщения
  7. 7. Независимая симуляция Пересчет симуляции
  8. 8. Независимая симуляция Физика при пересчете симуляции
  9. 9. Независимая симуляция Колизии: Використовуємо психологію
  10. 10. Независимая симуляция Когда используем: Динамичные игры с быстрой обратной связью (шутеры, слешеры, платформеры, гонки итд) Когда не используем: Большое количество юнитов Идеальная синхронизация (шутер с одним патроном) Нюансы Можно использовать non reliable сообщения Физика: колизии только со статическими телами При разработке всегда помним про синхронизацию Секюрити Кроссплатформенность без проблем
  11. 11. 1500 юнитов (синхронная симуляция) Топология: Про сихронність,Не робіть п2п
  12. 12. 1500 юнитов (синхронная симуляция) Синхронизируем часы (итерации) Клиент отправляет событие остальным клиентам Событие исполняется на всех клиентах одновременно (та же итерация) Каждую итерацию клиент посылает остальным контрольную сумму Подія-дія юзера, код детерминирован
  13. 13. 1500 юнитов (синхронная симуляция) Условия Гарантируем одинаковое исполнение кода на всех клиентах Посылаем только события сгенерированные юзером Определяем максимальное время обратной связи Синхронизация Invented by AoE
  14. 14. 1500 юнитов (синхронная симуляция) Если команда опаздывает: Определите комфортную для геймплея задержку Не привязывайтесь к fps
  15. 15. 1500 юнитов (синхронная симуляция) Когда используем: Игры с большим количеством юнитов (стратегии) Когда не используем: Игры с быстрой обратной связью Нюансы Запись игровой сессии (в том числе для дебага и геймплейных юнит тестов(?)) Checksum error хрен отдебажишь В разработке мало отличается от сингл плеера (если следовать правилам) Правила (Не используем события анимации, синхронный Random) Очень низкий трафик При попытке хака checksum error
  16. 16. Boid Multiplayer
  17. 17. 1500 юнитов
  18. 18. Добавляем мультиплатформу Floating point indeterminism 27.241412814841299999 vs. 27.241412814841200001 Intel 80 bit, different architectures, os etc, can be fixed with compiler
  19. 19. Добавляем мультиплатформу Fixed point math Используйте кроссплатформенную технологию Вместо float используем свой тип даных Низкая точность Низкая производительность для некоторых операций Невозможно использовать готовые решения (пишем свой Box2D, path finding, ray casting, структуры данных) Sin-lookup table, sqrt – for, числові ряди
  20. 20. Полезные советы Используйте reliable UDP Cloud серверы Не используйте P2P Используйте protocol buffers Продумывайте мультиплеерное взаимодействие с самого начала Неможливо переробити сінгл в мульти
  21. 21. Вопросы ?
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×