Goal: to create the system of automatic saving/loading the entire game world to/from a stream.

Why TPersistent + published properties won't do:
1. Must work for dynamic arrays (single- and multi-dimensional) and records. AFAIK, FPC doesn't allow to publish these types.
2. There is no way to control if I missed "publishing" some field - which, in turn can cause a nasty and hard to catch glitches in runtime - the last thing I need.

Solution: (is this an optimal one?)
Each class is registered at program startup. It then registers all its fields (via manually created method). To avoid mising something, the registering method looks up all the registered fields and analyzes if they cover the entire object instance (taking the aligning into account). If not, program terminates with a yell.

Does anybody know a better way?