Example of modular 'object' data for the game object : "The Chair" :


Note how the objects properties effect various game situations and interactions with players/NPCs and game mechanics.
Many of the values ( & groups of values) are optional and only present if relevant to objects functionality.
Some attributes come from 'templates' (like Material:Wood) that are shared between many objects/components of objects. For Instances (built in server) some data frequently used (or changeable) is local in the object data and others reside in shared templates to save memory space.
Large sub-assets like textures/aimations/sounds are held as one copy in memory to save space and object has a 'pointer' to them.


Static Attributes: list (objects properties that determine how it behaves in the game)

----Name: (specific template identity) "Generic_Wooden_Chair:

----Description: (sort keywords) "typical simple chair, made of wood, no wheels, varnish finish"

----Typical Environment: (subsets of normal placements) : furnishing, office

----Normal orientation plane: (XY (floor), Ceiling, Wall ) : Floor

----Material: (determines properties from the material(s) the object is composed of) : Wood & Fabric?

-------'Wood' material template:

Density: (.8g/cc - wood usually less dense than water -- will float)

Combustable: Yes

Explosive: No

BTU content: (how long/much will burn) : 5

Electrical conductive: No

Water resistant: Mostly not (wood damages over time in water)

Durability : Average

----Overall Weight: 35lb (function of size and density - used for lift/move/throw calculations)

----Appearance (static data set):

Mesh; 3D shape of object (made up of points/triangles Includes UV match up data with the 'Textures'):

*shape* - think of a typical simple wooden chair shape with minimal detail and no fancy decorarions.

Mesh for things like human figures have >20 sub-parts that are rendered/animated seperately and some machines have working parts (including parts that can be removed that can exist a independant objects).

-------Optional 'damaged' mesh: (shape if object damaged/deformed) : NULL

Optional 'machine repair' mesh (for machines which have an interior with components and sub components : NULL

-------Textures: the 2D color picture used with Mesh to define objects surface detail

State textures Ruined/dirty/burn/new - different looks depending on what state the object is in

Textures colored to reflect the chairs state 'new colors' vs soiled/dirty vs burnt/charred look

the textures include the exterior and interior (if it has one - containers and machines that open for repairs)

-------Bump Map: (used to fake detail shadows and give object details a much more complicated mesh could provide):

-------Breakdown Pieces: (used when object broken or 'exploded' or when being constructed/reconstructed (parts)

List of Subdivided object mesh for each 'piece' : Back piece, seat, 2 front legs

(often is seperate triangle lists off original mesh, can be seperate meshes)

Start Position for pieces (list, offsets on original whole so the can fly/drop apart when object broken):

-------Effect Tie Points (list, points where burn smoke/flames or leak waterdrip/stream would be shown and what patterns)

-------Particle Effects: (functions defining what 'emanations' come off/out of object based on scripting) : NULL

-------Hold Points (list of points on object where hands usually hold it - for 'carry' action rendering):


----Animations: (list of Animation sequences used with scripting/standard reactions that move 3D mesh): NULL -- passive

Many objects have no mechanical behavior -- a rocking char would have a rocking 'motion' defined

Movement animations :

Open/close animations (for containers and machines that open for repairs):

Firing animation:

Activation animation:

'on' animation (continuous):

----Sounds: (list of sounds used with behaviors/reactions): ??


----Attributes that define an objects functionality in game (static):

-------Freestanding: Yes

Fastenable : (does it bolt to mounting surface) : No

-------Utility Usage : (types or utility hookups the object requires to function) : NULL

Electrical/water/hear/air/drainage/Comm/ Functionality: NULL

-------Structural Usage: (part used to form terrain structures) :NULL

Pattern designation (standard structural slot it fits) : Null

Utility features: (data having to do with utility functionality, utility hookups, etc..) :

Interface Surfaces: (list of openings that can be matched up to adjacent structures): Null

-------Damage maximum : ('hitpoints' usually effects function ability - often used for 'wear'): 15

Nonfuctional Damage: (damage that oobject becomes none functional) : 8 (loses structural integrity at about half HP)

Self-repair rate (HP/minute or somesuch) : 0

-------Quality: (imparts extra value/useability/durability) : Average

-------Fragility: (how easily the object comes apart)

-------Tool Usage (what tool operations can be performed and what efficiency)

----------Drag coefficient (for transport like having wheels allowing easy dragging as a container or just moveing): 0

----------Skill operations: (what tasks tool used for - list of pointers to task templates) NULL ? or 'stand on object skill' ??

----------Fuel capacity: Null

---------'Make Object' Creation/Mutation ability (for fabrication tools): NULL

Available Recipes for fabrication 'conversions' (a list): NULL

Make' animation:

Fabrication/Repair Recipe: List of parts/materials needed and work types to be done (indicates tools/skills) for resulting items 'built':

---------Stackable (objects can be put ontop of this object)

Player can stand ON : Yes

Objects can be placed on : Yes

Standing Surface (one or more rectangles defining a surface a player could 'stand on') data- seat surface rectangle

Stability Factor (how easy for player to stand on and not fall off of - try to stand on a rocking chair) : 90%

Sittable: (Player/NPC can sit on - use std 'sit' action) : Yes

Support capacity: (excess force damage calculated from materials composed of) : 150Kg

-------Vehicle: (use to transport NPCs or items) : NULL

Vehicle control script : NULL

Trackage Use: (type of track object this vehicle follows) :

Max Speed :

Max Braking :

-------Container: (ability to contain other objects): NULL

Opening action script : (actions to open/lock specifics if any) : NULL

Volume limit :

Internal dimensions X Y Z : (use to limit what shape/size objects can be contained) :

Max weight limit :

Liquid Holding: (can obhject hold a liquid)

-------Projectile action: (ability to project projectiles) :NULL

Movement type : ( roll on ground/fly/bounce/float)

Velocity Imparted :

Expediture Volume : how far projection extends (used with flamethrower like objects)

----Minigame associated: (template pointer list of existing minigames can operate on this object) : NULL


--Behavior data (static pointers to shared scripts):

----Behavior Scripts:

Active behaviors: NULL -- passive - no active behavior

Polling Scan script ('smart' object will react to nearby objects proximity) : NULL

Functional Check script (checks if object that interacts is operational - like power is live thru a wires connection) : NULL

Creation variation script: (script than can mutate attribuets to make obejct a little different from others):

Installation script (rules/decisions of proper placement for 'auto generation' and NPC placement actions)

----Reaction Scripts: (scripts for particular object actions/reactions - controls rendering/results)










Opened (containers)





--Instance (changeable) data: (some standard states, many would be custom states used by specific scripting as local persistant state data)

-------Appearance mode: (broken/dirty/destroyed/normal/etc) : normal

Sub-component positions: List (movable subparts like a figures body parts):

-------Current Position in world: (position in game world XYZ and possibly pointer to 'building block' section it is part of)

-------Current Orientation (which way object is facing) :

-------Current Damage (hitpoints inflicyed) : 0

-------On/off state: NULL

-------Currently Contained by : (what object is the immediate container, Object this object is inside of ): ??? the building section (chair is on the floor)

Open/Closed state : Null

List of objects contained (pointers to objects, if this is a container) : NULL

Fuel contained : NULL

-------Adjacent connected objects, list (used for structural parts including 'building blocks') : Null

-------Physics: ( data specifying object in motion):

Current Speed : 0

Current Move Vector : 0

Current rotational vector : (if object is spinning) : 0

Center of mass position XYZ:

-------Script Working data: (working data for continuously running scripts): NULL

List of Pointers to script specific data sets

-------Quest Linkage : (would be set by a quest) : NULL , ((the infamous 'get me a chair' quest ??))

-------Temporary Effects applied to this object, list: (effects caused by previous actions/being acted upon): null

Effect data (data particular to each effect type) :

Playing sound:

Particle effect state data


Many of these attributes can be 'inherited' from "Attribute Templates" which define common sets of attribute settings used to facilitate easy composition in creation tools

Many attributes are 'NULL' meaning that attribute is not used because the object type lacks that functionality

Object would be 'instanced' from its set of defining templates and later if it was affected byy NPC/Player actions then would get attributes changed to reflect results of all actions (cumulative)

Objects like NPCs would have MANY times as much data as this (largely to do with AI behavior)

This is just a sample of possible attributes, the actual number/specifics are dependant on the details of the game mechanics.


Data Extraction from BS1/BS2 game info :
- Meshes may have to be cut from static 'level' meshes and patched to make them have all sidess.
- Or there may be the original individual objects as seperate data (ones that were placed many spots)
- Textures specificly for an object may have to be cut from larger shared texture files into files for just the object and mesh UV values adjusted. (then the alternate textures other than dirty/ruined would have to be repainted)
- Animations of machines (for moving parts - keyframe or bone anmimation data)
- Sounds probably already exist as seperate assets
- Chunks of buildings to be cut up along obvious division lines. Those used for auto-generation need to be made interchangeable. Additional work to cut out sections of inner walls and other details to modularize -- for player interchanging/replacing them (as repairs or mutated scenery)
- You could see that making this a 'metal_chair' would take very few attribute modifications (besides the shape and texture)

Example - Reuse of Persephone
- Not all of it dropped into the trench in BS2 ... Part that wasnt blown may remain as part of the city terrain.
- Parts of the building that did can be recycled as generic industrial site, etc...
- Unique Objects/details from that area are useful for the rest of Rapture

Ad blocker interference detected!

Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.