Building a multiplayer game server
and keeping (most of) your hair


@OpherV
I.T.A.K.E Unconference May 2017







What if there was
a better way to play games?
realtime multiplayer game running in the browser
@opherv

Hi! I'm Opher

I'm a creative developer at Eko
http://lance.gg

anatomy of a game
@opherv

while (true)
{
processInput();
updateGameState();
render();
}

Input
0
1
2
3
4
5
6
7
render
game step
8
9
10
11
12
13
14
15
@opherv





peer-to-peer




Why do you even need a server?
Because your players suck

if cheating can happen,
it will happen
authoritative server

@opherv






authoritative server
Run game world
Receive input request
Validate input
Broadcast game state

Why
@opherv


Non-blocking Event I/O
@opherv

Running the same game code,
both on the server and the client
@opherv

open source
Thriving ecosystem with NPM
@opherv

Web dev == Game dev
@opherv

Browser/Server Communication
websockets
WebRTC*
@opherv

io.emit('myEvent',{ x: 15, y: 20, ammo: 20});
Server
socket.on('myEvent', function (data) {
console.log(data);
});
Client
14,951 km

299,792,458 m / s
Speed of Light
50 milliseconds
Bucharest -> Melbourne
Round Trip Time (RTT) > 100ms
@opherv



Bucharest
Melbourne
Request - 50ms
Reply - 50ms
LAG
Syncing the game world
Game Loop
Render Loop
@opherv

Broadcast Loop
Option 1

client step N


X: 200




client step M
X: 50
Interpolation
The client is in the past
Real Time Strategy
Role Playing Games




client side prediction



bending

Option 2: Extrapolation


30
31
32
33
34
35
36
37
38
39
30
31
32
33
34
35
36
37
38
39
Input
game state
extrapolated
steps
Building a multiplayer game server
and keeping (most of) your hair




Don't worry, here's a
link to a wig store
Building a multiplayer game server
and keeping (most of) your hair
Building a multiplayer game server
and keeping (most of) your hair
@opherv

@opherv

more info: http://lance.gg
@opherv


Free Stickers!
follow me @OpherV


Thanks!
@OpherV
opherv.com
opherv@gmail.com
Building a multiplayer game server and keeping (most of) your hair
By Opher Vishnia
Building a multiplayer game server and keeping (most of) your hair
- 2,976