outrun
Summary
Outrun is a custom server for Sonic Runners, reverse engineered from the Sonic Runners Revival (Now uses Outrun) project.
Goals
- Implement all non debug endpoints as fulfilled by the original server
- Maintain speed throughout runtime
- Consume little resources for conservative deployment
Current functionality
Notable:
- Timed Mode
- Story Mode (Functional, in progress)
- Ring/Red Star Ring keeping
- Functional shop
- Character/Chao equipping
- Character leveling and progression
- Item/Chao roulette functionality (Functional, in progress)
- Events
Functional:
- Android and iOS support
- High score keeping
- In game notices
- Handy configuration file support for general, events, and notices
- Ticker notices
- Small database size and memory footprint
- Low CPU usage
- Analytics support
Building
- Download and install Go 1.13 (Project tested on Go 1.13.3)
- Download and install Git (for
go get
)
- Set your GOPATH environment variable
- Open a terminal/command prompt
- Use
cd
(Windows, Linux/macOS) to navigate to a directory of choice
- Run
go get github.com/fluofoxxo/outrun
and wait until the command line returns
- Run
go build github.com/fluofoxxo/outrun
and wait until the build is complete
- Run the produced executable (
outrun.exe
on Windows, outrun
on Linux/macOS)
Binary releases may be provided in more mature stages of the repository.
Modifying an APK to connect to your instance (from Windows)
- Install dnSpy (dnSpy-netcore-win64.zip)
- Install 7-Zip
- Install ZipSigner on an Android device or emulator
- Open a Sonic Runners v2.0.3 APK file with 7-Zip
- Navigate to assets/bin/Data/Managed and extract all the DLL files to their own folder
- Open Assembly-CSharp.dll in dnSpy
- Open the class
NetBaseUtil
, and find the variable mActionServerUrlTable
- Edit every string in the
mActionServerUrlTable
array to http://<IP>:<PORT>/
where <IP>
is replaced by the IP for your instance and <PORT>
is replaced by the port for your instance (Default: 9001)
- Repeat step 7 for
mSecureActionServerUrlTable
- If you have an assets server, use its IP and port to replace the values in
mAssetURLTable
and mInformationURLTable
to http://<IP>:<PORT>/assets/
and http://<IP>:<PORT>/information/
respectively
- Click File -> Save Module... and save the DLL file
- Drag the newly saved Assembly-CSharp.dll back into assets/bin/Data/Managed in 7-Zip, confirming to overwrite if asked
- Transfer the APK to an Android device and use ZipSigner to sign it
- Install the APK
Misc.
Any pull requests deemed code improvements are strongly encouraged. Refactors may be merged into a different branch.
Palmbound (Public Development Server)
As of 1 September, 2019, an instance of this server named Palmbound is currently publicly accessible. App file downloads can be acquired by joining the Palmbound Download Discord server: https://discord.gg/eeQAe8R
Credits
Much thanks to:
- YPwn, whose closest point of online social contact I do not know, for creating and running the Sonic Runners Revival server upon which this project bases much of its code upon.
- @Sazpaimon for finding the encryption key I so desparately looked for but could not on my own.
- nacabaro (nacabaro#2138 on Discord) for traffic logging and the discovery of DaGuAr's asset archive.
Additional assistance