SlideShare a Scribd company logo
1 of 40
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
UNITY NETWØRK1NG:
НØВЫЕ ВØ3МØЖНØСТИ
Валентин Симонов
Field Engineer @ Unity Technologies
E-mail: val@unity3d.com
Skype: simonov.valentin
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
Валентин Симонов
Field Engineer @ Unity Technologies
• Помогаю разработчикам
выжимать максимум из Unity
• Рассказываю про Unity
• Перевожу книги по Unity
• Веду курсы по Unity
• Поддерживаю open source проекты:
• https://github.com/TouchScript/TouchScript
E-mail: val@unity3d.com
Skype: simonov.valentin
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
ПРОШЛОЕ: RAKNET
• Стороннее решение
• Для небольших мультиплеер игр
• Акцент на простоту интеграции в IDE
• Нет low-level доступа
• Не предназначено для ММО с авторитарным
сервером
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
БУДУЩЕЕ: UNITY NETWORKING
• Производительное, стабильное и удобное решение
• Рассчитано на самые разные типы игр
• Client hosted и server based
• Большое количество одновременных подключений
• Native в Unity
• High Level и Low Level API
• Match making, relay server для обхода NAT
• Серверные библиотеки и simulation server
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
НАСТОЯЩЕЕ
5.1: http://unity3d.com/unity/beta
• Протокол на основе UDP
• Multi-channel дизайн
• Разные уровни QoS (Quality of Service) на канал
• Поддержка peer-to-peer и client-server
• High Level и Low Level API
• Relay/match making сервер
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
http://forum.unity3d.com/threads/networking-sample-projects.325096/
COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2014 @ UNITY TECHNOLOGIES
LOW LEVEL API
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
LOW LEVEL API
config = new ConnectionConfig();
channel = config.AddChannel(QosType.Reliable);
NetworkTransport.Init();
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
КАНАЛЫ
Каналы — логическое разделение потока
сообщений для соединения
QoS:
• Unreliable, Unreliable Fragmented, Unreliable
Sequenced
• Reliable, Reliable Fragmented, Reliable Sequenced
• State Update, All Cost Delivery
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
// server
HostTopology topology = new HostTopology(config, 12);
host = NetworkTransport.AddHost(topology, port, null);
// client
host = NetworkTransport.AddHost(topology, 0);
connection =
NetworkTransport.Connect(host, ip, port, 0, out error);
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
NetworkEventType recData =
NetworkTransport.Receive( … );
switch (recData) {
case NetworkEventType.Nothing:
break;
case NetworkEventType.ConnectEvent:
break;
case NetworkEventType.DataEvent:
break;
case NetworkEventType.DisconnectEvent:
break;
}
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
NetworkTransport.Send(host, connection,
channel, bytes, bytes.Length, out error);
NetworkTransport.Shutdown();
COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2014 @ UNITY TECHNOLOGIES
HIGH LEVEL API
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
HIGH LEVEL API
• Простое API для основных задач
• На основе Low Level API
• Набор компонентов и атрибутов
• Авторитарный сервер
• Игрок может быть сервером
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
P2P/НЕАВТОРИТАРНЫЙ СЕРВЕР
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
АВТОРИТАРНЫЙ СЕРВЕР
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
// Server
NetworkServer.Listen(4444);
// Client
myClient = new NetworkClient();
myClient.RegisterHandler(
MsgType.Connect, OnConnected);
myClient.Connect("127.0.0.1", 4444);
NetworkServer.SendToAll( ... );
public void OnConnected(NetworkMessage netMsg) { ...
}
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
SIMULATOR
ConnectWithSimulator(
string serverIp,
int serverPort,
int latency,
float packetLoss);
COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2014 @ UNITY TECHNOLOGIES
ЕЩЕ БОЛЕЕ HIGH LEVEL
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
ИГРОКИ
• 1 клиент == 1+ игроков
• Игрок — особый объект, который может общаться
с сервером
public void OnConnected(NetworkMessage netMsg)
{
ClientScene.AddPlayer(netMsg.conn, 0);
}
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
NETWORK IDENTITY
• Компонент, который отмечает объект как
контролируемый сервером
• NetworkServer.Spawn( … )
• ClientScene.RegisterPrefab( ... )
ClientScene.RegisterSpawnHandler( ... )
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
NETWORKBEHAVIOUR
MyScript -> NetworkBehaviour -> MonoBehaviour
• Объекты с NetworkIdentity
• Синхронизация переменных
• Сетевые колбэки
• Серверные и клиентские функции
• Команды
• RPC вызовы
• Сетевые события
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
SYNCVAR
• Синхронизация server -> client*
public class SpaceShip : NetworkBehaviour
{
[SyncVar]
public int health;
}
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
NETWORK CALLBACKS
Виртуальные методы NetworkBehaviour
• OnStartServer
• OnStartClient
• OnSerialize(NetworkWriter writer, bool initialState)
• OnDeSerialize(NetworkReader reader, bool initialState)
• OnNetworkDestroy
• OnStartLocalPlayer
• …
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
КЛИЕНТСКИЕ И СЕРВЕРНЫЕ МЕТОДЫ
public class SimpleSpaceShip : NetworkBehaviour {
[Server]
public void TakeDamage(int amount) { ... }
[Client]
void ShowExplosion() { ... }
[ClientCallback]
void Update() { ... }
}
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
КЛИЕНТ <-> СЕРВЕР
• Команды: игрок -> сервер
(только игрок)
• RPC: сервер -> клиентский объект
• События: сервер -> клиентский объект
• Сообщения: сервер <-> клиент
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
КОМАНДЫ
public class SpaceShip : NetworkBehaviour {
[Command]
public void CmdRotate(float angle) {
this.angle += angle;
}
[ClientCallback]
void Update() {
CmdRotate(Input.GetAxis("Vertical")); // this will be called on the server
}
}
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
RPC
public class Rpc : NetworkBehaviour {
[ClientRpc]
public void RpcDoOnClient(float value) { ... }
[ServerCallback]
void Update() {
RpcDoOnClient(Time.time);
}
}
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
СОБЫТИЯ
public class MyCombat : NetworkBehaviour {
public delegate void RespawnDelegate();
[SyncEvent]
public event RespawnDelegate EventRespawn;
[Server]
void Respawn() {
alive = true;
EventRespawn();
}
}
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
СООБЩЕНИЯ
public class MyMsgType {
public static short Score = MsgType.Highest + 1;
};
public struct ScoreMessage {
public int score;
public Vector3 scorePos;
public int lives;
}
public void SetupClient() {
myClient = new NetworkClient();
myClient.RegisterHandler(MyMsgType.Score, OnScore);
myClient.Connect("127.0.0.1", 4444);
}
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
СООБЩЕНИЯ
public void SendScore(int score, Vector3 scorePos, int lives) {
ScoreMessage msg;
msg.score = score;
msg.scorePos = scorePos;
msg.lives = lives;
NetworkServer.SendToAll<ScoreMessage>(MyMsgType.Score, msg);
}
public void OnScore(NetworkMessage netMsg) { … }
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
NETWORKBEHAVIOUR
MyScript -> NetworkBehaviour -> MonoBehaviour
• Меньше порог входа
• Генерация кода при компиляции
• Не используется reflection в рантайме
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
КОМПОНЕНТЫ: NETWORK MANAGER
• Центральный компонент для
конфигурации сетевого взаимодействия
• Написан на HLAPI
• Содержит базовую функциональность:
• Управление без скриптинга
• Game state management
• Scene management
• Spawning
• Debugging
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
КОМПОНЕНТЫ: NETWORK MANAGER
public class MyNetManager : NetworkManager
{
public override void OnServerAddPlayer(
NetworkConnection conn, short playerControllerId)
{ … }
OnServerConnect(UConnection conn);
OnServerDisconnect(UConnection conn);
OnClientConnect(UConnection conn);
OnClientDisconnect(UConnection conn);
}
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
КОМПОНЕНТЫ
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
MATCHMAKING
NetworkMatch <-> Relay Server (LLAPI) <-> Clients
Обход закрытых сетей
CreateMatch
ListMatches
JoinMatch
DestroyMatch
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
MATCHMAKING
SetProgramAppID( … )
https://unet.unity3d.com/
COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2014 @ UNITY TECHNOLOGIES
UNITY В РОССИИ
unity_ru
unityrussia
unity3dengine
blogs.unity3d.com/ru
Unity3DRU

More Related Content

Similar to Unity Networking: new possibilities

Программируемость ACI. Примеры применения.
Программируемость ACI. Примеры применения.Программируемость ACI. Примеры применения.
Программируемость ACI. Примеры применения.Cisco Russia
 
Автономные Сети: упрощение развертывания уровня доступа в сети сервис-провайдера
Автономные Сети: упрощение развертывания уровня доступа в сети сервис-провайдераАвтономные Сети: упрощение развертывания уровня доступа в сети сервис-провайдера
Автономные Сети: упрощение развертывания уровня доступа в сети сервис-провайдераCisco Russia
 
Практические примеры использования API в инфраструктурных продуктах Cisco для...
Практические примеры использования API в инфраструктурных продуктах Cisco для...Практические примеры использования API в инфраструктурных продуктах Cisco для...
Практические примеры использования API в инфраструктурных продуктах Cisco для...Cisco Russia
 
2016-09-17 02 Игорь Гончаровский. Техническая и программная сторона VoIP
2016-09-17 02 Игорь Гончаровский. Техническая и программная сторона VoIP2016-09-17 02 Игорь Гончаровский. Техническая и программная сторона VoIP
2016-09-17 02 Игорь Гончаровский. Техническая и программная сторона VoIPОмские ИТ-субботники
 
CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Mic...
CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Mic...CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Mic...
CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Mic...CodeFest
 
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)AvitoTech
 
Кирилл Комлев. О реализации continuous integration для web проектов
Кирилл Комлев. О реализации continuous integration для web проектовКирилл Комлев. О реализации continuous integration для web проектов
Кирилл Комлев. О реализации continuous integration для web проектовOlesya_V
 
непрерывная интеграция шаг к непрерывному деплою родионов игорь
непрерывная интеграция   шаг к непрерывному деплою родионов игорьнепрерывная интеграция   шаг к непрерывному деплою родионов игорь
непрерывная интеграция шаг к непрерывному деплою родионов игорьdrupalconf
 
Check Point 3D Security report, как инструмент выявления и ликвидации угроз в...
Check Point 3D Security report, как инструмент выявления и ликвидации угроз в...Check Point 3D Security report, как инструмент выявления и ликвидации угроз в...
Check Point 3D Security report, как инструмент выявления и ликвидации угроз в...Expolink
 
Интеграция сервисов информационной безопасности в NFV-инфраструктуру
Интеграция сервисов информационной безопасности в NFV-инфраструктуруИнтеграция сервисов информационной безопасности в NFV-инфраструктуру
Интеграция сервисов информационной безопасности в NFV-инфраструктуруPositive Hack Days
 
Юрий Леонычев «Безопасность мобильных приложений для Android. Теория и практика»
Юрий Леонычев «Безопасность мобильных приложений для Android. Теория и практика»Юрий Леонычев «Безопасность мобильных приложений для Android. Теория и практика»
Юрий Леонычев «Безопасность мобильных приложений для Android. Теория и практика»Yandex
 
Intel соркин
Intel соркинIntel соркин
Intel соркинExpolink
 
Перспективы сервисов видеоконференцсвязи в России. Докладчик: Дмитрий Одинцов...
Перспективы сервисов видеоконференцсвязи в России. Докладчик: Дмитрий Одинцов...Перспективы сервисов видеоконференцсвязи в России. Докладчик: Дмитрий Одинцов...
Перспективы сервисов видеоконференцсвязи в России. Докладчик: Дмитрий Одинцов...TrueConf
 
Эволюционный дизайн. Joker Students Day 2016
Эволюционный дизайн. Joker Students Day 2016Эволюционный дизайн. Joker Students Day 2016
Эволюционный дизайн. Joker Students Day 2016Кирилл Толкачёв
 
Непрерывная интеграция шаг к непрерывному деплою. Родионов Игорь
Непрерывная интеграция шаг к непрерывному деплою. Родионов ИгорьНепрерывная интеграция шаг к непрерывному деплою. Родионов Игорь
Непрерывная интеграция шаг к непрерывному деплою. Родионов ИгорьPVasili
 
Сервисы NFV
Сервисы NFVСервисы NFV
Сервисы NFVSkillFactory
 

Similar to Unity Networking: new possibilities (20)

Do it yourself profiler
Do it yourself profilerDo it yourself profiler
Do it yourself profiler
 
Программируемость ACI. Примеры применения.
Программируемость ACI. Примеры применения.Программируемость ACI. Примеры применения.
Программируемость ACI. Примеры применения.
 
Автономные Сети: упрощение развертывания уровня доступа в сети сервис-провайдера
Автономные Сети: упрощение развертывания уровня доступа в сети сервис-провайдераАвтономные Сети: упрощение развертывания уровня доступа в сети сервис-провайдера
Автономные Сети: упрощение развертывания уровня доступа в сети сервис-провайдера
 
Практические примеры использования API в инфраструктурных продуктах Cisco для...
Практические примеры использования API в инфраструктурных продуктах Cisco для...Практические примеры использования API в инфраструктурных продуктах Cisco для...
Практические примеры использования API в инфраструктурных продуктах Cisco для...
 
2016-09-17 02 Игорь Гончаровский. Техническая и программная сторона VoIP
2016-09-17 02 Игорь Гончаровский. Техническая и программная сторона VoIP2016-09-17 02 Игорь Гончаровский. Техническая и программная сторона VoIP
2016-09-17 02 Игорь Гончаровский. Техническая и программная сторона VoIP
 
CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Mic...
CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Mic...CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Mic...
CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Mic...
 
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)
 
Кирилл Комлев. О реализации continuous integration для web проектов
Кирилл Комлев. О реализации continuous integration для web проектовКирилл Комлев. О реализации continuous integration для web проектов
Кирилл Комлев. О реализации continuous integration для web проектов
 
iRidium 3.0 for KNX
iRidium 3.0 for KNXiRidium 3.0 for KNX
iRidium 3.0 for KNX
 
UA Mobile 2012
UA Mobile 2012UA Mobile 2012
UA Mobile 2012
 
Global VPN
Global VPNGlobal VPN
Global VPN
 
непрерывная интеграция шаг к непрерывному деплою родионов игорь
непрерывная интеграция   шаг к непрерывному деплою родионов игорьнепрерывная интеграция   шаг к непрерывному деплою родионов игорь
непрерывная интеграция шаг к непрерывному деплою родионов игорь
 
Check Point 3D Security report, как инструмент выявления и ликвидации угроз в...
Check Point 3D Security report, как инструмент выявления и ликвидации угроз в...Check Point 3D Security report, как инструмент выявления и ликвидации угроз в...
Check Point 3D Security report, как инструмент выявления и ликвидации угроз в...
 
Интеграция сервисов информационной безопасности в NFV-инфраструктуру
Интеграция сервисов информационной безопасности в NFV-инфраструктуруИнтеграция сервисов информационной безопасности в NFV-инфраструктуру
Интеграция сервисов информационной безопасности в NFV-инфраструктуру
 
Юрий Леонычев «Безопасность мобильных приложений для Android. Теория и практика»
Юрий Леонычев «Безопасность мобильных приложений для Android. Теория и практика»Юрий Леонычев «Безопасность мобильных приложений для Android. Теория и практика»
Юрий Леонычев «Безопасность мобильных приложений для Android. Теория и практика»
 
Intel соркин
Intel соркинIntel соркин
Intel соркин
 
Перспективы сервисов видеоконференцсвязи в России. Докладчик: Дмитрий Одинцов...
Перспективы сервисов видеоконференцсвязи в России. Докладчик: Дмитрий Одинцов...Перспективы сервисов видеоконференцсвязи в России. Докладчик: Дмитрий Одинцов...
Перспективы сервисов видеоконференцсвязи в России. Докладчик: Дмитрий Одинцов...
 
Эволюционный дизайн. Joker Students Day 2016
Эволюционный дизайн. Joker Students Day 2016Эволюционный дизайн. Joker Students Day 2016
Эволюционный дизайн. Joker Students Day 2016
 
Непрерывная интеграция шаг к непрерывному деплою. Родионов Игорь
Непрерывная интеграция шаг к непрерывному деплою. Родионов ИгорьНепрерывная интеграция шаг к непрерывному деплою. Родионов Игорь
Непрерывная интеграция шаг к непрерывному деплою. Родионов Игорь
 
Сервисы NFV
Сервисы NFVСервисы NFV
Сервисы NFV
 

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...
 

Unity Networking: new possibilities

  • 1. COPYRIGHT 2014 @ UNITY TECHNOLOGIES UNITY NETWØRK1NG: НØВЫЕ ВØ3МØЖНØСТИ Валентин Симонов Field Engineer @ Unity Technologies E-mail: val@unity3d.com Skype: simonov.valentin
  • 2. COPYRIGHT 2014 @ UNITY TECHNOLOGIES Валентин Симонов Field Engineer @ Unity Technologies • Помогаю разработчикам выжимать максимум из Unity • Рассказываю про Unity • Перевожу книги по Unity • Веду курсы по Unity • Поддерживаю open source проекты: • https://github.com/TouchScript/TouchScript E-mail: val@unity3d.com Skype: simonov.valentin
  • 3. COPYRIGHT 2014 @ UNITY TECHNOLOGIES ПРОШЛОЕ: RAKNET • Стороннее решение • Для небольших мультиплеер игр • Акцент на простоту интеграции в IDE • Нет low-level доступа • Не предназначено для ММО с авторитарным сервером
  • 4. COPYRIGHT 2014 @ UNITY TECHNOLOGIES БУДУЩЕЕ: UNITY NETWORKING • Производительное, стабильное и удобное решение • Рассчитано на самые разные типы игр • Client hosted и server based • Большое количество одновременных подключений • Native в Unity • High Level и Low Level API • Match making, relay server для обхода NAT • Серверные библиотеки и simulation server
  • 5. COPYRIGHT 2014 @ UNITY TECHNOLOGIES НАСТОЯЩЕЕ 5.1: http://unity3d.com/unity/beta • Протокол на основе UDP • Multi-channel дизайн • Разные уровни QoS (Quality of Service) на канал • Поддержка peer-to-peer и client-server • High Level и Low Level API • Relay/match making сервер
  • 6. COPYRIGHT 2014 @ UNITY TECHNOLOGIES
  • 7. COPYRIGHT 2014 @ UNITY TECHNOLOGIES http://forum.unity3d.com/threads/networking-sample-projects.325096/
  • 8. COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2014 @ UNITY TECHNOLOGIES LOW LEVEL API
  • 9. COPYRIGHT 2014 @ UNITY TECHNOLOGIES LOW LEVEL API config = new ConnectionConfig(); channel = config.AddChannel(QosType.Reliable); NetworkTransport.Init();
  • 10. COPYRIGHT 2014 @ UNITY TECHNOLOGIES КАНАЛЫ Каналы — логическое разделение потока сообщений для соединения QoS: • Unreliable, Unreliable Fragmented, Unreliable Sequenced • Reliable, Reliable Fragmented, Reliable Sequenced • State Update, All Cost Delivery
  • 11. COPYRIGHT 2014 @ UNITY TECHNOLOGIES // server HostTopology topology = new HostTopology(config, 12); host = NetworkTransport.AddHost(topology, port, null); // client host = NetworkTransport.AddHost(topology, 0); connection = NetworkTransport.Connect(host, ip, port, 0, out error);
  • 12. COPYRIGHT 2014 @ UNITY TECHNOLOGIES NetworkEventType recData = NetworkTransport.Receive( … ); switch (recData) { case NetworkEventType.Nothing: break; case NetworkEventType.ConnectEvent: break; case NetworkEventType.DataEvent: break; case NetworkEventType.DisconnectEvent: break; }
  • 13. COPYRIGHT 2014 @ UNITY TECHNOLOGIES NetworkTransport.Send(host, connection, channel, bytes, bytes.Length, out error); NetworkTransport.Shutdown();
  • 14. COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2014 @ UNITY TECHNOLOGIES HIGH LEVEL API
  • 15. COPYRIGHT 2014 @ UNITY TECHNOLOGIES HIGH LEVEL API • Простое API для основных задач • На основе Low Level API • Набор компонентов и атрибутов • Авторитарный сервер • Игрок может быть сервером
  • 16. COPYRIGHT 2014 @ UNITY TECHNOLOGIES P2P/НЕАВТОРИТАРНЫЙ СЕРВЕР
  • 17. COPYRIGHT 2014 @ UNITY TECHNOLOGIES АВТОРИТАРНЫЙ СЕРВЕР
  • 18. COPYRIGHT 2014 @ UNITY TECHNOLOGIES // Server NetworkServer.Listen(4444); // Client myClient = new NetworkClient(); myClient.RegisterHandler( MsgType.Connect, OnConnected); myClient.Connect("127.0.0.1", 4444); NetworkServer.SendToAll( ... ); public void OnConnected(NetworkMessage netMsg) { ... }
  • 19. COPYRIGHT 2014 @ UNITY TECHNOLOGIES
  • 20. COPYRIGHT 2014 @ UNITY TECHNOLOGIES SIMULATOR ConnectWithSimulator( string serverIp, int serverPort, int latency, float packetLoss);
  • 21. COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2014 @ UNITY TECHNOLOGIES ЕЩЕ БОЛЕЕ HIGH LEVEL
  • 22. COPYRIGHT 2014 @ UNITY TECHNOLOGIES ИГРОКИ • 1 клиент == 1+ игроков • Игрок — особый объект, который может общаться с сервером public void OnConnected(NetworkMessage netMsg) { ClientScene.AddPlayer(netMsg.conn, 0); }
  • 23. COPYRIGHT 2014 @ UNITY TECHNOLOGIES NETWORK IDENTITY • Компонент, который отмечает объект как контролируемый сервером • NetworkServer.Spawn( … ) • ClientScene.RegisterPrefab( ... ) ClientScene.RegisterSpawnHandler( ... )
  • 24. COPYRIGHT 2014 @ UNITY TECHNOLOGIES NETWORKBEHAVIOUR MyScript -> NetworkBehaviour -> MonoBehaviour • Объекты с NetworkIdentity • Синхронизация переменных • Сетевые колбэки • Серверные и клиентские функции • Команды • RPC вызовы • Сетевые события
  • 25. COPYRIGHT 2014 @ UNITY TECHNOLOGIES SYNCVAR • Синхронизация server -> client* public class SpaceShip : NetworkBehaviour { [SyncVar] public int health; }
  • 26. COPYRIGHT 2014 @ UNITY TECHNOLOGIES NETWORK CALLBACKS Виртуальные методы NetworkBehaviour • OnStartServer • OnStartClient • OnSerialize(NetworkWriter writer, bool initialState) • OnDeSerialize(NetworkReader reader, bool initialState) • OnNetworkDestroy • OnStartLocalPlayer • …
  • 27. COPYRIGHT 2014 @ UNITY TECHNOLOGIES КЛИЕНТСКИЕ И СЕРВЕРНЫЕ МЕТОДЫ public class SimpleSpaceShip : NetworkBehaviour { [Server] public void TakeDamage(int amount) { ... } [Client] void ShowExplosion() { ... } [ClientCallback] void Update() { ... } }
  • 28. COPYRIGHT 2014 @ UNITY TECHNOLOGIES КЛИЕНТ <-> СЕРВЕР • Команды: игрок -> сервер (только игрок) • RPC: сервер -> клиентский объект • События: сервер -> клиентский объект • Сообщения: сервер <-> клиент
  • 29. COPYRIGHT 2014 @ UNITY TECHNOLOGIES КОМАНДЫ public class SpaceShip : NetworkBehaviour { [Command] public void CmdRotate(float angle) { this.angle += angle; } [ClientCallback] void Update() { CmdRotate(Input.GetAxis("Vertical")); // this will be called on the server } }
  • 30. COPYRIGHT 2014 @ UNITY TECHNOLOGIES RPC public class Rpc : NetworkBehaviour { [ClientRpc] public void RpcDoOnClient(float value) { ... } [ServerCallback] void Update() { RpcDoOnClient(Time.time); } }
  • 31. COPYRIGHT 2014 @ UNITY TECHNOLOGIES СОБЫТИЯ public class MyCombat : NetworkBehaviour { public delegate void RespawnDelegate(); [SyncEvent] public event RespawnDelegate EventRespawn; [Server] void Respawn() { alive = true; EventRespawn(); } }
  • 32. COPYRIGHT 2014 @ UNITY TECHNOLOGIES СООБЩЕНИЯ public class MyMsgType { public static short Score = MsgType.Highest + 1; }; public struct ScoreMessage { public int score; public Vector3 scorePos; public int lives; } public void SetupClient() { myClient = new NetworkClient(); myClient.RegisterHandler(MyMsgType.Score, OnScore); myClient.Connect("127.0.0.1", 4444); }
  • 33. COPYRIGHT 2014 @ UNITY TECHNOLOGIES СООБЩЕНИЯ public void SendScore(int score, Vector3 scorePos, int lives) { ScoreMessage msg; msg.score = score; msg.scorePos = scorePos; msg.lives = lives; NetworkServer.SendToAll<ScoreMessage>(MyMsgType.Score, msg); } public void OnScore(NetworkMessage netMsg) { … }
  • 34. COPYRIGHT 2014 @ UNITY TECHNOLOGIES NETWORKBEHAVIOUR MyScript -> NetworkBehaviour -> MonoBehaviour • Меньше порог входа • Генерация кода при компиляции • Не используется reflection в рантайме
  • 35. COPYRIGHT 2014 @ UNITY TECHNOLOGIES КОМПОНЕНТЫ: NETWORK MANAGER • Центральный компонент для конфигурации сетевого взаимодействия • Написан на HLAPI • Содержит базовую функциональность: • Управление без скриптинга • Game state management • Scene management • Spawning • Debugging
  • 36. COPYRIGHT 2014 @ UNITY TECHNOLOGIES КОМПОНЕНТЫ: NETWORK MANAGER public class MyNetManager : NetworkManager { public override void OnServerAddPlayer( NetworkConnection conn, short playerControllerId) { … } OnServerConnect(UConnection conn); OnServerDisconnect(UConnection conn); OnClientConnect(UConnection conn); OnClientDisconnect(UConnection conn); }
  • 37. COPYRIGHT 2014 @ UNITY TECHNOLOGIES КОМПОНЕНТЫ
  • 38. COPYRIGHT 2014 @ UNITY TECHNOLOGIES MATCHMAKING NetworkMatch <-> Relay Server (LLAPI) <-> Clients Обход закрытых сетей CreateMatch ListMatches JoinMatch DestroyMatch
  • 39. COPYRIGHT 2014 @ UNITY TECHNOLOGIES MATCHMAKING SetProgramAppID( … ) https://unet.unity3d.com/
  • 40. COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2014 @ UNITY TECHNOLOGIES UNITY В РОССИИ unity_ru unityrussia unity3dengine blogs.unity3d.com/ru Unity3DRU

Editor's Notes

  1. Привет, мол, мы Unity. Кто уже что-то делал на юнити? Кто давно хотел начать делать какую-то игру, но почему-то не задалось до сих пор?