should we check the /realms file for success or failure, or should we make ctl rw and return success or failure of the current user's last command on read?
/carts: available game/app cartridges for this server, read only
carts are listed per line upon reading the file
backed by files on the server (carts/<cart_name>/{<cart_name.rom>, data/}
/slot: after loading the cartridge, its ROM is read from here; read only
/data/: any supporting data that comes with the cartridge will be found here; read only
/realms: open/saved realms; read only
realms and their associated universe are backed by real files on the server so that they can be preserved across service instantiations. (realms/<realm_name>/{realm, universe})
/universe: read/write: write here to update serverside state for this cart/realm; read from here to get the current state.
each cart will have its own format for encoding data here
since this changes frequently in multiplayer games, perhaps only flush to disk at regular intervals instead of after every write
[Realm format]
each realm directory on the server should have the following files:
realm: basic data for the realm. file contents should contain only the maximum number of members, and the password hash, if any, separated by a space
members: members currently in the realm, in the form "<AFID> <username>", one per line
universe: the actual game state in for the realm, format is cartridge-specific
everything in the realm directory is synchronized to disc both when realm membership, limit, or password changes, and at regular intervals. if a member makes no writes to the universe after a certain time, consider them gone from the realm (so there should be a common SYN message all cartridges implement to keep them alive in the realm)