Server to server travel, and world persistence

Hey Everyone!

I have been working on some external features that I wanted to use for a game idea I had. I thought the features might be valuable to other developers too, so I built a system to be flexible enough to accommodate many games at once. This demo is slightly different but related to the Competitive-Matchmaker demo.

It’s going to be free, with open source plugins, and open source tutorials.

This is a feature set for long-running servers (as opposed to servers that just handle a single match), and would be most useful for MMO style games where there are multiple areas, connected through some kind of travel mechanism.

Features:

Dynamic server deployment: Create and destroy dedicated servers when needed.
Server persistence: Servers can retain their state, even when offline. Rama’s save system is recommended, and works great.
Player persistence: Score, rank, inventory, abilities, Ui settings, etc. All of this is saved externally, and moves with the player across servers.
Server to server travel: Players can travel from one server to another. Trigger this from game play events, or portal objects, and move a player to a different server/zone.

More details:

I am looking for some developers that are interested in this. I’d love to hear any comments or critiques. Please get in touch!

hahaha this looks amazing . I think im going to go cry now as i have been working on a similar system myself for the past few weeks , literally just finished the code to dynamically start servers a few days ago . As i hadn’t seen anything like this i thought i was onto something unique But you seem like your a lot further ahead than me and you specialise in back-end development so your system will probably run rings around mine .
Guess i better just wait for your release. look forward to seeing the rest

This is some grade A quality stuff man. I can already see this being used in big mmo like titles.

Hey @UEtopia this looks amazing :smiley:

Got a suggestion for your plugin though - Would it be possible to get player trigger-able volume that player(s) could enter that could transfer the player to another server?
I can see this be useful for something like a star trek styled teleporter, a star gate, wormholes, Jump gates, etc. that can transfer you and others to another server.

Also how do I get in touch? I want to use this. :slight_smile:

This is relevant to my interests.

I briefly been experimented with multiples worlds a good while ago.
Picked it back up recently and have been meaning to do more with it.
The idea was to allow a persistent area that acts as a 3d lobby and setup area to use between rounds and when loading in a new play area.
I’m wondering if it would be possible to join multiple servers at once as well, possibly render some basics from the other server.

Be interested in seeing this in action to see if it can be adapter to use self hosted servers that act as your own personal world, with dedicated servers acting as cross over points between them.

Hi HeadClot.

Yes, that is exactly right. In the video example, you see I trigger the “portal” with a keypress. But this could be triggered however you want for your own implementation.

Great ideas! “join multiple servers at once” - not sure what you mean by this.

Imagine having a doorway that you opened that would show the world and contents from a different server, much like the view you get through a portal.
Would require multiple net connections and other shenanigans, but could be quite useful.

I am working on a small space multiplayer and your system would be a godsend.Bring it , even if it is not free !!!:cool:

Thanks Kris. Yeah that could be really cool. After I get through some more of the core functionality on my list, I’ll think about this one.

In fact, most of the “mmo” of big multiplayer world would benefit of a seamless travel (server to server).
In theory it’s simple but the implementation is not.
all in all if your plug-in can handle that from scratch, I bet a lot of project can benefit this.

The goal is to able to switch a server connection to another one and keep all the “actor” in place with replication moving from one server to another one.

One thing that is difficult is the edge sync. Let’s say you are on a border between 2 zones, how will you notifies the other border that you are there so player on the other side can see you (server to server communication in a master/slave manner) then if you cross the border the master become slave and slave become master and on the player side you are now communicating with the Server 2.

That’s not somethinf undoable, but just need some network engine knowledge :smiley:

Would this plugin support or at least allow the setup of drop-in multiplayer? Similar to how things work in Watch_Dogs 1/2.

I’ve never played Watch_Dogs. Can you describe the feature they use?

You play in single player, invite a friend to play together and without any loading screen you see your friend in your game and you can see each others and play together

Can we create a server from within the game? Must it be Dedicated? If we open the World Composition, does it cause any trouble here?

Essentially this.

Watch Dogs is for the most part, an open-world single player game. However, if you have the online options enabled, you can occasionally see other players in the world. Or, they can choose to enter your game for some PVP activities.

I don’t see anything that is not already in game.

In fact, if you launch the single player game as a “host server”( not dedicated). Anyone who have the “ip:port” can join and play immediatly with you.

What do you expect from this plugin to do for you on this topics?

Friends and invitations are supported through the OSS, and are on my list of TO-DOs. I have a couple other things that I need to finish first, but yes… This will totally be possible. Give me a month or two.

Its less about launching a game as a host. You basically want to be able to dynamically launch/join a multiplayer session, without having to leave the current play session. Its basically seamless in their execution.

The system I’m building is compatible with this, with a slightly different perspective.

Take Diablo 3 for example, which has a similar “join a friend” feature.

You can start a game by yourself. Other players can be invited, friends can join. It’s all “seamless” in the way you describe. But… In actuality, there is a multiplayer server involved from the very beginning. It never switches from a single player game to a multiplayer game… It was a multiplayer game to begin with.

There are many reasons to use this approach, especially now that creating and destroying dedicated servers is so cheap and easy.

Does that make sense?