| |
| |
Introduction | |
| |
| |
| |
The Challenge of Game Networking | |
| |
| |
Types of Networking | |
| |
| |
Dial-Up and PPP Networking | |
| |
| |
Local Area Networking | |
| |
| |
The Internet and World Wide Web | |
| |
| |
Wireless LAN | |
| |
| |
Cellular Technology | |
| |
| |
Network-Gaming Models | |
| |
| |
The Client/Server Model | |
| |
| |
Dynamic (Real-Time) Network Gaming | |
| |
| |
Connectionless Network Gaming | |
| |
| |
Data Exchange in Network Gaming | |
| |
| |
Security | |
| |
| |
Split-Information Model | |
| |
| |
Balancing Data Exchange | |
| |
| |
Key Decisions | |
| |
| |
| |
Types of Network Games | |
| |
| |
Multi-User Dungeon Games | |
| |
| |
First Principles | |
| |
| |
Text-Based MUDs | |
| |
| |
Possibilities Beyond Text | |
| |
| |
Arcade Games | |
| |
| |
Gaming Model | |
| |
| |
Security | |
| |
| |
Data Exchange | |
| |
| |
Massively Multi-Player Online Role-Playing Games (MMORPGs) | |
| |
| |
Web and "Through the Browser" Games | |
| |
| |
Text-Based Through-the-Browser Games | |
| |
| |
Flash-Based Web Games | |
| |
| |
Alternate-Reality Web Games | |
| |
| |
From Theory to Development | |
| |
| |
References | |
| |
| |
| |
Putting Game Networking Technology to Work | |
| |
| |
Components of Network Gaming | |
| |
| |
Communication | |
| |
| |
Interaction | |
| |
| |
The Platform | |
| |
| |
Personal Computer | |
| |
| |
Console | |
| |
| |
Handheld Device | |
| |
| |
Multi-Platform | |
| |
| |
Complete System Architecture | |
| |
| |
The Front-End Interface | |
| |
| |
The Middleware | |
| |
| |
The Back-End | |
| |
| |
The Network | |
| |
| |
| |
A Comparison of Network Game Types | |
| |
| |
Categorizing Multi-Player Network Games | |
| |
| |
Pseudo Single-Player Online Games | |
| |
| |
One-on-One Games | |
| |
| |
Team-Based Multi-Player Games | |
| |
| |
Map-Based Multi-Player Games | |
| |
| |
Real Time-Strategy Games | |
| |
| |
Massively Multi-Player Online (MMO) Games | |
| |
| |
Massively Multi-Player Online Role-Playing Games (MMORPGs) | |
| |
| |
Comparing Network Game Types | |
| |
| |
Turn-by-Turn Games Versus Real-Time Action Games | |
| |
| |
Multi-User Dungeon (MUD) Games Versus Real Time-Action Games | |
| |
| |
NPC Combat Games Versus Pure Multi-Player | |
| |
| |
Player Combat Games Versus NPC Combat Games | |
| |
| |
In-Browser Games Versus Standalone Client Games | |
| |
| |
Design Principles | |
| |
| |
From Single Player to Multi-Player | |
| |
| |
Adding Network Support | |
| |
| |
Adding Multi-Player Support to the Design | |
| |
| |
Testing Through Design | |
| |
| |
Choosing the Technology for Your Game | |
| |
| |
References | |
| |
| |
| |
Creating Turn-by-Turn Network Games | |
| |
| |
Turn by Turn Defined | |
| |
| |
The Game System | |
| |
| |
Player Customization | |
| |
| |
Case Study: Project Rockstar | |
| |
| |
The Premise | |
| |
| |
Setup | |
| |
| |
Playing the Game | |
| |
| |
Solutions to Possible Problems | |
| |
| |
Alternative Approaches | |
| |
| |
The Fictional PlanetStar RPG | |
| |
| |
The Game Environment | |
| |
| |
Profile, Ship Design, and Customization | |
| |
| |
Update Cycles | |
| |
| |
Pre-Programmed Combat | |
| |
| |
Revenue Model | |
| |
| |
In-Game Currency | |
| |
| |
Advertising Networks | |
| |
| |
Direct Sponsorship | |
| |
| |
Commercializing a Turn-by-Turn Game | |
| |
| |
References | |
| |
| |
| |
Creating Arcade and Massively Multi-Player Online Games (Real-Time) | |
| |
| |
Game Models Revisited | |
| |
| |
MMORPGs | |
| |
| |
Arcade Action Games | |
| |
| |
Anatomy of a Game Model | |
| |
| |
Client Software Structures | |
| |
| |
Building Server Solutions | |
| |
| |
End-to-End Networking Using IP | |
| |
| |
Revenue Models | |
| |
| |
The Direct Revenue Model | |
| |
| |
The Indirect Revenue Model | |
| |
| |
Merging Real-Time Gaming with the Internet | |
| |
| |
References | |
| |
| |
| |
Improving Network Communications | |
| |
| |
Network Communication Issues | |
| |
| |
Packet Loss | |
| |
| |
Network Latency | |
| |
| |
Solutions to Network Latency Problems | |
| |
| |
Networking Topography | |
| |
| |
Design-Based Workarounds | |
| |
| |
Minimizing Exposure to Latency | |
| |
| |
The Principle of Minimum Data in Transit | |
| |
| |
Basic Data Reduction | |
| |
| |
Using Compression | |
| |
| |
Using Game Environment Prediction | |
| |
| |
Data Loss and Dropped Connections | |
| |
| |
Combating Data Loss | |
| |
| |
Combating Dropped Connections | |
| |
| |
References | |
| |
| |
| |
Removing the Cheating Elements | |
| |
| |
What Is Cheating? | |
| |
| |
What Are the Risks? | |
| |
| |
Genre-Specific Risks | |
| |
| |
Global Risks | |
| |
| |
What Are the Solutions? | |
| |
| |
Detection Approaches | |
| |
| |
Prevention Versus Detection | |
| |
| |
Action Versus Inaction | |
| |
| |
Hacks, Cracks, and Cheat Codes | |
| |
| |
How Hacks and Cracks Happen | |
| |
| |
Types of Cheats | |
| |
| |
Bots and Automated Playing | |
| |
| |
Communication Layer Cheats | |
| |
| |
Data-in-Transit Cheats | |
| |
| |
Lookahead and Update Dropping | |
| |
| |
Intentional Disconnections | |
| |
| |
Solutions to Communication Layer Cheats | |
| |
| |
Logic Layer Solutions | |
| |
| |
Code Obfuscation in the Logic Layer | |
| |
| |
Identifying Bots | |
| |
| |
References | |
| |
| |
| |
Testing Network Games | |
| |
| |
Principles of Testing | |
| |
| |
The Testing Process | |
| |
| |
Components | |
| |
| |
Types of Testing | |
| |
| |
Strategy | |
| |
| |
Testing the Network Layer | |
| |
| |
Simulating Network Issues | |
| |
| |
Load Testing | |
| |
| |
Sustained-Load Testing | |
| |
| |
Peak-Traffic Testing | |
| |
| |
Testing the Logic Layer | |
| |
| |
Simulating Player Interaction | |
| |
| |
Stress-Testing the Middleware | |
| |
| |
Stress-Testing the Database | |
| |
| |
Testing Non-Interactive Games | |
| |
| |
Testing the Client Software | |
| |
| |
Re-Using Prediction Code in Testing | |
| |
| |
Prediction Is Al in Practice | |
| |
| |
An Overview of Testing Options | |
| |
| |
| |
Network Programming Primer | |
| |
| |
An Introduction to Socket Programming | |
| |
| |
Types of Sockets | |
| |
| |
Protocol Layers | |
| |
| |
Server-Side Sockets | |
| |
| |
Client-Side Sockets | |
| |
| |
Using Polling | |
| |
| |
Server-Side Polling | |
| |
| |
Client-Side Polling | |
| |
| |
Sequential Processing Techniques | |
| |
| |
Socket Polling Example | |
| |
| |
Enhancements to Basic Round Robin | |
| |
| |
Socket Programming | |
| |
| |
Data Types | |
| |
| |
Sockets and Ports | |
| |
| |
Sending and Receiving Data | |
| |
| |
Client Example | |
| |
| |
Server Example | |
| |
| |
Open-Source Code Libraries | |
| |
| |
MUD Libraries | |
| |
| |
Action Games | |
| |
| |
Web Gaming | |
| |
| |
Final Thoughts | |
| |
| |
References | |
| |
| |
Index | |