Performance first, universal Fortnite private server backend written in Go.
Go to file
eccentric 188e7dc7b0 Fixed Styled Lobbies; Fixed VBucks on early seasons; ...
Added KeyChain for newer seasons.
2023-11-05 22:08:53 +00:00
aid Fixed Styled Lobbies; Fixed VBucks on early seasons; ... 2023-11-05 22:08:53 +00:00
handlers Fixed Styled Lobbies; Fixed VBucks on early seasons; ... 2023-11-05 22:08:53 +00:00
person Fixed Styled Lobbies; Fixed VBucks on early seasons; ... 2023-11-05 22:08:53 +00:00
storage Fixed Styled Lobbies; Fixed VBucks on early seasons; ... 2023-11-05 22:08:53 +00:00
.air.toml Refactor how config is used. 2023-11-01 21:51:14 +00:00
.gitignore Hello, World! 2023-10-31 22:40:14 +00:00
default.config.ini Fixed Styled Lobbies; Fixed VBucks on early seasons; ... 2023-11-05 22:08:53 +00:00
go.mod Added Basic API! Can now get into lobby (C1S2) 2023-11-03 23:48:50 +00:00
go.sum Added Basic API! Can now get into lobby (C1S2) 2023-11-03 23:48:50 +00:00
main.go Fixed Styled Lobbies; Fixed VBucks on early seasons; ... 2023-11-05 22:08:53 +00:00
makefile Hello, World! 2023-10-31 22:40:14 +00:00
readme.md Better Output! 2023-11-05 02:43:21 +00:00

1

Snow

Performance first, universal Fortnite private server 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

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

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.