1
0
mirror of https://git.ngram.ca/OpenJam/rc-servers synced 2026-08-23 23:08:52 +00:00
2025-05-24 23:56:48 -04:00
2025-05-24 16:21:45 -04:00
2025-05-12 20:56:24 -04:00
2025-05-21 18:30:21 -04:00
2025-04-06 09:55:29 -04:00
2025-04-06 09:55:29 -04:00
2025-04-06 09:55:29 -04:00
2025-04-06 09:55:29 -04:00
2025-04-06 09:55:29 -04:00
2025-04-06 09:55:29 -04:00
2025-03-15 11:03:35 -04:00

OpenJam Servers

A collection of open source servers for FreeJam games

Usage

CardLife

To get CardLife to use these servers, replace the ServerConfig.json file in the game files with this ServerConfig.json.

Robocraft

To get Robocraft to use these servers, place this servenvmulti.config file in the game files.

// TODO Document how to run the servers yourself

Privacy

The minimum amount of data is (and should be) collected to provide the expected functionality. In most cases, these means no data is collected or logged except some debug log messages in development versions. Some personal identifiers are sent but only exist ephemerally. The exception is Robocraft servers, which store the minimum account info possible on disk. This includes a unique user identifier, username, vehicle data, and user configuration data. The current PC's MAC address is also sent to the server (this is a Robocraft client feature, it is not recorded by any server).

Development

Robocraft

Extra crates

There are two crates that are expected to be in the same parent folder as this project, since they may change as a result of OpenJam server development.

Running

Run all of the servers using their respective run_debug.sh scripts and use the dev profile in servenvmulti.config to point the game to your local dev servers. The debug scripts will tell each non-HTTP server* to run in single connection mode which makes them shut down when an unrecognised request is received or the client quits. The default configuration will place data in data/robocraft and use the assets in assets/robocraft (relative to the project root). When running for the first time, you will need to create the file data/robocraft/token_secret.key, otherwise most servers will crash on startup. The key may contain any data, but I'd recommend against leaving it empty since it is used for cryptography. By default, account data will be stored in a sqlite database at data/robocraft/accounts.sqlite.db (created automatically). That is good enough for most development tasks, but a real database (MySQL or Postgres) is expected to be used in production.

It is possible to remove the obfuscation from the Robocraft's Assembly-CSharp.dll if you need to figure out how it expects the server to behave.

* non-HTTP servers use the Photon Unity Network (PUN) packet system to communicate. These are rc_chat, rc_services, rc_singleplayer, rc_social, and their respective _room variants.

Contributing

If you can program or are learning Rust, pull requests are appreciated! If you can't and would prefer not to learn, reporting issues is also welcome.

If you'd like to discuss, contact NGnius on Signal rfc.1149 or email ngniusness@gmail.com. I'll make a Signal group chat if there's enough interest.

Acknowledgements

A big thanks to the RC15 team for their work on deobfuscating Robocraft .NET assemblies and specifically to RandomScientist for hooking me up with a deobfuscated assembly. Without them, progress would have been too slow and frustrating.

Thanks for the moral support from community members who reached out and the few IRL people who I went into unnecessary detail with.

Description
Re-implementations of Robocraft web services https://rc.ngram.ca
Readme GPL-3.0 5.7 MiB
Languages
Rust 96.2%
Handlebars 2.6%
Python 1.1%