Pretendo does have plans to support third-party servers in the account server. I believe that this could be used by third-party developers like you who want to make and test new game servers. However, this is definitely a long-term plan that will take a while to get implemented.
opened 05:21PM - 31 May 24 UTC
approved
feature
### Checked Existing
- [X] I have checked the repository for duplicate issues.
…
### What feature do you want to see added?
(Mostly only making this issue to add it to the tasks tracker)
Add the ability to allow 3rd party developers to register both their own instances of NEX (game) servers, but also completely separate 3rd party services (such as those looking to integrate PNIDs into their systems)
### Why do you want to have this feature?
This would allow for developers to create their own instances of game servers, and users would select which instance to connect to. This is most useful in cases like:
- Heavily modded game sessions
- Players who may not want to conform to our general rules (allowing all cheats, everywhere, for example)
- Private tournaments
- Etc.
This would also allow non-game services, and games which are out of scope for us, to use existing PNIDs for authentication
### Any other details to share? (OPTIONAL)
***DUE TO THE WAY CERTAIN GAMES HANDLE USER GENERATED CONTENT, MIXING 3RD PARTY GAME SERVERS AND 3RD PARTY MIIVERSE IMPLEMENTATIONS, SPECIFICALLY, CAN VERY EASILY LEAD TO DATA CONFLICTS! THE IMPLEMENTATION NEEDS TO ACCOUNT FOR THIS!***
As an example, Mario vs. Donkey Kong: Tipping Stars uses ***BOTH*** Miiverse and NEX DataStore when uploading levels. The level data itself is uploaded to NEX DataStore, however a Miiverse post is ***ALSO*** created at the same time. The DataStore data and the Miiverse post are linked together through their unique IDs.
This, very obviously, will create data conflicts if naively implemented.
Say a user is using GameServerA and MiiverseA, and then uploads a level. Only GameServerA and MiiverseA have records of this data. Now say a user is using GameServerA, and MiiverseB. The user is given level data from GameServerA, attempts to load the linked Miiverse post from MiiverseB, and either fails to get data back or receieves incorrect data.
Now say a user is using GameServerB and MiiverseA, and uploads a level. MiiverseA now has records for DataStore data which does NOT exist on it's own GameServer instance.
***This is not a trivial problem to solve. There are options, such as only allowing the user to connect if using the same A/B instances of servers which rely on each other, however this is unreliable and would lock users out of other users data.***
In the meantime, if you want to self-host your own Pretendo server and develop on that, I made a project for that.
I’ve been working on this project for a while. It’s a way for you to self-host your own Pretendo Network server using Docker! It’s also a fully featured development environment with support for code editing and debugging. Check it out! (and feel free to star if it’s useful)
For the setup guide, please visit the documentation site.
Not all of the game servers are supported yet, check the containers table for a list. Here’s the roadmap issue with my plans for the project.