SlideShare a Scribd company logo
1 of 21
От 2х до 1500 кроссплатформенных
мультиплеерных юнитов на карте
Как правильно синхронизировать мультиплеерные игры

Чому мультплеєр, завжди
біг тинг, все з практики,
динамічні ігри, шана АоЕ
Авторитарний сервер
Топология

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

Сервер подтверждает событие и отправляет
результат всем клиентам

При событии на сервере, сервер отправляет
результат всем клиентам
Авторитарный сервер
Когда используем:
Пошаговые игры
Операции с внутриигровыми предметами/валютой
Когда не используем:
Любая динамика
Большое количество юнитов
Нюансы
Задержка действий юзера
Нагрузка на сервер
Разработка серверной части
Лишний трафик

Чому взагалі за це згадав,
не робіть так, фізика
Независимая симуляция
Топология:

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

Клиенты перепросчитывают симуляцию в
зависимости от времени отправки
сообщения
Независимая симуляция
Пересчет симуляции
Независимая симуляция
Физика при пересчете симуляции
Независимая симуляция
Колизии:

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

Когда не используем:
Большое количество юнитов
Идеальная синхронизация (шутер с одним патроном)
Нюансы
Можно использовать non reliable сообщения
Физика: колизии только со статическими телами
При разработке всегда помним про синхронизацию
Секюрити
Кроссплатформенность без проблем
1500 юнитов (синхронная симуляция)
Топология:

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

Клиент отправляет событие
остальным клиентам
Событие исполняется на всех
клиентах одновременно
(та же итерация)
Каждую итерацию клиент посылает
остальным контрольную сумму
Подія-дія юзера, код
детерминирован
1500 юнитов (синхронная симуляция)
Условия
Гарантируем одинаковое исполнение кода на всех клиентах
Посылаем только события сгенерированные юзером
Определяем максимальное время обратной связи
Синхронизация

Invented by AoE
1500 юнитов (синхронная симуляция)
Если команда опаздывает:

Определите комфортную для геймплея задержку
Не привязывайтесь к fps
1500 юнитов (синхронная симуляция)
Когда используем:
Игры с большим количеством юнитов (стратегии)
Когда не используем:
Игры с быстрой обратной связью
Нюансы
Запись игровой сессии (в том числе для дебага и геймплейных
юнит тестов(?))
Checksum error хрен отдебажишь
В разработке мало отличается от сингл плеера (если следовать
правилам)
Правила (Не используем события анимации, синхронный Random)
Очень низкий трафик
При попытке хака checksum error
Boid Multiplayer
1500 юнитов
Добавляем мультиплатформу
Floating point indeterminism

27.241412814841299999
vs.
27.241412814841200001

Intel 80 bit, different
architectures, os etc, can be
fixed with compiler
Добавляем мультиплатформу
Fixed point math

Используйте кроссплатформенную технологию
Вместо float используем свой тип даных
Низкая точность
Низкая производительность для некоторых операций
Невозможно использовать готовые решения (пишем свой Box2D,
path finding, ray casting, структуры данных)

Sin-lookup table, sqrt
– for, числові ряди
Полезные советы
Используйте reliable UDP
Cloud серверы
Не используйте P2P
Используйте protocol buffers
Продумывайте мультиплеерное взаимодействие с самого начала

Неможливо переробити
сінгл в мульти
Вопросы

?

More Related Content

What's hot

Бекэнд для push-уведомлений своими руками
Бекэнд для push-уведомлений своими рукамиБекэнд для push-уведомлений своими руками
Бекэнд для push-уведомлений своими рукамиAlexandr Mikhaylenko
 
the workflow of a systems administrator
the workflow of a systems administratorthe workflow of a systems administrator
the workflow of a systems administratorAndrew Pantyukhin
 
Н. Иготти. Виртуализация и виртуальные машины. Лекция 11
Н. Иготти. Виртуализация и виртуальные машины. Лекция 11Н. Иготти. Виртуализация и виртуальные машины. Лекция 11
Н. Иготти. Виртуализация и виртуальные машины. Лекция 11Computer Science Club
 
Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...
Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...
Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...Ontico
 
Максим Щепелин - Доставляя веб-контент в игру
Максим Щепелин - Доставляя веб-контент в игруМаксим Щепелин - Доставляя веб-контент в игру
Максим Щепелин - Доставляя веб-контент в игруFDConf
 
postgresql monitoring by okmeter.io
postgresql monitoring by okmeter.iopostgresql monitoring by okmeter.io
postgresql monitoring by okmeter.ioNikolay Sivko
 
Жизнь проекта на production
Жизнь проекта на productionЖизнь проекта на production
Жизнь проекта на productionNikolay Sivko
 
Twisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonTwisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonAndrey Smirnov
 
Кэширование в Web, php и symfony
Кэширование в Web, php и symfonyКэширование в Web, php и symfony
Кэширование в Web, php и symfonyAlexander Morozov
 
Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...
Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...
Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...Iosif Itkin
 
TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines
TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual MachinesTMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines
TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual MachinesIosif Itkin
 
Вебинар: Основы распараллеливания С++ программ при помощи OpenMP
Вебинар: Основы распараллеливания С++ программ при помощи OpenMPВебинар: Основы распараллеливания С++ программ при помощи OpenMP
Вебинар: Основы распараллеливания С++ программ при помощи OpenMPFlyElephant
 
Выступление Юрия Насретдинова, Badoo, на High Performance Conference
Выступление Юрия Насретдинова, Badoo, на High Performance ConferenceВыступление Юрия Насретдинова, Badoo, на High Performance Conference
Выступление Юрия Насретдинова, Badoo, на High Performance ConferenceEYevseyeva
 

What's hot (13)

Бекэнд для push-уведомлений своими руками
Бекэнд для push-уведомлений своими рукамиБекэнд для push-уведомлений своими руками
Бекэнд для push-уведомлений своими руками
 
the workflow of a systems administrator
the workflow of a systems administratorthe workflow of a systems administrator
the workflow of a systems administrator
 
Н. Иготти. Виртуализация и виртуальные машины. Лекция 11
Н. Иготти. Виртуализация и виртуальные машины. Лекция 11Н. Иготти. Виртуализация и виртуальные машины. Лекция 11
Н. Иготти. Виртуализация и виртуальные машины. Лекция 11
 
Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...
Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...
Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...
 
Максим Щепелин - Доставляя веб-контент в игру
Максим Щепелин - Доставляя веб-контент в игруМаксим Щепелин - Доставляя веб-контент в игру
Максим Щепелин - Доставляя веб-контент в игру
 
postgresql monitoring by okmeter.io
postgresql monitoring by okmeter.iopostgresql monitoring by okmeter.io
postgresql monitoring by okmeter.io
 
Жизнь проекта на production
Жизнь проекта на productionЖизнь проекта на production
Жизнь проекта на production
 
Twisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonTwisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в Python
 
Кэширование в Web, php и symfony
Кэширование в Web, php и symfonyКэширование в Web, php и symfony
Кэширование в Web, php и symfony
 
Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...
Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...
Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...
 
TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines
TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual MachinesTMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines
TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines
 
Вебинар: Основы распараллеливания С++ программ при помощи OpenMP
Вебинар: Основы распараллеливания С++ программ при помощи OpenMPВебинар: Основы распараллеливания С++ программ при помощи OpenMP
Вебинар: Основы распараллеливания С++ программ при помощи OpenMP
 
Выступление Юрия Насретдинова, Badoo, на High Performance Conference
Выступление Юрия Насретдинова, Badoo, на High Performance ConferenceВыступление Юрия Насретдинова, Badoo, на High Performance Conference
Выступление Юрия Насретдинова, Badoo, на High Performance Conference
 

Similar to 2 to 1500 cross-platform multiplayer units on the map

Асинхронные вызовы в .NET
Асинхронные вызовы в .NETАсинхронные вызовы в .NET
Асинхронные вызовы в .NETBonart
 
Как играть без игрока
Как играть без игрокаКак играть без игрока
Как играть без игрокаSQALab
 
2.5D игры и особенности разработки многопользовательских игр
2.5D игры и особенности разработки многопользовательских игр2.5D игры и особенности разработки многопользовательских игр
2.5D игры и особенности разработки многопользовательских игрGleb Polushkin
 
2.5D игры и особенности разработки многопользовательских игр (Глеб Полушкин)
2.5D игры и особенности разработки многопользовательских игр (Глеб Полушкин)2.5D игры и особенности разработки многопользовательских игр (Глеб Полушкин)
2.5D игры и особенности разработки многопользовательских игр (Глеб Полушкин)Ontico
 
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...it-people
 
КРИ 2010. Разработка технологической платформы в условиях временного прессинга
КРИ 2010. Разработка технологической платформы в условиях временного прессингаКРИ 2010. Разработка технологической платформы в условиях временного прессинга
КРИ 2010. Разработка технологической платформы в условиях временного прессингаKirill Lebedev
 
Многопользовательские браузерные игры нового типа
Многопользовательские браузерные игры нового типаМногопользовательские браузерные игры нового типа
Многопользовательские браузерные игры нового типаAnton Volkov
 
Оптимизация сервера потокового видеовещания (Дмитрий Шатров)
Оптимизация сервера потокового видеовещания (Дмитрий Шатров)Оптимизация сервера потокового видеовещания (Дмитрий Шатров)
Оптимизация сервера потокового видеовещания (Дмитрий Шатров)Ontico
 
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...SQALab
 
Введение в тестирование мобильных игр (SQA Days-12)
Введение в тестирование мобильных игр (SQA Days-12)Введение в тестирование мобильных игр (SQA Days-12)
Введение в тестирование мобильных игр (SQA Days-12)Catherine Tipanova
 
температура мира
температура миратемпература мира
температура мираHighLoad2009
 
Юрий Насретдинов, Badoo
Юрий Насретдинов, BadooЮрий Насретдинов, Badoo
Юрий Насретдинов, BadooOntico
 
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...Badoo Development
 

Similar to 2 to 1500 cross-platform multiplayer units on the map (15)

Асинхронные вызовы в .NET
Асинхронные вызовы в .NETАсинхронные вызовы в .NET
Асинхронные вызовы в .NET
 
Как играть без игрока
Как играть без игрокаКак играть без игрока
Как играть без игрока
 
2.5D игры и особенности разработки многопользовательских игр
2.5D игры и особенности разработки многопользовательских игр2.5D игры и особенности разработки многопользовательских игр
2.5D игры и особенности разработки многопользовательских игр
 
2.5D игры и особенности разработки многопользовательских игр (Глеб Полушкин)
2.5D игры и особенности разработки многопользовательских игр (Глеб Полушкин)2.5D игры и особенности разработки многопользовательских игр (Глеб Полушкин)
2.5D игры и особенности разработки многопользовательских игр (Глеб Полушкин)
 
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
 
КРИ 2010. Разработка технологической платформы в условиях временного прессинга
КРИ 2010. Разработка технологической платформы в условиях временного прессингаКРИ 2010. Разработка технологической платформы в условиях временного прессинга
КРИ 2010. Разработка технологической платформы в условиях временного прессинга
 
Многопользовательские браузерные игры нового типа
Многопользовательские браузерные игры нового типаМногопользовательские браузерные игры нового типа
Многопользовательские браузерные игры нового типа
 
UA Mobile 2012
UA Mobile 2012UA Mobile 2012
UA Mobile 2012
 
Оптимизация сервера потокового видеовещания (Дмитрий Шатров)
Оптимизация сервера потокового видеовещания (Дмитрий Шатров)Оптимизация сервера потокового видеовещания (Дмитрий Шатров)
Оптимизация сервера потокового видеовещания (Дмитрий Шатров)
 
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
 
Введение в тестирование мобильных игр (SQA Days-12)
Введение в тестирование мобильных игр (SQA Days-12)Введение в тестирование мобильных игр (SQA Days-12)
Введение в тестирование мобильных игр (SQA Days-12)
 
температура мира
температура миратемпература мира
температура мира
 
Юрий Насретдинов, Badoo
Юрий Насретдинов, BadooЮрий Насретдинов, Badoo
Юрий Насретдинов, Badoo
 
Автоматизация тестирования
Автоматизация тестированияАвтоматизация тестирования
Автоматизация тестирования
 
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
 

More from DevGAMM Conference

The art of small steps, or how to make sound for games in conditions of war /...
The art of small steps, or how to make sound for games in conditions of war /...The art of small steps, or how to make sound for games in conditions of war /...
The art of small steps, or how to make sound for games in conditions of war /...DevGAMM Conference
 
Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...
Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...
Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...DevGAMM Conference
 
How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...
How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...
How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...DevGAMM Conference
 
Why indie developers should consider hyper-casual right now / Igor Gurenyov (...
Why indie developers should consider hyper-casual right now / Igor Gurenyov (...Why indie developers should consider hyper-casual right now / Igor Gurenyov (...
Why indie developers should consider hyper-casual right now / Igor Gurenyov (...DevGAMM Conference
 
AI / ML for Indies / Tyler Coleman (Retora Games)
AI / ML for Indies / Tyler Coleman (Retora Games)AI / ML for Indies / Tyler Coleman (Retora Games)
AI / ML for Indies / Tyler Coleman (Retora Games)DevGAMM Conference
 
Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...
Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...
Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...DevGAMM Conference
 
New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...
New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...
New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...DevGAMM Conference
 
Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...
Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...
Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...DevGAMM Conference
 
Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...
Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...
Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...DevGAMM Conference
 
From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)
From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)
From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)DevGAMM Conference
 
Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)
Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)
Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)DevGAMM Conference
 
Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...
Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...
Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...DevGAMM Conference
 
How to increase wishlists & game sales from China? Growth marketing tactics &...
How to increase wishlists & game sales from China? Growth marketing tactics &...How to increase wishlists & game sales from China? Growth marketing tactics &...
How to increase wishlists & game sales from China? Growth marketing tactics &...DevGAMM Conference
 
Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)
Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)
Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)DevGAMM Conference
 
Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...
Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...
Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...DevGAMM Conference
 
Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...
Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...
Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...DevGAMM Conference
 
The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...
The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...
The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...DevGAMM Conference
 
Branded Content: How to overcome players' immunity to advertising / Alex Brod...
Branded Content: How to overcome players' immunity to advertising / Alex Brod...Branded Content: How to overcome players' immunity to advertising / Alex Brod...
Branded Content: How to overcome players' immunity to advertising / Alex Brod...DevGAMM Conference
 
Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...
Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...
Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...DevGAMM Conference
 
How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...
How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...
How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...DevGAMM Conference
 

More from DevGAMM Conference (20)

The art of small steps, or how to make sound for games in conditions of war /...
The art of small steps, or how to make sound for games in conditions of war /...The art of small steps, or how to make sound for games in conditions of war /...
The art of small steps, or how to make sound for games in conditions of war /...
 
Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...
Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...
Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...
 
How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...
How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...
How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...
 
Why indie developers should consider hyper-casual right now / Igor Gurenyov (...
Why indie developers should consider hyper-casual right now / Igor Gurenyov (...Why indie developers should consider hyper-casual right now / Igor Gurenyov (...
Why indie developers should consider hyper-casual right now / Igor Gurenyov (...
 
AI / ML for Indies / Tyler Coleman (Retora Games)
AI / ML for Indies / Tyler Coleman (Retora Games)AI / ML for Indies / Tyler Coleman (Retora Games)
AI / ML for Indies / Tyler Coleman (Retora Games)
 
Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...
Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...
Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...
 
New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...
New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...
New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...
 
Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...
Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...
Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...
 
Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...
Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...
Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...
 
From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)
From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)
From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)
 
Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)
Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)
Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)
 
Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...
Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...
Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...
 
How to increase wishlists & game sales from China? Growth marketing tactics &...
How to increase wishlists & game sales from China? Growth marketing tactics &...How to increase wishlists & game sales from China? Growth marketing tactics &...
How to increase wishlists & game sales from China? Growth marketing tactics &...
 
Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)
Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)
Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)
 
Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...
Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...
Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...
 
Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...
Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...
Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...
 
The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...
The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...
The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...
 
Branded Content: How to overcome players' immunity to advertising / Alex Brod...
Branded Content: How to overcome players' immunity to advertising / Alex Brod...Branded Content: How to overcome players' immunity to advertising / Alex Brod...
Branded Content: How to overcome players' immunity to advertising / Alex Brod...
 
Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...
Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...
Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...
 
How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...
How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...
How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...
 

2 to 1500 cross-platform multiplayer units on the map

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