Run 9 rooms at once, i.e. the 8 rooms surrounding the current player plus the current room. Such connectivity information could probably be generated automatically, by scanning the bbox of each room and finding which faces lay flat against the faces of other bboxes.
However differently-sized rooms can lead to more than 9 rooms being adjacent to the current room, e.g. if two smaller rooms both lie to the right of one bigger room.
Also, strictly speaking, 9 rooms doesn't run the rooms "above" or "below" the current room.
More generally, maybe "9 rooms" should refer to "adjacent" rooms, where "adjacent" means that a face of the bbox of the room lies within the same plane as a face of another bbox, and has some overlap within that plane.
Thus by positioning the bbox of the room appropriately, you can control whether the adjacent room is linked to the current room (linked to means that that room will be run/loaded automatically and is accessible), or is not linked. If the bbox faces of adjacent rooms coincide, then the rooms are linked; otherwise if there is a gap between the bboxes, the rooms are not linked.
This would automatically compute room connectivity (replacing the "next" and "previous" room attributes which now have to be entered by hand) as well as allowing non-equally-sized rooms and running of rooms "above" and "below" the current room.
Alternatively the decision of which rooms to run could be based on a "sphere of activity", e.g. a sphere of a certain radius centered around the player. Room connectivity could also be useful here; start with the current room, and recursively traverse all adjacent rooms (not just the immediately adjacent rooms) to determine all rooms within the sphere of activity.
There could possibly be many spheres of activity active at one time, allowing different parts of the world to be active.
Note that we should distinguish between
- which rooms are run
- which rooms are drawn
The set of drawn rooms can be the same as the run rooms, or they can be automatically handled by a scene graph.
However running several rooms at once adds questions about streaming (whereby levels can be dynamically loaded from CDROM or disk or theoretically a network stream). The streaming system would need to be analyzed and extended to handle streaming of several rooms at once, possibly a tricky thing to do.