SaveId
From Blood Wiki
Revision as of 16:55, 28 September 2012 by Twinchenzo (Talk | contribs)
SaveId - entity savegame identificator key. It is a number, unique within a level, assigned with RWGTools to a "sid" entity field. It is required for gamecode to store information about levels that were already visited. Instead of entity number (assigned by engine when entity is spawned) SaveId cannot be reused when new entity is created. Also SaveId survives level editing and recompilation, allowing to extend existing game levels without breaking saved games.
[edit] Operations with SaveId
RWGTools have this options to manipulate SaveId's:
- Mark - mark SaveId's on new entities.
- Remap - this will re-mark all entities (will break savegames).
- Clear - remove all SaveId's and clear world counter (will break savegames).
- Check - checks map for duplicate SaveId's and other errors.
[edit] How 're-entering' works
SaveID's are courtesy of level re-entering which is core game feature in Blood Omen, but has no core support in Darkplaces engine. Re-entering is a part of Blood Omnicide gamelogic. It follows this rules:
- On level exit, all entities with a SaveId launch their saving function (class-dependent) which forms a savestring for each entity (storing entity properties that was changed comparing to level initial state), then all savestrings get packed into the level save lumps.
- When level is loaded, gamecode checks if this level has a save lump, and loads it into the reenter array of savestrings.
- Each entity when spawned, checks for corresponding record in the reenter table and loads properties from there.