67 lines
3.0 KiB
Markdown
67 lines
3.0 KiB
Markdown
![1](https://github.com/ectrc/snow/assets/13946988/fc007f07-3878-46e7-b990-668fc3d758d0)
|
|
|
|
# Snow
|
|
|
|
Performance first, universal Fortnite backend written in Go.
|
|
|
|
## Features
|
|
|
|
- **Blazing Fast** Written in Go and build on Fast HTTP, snow is extremely fast and can handle any profile action in milliseconds with its caching system.
|
|
- **Profile Changes** Snow, semi-automatically, keeps track of profile changes exactly like Fortnite does, meaning it is one-to-one with the game.
|
|
- **Universal Database** Easily add new storage methods that satisfy the `Storage` interface. This means you can use any database you want. _(example of how to do this coming soon)_
|
|
|
|
## Examples of Person Structures
|
|
|
|
### Quests
|
|
|
|
```golang
|
|
schedule := person.NewItem("ChallengeBundleSchedule:Paid_1", 1)
|
|
user.AthenaProfile.Items.AddItem(schedule)
|
|
|
|
bundle := person.NewItem("ChallengeBundle:Daily_1", 1)
|
|
user.AthenaProfile.Items.AddItem(bundle)
|
|
|
|
quest := person.NewQuest("Quest:Quest_2", bundle.ID, schedule.ID)
|
|
quest.AddObjective("quest_objective_eliminateplayers", 0)
|
|
user.AthenaProfile.Quests.AddQuest(quest)
|
|
|
|
daily := person.NewDailyQuest("Quest:Quest_3")
|
|
daily.AddObjective("quest_objective_place_top10", 0)
|
|
user.AthenaProfile.Quests.AddQuest(daily)
|
|
```
|
|
|
|
### Profile Changes
|
|
|
|
```golang
|
|
snapshot := user.CommonCoreProfile.Snapshot()
|
|
{
|
|
vbucks := user.CommonCoreProfile.Items.GetItemByTemplateID("Currency:MtxPurchased")
|
|
vbucks.Quantity = 200
|
|
vbucks.Favorite = true
|
|
|
|
user.CommonCoreProfile.Items.DeleteItem(user.CommonCoreProfile.Items.GetItemByTemplateID("Token:CampaignAccess").ID)
|
|
user.CommonCoreProfile.Items.AddItem(person.NewItem("Token:ReceiveMtxCurrency", 1))
|
|
}
|
|
user.CommonCoreProfile.Diff(snapshot)
|
|
```
|
|
|
|
## What's next?
|
|
|
|
- Authentication for the game to determine if the person is valid or not. Fortnite uses JWT tokens for this which makes it easy to implement.
|
|
- Every endpoint that is used by Fortnite. This includes all MCP Operations and even extracting data from the telemetry.
|
|
- Embed game assets into the backend e.g. Battle Pass, Quest Data etc. _This would mean a single binary that can be run anywhere without the need of external files._
|
|
- Interact with external Services like Amazon S3 Buckets to save player data externally.
|
|
- A way to interact with accounts outside of the game. This is mainly for a web app and other services to interact with the backend.
|
|
|
|
## Known Supported Versions
|
|
|
|
- **_Chapter 1 Season 2_** `Fortnite+Release-2.5-CL-3889387-Windows` I started with this build of the game as it requires more work to get working, this means snow can support _most_ versions of the game.
|
|
|
|
## How do I use this?
|
|
|
|
It is _technically_ possible to clone the repository and host the backend. However, this is in a very early stage and does not have a lot of features. _For example, you cannot create an account externally._ **I would recommend waiting until the backend is more stable and has more features before using it.**
|
|
|
|
## Contributing
|
|
|
|
Contributions are welcome! Please open an issue or pull request if you would like to contribute.
|