So yes, orx is both data driven and data oriented (DOD)/component based.
- data driven: that's the obvious one, it's mostly due to the config system
- data oriented : it's the whole Array of Structures (AoS) vs Structure of Arrays (SoA) concept. Most allocations in orx (actually all but strings) are packed in memory by structure types in what are called orxBANKs. Those happen to not only provide faster iteration accesses but also reduce memory fragmentation (and as orx is using a high watermark approach, it also optimize creation/deletion of elements).
- component based: most of the orxOBJECT properties are not part of the orxOBJECT structure itself but are spread in specialized components (in our case they're called orxSTRUCTUREs) which are linked to orxOBJECTs upon needs. Those components are all stored in memory in a data oriented design fashion (cf. last point).
Some systems do not yet take full advantages of the DOD approach but I'm converting them slowly, the most obvious one currently being the Render plugin.
Comments
- data driven: that's the obvious one, it's mostly due to the config system
- data oriented : it's the whole Array of Structures (AoS) vs Structure of Arrays (SoA) concept. Most allocations in orx (actually all but strings) are packed in memory by structure types in what are called orxBANKs. Those happen to not only provide faster iteration accesses but also reduce memory fragmentation (and as orx is using a high watermark approach, it also optimize creation/deletion of elements).
- component based: most of the orxOBJECT properties are not part of the orxOBJECT structure itself but are spread in specialized components (in our case they're called orxSTRUCTUREs) which are linked to orxOBJECTs upon needs. Those components are all stored in memory in a data oriented design fashion (cf. last point).
Some systems do not yet take full advantages of the DOD approach but I'm converting them slowly, the most obvious one currently being the Render plugin.
There are plenty of references if you google them however this pdf is a good introduction: http://dice.se/wp-content/uploads/Introduction_to_Data-Oriented_Design.pdf