What if your goal was to connect as many people together as possible, for as cheap as possible within a Unity Game?
To be clear what I mean by social-MMO experience is that it relies on 3 things:
You can see other players. Their transform (and maybe current animation).
You can inspect other players.
You can talk to other players via text chat.
Everything else in the game is client side, so you cannot really interact with other players beyond these 3 requirements. In that way, it’s more like a social element is layered over your client. It also doesn’t need to be real time. You only have to receive player positions every 1-4 seconds.
The first thought that came to mind is just imagine a discord server, but every message received also comes with metadata including 3D position, rotation and animation state, and everyone is sending a message every 1-4 seconds.
I’m really trying to think of ways to overcome something like a relay server to connect players. It feels like it should be as easy as just visting a url with a stream of data.
I’m not going to answer your question because that’s like asking “how do I make Facebook”.
Unity isn’t your solution here, if you’re just passing transform and messages a simple websocket would be enough, you don’t need an entire engine to handle that. The messaging system alone on your own servers and technology would be a challenge (if you’re asking this question), Discord and other applications spend a lot of money to adopt users in the beginning, they don’t just strike it rich out of pure luck.
UAC is your biggest hurdle, not the technology.
Start by looking into protocols to understand what you should be doing. Best of luck.
I should be clear I’m open to using any stack/protocol for the backend, it’s just Unity would be the “front end”.
Imagine you join a ‘room’ and it API requests to a url giving you the position of each player in that room, and then unity uses that information to update. Unity itself would just be sending and receiving API post/fetch requests.
Perhaps this kind of technology is outside of the scope of what to expect on a Unity Forum.
Another requirement ill add is no server-side history, everything is transient.
It’s not outside the scope of unity it’s just not a unity question. It’s more of a basic app question. Unity isn’t the fastest or cheapest way to achieve this either. Js or other frameworks suited to messaging systems would be better and offer pre made solutions most of the time
Your problem isn’t fronted, anything can render or display the positions and messages, even basic js can display avatars and play anims. Your problem is designing a mmo, this means servers, the protocols, the security, user aquastion.
Your front end can be anything, even an electron app like discord. For a project like this I wouldn’t really reccomend unity as you’re not really using unity. You’re just using a message system, why use a game engine that has all these libraries for games when all you say you need is a few systems?
Your question falls into the category of picking a protocol and then building your infustructure around that. The front end is a small fraction of this entire picture.
Actually never heard of it, but it looks really similar.
The reason I think it’s relevant to games is ‘social-multiplayer’ should be reasonably easy to implement compared to actual multiplayer with object ownership, networked state of the game etc.
Don’t forget: You’d have to have total control of that URL and what’s available on it 24/7. If either the URL changes or the content may “expire” or get modified by a third party, the solution is whacky at best. Thus, any reliance on Discord is out of the question.
Moreover, the EULA of such services may actually prohibit this kind of abuse which - if in doubt - would be a lingering killswitch all the time until someday, someone discovers the abuse or it gets reported.
Ultimately, you’re going to have to run a webserver somehow somewhere that is under your control. So even virtual, shared webhosting for cheap still won’t have the critical availability and (likely) resources available to it.
Renting several (across the globe) virtual managed servers with some administrative control is the minimum viable option IMO. However, you don’t want to struggle with a dozen server providers to run 30+ servers around the globe due to the sheer administrative overhead and technical issues. It would pay off to find a single rental service that provides servers across the globe.
And that’s where you’ll find yourself considering AWS, Cloud Compute, and similar services.