Sunrise-Halo3-WebServices
Sunrise-Halo3-WebServices copied to clipboard
A NestJS, Domain-Driven Design reimplementation of Halo 3's web services.
Halo 3 Web Services 
This api contains a rough reimplementation of all of Halo 3's web services including support for
- Matchmaking
- File Share
- Bungie Favourites
- Bungie Pro
- Banhammer
- Active Transfer
- Service Records
- MOTDs
- Screenshots
- Nameplates
- Crash Reporting
- Webstats (needs a lot of work, see #4)
and much more :)
These web services were created for the retail version of Halo 3 for the Xbox 360. However, most builds of Halo 3 should be supported. PC builds, if they were to somehow connect, do use the same endpoints, leaked pre-release builds for the 360 however do not, though the changes are probably minor. The beta should also be supported.
This project is built for use with Sunrise-Plugin, a dashlaunch plugin which connects Xbox 360 Halo 3 to a custom webserver.
Preparing the project
- Install dependencies with the
npm install
command. - Create a
.env
file in the project root, following this structure:
API_PORT=8080
MONGO_URI=
- Build the web service with the
npm run build
command.
Handling Title Storage (Playlists/MOTDs/More)
This API is setup to serve "title storage" files, however these files are not included. Back in the day, Bungie had a bunch of tooling including big ass spreadsheets and debug game builds to spit out these files, these days we have a tool to generate everything we need from JSON called Sunrise-BLFTool.
There are a few options for content.
- Grab my recommended title storage files from the Sunrise-Content repository.
- Fork the Sunrise-Content repository and roll your own.
- Grab Gamecheat13's backup of the OG title storage before the servers were shutdown.
- Please note, this backup is slighlty corrupt (bad hash on network_configuration) which does cause some notable bugs, I recommend against this generally.
Once you've got the files you need, they live in public/storage/title
Running the app
# development
$ npm run start
# watch mode
$ npm run start:dev
# production mode
$ npm run start:prod
Last Updated 05/09/22 by Codie Stella 🐧