HAPPY BOOKSGIVING
Use code BOOKSGIVING during checkout to save 40%-55% on books and eBooks. Shop now.
Register your product to gain access to bonus material or receive a coupon.
This eBook includes the following formats, accessible from your Account page after purchase:
EPUB The open industry format known for its reflowable content and usability on supported mobile devices.
PDF The popular standard, used most often with the free Acrobat® Reader® software.
This eBook requires no passwords or activation to read. We customize your eBook by discreetly watermarking it with your name, making it uniquely yours.
The Practical Guide to Building Reliable Networked Multiplayer Games
Networked multiplayer games are a multibillion dollar business: some games now attract tens of millions of players. In this practical, code-rich guide, Joshua Glazer and Sanjay Madhav guide you through every aspect of engineering them. Drawing on their immense experience as both game developers and instructors, the authors lead you through building a robust multiplayer architecture, and creating every engine-level system. You’ll learn through in-depth working code examples for two complete games: an action game and a real time strategy (RTS) game.
First, Madhav and Glazer review the essentials of networking and network programming from the standpoint of game developers. Next, they walk through managing game data transmission, updating game objects across the network, and organizing the devices that join your game. You’ll learn how to ensure reliable performance despite the Internet’s inherent inconsistencies, and how to design game code for maximum security and scalability. The authors conclude by addressing two increasingly crucial issues: incorporating gamer services and hosting your games in the cloud.
This guide’s content has been extensively tested through the authors’ multiplayer game programming courses at USC. It is equally valuable both to students and to working game programmers moving into networked games.
Coverage includes
About the Website C++ source code for all examples is available at github.com/MultiplayerBook. Instructors will also find a full set of PowerPoint slides and a sample syllabus.
Chapter 1: Overview of Networked Games 1
A Brief History of Multiplayer Games 2
Starsiege: Tribes 5
Age of Empires 10
Summary 13
Review Questions 14
Additional Readings 14
Chapter 2: The Internet 15
Origins: Packet Switching 16
The TCP/IP Layer Cake 17
The Physical Layer 19
The Link Layer 19
The Network Layer 23
The Transport Layer 39
The Application Layer 52
NAT 53
Summary 60
Review Questions 61
Additional Readings 62
Chapter 3: Berkeley Sockets 65
Creating Sockets 66
API Operating System Differences 68
Socket Address 71
UDP Sockets 79
TCP Sockets 83
Blocking and Non-Blocking I/O 88
Additional Socket Options 96
Summary 98
Review Questions 98
Additional Readings 99
Chapter 4: Object Serialization 101
The Need for Serialization 102
Streams 105
Referenced Data 119
Compression 124
Maintainability 130
Summary 136
Review Questions 136
Additional Readings 137
Chapter 5: Object Replication 139
The State of the World 140
Replicating an Object 140
Naïve World State Replication 148
Changes in World State 152
RPCs as Serialized Objects 159
Custom Solutions 162
Summary 163
Review Questions 163
Additional Readings 164
Chapter 6: Network Topologies and Sample Games 165
Network Topologies 166
Implementing Client-Server 170
Implementing Peer-to-Peer 182
Summary 196
Review Questions 197
Additional Reading 197
Chapter 7: Latency, Jitter, and Reliability 199
Latency 200
Jitter 204
Packet Loss 206
Reliability: TCP or UDP? 207
Packet Delivery Notification 209
Object Replication Reliability 221
Simulating Real-World Conditions 228
Summary 230
Review Questions 231
Additional Readings 232
Chapter 8: Improved Latency Handling 233
The Dumb Terminal Client 234
Client Side Interpolation 236
Client Side Prediction 238
Server Side Rewind 248
Summary 249
Review Questions 250
Additional Readings 251
Chapter 9: Scalability 253
Object Scope and Relevancy 254
Server Partitioning 260
Instancing 262
Prioritization and Frequency 263
Summary 263
Review Questions 264
Additional Readings 264
Chapter 10: Security 265
Packet Sniffing 266
Input Validation 270
Software Cheat Detection 271
Securing the Server 274
Summary 277
Review Questions 278
Additional Readings 278
Chapter 11: Real-World Engines 279
Unreal Engine 4 280
Unity 284
Summary 287
Review Questions 288
Additional Readings 288
Chapter 12: Gamer Services 289
Choosing a Gamer Service 290
Basic Setup 290
Lobbies and Matchmaking 294
Networking 298
Player Statistics 300
Player Achievements 305
Leaderboards 307
Other Services 308
Summary 309
Review Questions 310
Additional Readings 310
Chapter 13: Cloud Hosting Dedicated Servers 311
To Host or Not To Host 312
Tools of the Trade 313
Overview and Terminology 315
Local Server Process Manager 318
Virtual Machine Manager 324
Summary 333
Review Questions 334
Additional Readings 334
Appendix A: A Modern C++ Primer 337
C++11 338
References 339
Templates 341
Smart Pointers 343
STL Containers 347
Iterators 350
Additional Readings 351
Index 353