Thoughts -------- What entities are there: Types (meta-data to describe them) Objects (instances of types) Files (static data) Arrays (of objects, SoA, AoS) Algorithms Functions / Methods Levels (sets of files) Memory (heap, stack, code) Scripting Gameloft had .rkn files and .rki files. The rkn files contain the metadata about types The rki files are instances of these Consider types as having no functions - So these are purely memory layout - padding, member ordering etc. - Can map in to memory from file if fixed sizes etc - Can script too - Can re-arrange member variable order if use getters/setters and hide impl with generated code - perhaps idea is to declare a struct in a declarative way and have code gen to make the getters and setters and a pimpl and the meta data to describe it - perhaps can code gen for SoA and AoS variants depending on declaration of it - so it is by default that any type can have an array of them created Consider types as static - the types that exist are fixed in place at compile time can't be changed at runtime (some systems might be able to do this, but do we need it?) Objects can be created dynamically. Functions can be script or C++ functions, they can call each other, and understand all the registered types