Game Object Structure: Bringing it all Together -- Saturday Object Editting Tools --------------------- Standalone like Halo (a few), Plug in (very few), Level editor (several), Excel (a few) Re: object stats in Excel: see GDC talk about how to turn data from Excel into code Suprising number were using script code directly to place objects (in one case after abandoning a level editor that never became functional) Hard point / effect point placement done in 3DS Max Data validation in export! Very handy. If verification takes a long time, can use a net farm to export to a temporary location. Serialization/Persistance ------------------------- Can choose between using a single function or many functions for network vs. save/load vs. config vs. ... Nice to have both an all text and binary format. Can read text version, and check it into version control. Versioning! Important feature for file formats. For network: can only send changes; using the same code, the save game only has delta from defaults. May need to customize for action/twitch games where every position changes every frame : action/twitch games benefit from separate net serialize / save games. "Serialize" that both saves & loads has problems with complex data: end up with lots of ugly "if (loading)" or "if (saving)" "Gigabase" is an open source object database that someone plans to use (since ObjectStore changed their license). Object ID/indexing ------------------ One person used 16-bit IDs (space efficient!) with a 4,000 entry table of references to objects. Found to be useful for validation since have a list of all valid pointers. Also can do validation every time you get a pointer from an id. Used text strings to refer to objects in scripts. Text strings were replaced with numeric ids as part of compiling/linking. One person used an URL like path/file system for organizing objects Look at "The Nebula Device" -- an open source engine with a creative design One person found relation database features useful: ex. Ask for guys that are alive and spawned and visible... One person used the hash of asset name (checked for uniqueness) to track assets (eg. through art pipeline) Misc ---- C++ RTTI used (in PC debug build only) to catch errors dynamic_cast was slow on PC if used a lot with about 6 deep heirarchy (Dungeon Keeper); shallow hierarchy (2 deep) on Soldier of Fortune 2 was fast Moderator notes to be posted on www.gamearchitect.net