Outrun for Revival is a fork of Outrun, a custom server for Sonic Runners reverse engineered from the Sonic Runners Revival project back during the Open Beta. It is intended for use on the Sonic Runners Revival server, but can be used for your own private servers as well.
Notable:
- Timed Mode
- Story Mode
- Ring/Red Star Ring keeping
- Functional shop
- Character/Chao equipping
- Character leveling and progression
- Item/Chao roulette functionality
- Events
- Campaigns
- Basic ranking
- Login Bonuses
- Daily Challenge
Functional:
- Android and iOS support
- High score keeping
- In game notices
- Deep configuration options
- Powerful RPC control functions
- Ticker notices
- Low CPU usage
- Analytics support
- Revive Token keeping
- Download and install Go 1.15.8 (NOTE: Go 1.16+ currently break the ability to build some or all of Outrun, such as RPC programs. A fix will be deployed whenever one is available.)
- 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/ToadRoasted/outrun
and wait until the command line returns - Run
go build github.com/ToadRoasted/outrun
and wait until the build is complete - Run the produced executable (
outrun.exe
on Windows,outrun
on Linux/macOS)
Binary releases can be found in the releases tab.
- 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 variablemActionServerUrlTable
- Edit every string in the
mActionServerUrlTable
array tohttp://<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
andmInformationURLTable
tohttp://<IP>:<PORT>/assets/
andhttp://<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
Disclaimer: Make sure your server URLs (including the port, information, and asset extensions) are below 26 characters so it can fit within the hex
- Install 7-Zip
- Install a hex editor of your choice
- Open a Sonic Runners v2.0.3 IPA file with 7-Zip
- Navigate to Payload/sonicrunners.app/Data/Managed/Metadata and extract global-metdata.dat
- Open global-metadata.dat in your hex editor
- Jump to offset
2CEE0
and find the table of server URLs - Edit every string in the table to match your server URLs (If your URL is below the character limit, you can use slashes to pad out the empty space until you reach the next listing)
- Save global-metadata.dat
- Insert the modified global-metadata.dat into Payload/sonicrunners.app/Data/Managed/Metadata in 7-Zip, confirming to overwrite if asked
- Transfer the IPA to an iOS device
- Install the IPA using AltStore or AppSync Unified
Any pull requests deemed code improvements are strongly encouraged. Refactors may be merged into a different branch.
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 based 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.
- Story Mode items
- lukaafx (Discord @Kalu04#3243)
- TemmieFlakes
- SuperSonic893YT