Containerize Your Game Server
for the Best Multiplayer
Experience for the Players
Raymond Arifianto
VP of Tech, AccelByte.
@RayArifianto
Mark Mandel
Developer Advocate, Google Cloud for Games.
@Neurotic
Containers
can help you solve
Game Server workloads
What is a
Game Server
for?
Fast paced, realtime, multiplayer, games
where latency and performances are
critical parts of the Game.
What is a Game Server?
Reasons to use
Game Servers
Better Player Connectivity
Fairness
Control over System Resources
Prerequisites for Cross-Play
Challenges in managing
Game Servers
Requires Global Footprint
Latency requirements mean that Game
Servers must be deployed wherever your
players are.
Slow start times
Game Servers can need to load GBs of data
a start, and can take anywhere up to a
minute before they are ready.
In Memory, Persistent Data
Once players connect to a Game Server,
there is persistent, in memory data.
This means Game Servers cannot be shut
down while a Game Session is in progress.
Managing Thousands of
Game Servers Does not bring you joy
Deploy Game Server to Bare Metal
● Multi-Region to be
close to the Players
Need more
Capacity
NOW!
Deploy Game Server to
Cloud VM too
Need Rolling
Deploy New
Version!
● Separate management
and deployment toolset
● Different Game Server
behavior on target
machine/VM
Lower cost with autoscaling
Lower
the cost!
● Rolling Deploy
● Autoscaling
● Game Server Life-cycle
management
● Monitoring
● Etc
Managing
Game Servers
with Containers
can bring Joy
Benefits of Docker
Containers
Lightweight, Portable, Self-Sufficient
Predictable, Immutable
Flexibility
Standard tooling and Huge Ecosystem
Standard Distributed System Patterns
- E.g. Sidecars
1. Build Development Server -serverconfig=Development -server
2. Package Project > Linux
3. Create Docker Image
a. Dockerfile
b. Entrypoint.sh for parameter
4. Push to Docker Registry
Sample
Containerizing Unreal Engine 4 Game Server
Sample
Containerizing Unreal Engine 4 Game Server
DOCKERFILE
FROM ubuntu:18.04
RUN apt-get update && 
apt-get install -y ca-certificates && 
rm -rf /var/lib/apt/lists/*
COPY ./assets ./bin ./scripts ./ds-server/
WORKDIR ds-server
COPY ./docker-entrypoint.sh .
RUN chmod +x docker-entrypoint.sh && 
chown -R 1000:1000 *
USER 1000
ENTRYPOINT ["/bin/sh", "./docker-entrypoint.sh"]
How to Orchestrate Game Servers?
Agones is designed as a
batteries-included, open-source,
dedicated game server hosting and
scaling project built on top of
Kubernetes, with the flexibility you
need to tailor it to the needs of your
multiplayer game.
Demo
● Migrating existing Controller logic might be challenging
○ e.g. Game Server manages multiple processes within
pod that scales independently
● Highly tuned to specific hardware chip
● Game Server only runs on Windows
What’s harder with a
game server in a container?
Conclusion
Learn More & Resources
Raymond Arifianto
accelbyte.io
accelbyte.io/armada/
Mark Mandel
agones.dev
cloud.google.com/game-servers
@RayArifianto @Neurotic

Containerize Your Game Server for the Best Multiplayer Experience

  • 1.
    Containerize Your GameServer for the Best Multiplayer Experience for the Players
  • 2.
    Raymond Arifianto VP ofTech, AccelByte. @RayArifianto Mark Mandel Developer Advocate, Google Cloud for Games. @Neurotic
  • 3.
    Containers can help yousolve Game Server workloads
  • 4.
    What is a GameServer for? Fast paced, realtime, multiplayer, games where latency and performances are critical parts of the Game.
  • 5.
    What is aGame Server?
  • 6.
    Reasons to use GameServers Better Player Connectivity Fairness Control over System Resources Prerequisites for Cross-Play
  • 7.
    Challenges in managing GameServers Requires Global Footprint Latency requirements mean that Game Servers must be deployed wherever your players are. Slow start times Game Servers can need to load GBs of data a start, and can take anywhere up to a minute before they are ready. In Memory, Persistent Data Once players connect to a Game Server, there is persistent, in memory data. This means Game Servers cannot be shut down while a Game Session is in progress.
  • 8.
    Managing Thousands of GameServers Does not bring you joy
  • 9.
    Deploy Game Serverto Bare Metal ● Multi-Region to be close to the Players Need more Capacity NOW!
  • 10.
    Deploy Game Serverto Cloud VM too Need Rolling Deploy New Version! ● Separate management and deployment toolset ● Different Game Server behavior on target machine/VM
  • 11.
    Lower cost withautoscaling Lower the cost! ● Rolling Deploy ● Autoscaling ● Game Server Life-cycle management ● Monitoring ● Etc
  • 12.
  • 13.
    Benefits of Docker Containers Lightweight,Portable, Self-Sufficient Predictable, Immutable Flexibility Standard tooling and Huge Ecosystem Standard Distributed System Patterns - E.g. Sidecars
  • 14.
    1. Build DevelopmentServer -serverconfig=Development -server 2. Package Project > Linux 3. Create Docker Image a. Dockerfile b. Entrypoint.sh for parameter 4. Push to Docker Registry Sample Containerizing Unreal Engine 4 Game Server
  • 15.
    Sample Containerizing Unreal Engine4 Game Server DOCKERFILE FROM ubuntu:18.04 RUN apt-get update && apt-get install -y ca-certificates && rm -rf /var/lib/apt/lists/* COPY ./assets ./bin ./scripts ./ds-server/ WORKDIR ds-server COPY ./docker-entrypoint.sh . RUN chmod +x docker-entrypoint.sh && chown -R 1000:1000 * USER 1000 ENTRYPOINT ["/bin/sh", "./docker-entrypoint.sh"]
  • 16.
    How to OrchestrateGame Servers? Agones is designed as a batteries-included, open-source, dedicated game server hosting and scaling project built on top of Kubernetes, with the flexibility you need to tailor it to the needs of your multiplayer game.
  • 17.
  • 18.
    ● Migrating existingController logic might be challenging ○ e.g. Game Server manages multiple processes within pod that scales independently ● Highly tuned to specific hardware chip ● Game Server only runs on Windows What’s harder with a game server in a container?
  • 19.
  • 20.
    Learn More &Resources Raymond Arifianto accelbyte.io accelbyte.io/armada/ Mark Mandel agones.dev cloud.google.com/game-servers @RayArifianto @Neurotic