The cache directory is/will_be used to store resources between game sessions.

The cache will contain graphics, sound, music associated to a game.

After talking some with Arnan, we found some things that could be downloaded to the local drive.

In particular knowledge skill databases. The server stores the keys that index entries in the database, as your skill gets higher you download the next sections of the database and the keys serverside get updated to point to the new information. That way whenever you want to use your history skill, it doesn't need to query the server, it reads it locally.

The idea to store knowledge skill databases in client side and the server having references on it does not please me.

This means a strong dependancy between server and client that is not good(tm).

What you want to archieve can be done via current interface and client side, the server is not aware of what you do provided it allows it.

If you can query your skills then you can have a smart client that generate your history (in html f.e) when skills changed, no need to mind the server for that. And you can browse it at will when needed, locally.

For the cache nature, we have to distinguish 4 cases:

Case 1:
The user always uses the same server to play the same game, let's say WorldForgeServer, to play .. WorldForge.

Case 2:
The user uses different servers to play the same game, let's say WorldForgeServer.fr or WorldForgeServer.de, to play .. WorldForge.

Case 3:
The user always uses the same server to play different games, let's say WorldForgeServer, to play WorldForge, ZorkLikeGame, CyberGame.

Case 4:
The user uses different servers to play different game, let's say WorldForgeServer.fr, ZorkLikeServer.fr, to play WorldForge, ZorkLikeGame, CyberGame.

I imagine some server ring with for example one server per country, dedicated to one or several games.

I suppose that if you play WorldForge, it is the same game whatever server in the ring you use.

All the servers in the ring that support WorldForge, shared the same game data.

You can start another server on-line with your own WorldForge version, but it shouldn't be called WorldForge, but something along "WorldForge-independant-xxx", in order not to confuse the cache associated to the WorldForge game.

This means we need to have a cache for each game based on their name.

The solution to have a cache directory based on the server ip address is right but in case of the server ring, this will duplicate data.

We could somehow have a list of "trusted" servers, the ones in the ring, that warrant they share the same data for a game with others servers in the ring.

So one list of trusted server per ring of server.

Other servers, not "trusted", not in a ring, have their own game data and appears in a ring with only one server.

PROPOSAL:
One cache per ring of server and per game.

Examples:
$ALTIMA/cache/WorldForgeRing/WorldForge
...
$ALTIMA/cache/ZorkLikeRing/ZorkLike
...
$ALTIMA/cache/LocalRing/WorldForge
$ALTIMA/cache/LocalRing/ZorkLike
$ALTIMA/cache/LocalRing/WorldForge-Derived-19992901
...
$ALTIMA/cache/MyBrotherRing/WorldForge

Client should have ring support management:
- Create new ring
- Delete ring
- Add server to ring
- Remove server from ring
- Edit server properties
- Add game name to server
- Remove game name from server
- Edit game properties

What about that ?

/Sebastien.