Best Hints and Tricks from GDC 2003
(A purely subjective account)
- Keep a list of all code areas with name, color, max memory, time/frame. Usefull for debugging, logging, profiling.
- Use a per-user profiles stored on HD to map type of error and severity to action (assert, log, ignore).
- Scott Bilas on component object systems:
- Versioning! Important feature for file formats.
- First step in making tools: make a UI library => ensures a consistent look and feel.
Then artists/users don't have to relearn as much every project.
- Debug: serialize and deserialize a default object as a test
- In debug build, serialize and deserialize are type safe (tag values with types).
Better if debug and release builds are interoperable.
- Abstract player input: it helps with debugging and being able to replay.
- Readable data format in debug mode (including for network messages, etc.)
- Worked well: All changes to game state go through an "Arbiter." Arbiter contains a router that has different versions for single and multiplayer. Can still query data by going to the corresponding subsystem directly.
- Worked well: sniffing message stream instead of modifying all places where effect generated: simplifies architecture.
- Worked well: System A stores foos. System B can ask system A to store some extra data (opaque to A) with each foo.
- "ReadDirectoryChangesW" fuction so artists can drop a bitmap (or whatever) into a directory and it immediately appears in the game