“IP leaking“ is an “issue“ with the majority of online games, even non-Nintendo ones. Many games opt to use p2p connections (where all users connect directly to, and send data between, each other, without a server in the middle) rather than client-server architectures (where each client connects to a central server, sending their data to said server, and the server forwards the data back to the other clients). There are tradeoffs between each approach (such as p2p being cheaper for developers to run, since there’s less server usage, at the cost of some stability since sessions are at the mercy of the internet speeds of the p2p host) so developers, on all platforms, pick what fits their games needs best
Nintendo has always used p2p connections for their games, including their most recent releases on the Switch 2, where the server just acts as a match maker that puts players in a room together before handing things off to the p2p session (there is a bit of nuance to this, but that’s the gist). Which means all Nintendo Network games are also all p2p, it isn’t specific to Minecraft
You should always operate under the assumption that your IP is exposed to everyone when playing online, in any multiplayer game, since any game could be using p2p connections. And it doesn’t even require any real cheat tools or mods or anything to see said IPs, just spinning up WireShark is enough to see all the data flowing into/out of your console including the IPs the data comes from. This is something you should just kind of accept as being a risk when you go online, or don’t play multiplayer games
We have experimented with using custom relay servers, where instead of another player being the p2p host our own servers are assigned as the host. Players then join the relay, still thinking everything is p2p, and our server just forwards the packets as needed. This would hide all players IPs from each other (as they would only ever see our servers IPs), and would increase connection stability (as we no longer need to worry about NAT conflicts between users setups). However this comes at a number of considerations:
- It could potentially introduce unexpected latency in sessions (our servers are not global, most of them are hosted in Germany, so if a session is between players who are all in the United States then every single packet has to make an entire hop to Germany before being forwarded, which could be slower than all players being in a normal p2p mesh)
- It would increase our running costs by quite a lot. Our bandwidth usage would drastically increase, which means we’d need beefier servers to handle it all. We’d need to allocate at least 1 port per user per relay mesh, and depending on the system the effective amount of usable ports is only around 30,000. That means that for example in Splatoon, which has 8 players per session, 30,000 ports is only enough for 3,750 sessions at once. Which sounds like a lot, but we would likely also be sharing this relay server between all games, and there are hundreds of games we still need to add support for. Those ports could easily be eaten up depending on load, so we could end up needing not just one beefier box, but multiple
- It would increase our development cost. Getting these relays to work reliably is not a trivial task, especially since there’s multiple p2p topologies that a session can use
- Being able to see all the p2p traffic would also give us the benefit of being able to track/inspect said traffic for moderation purposes, however this would obviously come with a need to revise our user data retention policies
We did run some tests with a private version of the relay system in Splatoon a while ago, which showed good results. Multiple matches were made with seemingly no issue. However isolated tests typically aren’t indicative of real-world results in our case, so it’s not likely that relays will be seen in use for some time (if ever, if we decide it’s not worth the costs)
The short answer is no. The long answer is:
What we did for Animal Crossing is fundamentally different that what you’re asking for. We did not implement an anti-cheat. Nothing we did prevents cheaters in the game, or any game, which is why you still see them. The patches we put out for Animal Crossing are specifically to fix an RCE vulnerability. In fact, the patches don’t even prevent malicious users from sending the RCE payload at all, they still can. The patches fix the vulnerability on the receiving end, so that when a malicious payload does reach the target, the attack fails
This is, again, because there is no server in use during multiplayer sessions. Everything is p2p. Our servers have no knowledge of any of the packets being sent between users when in an active session. All patches are client-side, which means any anti-cheat designed to stop the execution of cheats can just easily be disabled/removed from the cheaters device, because they control their own device. Animal Crossing: New Leaf cheat mods have already added support for our latest server release, trying to add an anti-cheat like that is effectively pointless. And most cheats don’t even make use of actual vulnerabilities in the games, they just take advantage of how the games were designed to operate. And there’s no real getting around that without rewriting massive chunks of games, which is just infeasible
Other projects that have anti-cheat that has stood for so long (such as CTGP7) are closed source, which we are not, so it’s much less trivial for cheaters to just remove/bypass the anti-cheat in those cases. Even using relay servers wouldn’t help here, since it would be infeasible to decode the data to inspect it live due to the massive complexity involved with the state management of p2p sessions (which goes far beyond simply relaying packets) and due to the latency involved with having to maintain said state, decrypt/decode the packets, inspect them and then encrypt/encode them back while not breaking the state before doing the relay
With Minecraft, we have chosen to keep the game as friends-only since it is unique in the sense that cheaters doing harm during a session can have long standing impacts on players. Someone using speed cheats or something in Mario Kart is only annoying for that session, and has no real impact on future sessions. With Minecraft it is trivial for a bad actor to ruin a world and lose someone hours, days, years of work they’ve put into it, which has a much larger, long lasting, impact on players