clientupdates.txt 2.1 KB

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