North Bay Multimedia Association
Game Developers SIG
Tuesday 20 May 1997
Show and Tell from the CGDC
Online and multiplayer games seemed to be a major theme at this year's CGDC (or maybe I just got that impression by concentrating on those subjects this year). Some of the foundational lessons seemed to be repeated by more speakers than last year.
- The technical challenges of online multiplayer gaming seemed concentrated around shooting games in a three-dimensional world.
- Constraints of the Internet environment.
- For most users, the slowest part of the link is their 14,400 baud or 28,800 baud connection. This places a strict limit on how much data can be exchanged per unit of time, regardless of other factors.
- Latency means the time delay for the first byte in a packet to be received and available. For a message to be sent across the USA and acknowledged takes at least around 50 milliseconds, even at the speed of light.
- Latency can vary a lot, even within the same connection. Dedicated connections (such as on Mpath, TEN, etc.) can help a lot.
- Modems with compression or error checking enabled usually delay as they wait for a full packet to be ready for compression. Users can disable this.
- Some socket connections perform "Nagling": saving up data for a larger packet, in order to make the most of the packet's header overhead. This can be disabled.
- If packet arrival is insured by means of a reliable transport protocol such as TCP, retries may make the transmission very slow.
- If packets are sent by an unreliable protocol such as UDP, many packets may be lost (even well-aimed bullets).
- It is possible to view game data packets using other utilities, and to use this knowledge to generate fake data packets or to otherwise interfere with a participant.
- Needs of the game genre: many independent, unpredictable players and objects in the game world. Each player needs to see the objects in his/her vicinity at all times.
- How much data to distribute.
- As the number of players and objects increases, the job of updating each screen becomes too large for the server to handle alone.
- Although the clients only record a portion of the world's state, keeping them all apprised of news is still too much data to transmit.
- Sensible (routine) optimizations.
- Reduce the amount of data. This includes:
- Let the server keep track of what each client system knows. Then the server need only report items that are truly news to each client.
- Eliminate redundant data, such as player identification.
- Compress data using standard techniques.
- Combine data in to fewer packets, to make the most of each packet's headers and other overhead.
- Distant objects don't need precise position information for adequate display.
- Maintain frame rate regardless of data transmission speed.
- Standard accommodations to the environment.
- The server's copy of the data must be deemed authoritative in the event of any discrepancy. (Hackers can tamper with their computer's version of the data.)
- The clients' IP addresses should be kept secret within the server. Otherwise a cheater could flood an enemy's modem with extra packets, temporarily immobilizing the enemy.
- Validate crucial packets, such as bullets that force a win. These would be valuable packets to falsify.
- Extrapolation of motion: Each client system must record some of the world's state: at least enough to update its own display. This reduces the need for the server to update everyone.
- When a client must be informed that (because the news was slow) its view of the world is incorrect, this correction should be displayed in a way that the player can see what happened. (Otherwise sometimes an enemy can disappear when its position is corrected. Better is to move the image of the enemy quickly to the new position, so the player can see which way the enemy went.)
- Devious compromises.
- Slow vehicles, so there's plenty of time to keep all clients updated with everyone's position.
- Slow projectiles.
- Unreliable projectiles: This way, even if a player thinks he/she scored a direct hit (because of an out-of-date display) but didn't, the failure can be attributed to a faulty bullet.
- "Writing Multiplayer Games for the Internet," Jeff Rothschild, Mpath Interactive, 1996 CGDC Proceedings. (Mr. Rothschild spoke on the same topic in 1997 but no paper appeared in the proceedings.)
Online community dynamics. Interpersonal interaction is a major appeal for multiplayer games, yet it can also be a major turnoff.
- Some principles.
- Bullies and jerks can spoil the experience for players.
- Offensive language.
- Hackers and other cheaters.
- Allow a safe setting for novices to gain expertise, instead of being killed right away.
- Active supervision is necessary too keep things from getting out of hand.
- Grant rewards, but don't award them too soon; save some as a motivation to continue.
- A character's role and individuality can be an reward of a different kind from sheer power.
- People sometimes build their own social structures. Promote this flexibility, because it makes the game world interesting.
- "The Lessons of Lucasfilm's Habitat" --
- Amy Jo Kim's lecture is at
Her principles seem thoroughly thought out. Her rough points are listed at
- Miscellaneous nuggets.
- The proceedings were much thicker than ever and the papers seem very meaty and accessible. They seem to be worth reading.
- Michael Abrash's lecture on the Quake graphics engine is in the proceedings this year.
- Comic Chat by Microsoft – a remarkable achievement. See
Is their research paper on the Web?
- Scott Kim's roundtable discussion on designing puzzle games. Notes and references are posted at
- Java optimization lecture by Bill Lee, BigByte Productions (firstname.lastname@example.org). Bill mentioned most of these during his talk, and later sent the details via email.
- General principles.
- Don't optimize; at least put it off.
- Synchronization consumes time.
- Time the results on multiple systems.
- See the event multicaster from the AWT source code.
- Web sites.
- Hardwick Java Optimization site:
- Doug Bell's benchmark applet:
- Doug Bell Home page:
- Vladimir Bulatov's HyperProf:
- Greg White's ProfileViewer:
- Java as an intermediate language:
- Concurrent Programming in Java: Design Principles and Patterns
- Tricks of the Java Programming Gurus
- The Java Virtual Machine Specification (hackers only?) (http://www.amazon.com/exec/obidos/ISBN=020163452X/8585-5270860-399757)
- Java Network Programming http://www.ora.com/catalog/javanetwk/noframes.html ("O'Reilly has some good stuff, poke around on their site. Java in a Nutshell got me started and it's been updated to 1.1," says Bill.)
- Object-Oriented Design Heuristics – ("This is a great book if only for the inside front and back covers," says Bill)
- Seamless Object-Oriented Software Architecture (Recommend for large projects)
- Design Patterns ("Recommend reading !!!", says Bill)
=== End of "Show and Tell from the CGDC" ===
This page is
[Up to Technical Information]
[All the way back to Phil's home page]
Phil Davidson /
Last modified 30 September 1999