Proposal Overview
Oolite save game file contains
- - player name
- ship type
- current location
- hyperspace targeted location
- combat rating
- legal status
Suggested Architecture
Modifications to Oolite Core application
- - plist/XML file containing connection information to remote server (File1)
- specification and scope to read to and write from file1
- code change to send player save game information to this server
- code change to read remote player information from the server to a plist/xml file (file 2)
- - one live web server to store database or file (SQLite or MySQL?)
- - link to plist/XML file containing connection information to remote server (file 1)
- process what remote players are in the local player's system
- parse remote player ships that are present and load suitable model(s)
- contain special rules for each remote player (although this could be stored on the server along with the basic information)
- on saving a game (or similar key point), local player's latest save game data is uploaded to the central server specified in file1
- on hyperspace countdown, remote player information is downloaded from the server and stored in file2
- on hyperspace exit, information from file2 is read, and if any remote players are in the local system their information is loaded in and a ship generated for them. They would be simply located on the normal path between witchpoint beacon and station.
1. The local player's save information can be uploaded on game save or during hyperspace countdown.
2. Only one save game per remote player would be actively parsed, based on the most recent filestamp. The OXP could contain functionality to omit player information older than a certain age. Code to check for multiple player files from the same player could be implemented too (IP address stored in database maybe?). This would stop players uploading loads of player information and spamming the spacelanes (whether deliberately or accidentally) – only one "pilot" at a time would be used from any one player.
3. The remote player information can be checked at various points to update file2. The points could include:
- - docking
- launching
- hyperspace egress / exit
- saving game
- loading game
4. If a remote player is using an OXP or customised ship, the system can check that the relevant OXP is present on the user's computer and if not can either:
- - find and install the relevant OXP from a repository (wiki, oosat etc)
take the information from the remote player's computer (with the user's consent obtained via an option in the Settings)
- find an alternative or similar ship from those installed.
We would need to establish
- - if this functionality can be included through Oolite code modifications and OXP development – developers would be best placed to answer this.
- How long it would take to download and upload the player information and thus where the load/save routine would be best placed for minimum game interruption
- Could the upload/download routine be done in the background as play progresses?
- Settings required for privacy – players may not want to be part of the commoonity, or opt in or out when they want.
- Regarding note 4 above, there would be a need to prevent faulty code permeating the commoonity via any downloaded OXPs if that functionality was included. if players have in-development code on their OOlite installs, then this requirement is more important. Of course, this functionality could be controlled by the settings as well.