Transcript Networking

Multiplayer Games and
Networking
Overview




Multiplayer Modes
Networking Fundamentals
Networking for Games
Networking for Unity
2
Early forms of Multiplayer:
Turn Based



Easier to implement
Puzzle / board game
Non-real time connection


Floppy Disks, Email
Database (Door Games)
3
Early forms of Multiplayer:
Real Time

Shared I/O

Input Devices



Shared Keyboard layout
Multiple Device Mapping
Display

Full Screen vs Split Screen
4
Multiplayer Modes:
Connectivity

Non Real-Time


Direct Link


Serial, USB, IrD, … (no hops)
Circuit Switched (phones)


(turn based)
Dedicated line with consistent
latency
Packet Switched


Internet
Shared Pipe
5
Multiplayer Modes:
now with Networking!

Difficulty based on Event Timing

Turn-Based


Any connection type
Real-Time


More data to sync
Latency sensitive
6
Networking:
When do we need it?

Single Player Games?


Leaderboards and trophies
Online data stores




(PS+, Steam Cloud)
Downloadable content
DRM
Multiplayer


“Portal 2 will
probably be Valve's
last game with an
isolated singleplayer experience” *
Most AAA titles moving toward multiplayer
* or at least, single player +
7
Networking
At a glance



Connection between multiple computers
Transmission of data
How do we design a system that can do….






Packet Length Conveyance
Acknowledgement Methodology
Error Checking / Correcting
Compression
Encryption
Packet Control
8
Protocol Stack:
Open System Interconnect
Sender
Receiver
Input Updates
State Updates
Application
Game Events
Application
Presentation
Game Packetization
Presentation
Session
Connection & Data Exchange
Session
Serialization
Buffering
Sockets
Transport
Transport
Network
Network
Network
Network
Data Link
Data Link
Data Link
Data Link
Physical
Physical
Physical
Physical
Router
TCP
UDP
IP
Ethernet (MAC)
Wired (C5, Cable)
Fiber Optics
Wireless
9
Physical Layer

Bandwidth



Latency



Width of data pipe
Measured in bps = bits per second
Travel time from point A to B
Measured in Milliseconds
The Medium

Fiber, FireWire, IrD , CDMA & other cell
Table: Max Bandwidth Specifications
Speed
(bps)
Serial
USB
1&2
ISDN
DSL
20K
12M
480M
128k
1.5M down
896K up
Cable
LAN
10/100/1G
BaseT
Wireless
802.11
a/b/g
Power
Line
T1
3M down
256K up
10M
100M
1G
b=11M
a,g=54M
14M
1.5M
10
Data Link Layer


Serializes data to/from physical layer
Network Interface Card


Ethernet
MAC Address
11
Network Layer

Packet Routing

Hops






Routers, Hubs, Switches
Internet Protocol (IP)



No connection
Guarantees sending
Doesn’t guarantee receiving
Non-deterministic path
Contains Source & Destination IP Address
IPv4 vs IPv6
Unicast, Broadcast, Loop back
12
Network Layer:
Domain Name Service

Domain Name Service




Converts text name to IP address
Must contact one or more DNS servers to resolve
Local cache resolution possible
Game Tips


Store local game cache to use when DNS out of
order.
DNS resolution often slow, use cache for same
day resolution.
13
Transport Layer

Manage data deliver between endpoints



TCP and UDP used with IP


Error recovery
Data flow
Contains Source and Destination Port
Port + IP = Net Address


Port Range = 0-64k
Well known Ports 0-1k

http, ftp, ssh, …
14
Transport Layer:
Transmission Control Protocol

Connection based





Guaranteed, in order delivery



ack, nack, resend
Flow Control
Easy to use


Keep Alive
Handles breaking up data into correct size
Packet window
Packet Coalescense
Reading and writing, just like a file
Requires more header data
15
Transport Layer:
User Datagram Protocol


No connection
No guarantees

May not arrive





May not arrive in order
May arrive multiple times
Source not verified
Datagram


TTL (time to live) – hop count limit
Sent in packets exactly as user sends them
Capable of broadcasting
16
Transport Layer:
TCP vs UDP

Which to use?


TCP


Depends on the game!
Turn based games, leader boards
UDP



More common, especially for time sensitive games
Add TCP features as needed
Unity uses UDP, with features for reliable, in order
transmission
17
Session Layer

Manages Connections between Apps




Connect
Terminate
Data Exchange
Socket API live at this layer


Cross platform
Cross language
18
Session Layer:
Sockets

Based on File I/O




File Descriptors
Open/Close
Read/Write
Modes

Blocking


Use in separate thread
Non-blocking

Poll the socket periodically
19
Presentation Layer

Prepares App Data for Transmission



Compression
Encryption
Endian Order



0b1000 vs 0b0001
Serialize
Buffering



Packet Coalescense
Increased Latency
Store local data and wait
20
Application Layer





Interfaces with user
Handles game logic
Transmits the right data
… at the right time…
…to the right person
21
Protocol Stack:
Open System Interconnect
Your Game Logic
Application Set
Sender
Receiver
Game Engine
Input Updates
State Updates
Application
Game Events
Application
Presentation
Game Packetization
Presentation
Session
Connection & Data Exchange
Session
Serialization
Buffering
Sockets
Transport
Transport
Network
Network
Network
Network
Data Link
Data Link
Data Link
Data Link
Physical
Physical
Physical
Physical
Router
TCP
UDP
IP
Ethernet (MAC)
Wired (C5, Cable)
Fiber Optics
Wireless
22
Networking for Games






Who are we communication with?
What data needs to be sent?
How often do we need to send it?
How do we protect that data?
How do we handle conflicts?
(Looking at non-trivial real time
applications)
23
Connection Models

Broadcast


Peer to Peer


Good for player discovery on LANs
Good for 2 player games
Client / Server


Good for 2+ player games
Dedicated lobby server great for player
discovery
24
Peer to Peer vs. Client/Server
P1
P1
P4
P2
P3
P2
2 players
1 connection
P3
3 players
3 connections
Broadcast
4 players
6 connections
Peer/Peer
N -1
Connections
0
åx
x =1
Send
Receive
P2
P5
P2
P1
N = Number of players
P1
P3
P4
5 players
10 connections
Client/Server
Client = 1
Server = N
Broadcast
Peer/Peer
Client/Server
1
N-1
Client = 1
Server = N
N-1
N-1
Client = 1
Server = N
25
Client / Server Architecture

Clients connect to Server




Server handles all communication between clients
“UDP Connection”
Small high frequency packets (20-30 /sec)
Packet based comm results in new challenges

Packet loss


Especially if client asks for higher rate then their
connection can handle
Inherent latency


Bandwidth + Latency => Lag => Player frustration
Varies from client to client
26
Client / Server:
Authoritative vs. Non-Authoritative

Authoritative





Non-Authoritative




Clients send inputs to server
Server does all input processing, world simulation, application of data rules
Server tells client what happened
Client only collects data and renders results!
Clients process user data, applies logic, updates the server
Clients have control of their specific objects
Server acts as a relay
Can you trust clients?
27
Client / Server:
Communication Methods

Remote Procedure Calls

Invoke functions on another machine

Client to server
 Server to a client
 Server to a set (possibly all) clients
Used for infrequent actions and events



Loading levels
State of infrequently changed object
28
Client / Server:
Communication Methods

Update Models

Input Reflection





Authoritative server mode
Slightly process input data
People notice delay of 0.1s
Synchronous (wait for data from everyone)
Asynchronous (predict input)




Not appropriate for input reflection
Low and consistent latency
Seed rand() with same seed on all computers
Don’t use system time for calculations
29
Client / Server:
Communication Methods

Update Models

State Reflection



Both server modes
Update position, rotation, velocity….
Larger packets


Prioritize
Server Distributed Object System
30
Client / Server:
Server Distributed Object System


Relevance Sets
Object Views

Objects consist of three major groups of data

Visual & Display


Game logic & AI


always
Seldom
Housekeeping

never
31
Client / Server:
Server Distributed Object System

Synchronization


The “art” of network programming
Dead Reckoning


AI Assist



Works fine until drastic change
Help transition between waypoints
Might cause slight synch problems
Arbitration



Weighted decision to correct outcome
Server is dictator
Client might delay critical event while waiting
32
Client / Server:
Sync Optimizations Techniques

Solutions (Valve’s Source Engine)




Delta compression
Interpolation
Prediction
Lag compensation
33
Client / Server:
Sync Optimizations Techniques

Delta compression




Only send newly updated information
Approach used for other types of streaming data
Acknowledgement numbers used to keep track of
flow
Client can request full snapshot when problems
occur
34
Client / Server:
Sync Optimizations Techniques

Interpolation


Snapshot updating results in jerky jittery graphics
Interpolate between current snapshot and
previous



Client runs 100 ms behind
Will work with one lost packet
Two lost packets will cause errors
35
Client / Server:
Sync Optimizations Techniques

Prediction




Player will notice 100 ms delay in own input
Client side input prediction
Client predicts where player should be using same
logic as server
When snapshot comes they are compared


May be different since server has more information than
client
Client must correct

Smoothing used to make correction less noticeable
36
Client / Server:
Sync Optimizations Techniques

Lag compensation




When my shot information
arrives at server, enemy has
moved
Server compensates
Maintains history of all player
positions
Looks back in time for player
position at time of shot
37
Cheating

Why not client do hit detection?
 Client can’t be trusted
 Cheat proxy
 “man in the middle”


Valve’s-Anti-Cheat
Blizzard’s Warden
38
Cheating


Material hacks (wallhacking)
Aim and trigger bots

Color based. Old versions (Quake etc.)
replace models with colored ones, used
algorithm to scan screen.




Can end up aiming at other stuff in the scene
Client hook versions use information on the
player positions
Graphics Driver versions. Get 3D values from
renderer and convert to mouse coordinates
Turning off the server 
39
Security

Console network stacks


provide additional
security functions
Intel Fair Online Gaming

Hardware, firmware, and
game software on client
40
Security

Encryption



Execution Cryptopgraphy


Preserve integrity of network traffic
Efficiency vs Security
Prevent reverse engineering to edit game data
Copy Protection



DRM
Code sheets
Active internet connection
41
Networking for Unity



This is not a substitute for reading
Unity’s documentation!
UDP based
Client / Server


No dedicated server software
Authoritative vs. Non-Authoritative
42
Networking for Unity

Network Views




Required component for transmitting data
Not same as an “Object View”, but
required to create them in code
RPC
State Synchronization



Reliable Delta Compressed
Unreliable
Tutorials for prediction, lag
43
Networking for Unity:
3rd Party MMEs

Massively Multiplayer Engines

Photo, SmartFox, Electroserver, …

Higher scalability
API for Unity
Re-implementing Object View structures

Not recommended for class project


44
Networking in your game

Read Unity’s documentation first!



Check out the tutorials



Overview
API for networking classes
Unity’s networking tutorials
Other’s available online ($$$?)
Get something working

Then test the different options
45
References:
Networking Overview

Source Engine Overview



Relevance Sets / Object Views


http://developer.valvesoftware.com/wiki/Source_Multiplayer_Netw
orking
Overview, Delta Compression, Interpolation, etc.
http://www.gamasutra.com/resource_guide/20020916/lambright_
01.htm
Glenn Fiedler Overview


http://gafferongames.com/networking-for-game-programmers/
Includes articles on cross-platforms low level implementation (stuff
that Unity already does for you)
46
References:
Unity

Documentation


http://unity3d.com/support/documentation/Manual/Networked%20
Multiplayer.html
Example / Tutorials

http://unity3d.com/support/resources/exampleprojects/networking-example.html
47
References:
NAT Punch-through

Overview


http://www.mindcontrol.org/~hplus/nat-punch.html
Unity Master Server

http://unity3d.com/support/documentation/Components/netMasterServer.html
48