Reverse-Engineered Server for Super Soaker Championship implemented in NodeJS.
This allows the game to be played again, since the server went offline quite some time ago.
- Download the original setup from here: https://archive.org/download/ssc-setup/SuperSoaker.exe
- Install the Game
- Download the patcher exectuable pointing to the new server here: https://github.com/minextu/ssc-server/releases/download/v0.1/Start.exe
- Open the installation folder (i.e.
C:\Program Files (x86)\Super Soaker Championship
) - Copy the downloaded
Start.exe
into this folder (override the existing one)
After this you should be able to start the game and let the Patcher (Start.exe
) download the rest. In case the Patcher crashes or fails to download the remaining files, follow the next step and update the game manually.
In case the Patcher is not working correctly you can bypass it:
- Download the original updated game files here: data_2.dat, data_3.dat and pv.dat
- Download the patched game exectuable here: SuperSoaker.exe
- Place all of these files (
data_2.dat
,data_3.dat
,pv.dat
,SuperSoaker.exe
) into the installation folder (i.e.C:\Program Files (x86)\Super Soaker Championship
) and override the existing files. - You can now bypass the Patcher by running
SuperSoaker.exe
directly instead of the desktop shortcut orStart.exe
.
Super Soaker Championship was programmed in Blitz3D using BPPro/Lite for Networking. I was able to decompress everything with De-mole-ition and then decomplile using https://github.com/juanjp600/B3DDecomp. This made it much easier to reverse-engineer the server.
Both .exe
files and all the assets are compressed using Molebox.
Start.exe
: Connects to patch server via TCP and updates game files if necessary, comparing againstpv.dat
pv.dat
: XOR encrypted version codes for all filesSuperSoaker.exe
: Main game executable, connects to master server via TCP to verify username and show the list of game servers (skipped when only one game server is available). Then connects to the selected game server via UDP. Communication is based on BPPro, but has been adjusted to support the game states.data_2.dat
,data_3.dat
: Molebox compressed resources (textures, sounds, etc) forSuperSoaker.exe
The patcher and master server both use a basic form of XOR encryption with a hardcoded string. The game server uses multiple strings. More details can be found in the source code: https://github.com/minextu/ssc-server/blob/v0.1/src/utils/encryption.ts
Development requires the game exectuable to be patched and the secrets to be extracted first. You will need a hexeditor. More details about this will be added here at a later point.
Then either run the server through docker (https://hub.docker.com/repository/docker/minextu/ssc-server) or
- Download/clone this repo
- Run
npm install
- Copy
.env.example
to.env
- Extract secrets from game exectuable and fill
PATCH_SECRET
,MASTER_SECRET
andGAME_SECRETS
in the.env
- Patch game exectuables to connect to your ip (i.e.
127.0.0.1
) - Run patch, master and game servers with
npm run dev
- Team Mode
- Fix Player Hitbox
- Collision detection is handled on the server, there is a very basic detection here but currently this is not working like it should, causing shots to be missed.
- Figure out weapon damages
- Each weapon has it's own damage value. But since this was only ever calculated on the server, the actual damage each weapon used to do is unknown.
- Kick and Ban functionality