About the Author |
|
xi | |
About the Technical Reviewer |
|
xiii | |
|
Chapter 1 A Brief Introduction |
|
|
1 | (6) |
|
|
2 | (2) |
|
|
2 | (1) |
|
|
3 | (1) |
|
The Options of Multiplayer in Unity |
|
|
4 | (1) |
|
|
5 | (1) |
|
Prerequisites and Resources |
|
|
5 | (1) |
|
|
6 | (1) |
|
Chapter 2 The Messenger Pigeon, Packets, and a Trip Around the World |
|
|
7 | (60) |
|
Introduction to Networking |
|
|
7 | (2) |
|
A Brief History of Networking |
|
|
8 | (1) |
|
|
9 | (4) |
|
|
10 | (2) |
|
|
12 | (1) |
|
How Packets of Data Get Transported Around the World |
|
|
13 | (34) |
|
|
13 | (2) |
|
IPv4 -- Internet Protocol Version 4 |
|
|
15 | (3) |
|
ARP -- Address Resolution Protocol |
|
|
18 | (1) |
|
DNS -- Domain Name System |
|
|
19 | (1) |
|
How a Headshot Travels Around the World |
|
|
20 | (3) |
|
The Importance of Keeping Your Packets Small |
|
|
23 | (4) |
|
|
27 | (8) |
|
|
35 | (1) |
|
DHCP -- Dynamic Host Configuration Protocol |
|
|
36 | (4) |
|
NAT -- Native Address Translation |
|
|
40 | (2) |
|
|
42 | (1) |
|
|
43 | (4) |
|
|
47 | (5) |
|
|
47 | (1) |
|
Kinds of Attacks and How to Mitigate Them |
|
|
48 | (4) |
|
|
52 | (6) |
|
|
52 | (6) |
|
|
58 | (1) |
|
|
59 | (8) |
|
Chapter 3 A Hall of Mirrors |
|
|
67 | (32) |
|
|
67 | (1) |
|
|
68 | (9) |
|
Comparing Transport Layers |
|
|
69 | (2) |
|
Additional Transport Component Logic |
|
|
71 | (4) |
|
|
75 | (2) |
|
The Client, the Server, and the Host |
|
|
77 | (3) |
|
|
78 | (1) |
|
|
78 | (1) |
|
|
79 | (1) |
|
|
80 | (14) |
|
|
82 | (1) |
|
|
83 | (1) |
|
|
83 | (1) |
|
Authentication -- Network Authenticator |
|
|
84 | (9) |
|
|
93 | (1) |
|
Registered Spawnable Prefabs |
|
|
94 | (1) |
|
|
94 | (1) |
|
|
95 | (4) |
|
Chapter 4 The Chain of Command |
|
|
99 | (48) |
|
|
99 | (1) |
|
|
100 | (11) |
|
Input vs. State-Based Architecture |
|
|
101 | (2) |
|
Deterministic vs. Indeterministic Architecture |
|
|
103 | (1) |
|
|
104 | (4) |
|
|
108 | (1) |
|
Client-Server Architecture |
|
|
108 | (3) |
|
Understanding the Chain of Command |
|
|
111 | (26) |
|
|
113 | (2) |
|
|
115 | (2) |
|
Synchronization -- Properties |
|
|
117 | (10) |
|
Synchronization -- Components |
|
|
127 | (6) |
|
|
133 | (3) |
|
|
136 | (1) |
|
|
137 | (3) |
|
Registering Prefabs During Runtime |
|
|
140 | (1) |
|
|
140 | (1) |
|
|
141 | (4) |
|
|
145 | (1) |
|
Creating Our First Multiplayer Game |
|
|
145 | (2) |
|
|
146 | (1) |
|
Chapter 5 The Memory of a Goldfish |
|
|
147 | (24) |
|
What Is Data Persistence, and Why Is It Important? |
|
|
147 | (3) |
|
Data Persistence Using Player Prefs |
|
|
147 | (2) |
|
Data Persistence for Large-Scale Multiplayer Games |
|
|
149 | (1) |
|
What Are Database Engines? |
|
|
150 | (4) |
|
Relational vs. Non-relational Databases |
|
|
150 | (4) |
|
|
154 | (15) |
|
Installing the AWS DotNet API |
|
|
155 | (1) |
|
Configuring AWS DotNet API |
|
|
155 | (2) |
|
Connecting to the Database from Your Game Server |
|
|
157 | (1) |
|
|
158 | (3) |
|
|
161 | (4) |
|
|
165 | (2) |
|
|
167 | (2) |
|
Serving Content to Your Players |
|
|
169 | (1) |
|
Some Closing Notes for AWS API |
|
|
169 | (2) |
|
Chapter 6 Scaling Up, A Lot |
|
|
171 | (24) |
|
|
172 | (3) |
|
How Among Us Became a Part of Us |
|
|
172 | (2) |
|
|
174 | (1) |
|
|
175 | (4) |
|
|
176 | (1) |
|
Dedicated Hosting/Bare-Metal |
|
|
177 | (1) |
|
So, What Is the Best Option for Hosting Then? |
|
|
178 | (1) |
|
Using Cloud Services to Host Your Game Servers |
|
|
179 | (15) |
|
AWS -- Amazon Web Services |
|
|
180 | (7) |
|
|
187 | (3) |
|
|
190 | (3) |
|
|
193 | (1) |
|
Stress Testing, Stress Clients, and Market Research |
|
|
194 | (1) |
|
Chapter 7 Insights from the Masters |
|
|
195 | (8) |
|
Michael "vis2k" W. -- Mirror Networking |
|
|
195 | (4) |
|
Tell Me a Bit About Yourself and Where You Come From |
|
|
195 | (2) |
|
What Are Some of the Biggest Networking-Related Challenges That You and Your Team, or Clients, Have Faced While Shipping Multiplayer Games? |
|
|
197 | (1) |
|
How Did You Overcome These Challenges? |
|
|
197 | (1) |
|
What Would You Say Is Important? |
|
|
198 | (1) |
|
How Much Value Per Player in USD Is a Good Target? |
|
|
198 | (1) |
|
What Is Your Preferred Cloud Infrastructure Provider for Server Hosting? |
|
|
198 | (1) |
|
What Is the Most Crucial Piece of Advice You Could Give to Someone Learning Multiplayer Game Development? |
|
|
198 | (1) |
|
Do You Have Any Other Advice That You'd Like to Include for My Readers? |
|
|
199 | (1) |
|
Do You Want to Thank Anyone? |
|
|
199 | (1) |
|
Curt -- Senior Solutions Architect |
|
|
199 | (4) |
|
Tell Me a Bit About Yourself and Where You Come From |
|
|
199 | (1) |
|
What Are Some of the Biggest Networking-Related Challenges That You and Your Team, or Clients, Have Faced While Shipping Multiplayer Games? |
|
|
200 | (1) |
|
How Did You Overcome These Challenges? |
|
|
201 | (1) |
|
What Would You Say Is Important? |
|
|
201 | (1) |
|
What Is More Important in Multiplayer-Level Design? Balance or Map Fun Factor? |
|
|
201 | (1) |
|
How Much Value Per Player in USD Is a Good Target? |
|
|
201 | (1) |
|
How Much Should You Be Spending on Cloud Infrastructure as a Percentage of Your Budget? |
|
|
202 | (1) |
|
What Is Your Preferred Cloud Infrastructure Provider for Databases? |
|
|
202 | (1) |
|
What Is Your Preferred Cloud Infrastructure Provider for Server Hosting? |
|
|
202 | (1) |
|
What Is the Most Crucial Piece of Advice You Could Give to Someone Learning Multiplayer Game Development? |
|
|
202 | (1) |
|
Chapter 8 Challenge What You Know |
|
|
203 | (26) |
|
Beginner Challenges -- Core Multiplayer Functionality |
|
|
203 | (9) |
|
Challenge #1 Multiplayer 2D Table Tennis |
|
|
204 | (4) |
|
Challenge #2 Top-Down Shooter Prototype |
|
|
208 | (4) |
|
Intermediate Challenges -- User Data Persistence |
|
|
212 | (3) |
|
Challenge #3 Chat Room App with a User Message History |
|
|
212 | (3) |
|
Advanced Challenges -- World Persistence |
|
|
215 | (14) |
|
Challenge #4 Farming Mechanics with World Persistence |
|
|
216 | (5) |
|
|
221 | (8) |
|
Chapter 9 Where To Now? Conclusion |
|
|
229 | (2) |
|
|
229 | (2) |
Index |
|
231 | |