Page 1 of 1

Mineteset as global virtual world

Posted: Thu Jun 26, 2014 07:55
by jimy
We have a virtual world with thousands of servers. OK now why not make a single virtual world? What I propose is difficult, but I think it would be possible to create links between servers to make continuous two worlds. For example, when I would go in a certain area on a first server, it instantly teleport me to a second server. And traveling in the opposite direction, I would stay on the first server. I think that would be easier between one world and another one server rather than between two servers.

Re: Mineteset as global virtual world

Posted: Thu Jun 26, 2014 11:55
by Evergreen
jimy wrote:We have a virtual world with thousands of servers. OK now why not make a single virtual world? What I propose is difficult, but I think it would be possible to create links between servers to make continuous two worlds. For example, when I would go in a certain area on a first server, it instantly teleport me to a second server. And traveling in the opposite direction, I would stay on the first server. I think that would be easier between one world and another one server rather than between two servers.
The inter-server transport thing has been discussed already, and atm it just isn't possible. It is an interesting idea, but what's the point of having it between all the servers? What if a server owner doesn't want that?

Re: Mineteset as global virtual world

Posted: Thu Jun 26, 2014 12:29
by thetoon
First of all, you'd have to limit that to willing servers. Then, you'd want those servers to run the same mapgen (or at least mapgens aware of each other, e.g. each creating island(s) surrounded by sea), or else you'd have some really "interesting" seams between servers. Same goes for available nodes : you need to have the very same node definitions on all hosts.

Then, you'd want to tackle authentication. Just because I'm known by server A doesn't mean server B can't trust me. Two paths here : either a central, shared, auth server (every server you connect to would actually check your credentials against that central auth server) ; or some crypto-way of building trust between servers (think of Kerberos-like tokens that each server could emit and check).

The inter-server protocol isn't absolutely mandatory, as long as there's a way for clients to pass the information from one another in a secure and tamper-proof way.

Let's say you've logged in SRVA, where you have a regular (login+pass) account. At one point, you encounter a special "cross-server-teleporting" node, which starts the following process :

* serialize your inventory (and player status, and all)
* add information to where you should spawn (server, node's coordinates and facing)
* generate some crypto-token with a (short) TTL and add it the the former
* sign the whole thing with SRVA's public key
* give the signed thing to the client

Then the client would have anything it needs to :

* check signature for the whole blob, if it wants to
* connect to the server mentionned in the blob (no login or password involved here)
* pass it the whole blob

SRVB (if that's how we call it) would then :

* check signature for the whole blob (mandatory)
* deserialize it
* spawn a newly created player with information pulled out of the blob.

Re: Mineteset as global virtual world

Posted: Thu Jun 26, 2014 16:31
by Casimir
You might be interested in this project: viewtopic.php?f=12&t=9554

Re: Mineteset as global virtual world

Posted: Thu Jun 26, 2014 17:18
by twoelk
yes this really has been discussed multiple times.
thetoon wrote: . . .
* serialize your inventory (and player status, and all)
. . .
eh? Yeah put my inventory full of mese and diamonds on a creative server and smuggle that onto a survival server?
The only things that should be safe to take accross by default would be player identity and maybe personal skin texture, nothing else.
jimy wrote: ... when I would go in a certain area on a first server, it instantly teleport me to a second server.

Ha! there we have the impossible word "instantly" !

Yet lets study a hypothetical usecase. Imagine playing on a server running Minetest Nostalgia. Now you decide to travel to another server. Let's just assume for this example each server world is surrounded by water making each server world a set of islands. Now these servers could be part of a "grid" as some of the OpenSimulator worlds are. So we might come to a stretch of ocean that we begin to traverse. We might enter a transition zone that is not part of the server anymore but serves as some sort of limbo for avatars while the servers comunicate a handover. Maybe you will have to give some sort of customs officer your ingamename and password to cross the virtuall border.
Here comes the tricky part.
You have decided to go to a server running the Dreambuilder game. So almost nothing of the previously loaded game can be reused. All mods, textures, models and loads of other stuff will have to be downloaded to your client. Have you ever connected to a mod-heavy server? This might take half an hour or more, depending on your internet connection. So there you are in the middle of nowhere waiting to join the new server. Of course you arrive with empty pockets because almost none of the nodes from the old game are known here. Well then lets go to some transportation device and hop/teleport to some other server running the realtest game. And once more you will have to wait while the new game is downloaded again. Of course we have a completely different set of nodes on this server. Maybe an achievement system is active on this server and you become a master of all arts. Time to travel on, so lets join the next server. You cast a spell that includes your ingamename and passwort and transpose yourself to the next server. After several minutes in magicnowhereland you finally arrive in a world run by the Adventuretest game and you are a novice again. The achievement system is incompatible and again you can only bring along your name and maybe the skin, just like the Terminator.

As much as I like the idea, especially the islands in a vast ocean version, I don't think it would be like most people would want it to work. The servers are very different. Each has a unique set of mods with a vast variety of nodes and most use different Minetest versions to run the server. Travelling between servers would probably be not any faster than using the public server list in the main menu and for many reasons you will and should be not able to take your personall inventory and privileges along, just as any achievement or leveling status. I guess this would make such a possabilty rather useless for what most people that request this have in mind to using it for ;-P

Nevertheless, having access to the public server list from within a running game might be an interesting mod yet to be made.

Re: Mineteset as global virtual world

Posted: Fri Jun 27, 2014 14:26
by thetoon
twoelk wrote: eh? Yeah put my inventory full of mese and diamonds on a creative server and smuggle that onto a survival server?
The only things that should be safe to take accross by default would be player identity and maybe personal skin texture, nothing else.
I do second that, as long as servers aren't aware of each other. Problem is : if servers aren't, it will be hell to ensure continuous mapgen. So basically, if you want to link servers together as that guy described (i.e. seamless), you NEED your servers to be thoroughly synchronized on a number of things : mapgen, auth, ... At that point, it's safe to assume nodes definitions could be synchronized as well, and as such it's not much more work to transfer inventory.

Re: Mineteset as global virtual world

Posted: Fri Jun 27, 2014 16:19
by HolyPhoenix
I wouldn't mind this. Each server could be setup to generate a certain section of the world. So one could do an icy mountainsides region and another a vast ocean underworld. I would say that this shouldn't be the only option though. I wouldn't necessarily want all of my servers to be connected to other servers, and I wouldn't necessarily want only a single vast server.

Re: Mineteset as global virtual world

Posted: Sat Jun 28, 2014 13:40
by jimy
Evergreen wrote:
jimy wrote:We have a virtual world with thousands of servers. OK now why not make a single virtual world? What I propose is difficult, but I think it would be possible to create links between servers to make continuous two worlds. For example, when I would go in a certain area on a first server, it instantly teleport me to a second server. And traveling in the opposite direction, I would stay on the first server. I think that would be easier between one world and another one server rather than between two servers.
The inter-server transport thing has been discussed already, and atm it just isn't possible. It is an interesting idea, but what's the point of having it between all the servers? What if a server owner doesn't want that?
If a server owner dosen't want that, he could set "IST_enable = false" in his minetest.conf
Sorry about it is not possible.

Re: Mineteset as global virtual world

Posted: Sat Jun 28, 2014 13:58
by jimy
So,

* mods and server versions must be same
* mapgen sould be same (It can be possible to have multiple magens for 1 world, I know it because I have a minetest world I have from minetest 0.3)
* connection must be good (but mods could be loaded on the client when the player come near the "transworld zone", a long time before the travel)
* an inter-server protocal is necessary (but it souldn't be very big, because of a short number of transactions)
* server owners can define if he wants his server could connect itself to others very simple, simple option in minetest.conf
* players profile must be copied from the gateway server to others connected

I think the world transportation can be done by the client. The client him-self can ask a new parallel connection to an other server, and shown to the player several worlds in the same OpenGL scene.