Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
От 2х до 1500 кроссплатформенных
мультиплеерных юнитов на карте
Как правильно синхронизировать мультиплеерные игры

Чому м...
Авторитарний сервер
Топология

В 2х словах,
Не робіть п2п
Авторитарний сервер
Синхронизация
Событие с клиента отправляеться на сервер

Сервер подтверждает событие и отправляет
резу...
Авторитарный сервер
Когда используем:
Пошаговые игры
Операции с внутриигровыми предметами/валютой
Когда не используем:
Люб...
Независимая симуляция
Топология:

Не робіть п2п
Независимая симуляция
Синхронизация:
Событие моментально исполняется на
клиенте и посылается другим клиентам
Клиенты регул...
Независимая симуляция
Пересчет симуляции
Независимая симуляция
Физика при пересчете симуляции
Независимая симуляция
Колизии:

Використовуємо психологію
Независимая симуляция
Когда используем:
Динамичные игры с быстрой обратной связью
(шутеры, слешеры, платформеры, гонки итд...
1500 юнитов (синхронная симуляция)
Топология:

Про сихронність,Не
робіть п2п
1500 юнитов (синхронная симуляция)
Синхронизируем часы
(итерации)

Клиент отправляет событие
остальным клиентам
Событие ис...
1500 юнитов (синхронная симуляция)
Условия
Гарантируем одинаковое исполнение кода на всех клиентах
Посылаем только события...
1500 юнитов (синхронная симуляция)
Если команда опаздывает:

Определите комфортную для геймплея задержку
Не привязывайтесь...
1500 юнитов (синхронная симуляция)
Когда используем:
Игры с большим количеством юнитов (стратегии)
Когда не используем:
Иг...
Boid Multiplayer
1500 юнитов
Добавляем мультиплатформу
Floating point indeterminism

27.241412814841299999
vs.
27.241412814841200001

Intel 80 bit, dif...
Добавляем мультиплатформу
Fixed point math

Используйте кроссплатформенную технологию
Вместо float используем свой тип дан...
Полезные советы
Используйте reliable UDP
Cloud серверы
Не используйте P2P
Используйте protocol buffers
Продумывайте мульти...
Вопросы

?
Upcoming SlideShare
Loading in …5
×

2 to 1500 cross-platform multiplayer units on the map

743 views

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.

  • Be the first to comment

  • Be the first to like this

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. Вопросы ?

×