Page 1 of 1

Multiple Worlds

PostPosted: Tue Jan 03, 2012 20:01
by jn
(I'm not sure if this shouldn't rather go into Feature Discussion)

I think it would be nice if Minetest would support multiple worlds natively, i.e. through an option in the "server" section of the main menu. I think this shouldn't be too hard technically, but I've only started reading the source yesterday.

--jn

PostPosted: Tue Jan 03, 2012 20:18
by sfan5
jn wrote:(I'm not sure if this shouldn't rather go into Feature Discussion)

I think it would be nice if Minetest would support multiple worlds natively, i.e. through an option in the "server" section of the main menu. I think this shouldn't be too hard technically, but I've only started reading the source yesterday.

--jn

+5 Really good Idea!

PostPosted: Tue Jan 03, 2012 20:25
by sapier
I'm not really sure what you are pointing at, multiple worlds at the same machine can already be run by starting servers at different ports.

Running multiple worlds on one server implies at least adding some additional complexity in message handling on server side and changes in protocol.


Probably some sort of "server browser/bookmark browser" in client start screen would meet your requirements without having to change server and protocol ?

PostPosted: Tue Jan 03, 2012 20:48
by Daraku
minetest has an world height as 64000 (+-32000). if every world will have an 1000 blocks height, it-is 64 worlds in one server.
Just need a mod for that :)

PostPosted: Tue Jan 03, 2012 21:36
by RAPHAEL
I think what jn means is when you start up the minetest client you have like a dropdown of available worlds maybe. If not correct me jn.

PostPosted: Tue Jan 03, 2012 23:47
by jn
@RAPHAEL: This is what I mean.

PostPosted: Wed Jan 04, 2012 00:20
by mcburgerbob
cool! I didnt know that was possible!
64 worlds inside one server... wow

PostPosted: Wed Jan 04, 2012 01:14
by redcrab
It's What I ve done
On one machine have multiple world ... (for me 2 world staging and official)
One world per port ...
then the world selector can be the port ...
something nice could have a dropdown to select friendly name ... and behind each frinedly name there is a address and port ...
with one texture cache per world...

PostPosted: Wed Jan 04, 2012 03:55
by sapier
adding different texture caches at the same server most likely will break protocol compatibility again ;-)
on different servers it would be as simple as changing the client to have a cache per server

PostPosted: Wed Jan 04, 2012 10:28
by neko259
Maybe add an s2s portal? When you use it, you automatically connect to a different server (on the same machine but different port or even different machine). This won't break protocol and will make it possible to make the main server with portals to every other server (lika a serverlist, but in-game).

PostPosted: Wed Jan 04, 2012 11:51
by Staffs
neko259 wrote:Maybe add an s2s portal? When you use it, you automatically connect to a different server (on the same machine but different port or even different machine). This won't break protocol and will make it possible to make the main server with portals to every other server (lika a serverlist, but in-game).

Ooh Making my own made house with server-portals... AWESOME. Someone should make that !!

PostPosted: Wed Jan 04, 2012 11:59
by neko259
Just need a lua method to connect to certain server and disconnect from current without exiting to the menu.

Edit:
Mmm, no. It's not that simple. We need to bring the inventory to another server and also set player's position when he arrives. And if servers contain different mods, we can't bring some items to another server :(
For now, I think the best solution would be just connecting without any inventory/lives/position setting.

PostPosted: Wed Jan 04, 2012 12:10
by Staffs
yeah

PostPosted: Wed Jan 04, 2012 12:30
by Daraku
2neko259:
So basicly you suggesting next test case:
1. User connect to the main server
2. Then go to the some kind of portal
3. Server send cmd to client to redirect to anouther server
4. Client disconecting from current setver and start conection to anouther server
5. Client say to new server that it came from anouther server
5. New server request player info from sender server
6. Player login with all it inventory from previous server

PostPosted: Wed Jan 04, 2012 12:56
by neko259
Daraku wrote:2neko259:
So basicly you suggesting next test case:
1. User connect to the main server
2. Then go to the some kind of portal
3. Server send cmd to client to redirect to anouther server
4. Client disconecting from current setver and start conection to anouther server
5. Client say to new server that it came from anouther server
5. New server request player info from sender server
6. Player login with all it inventory from previous server

Yes. Currenty I don't know, what to do with password (player has to enter his password for the server he's entering).

PostPosted: Wed Jan 04, 2012 13:01
by Daraku
neko259 wrote:Yes. Currenty I don't know, what to do with password (player has to enter his password for the server he's entering).


Not neccesary. Main server can provide a client with some sort of a session key, that client will present to a new server, and then new server will chek validity of that key on a new server.

PostPosted: Wed Jan 04, 2012 13:06
by neko259
Daraku wrote:Not neccesary. Main server can provide a client with some sort of a session key, that client will present to a new server, and then new server will chek validity of that key on a new server.

You mean the key would be created when the player logins with password from the menu first time, like in web?

PostPosted: Wed Jan 04, 2012 15:41
by sapier
Just another question what to do if client can reach both servers, but servers can't talk to each other? ;-)

PostPosted: Wed Jan 04, 2012 15:43
by neko259
sapier wrote:Just another question what to do if client can reach both servers, but servers can't talk to each other? ;-)

In general case they don't need to talk to each other. We just need some way to ask player for a password before entering the server. Then he will tell the server about his inventory and others.

PostPosted: Wed Jan 04, 2012 16:15
by Daraku
neko259 wrote:Then he will tell the server about his inventory and others.


Em... this is opensource client, I'm can easily y create a mod that will always tell server that I'm has 8x4x99 blocks of mese in my inventory ;)

PostPosted: Wed Jan 04, 2012 16:22
by neko259
Daraku wrote:Em... this is opensource client, I'm can easel y create a mod that will always tell server that I'm has 8x4x99 blocks of mese in my inventory ;)

Well you can always make your own server, use /give command and make 8x44x99 blocks of mese. It's a matter of trust. Maybe the server would have a list of trustable servers and visitors from other servers would lose their inventory.

PostPosted: Wed Jan 04, 2012 16:31
by Daraku
Then it just a set of different servers, not a multiple worlds. If I'm can't bring all my stuff from one server to another it has no point.

What experience this feature will add to the game?

PostPosted: Tue Jan 10, 2012 11:25
by Nemo08
may be possible to create wolds on same server like as separate maps for dungeons / hell / heaven with own rules/items?
and s2s +100500

PostPosted: Tue Jan 10, 2012 13:32
by jn
sapier wrote:adding different texture caches at the same server most likely will break protocol compatibility again ;-)
on different servers it would be as simple as changing the client to have a cache per server

Isn't the texture cache handled on the client-side only?
AFAIK, the current protocol uses MD5 checksums for verification. I think we could base the texture cache on them, which would make sense anyway, because two servers using different data with the same texture name is quite common (think texture packs) and hash collisions are _very_ uncommon.


Nemo08 wrote:may be possible to create wolds on same server like as separate maps for dungeons / hell / heaven with own rules/items?

If done right, that would probably require support for multiple maps per world, which is not in place yet. But maybe this could also be done by just modding the map generator a bit to hide the