SlideShare a Scribd company logo
Технологии сетевых игр

  Про сети в играх и не только
Multiplayer x Networked
Эволюция

● 1960-е                     ● 1958 - Tennis for two
   ○ Эпоха ранних            ● 1961 - Space War
     многопользовательских   ● 1970 - Galaxy War
     игр                     ● 1972 - Pong
● 1970-е и 1980-е            ● 1978 - Atari Football
   ○ Эпоха аркадных          ● 1993 - Doom
     многопользовательских
     игр
● 1990-е и далее
   ○ Эпоха онлайн-игр
Жёсткая синхронизация

● Принцип использовался на заре появления
  мультиплеерных игр
● Основан на одноранговой сети
● Каждый компьютер обменивался данными с другими
  компьютерами по сети с топологией звезда
● В настоящее время используется в RTS-играх
Идея подхода

● Игра разбивается на несколько шагов(итераций)
● Каждый шаг, с помощью некоторой управляющей
  команды, определяет следующее игровое состояние
   ○ Передвинуть юнита
   ○ Атаковать юнита
   ○ Построить здание
● Один и тот же набор команд выполняется на всех
  игровых машин, начиная с некоторого общего для
  всех игрового состояния
Проблемы подхода

● Сложно обеспечить детерминированность игры
   ○ Юнит может двигаться по слаборазличаемым
     маршрутам
   ○ Одно небольшое отклонение со временем приводит
     к полной рассинхронизации
● Необходимо ждать, пока команды управления будут
  получены от всех игровых машин
   ○ Все играют с задержкой равной задержке игрока с
     самым медленным соединением/машиной
● Необходимость одинакового начального состояния
   ○ По сети передаются лишь те управляющие команды,
     которые изменяют игровую ситуацию
Применение

● Метод хорошо подходит для RTS игр
   ○ Большое количество юнитов(затратно передавать
     информацию о них по сети)
   ○ Command And Conqurer
   ○ Age Of Empires
   ○ Starcraft
Клиент-Сервер
● 1996г. - Джон Кармак при разработке Quake
  использовал клиент-серверную модель
● Игроки(клиенты) обмениваются данными только с
  одним компьютером(сервером)
● Клиенты
   ○ Не обрабатывают игровую логику
   ○ Отсылают события нажатия клавиш и перемещений
     мыши
● Сервер
   ○ Обрабатывает события
   ○ Обновляет состояние игрока
   ○ Возвращает пакеты, содержащие информацию об
     этом состоянии, а также о состоянии окружающих
     игроков
Что получилось?

● Теперь качество игры зависело от скорости соединения
  между клиентом и сервером
● Стало возможным подключение игрока середине игры
● Возросло возможное общее количество играющих
Всё равно не так!

В то время как я могу вспомнить и оправдать все мои решения,
использованные в сетевой модели, начиная с Doom и заканчивая
Quake'ом, суть была всегда одна — основные предположения, из
которых я исходил при разработке, никуда не годились для
хорошей интернет-игры. Изначально я рассчитывал на задержки
соединения менее 200ms. Люди, имеющие цифровое
подключение через хорошего провайдера, не испытывали
трудностей в игре. К сожалению, 99% пользователей подключены
через модем, и, как правило, через хренового перегруженного
провайдера. Из-за этого задержки становятся равными как
минимум 300ms. Клиент. Пользовательский модем. Сервер. Модем
провайдера. Пользовательский модем. Клиент. Это полный
отстой.

Пожалуй, грубовато выразился. У меня дома стоит T1, так что я
был плохо знаком с жизнью на PPP. Теперь я буду иметь это в
виду.
Что делать?

Проблему удалось решить в два захода:
 1. Джоном Кармаком была разработана система
    прогнозирования на стороне клиента(для QuakeWorld)
 2. Создана система компенсирования задержек,
    разработанная Яном Бернье(Valve)

More Related Content

What's hot

Blockchain comparison
Blockchain comparisonBlockchain comparison
Blockchain comparison
Dmitry Meshkov
 
World of Tanks: на пути к 1 млн CCU / Максим Мельников (Wargaming.net)
World of Tanks: на пути к 1 млн CCU / Максим Мельников (Wargaming.net)World of Tanks: на пути к 1 млн CCU / Максим Мельников (Wargaming.net)
World of Tanks: на пути к 1 млн CCU / Максим Мельников (Wargaming.net)Ontico
 
Контейнеры в OpenStack: простое решение сложных проблем
Контейнеры в OpenStack: простое решение сложных проблемКонтейнеры в OpenStack: простое решение сложных проблем
Контейнеры в OpenStack: простое решение сложных проблем
Yandex
 
World of Tanks: один миллион игроков онлайн
World of Tanks: один миллион игроков онлайнWorld of Tanks: один миллион игроков онлайн
World of Tanks: один миллион игроков онлайнMaksim Melnikau
 
Масштабирование Блокчейн Сетей
Масштабирование Блокчейн СетейМасштабирование Блокчейн Сетей
Масштабирование Блокчейн Сетей
Eugene Aseev
 
Onchain масштабирование блокчейна. Спикер: Дмитрий Мешков
Onchain масштабирование блокчейна. Спикер: Дмитрий МешковOnchain масштабирование блокчейна. Спикер: Дмитрий Мешков
Onchain масштабирование блокчейна. Спикер: Дмитрий Мешков
Cyber Fund
 
TM-идентификаторы
TM-идентификаторыTM-идентификаторы
TM-идентификаторы
kzissu
 
Эволюция High availability: Windows Server 2016 Failover Clustering
Эволюция High availability: Windows Server 2016 Failover ClusteringЭволюция High availability: Windows Server 2016 Failover Clustering
Эволюция High availability: Windows Server 2016 Failover Clustering
Yuriy Denisov
 
Замкнутая программная среда. Виртуализация XEN
Замкнутая программная среда. Виртуализация XENЗамкнутая программная среда. Виртуализация XEN
Замкнутая программная среда. Виртуализация XEN
kzissu
 
Исследовательские задачи в области блокчейна
Исследовательские задачи в области блокчейнаИсследовательские задачи в области блокчейна
Исследовательские задачи в области блокчейна
Dmitry Meshkov
 
Павел Курочкин - STeameR
Павел Курочкин - STeameRПавел Курочкин - STeameR
Павел Курочкин - STeameROksana Kurysheva
 
2013-01-05 01 Леонид Евдокимов. Web scale. Взорвется все
2013-01-05 01 Леонид Евдокимов. Web scale. Взорвется все2013-01-05 01 Леонид Евдокимов. Web scale. Взорвется все
2013-01-05 01 Леонид Евдокимов. Web scale. Взорвется всеОмские ИТ-субботники
 
Linux Multi-Touch intro
Linux Multi-Touch introLinux Multi-Touch intro
Linux Multi-Touch introfulcrum7
 
Егор Гришечко «У вас найдётся минутка, чтобы поговорить о блокчейне?»
Егор Гришечко «У вас найдётся минутка, чтобы поговорить о блокчейне?»Егор Гришечко «У вас найдётся минутка, чтобы поговорить о блокчейне?»
Егор Гришечко «У вас найдётся минутка, чтобы поговорить о блокчейне?»
SpbDotNet Community
 
World of Tanks: Linux and Open Source Inside
World of Tanks: Linux and Open Source InsideWorld of Tanks: Linux and Open Source Inside
World of Tanks: Linux and Open Source InsideMaksim Melnikau
 

What's hot (15)

Blockchain comparison
Blockchain comparisonBlockchain comparison
Blockchain comparison
 
World of Tanks: на пути к 1 млн CCU / Максим Мельников (Wargaming.net)
World of Tanks: на пути к 1 млн CCU / Максим Мельников (Wargaming.net)World of Tanks: на пути к 1 млн CCU / Максим Мельников (Wargaming.net)
World of Tanks: на пути к 1 млн CCU / Максим Мельников (Wargaming.net)
 
Контейнеры в OpenStack: простое решение сложных проблем
Контейнеры в OpenStack: простое решение сложных проблемКонтейнеры в OpenStack: простое решение сложных проблем
Контейнеры в OpenStack: простое решение сложных проблем
 
World of Tanks: один миллион игроков онлайн
World of Tanks: один миллион игроков онлайнWorld of Tanks: один миллион игроков онлайн
World of Tanks: один миллион игроков онлайн
 
Масштабирование Блокчейн Сетей
Масштабирование Блокчейн СетейМасштабирование Блокчейн Сетей
Масштабирование Блокчейн Сетей
 
Onchain масштабирование блокчейна. Спикер: Дмитрий Мешков
Onchain масштабирование блокчейна. Спикер: Дмитрий МешковOnchain масштабирование блокчейна. Спикер: Дмитрий Мешков
Onchain масштабирование блокчейна. Спикер: Дмитрий Мешков
 
TM-идентификаторы
TM-идентификаторыTM-идентификаторы
TM-идентификаторы
 
Эволюция High availability: Windows Server 2016 Failover Clustering
Эволюция High availability: Windows Server 2016 Failover ClusteringЭволюция High availability: Windows Server 2016 Failover Clustering
Эволюция High availability: Windows Server 2016 Failover Clustering
 
Замкнутая программная среда. Виртуализация XEN
Замкнутая программная среда. Виртуализация XENЗамкнутая программная среда. Виртуализация XEN
Замкнутая программная среда. Виртуализация XEN
 
Исследовательские задачи в области блокчейна
Исследовательские задачи в области блокчейнаИсследовательские задачи в области блокчейна
Исследовательские задачи в области блокчейна
 
Павел Курочкин - STeameR
Павел Курочкин - STeameRПавел Курочкин - STeameR
Павел Курочкин - STeameR
 
2013-01-05 01 Леонид Евдокимов. Web scale. Взорвется все
2013-01-05 01 Леонид Евдокимов. Web scale. Взорвется все2013-01-05 01 Леонид Евдокимов. Web scale. Взорвется все
2013-01-05 01 Леонид Евдокимов. Web scale. Взорвется все
 
Linux Multi-Touch intro
Linux Multi-Touch introLinux Multi-Touch intro
Linux Multi-Touch intro
 
Егор Гришечко «У вас найдётся минутка, чтобы поговорить о блокчейне?»
Егор Гришечко «У вас найдётся минутка, чтобы поговорить о блокчейне?»Егор Гришечко «У вас найдётся минутка, чтобы поговорить о блокчейне?»
Егор Гришечко «У вас найдётся минутка, чтобы поговорить о блокчейне?»
 
World of Tanks: Linux and Open Source Inside
World of Tanks: Linux and Open Source InsideWorld of Tanks: Linux and Open Source Inside
World of Tanks: Linux and Open Source Inside
 

Viewers also liked

SuSE Studio
SuSE StudioSuSE Studio
SuSE Studio
Eduard Antsupov
 
Backbone.js
Backbone.jsBackbone.js
Backbone.js
Eduard Antsupov
 
Lift, play, akka, rails part1
Lift, play, akka, rails part1Lift, play, akka, rails part1
Lift, play, akka, rails part1Eduard Antsupov
 

Viewers also liked (8)

Smalltalk
SmalltalkSmalltalk
Smalltalk
 
Linux Kernel Processes
Linux Kernel ProcessesLinux Kernel Processes
Linux Kernel Processes
 
SuSE Studio
SuSE StudioSuSE Studio
SuSE Studio
 
Dev collaboration
Dev collaborationDev collaboration
Dev collaboration
 
Backbone.js
Backbone.jsBackbone.js
Backbone.js
 
Lovely scrum
Lovely scrumLovely scrum
Lovely scrum
 
Lift, play, akka, rails part1
Lift, play, akka, rails part1Lift, play, akka, rails part1
Lift, play, akka, rails part1
 
Nosql and Mongodb
Nosql and MongodbNosql and Mongodb
Nosql and Mongodb
 

Similar to Multiplayer

Tech Talks @NSU: Как сделать Dota-like игру
Tech Talks @NSU: Как сделать Dota-like игруTech Talks @NSU: Как сделать Dota-like игру
Tech Talks @NSU: Как сделать Dota-like игру
Tech Talks @NSU
 
Wargaming.net: Архитектура современных 3D движков
Wargaming.net: Архитектура современных 3D движковWargaming.net: Архитектура современных 3D движков
Wargaming.net: Архитектура современных 3D движков
DevGAMM Conference
 
Борис Каплуновский, Aviasales.ru
Борис Каплуновский, Aviasales.ruБорис Каплуновский, Aviasales.ru
Борис Каплуновский, Aviasales.ru
Ontico
 
Quake I
Quake IQuake I
Wargaming.net: Как мы впихнули танки в планшет
Wargaming.net: Как мы впихнули танки в планшетWargaming.net: Как мы впихнули танки в планшет
Wargaming.net: Как мы впихнули танки в планшет
DevGAMM Conference
 
2.5D игры и особенности разработки многопользовательских игр (Глеб Полушкин)
2.5D игры и особенности разработки многопользовательских игр (Глеб Полушкин)2.5D игры и особенности разработки многопользовательских игр (Глеб Полушкин)
2.5D игры и особенности разработки многопользовательских игр (Глеб Полушкин)Ontico
 
C++ в играх, больших и не очень
C++ в играх, больших и не оченьC++ в играх, больших и не очень
C++ в играх, больших и не очень
corehard_by
 
Контейнеры в OpenStack: простое решение сложных проблем
Контейнеры в OpenStack: простое решение сложных проблемКонтейнеры в OpenStack: простое решение сложных проблем
Контейнеры в OpenStack: простое решение сложных проблем
OpenVZ
 
Сергей Парамонов — Что наша жизнь — игра!
Сергей Парамонов — Что наша жизнь — игра!Сергей Парамонов — Что наша жизнь — игра!
Сергей Парамонов — Что наша жизнь — игра!Daria Oreshkina
 
2.5D игры и особенности разработки многопользовательских игр
2.5D игры и особенности разработки многопользовательских игр2.5D игры и особенности разработки многопользовательских игр
2.5D игры и особенности разработки многопользовательских игрGleb Polushkin
 
Kirill Zolovkin, OctoBox Interactive
Kirill Zolovkin, OctoBox InteractiveKirill Zolovkin, OctoBox Interactive
Kirill Zolovkin, OctoBox Interactive
White Nights Conference
 
Uniqum. Презентация проекта.
Uniqum. Презентация проекта.Uniqum. Презентация проекта.
Uniqum. Презентация проекта.Валерий Пазюк
 
1k speedup
1k speedup1k speedup
Character creation pipeline for Age of Magic (3D mobile)
Character creation pipeline for Age of Magic (3D mobile)Character creation pipeline for Age of Magic (3D mobile)
Character creation pipeline for Age of Magic (3D mobile)
DevGAMM Conference
 
Publishing a Unity based Title on mobile, PC and consoles
Publishing a Unity based Title on mobile, PC and consolesPublishing a Unity based Title on mobile, PC and consoles
Publishing a Unity based Title on mobile, PC and consoles
DevGAMM Conference
 

Similar to Multiplayer (15)

Tech Talks @NSU: Как сделать Dota-like игру
Tech Talks @NSU: Как сделать Dota-like игруTech Talks @NSU: Как сделать Dota-like игру
Tech Talks @NSU: Как сделать Dota-like игру
 
Wargaming.net: Архитектура современных 3D движков
Wargaming.net: Архитектура современных 3D движковWargaming.net: Архитектура современных 3D движков
Wargaming.net: Архитектура современных 3D движков
 
Борис Каплуновский, Aviasales.ru
Борис Каплуновский, Aviasales.ruБорис Каплуновский, Aviasales.ru
Борис Каплуновский, Aviasales.ru
 
Quake I
Quake IQuake I
Quake I
 
Wargaming.net: Как мы впихнули танки в планшет
Wargaming.net: Как мы впихнули танки в планшетWargaming.net: Как мы впихнули танки в планшет
Wargaming.net: Как мы впихнули танки в планшет
 
2.5D игры и особенности разработки многопользовательских игр (Глеб Полушкин)
2.5D игры и особенности разработки многопользовательских игр (Глеб Полушкин)2.5D игры и особенности разработки многопользовательских игр (Глеб Полушкин)
2.5D игры и особенности разработки многопользовательских игр (Глеб Полушкин)
 
C++ в играх, больших и не очень
C++ в играх, больших и не оченьC++ в играх, больших и не очень
C++ в играх, больших и не очень
 
Контейнеры в OpenStack: простое решение сложных проблем
Контейнеры в OpenStack: простое решение сложных проблемКонтейнеры в OpenStack: простое решение сложных проблем
Контейнеры в OpenStack: простое решение сложных проблем
 
Сергей Парамонов — Что наша жизнь — игра!
Сергей Парамонов — Что наша жизнь — игра!Сергей Парамонов — Что наша жизнь — игра!
Сергей Парамонов — Что наша жизнь — игра!
 
2.5D игры и особенности разработки многопользовательских игр
2.5D игры и особенности разработки многопользовательских игр2.5D игры и особенности разработки многопользовательских игр
2.5D игры и особенности разработки многопользовательских игр
 
Kirill Zolovkin, OctoBox Interactive
Kirill Zolovkin, OctoBox InteractiveKirill Zolovkin, OctoBox Interactive
Kirill Zolovkin, OctoBox Interactive
 
Uniqum. Презентация проекта.
Uniqum. Презентация проекта.Uniqum. Презентация проекта.
Uniqum. Презентация проекта.
 
1k speedup
1k speedup1k speedup
1k speedup
 
Character creation pipeline for Age of Magic (3D mobile)
Character creation pipeline for Age of Magic (3D mobile)Character creation pipeline for Age of Magic (3D mobile)
Character creation pipeline for Age of Magic (3D mobile)
 
Publishing a Unity based Title on mobile, PC and consoles
Publishing a Unity based Title on mobile, PC and consolesPublishing a Unity based Title on mobile, PC and consoles
Publishing a Unity based Title on mobile, PC and consoles
 

Multiplayer

  • 1. Технологии сетевых игр Про сети в играх и не только
  • 3. Эволюция ● 1960-е ● 1958 - Tennis for two ○ Эпоха ранних ● 1961 - Space War многопользовательских ● 1970 - Galaxy War игр ● 1972 - Pong ● 1970-е и 1980-е ● 1978 - Atari Football ○ Эпоха аркадных ● 1993 - Doom многопользовательских игр ● 1990-е и далее ○ Эпоха онлайн-игр
  • 4.
  • 5.
  • 6.
  • 7. Жёсткая синхронизация ● Принцип использовался на заре появления мультиплеерных игр ● Основан на одноранговой сети ● Каждый компьютер обменивался данными с другими компьютерами по сети с топологией звезда ● В настоящее время используется в RTS-играх
  • 8.
  • 9. Идея подхода ● Игра разбивается на несколько шагов(итераций) ● Каждый шаг, с помощью некоторой управляющей команды, определяет следующее игровое состояние ○ Передвинуть юнита ○ Атаковать юнита ○ Построить здание ● Один и тот же набор команд выполняется на всех игровых машин, начиная с некоторого общего для всех игрового состояния
  • 10. Проблемы подхода ● Сложно обеспечить детерминированность игры ○ Юнит может двигаться по слаборазличаемым маршрутам ○ Одно небольшое отклонение со временем приводит к полной рассинхронизации ● Необходимо ждать, пока команды управления будут получены от всех игровых машин ○ Все играют с задержкой равной задержке игрока с самым медленным соединением/машиной ● Необходимость одинакового начального состояния ○ По сети передаются лишь те управляющие команды, которые изменяют игровую ситуацию
  • 11. Применение ● Метод хорошо подходит для RTS игр ○ Большое количество юнитов(затратно передавать информацию о них по сети) ○ Command And Conqurer ○ Age Of Empires ○ Starcraft
  • 12. Клиент-Сервер ● 1996г. - Джон Кармак при разработке Quake использовал клиент-серверную модель ● Игроки(клиенты) обмениваются данными только с одним компьютером(сервером) ● Клиенты ○ Не обрабатывают игровую логику ○ Отсылают события нажатия клавиш и перемещений мыши ● Сервер ○ Обрабатывает события ○ Обновляет состояние игрока ○ Возвращает пакеты, содержащие информацию об этом состоянии, а также о состоянии окружающих игроков
  • 13. Что получилось? ● Теперь качество игры зависело от скорости соединения между клиентом и сервером ● Стало возможным подключение игрока середине игры ● Возросло возможное общее количество играющих
  • 14. Всё равно не так! В то время как я могу вспомнить и оправдать все мои решения, использованные в сетевой модели, начиная с Doom и заканчивая Quake'ом, суть была всегда одна — основные предположения, из которых я исходил при разработке, никуда не годились для хорошей интернет-игры. Изначально я рассчитывал на задержки соединения менее 200ms. Люди, имеющие цифровое подключение через хорошего провайдера, не испытывали трудностей в игре. К сожалению, 99% пользователей подключены через модем, и, как правило, через хренового перегруженного провайдера. Из-за этого задержки становятся равными как минимум 300ms. Клиент. Пользовательский модем. Сервер. Модем провайдера. Пользовательский модем. Клиент. Это полный отстой. Пожалуй, грубовато выразился. У меня дома стоит T1, так что я был плохо знаком с жизнью на PPP. Теперь я буду иметь это в виду.
  • 15. Что делать? Проблему удалось решить в два захода: 1. Джоном Кармаком была разработана система прогнозирования на стороне клиента(для QuakeWorld) 2. Создана система компенсирования задержек, разработанная Яном Бернье(Valve)