The next-generation master server for Northstar.
TODO: Finish the rest of this README.
The next-gen master server for Northstar.
License: MIT License
Add a version gate endpoint so that third-party applications can know what it's set to.
Possibly an extension of #10
An unknown issue is causing "Invalid username." errors when authenticating to game servers.
The common thing about most cases so far is EA username changes. If so, presumably, the Origin API is not returning the correct username anymore? (edit: that might have been a red herring; the common thing now seems to be the sp campaign, and in all cases, atlas is getting the correct username)
https://discord.com/channels/941433221093130270/1045455136169934938
Update: This is primarily a launcher bug; see #15 (comment).
I know docs are in the works but we should at least already have a basic README that says what Atlas is, i.e. MasterServer for Northstar.
We should split up the version gate for servers and clients.
In particular in our current setup, updating a client is much easier than a server (assuming mod-manager). At the same time most vulnerabilities we had to patch and version gate for were on client. As such, we should selectively version gate so that we don't force servers to update where they don't have to.
Another use-case is changes that break backwards compatibility. For example, R2Northstar/NorthstarLauncher#408 will break compatibility with old clients when joining newer servers but newer clients can still play on old servers. As such, it would make sense to version gate only client here.
On Vanilla, clients grab playlists_v2
from Stryder, which contains the gamemodes, maps, etc. as well as localisation for these.
It would be useful for clients to be able to request some localisation document from Atlas. This could be used for displaying localised error messages, mainmenupromos, or potentially even lobby announcements.
In particular:
Continued from R2Northstar/NorthstarMasterServer#84.
Should include:
Atlas should be able to detect mismatches between the gameserver auth/game ports to ease troubleshooting configuration issues since currently, a mismatched auth/game port will cause odd authentication errors to be given to players upon connection.
Having a system to identify a server without impersonation would allow a "favorite server" system.
I'd propose a system inspired by tripcodes often used in imageboards:
Similar to /client/mainmenupromos
, we should have an endpoint for general northstar announcements that show in the multiplayer lobby on clients.
This PR currently attempts to fetch the data from /client/announcement
. It currently expects the response body to be JSON in the following format. All of this is easily able to be changed.
{
"announcement": "Hello, this is an announcement",
"announcementVersion": "3"
}
When making a new announcement, announcementVersion
must be incremented. Not a lot I can do to get around this, since that's how the vanilla game detects new announcements to display.
Should include stuff about:
Probably should also add a no-cgo build to make things easier for Windows users.
Origin -> EA Desktop...
Hetzner US IPs are currently being mapped to Europe, e.g. 5.161.77.0/24
, which should be Ashburn.
As a temporary workaround until the @ip2location databases are fixed, Atlas should support overriding the region for IP ranges.
Required for feature parity with the old server, also supersedes R2Northstar/NorthstarMasterServer#66.
Eventually, we want to run Atlas on its own subdomain, putting the website on GitHub Pages or something similar.
We currently have no way to verify the identity of an http request made by a client.
A system that allows 3rd party HTTP servers to know if an HTTP request was made by a genuine player would be great.
For Tone API, this would allow players to authenticate with our backend.
This would mean we can create per-player settings on the backend, and allow players to edit them using a client mod.
We would also be able to let users link their UID with Discord (using a client mod and a discord bot for example)
Linking UIDs with Discord users would mean being able to login through our website (using Oauth2) and change settings.
It would also facilitate fetching one user's stats from the discord bot, or even change settings through the bot.
I'd suggest to use a token-based authentication system
Informations the masterserver could return :
TODO
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.