An open-source lobby, service, and game server for Project Exonaut, built upon the foundation of OpenATBP.
Currently, games can be entered and played, though not ended, and the metagame can be logged into. Explosives, motion interpolation, game termination, and achievements still need to be worked on.
Originally, Project Exonaut required several server-side components in order to to function:
- Web server to serve static content/streaming assets
- Web server that provides service/API endpoints
- Socket policy server to satisfy the Unity Web Player security sandbox
- SmartFoxServer2X with custom zone and room extensions acting as the matchmaking server and actual game server respectively
To simplify development and deployment, all but the last component have been combined into one piece of software, which is available under the ExonautServer
directory. The SmartFoxServer2X extensions live under the ExonautExtension
directory.
More in-depth explanations of each component, how the client interacts with them, and how request/response packets are structured can be found in the
This is unfortunately not available yet, but work is slowly being done. For the time being, feel free to reference decompiled client code generated via ILSpy/dnSpy.docs/
folder.
Ensure these are all installed before proceeding!
- Git
- Java Development Kit 11
- SFS2X Community Edition
- NodeJS and NPM
- MongoDB Server
- Clone the repository:
git clone https://github.com/OpenExonaut/OpenExonaut
- Open a new terminal inside of the
ExonautServer
directory - In this new terminal window, run the following command to install dependencies and download required asset files - this may take a while!
npm install
- Copy the example config in the ExonautServer directory:
cp config.js.example config.js
- once copied, edit it to include the connection string URI for your MongoDB server - Run ExonautServer using the following command:
npm run start
- if done correctly you should seeExpress server running on port 80!
- Start SmartFoxServer2X once so it can generate the correct files and folders, then close it
- Open another terminal, this time in the root of the repository
- Run the following commands to copy necessary files, then compile the game extensions:
.\gradlew ExonautExtension:copySFS2XLibs
,.\gradlew ExonautExtension:allJars
- Provided there weren't any errors, deploy the SmartFox extensions and library:
.\gradlew ExonautExtension:copyDataFiles
,.\gradlew ExonautExtension:deployAllJars
- Copy the example config in the SFS2X extension directory (SFS2X/extensions/Exonaut, should be right next to two jar files):
cp config.properties.example config.properties
- once copied, edit it to include the same URI string you did in step 4. - Start SmartFoxServer2X, you should see a log line indicating the zone extension is working:
Exonaut Zone Extension init finished
- Finally, connect to http://127.0.0.1:80 with an NPAPI-compatible browser such as Pale Moon to test the game!
Note that you can also run any Gradle task (gradlew
commands) graphically through an IDE such as IntelliJ IDEA or Eclipse.
These instructions are subject to change, if you run into any problems or have questions feel free to open an issue here on Github.
MIT unless specified otherwise