1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- --------------------
- CLIENT AUTO-UPDATING
- --------------------
- UPDATING CLIENT DATA
- For future clients we need to develop a way in which they can automatically
- update to new data like for example new images, maps or item, being and skill
- definitions. Here is described the sequence of actions that could implement
- this functionality:
- 1. Client loads initial core data for login screen (always included with
- release)
- 2. Client logs on
- 3. Server sends client list of required packages (maybe with versions)
- 4. Client notices he doesn't have a certain package yet or is out of date
- 5. Client requests from server .torrent files (or maybe at first just URL)
- from where to get the the missing packages
- 6. Client downloads them and puts them in "data" directory (~/.mana/data on
- Linux, cause that's writable)
- 7. Client loads the list of files server mentioned in VirtFS virtual
- filesystem
- 8. Client tells server that it is up to date
- 9. Client could load some common data like item definitions here
- 10. Server sends client player position and so on, game starts, client loads
- and unloads additional data like maps, tilesets, sprites, etc. on demand.
- UPDATING THE CLIENT BINARY
- Updates to the actual client binary are also being considered, especially on
- the Windows operating system. While the plan is to move any specific game data
- outside of the binary, sometimes an update to the binary will be required for
- being able to play the game. Also especially Windows users are used to
- automatic update checks for many applications (possibly because of the lack of
- such a feature system-wide).
- On Linux this would require either installing a statically linked binary
- (which could still have some issues) or automatically compiling/installing
- from source. Neither are very attractive options, and I (Hammerbear) would
- prefer not to deal with automatic binary updates on Linux.
- On Windows a binary can't be replaced while it is running, so probably a
- separate update tool would need to be written that is run before the client
- to check for updates to the client and possibly replaces the client before
- running it.
|