Multiple worlds / areas per world

User avatar
MirceaKitsune
Member
 
Posts: 809
Joined: Sat May 21, 2011 22:31
GitHub: MirceaKitsune
IRC: Taoki
In-game: MirceaKitsune

Multiple worlds / areas per world

by MirceaKitsune » Mon Jun 17, 2013 21:27

I know this was discussed on IRC at least, but don't remember any threads for it. Especially with the coming of mapgen v7 (which allows custom biomes) I think we should consider support for multiple worlds per world / server. What I mean is a system like Minecraft's which allows having the normal world, the Nether, and the End, between which players can travel freely. Minetest doesn't support loading multiple areas yet, with each voxel map stored in its own database and its own set of nodes (so the node at 0 0 0 is not the same on one world as on the other).

To be clear, I'm not suggesting this for the sake of copying Minecraft, but because multiple environments that players can travel between is something I consider useful and important. I wouldn't want minetest_game to have something just like the Nether, but I'd like a different non-Earthly world that you can craft portals to.

The way I'd suggest this, there should be a few Lua functions added. One function is to create a new zone, using a given biome definition list. Another function would be to teleport a player or Lua entity between areas. Each area would have an ID, 1 being the first / normal world.

My only concern is that this could mess up existing Lua functions. For example, when you use get_node(pos) or set_node(pos), which area would it get the node at that position from? We could add an optional parameter which addresses the initial world when nil (and world ID when entered) which should offer correct functionality and prevent breakage for existing mods. If those problems can be solved, I'm hoping something can be done to add support for this.
Last edited by MirceaKitsune on Mon Jun 17, 2013 21:27, edited 1 time in total.
 

User avatar
Evergreen
Member
 
Posts: 2131
Joined: Sun Jan 06, 2013 01:22
GitHub: 4Evergreen4
IRC: EvergreenTree
In-game: Evergreen

by Evergreen » Mon Jun 17, 2013 21:29

Yes, sounds like a great idea. It would increase the file size for each world folder, but still. +∞
"Help! I searched for a mod but I couldn't find it!"
http://krock-works.16mb.com/MTstuff/modSearch.php
 

User avatar
PilzAdam
Member
 
Posts: 4026
Joined: Fri Jul 20, 2012 16:19
GitHub: PilzAdam
IRC: PilzAdam

by PilzAdam » Mon Jun 17, 2013 21:37

It would require that almost everything is changed.
The world is big enough to have multiple realms in the same map.
 

User avatar
Evergreen
Member
 
Posts: 2131
Joined: Sun Jan 06, 2013 01:22
GitHub: 4Evergreen4
IRC: EvergreenTree
In-game: Evergreen

by Evergreen » Mon Jun 17, 2013 22:26

PilzAdam wrote:It would require that almost everything is changed.
The world is big enough to have multiple realms in the same map.
Yes, but that isn't the point. I'm tired of having to generate different sections of the map to be different realms. Plus, it isn't a different realm if it is on the same map.
"Help! I searched for a mod but I couldn't find it!"
http://krock-works.16mb.com/MTstuff/modSearch.php
 

User avatar
mauvebic
Member
 
Posts: 1550
Joined: Fri Jan 27, 2012 11:32

by mauvebic » Mon Jun 17, 2013 22:33

The map is big enough to split into several chunks without ever being able to see them all at once. You could even use barriers made of unbreakable nodes to separate them.

If you want a different realm with different mods, nodes and physics, then what you need is server-to-server teleportation, which has also been discussed.
Last edited by mauvebic on Mon Jun 17, 2013 22:33, edited 1 time in total.
"Fuck the hat." - Paulie Gualtieri
 

User avatar
Inocudom
Member
 
Posts: 2889
Joined: Sat Sep 29, 2012 01:14
IRC: Inocudom
In-game: Inocudom

by Inocudom » Mon Jun 17, 2013 23:02

The upper parts of a map are good for a sky realm, while the lower parts of a map are good for a subterranean realm. A map has a lot of height and depth. Don't waste it.

A different map could be good for a border world that is complex and has its own underworld, overworld, and skyworld. That is the only reason I would justify the creation of another map.
Last edited by Inocudom on Mon Jun 17, 2013 23:07, edited 1 time in total.
 

Rath
Member
 
Posts: 16
Joined: Wed Jul 18, 2012 03:53

by Rath » Tue Jun 18, 2013 00:13

What about for small pocket worlds that have limited boundaries?
 

User avatar
MirceaKitsune
Member
 
Posts: 809
Joined: Sat May 21, 2011 22:31
GitHub: MirceaKitsune
IRC: Taoki
In-game: MirceaKitsune

by MirceaKitsune » Tue Jun 18, 2013 00:21

PilzAdam wrote:It would require that almost everything is changed.
The world is big enough to have multiple realms in the same map.


Yes unfortunately. I can imagine it would require modifications to the node / chunk management system, several Lua functions, and likely even more. As for the world being big enough for multiple realms, Evergreen spoke my mind on one concern:

Evergreen wrote:Plus, it isn't a different realm if it is on the same map.


If you can walk from one realm to another, it breaks the concept of it being a different realm. Using a different height for realms would also not work, since a lot of things depend on vertical position. To quickly name one, you wouldn't see the 3D clouds because they're rendered at height 200 if I'm correct.

There is another way however; Using multiple world sections. Like when you walk really far, you reach a point where the world stops loading and you hit an invisible wall. We could create a Lua function that allows dividing the world's bounds into different realms, by specifying 2D boxes. So if we give one realm { x = 0.5 y = 1 } it would mean the upper rectangular area of the Minetest world limit would use another biome.

But the important rule must stick: You can't walk from one realm to another or see past the "magic line". Once you reach the barrier with another realm from the realm you're in, you see everything stop loading and are unable to cross the invisible wall.

What do you think about this idea, PilzAdam? Would it be more doable and an approach you agree on if someone can do it?
Last edited by MirceaKitsune on Tue Jun 18, 2013 00:25, edited 1 time in total.
 

User avatar
Evergreen
Member
 
Posts: 2131
Joined: Sun Jan 06, 2013 01:22
GitHub: 4Evergreen4
IRC: EvergreenTree
In-game: Evergreen

by Evergreen » Tue Jun 18, 2013 00:47

MirceaKitsune wrote:
PilzAdam wrote:It would require that almost everything is changed.
The world is big enough to have multiple realms in the same map.


Yes unfortunately. I can imagine it would require modifications to the node / chunk management system, several Lua functions, and likely even more. As for the world being big enough for multiple realms, Evergreen spoke my mind on one concern:

Evergreen wrote:Plus, it isn't a different realm if it is on the same map.


If you can walk from one realm to another, it breaks the concept of it being a different realm. Using a different height for realms would also not work, since a lot of things depend on vertical position. To quickly name one, you wouldn't see the 3D clouds because they're rendered at height 200 if I'm correct.

There is another way however; Using multiple world sections. Like when you walk really far, you reach a point where the world stops loading and you hit an invisible wall. We could create a Lua function that allows dividing the world's bounds into different realms, by specifying 2D boxes. So if we give one realm { x = 0.5 y = 1 } it would mean the upper rectangular area of the Minetest world limit would use another biome.

But the important rule must stick: You can't walk from one realm to another or see past the "magic line". Once you reach the barrier with another realm from the realm you're in, you see everything stop loading and are unable to cross the invisible wall.

What do you think about this idea, PilzAdam? Would it be more doable and an approach you agree on if someone can do it?
Good idea. I hope we get somewhere with this, as I have been wanting something like this for quite a while now.
"Help! I searched for a mod but I couldn't find it!"
http://krock-works.16mb.com/MTstuff/modSearch.php
 

User avatar
Dopium
Member
 
Posts: 233
Joined: Sat Jun 09, 2012 15:43

by Dopium » Tue Jun 18, 2013 02:00

Well i can say after looking into a moon mod i have noticed there could be atleast 3 decent size realms within the original map(planets). I mean a realm .y depth of 10000 nodes is more then enough for a complete realm/new world. You could even think of it like a parallel universe type thing, but in all serious there is alot of wasted space up there and the distance even with fly/fast enabled is a long way up
Last edited by Dopium on Tue Jun 18, 2013 02:01, edited 1 time in total.
Running @1.19 MHz, 128 bytes of RAM and interchangeable 4kb ROM carts!
 

paramat
Member
 
Posts: 2662
Joined: Sun Oct 28, 2012 00:05
GitHub: paramat

by paramat » Tue Jun 18, 2013 03:39

MirceaKitsune wrote:If you can walk from one realm to another, it breaks the concept of it being a different realm.

You can have vertically stacked realms with invisible barriers between.
I like the way Minetest and Minecraft are similar to cosmologies of ancient cultures, who considered the Earth flat with other realms of existence above and below. So in a way you could still consider vertically stacked realms as different dimensions.
MirceaKitsune wrote:There is another way however; Using multiple world sections.

Essentially i like the idea, but am uncomfortable with reducing the size of the normal world, +-16km of bug-free volume feels only just large enough to me. So i would personally prefer this method if the realms were fairly small and positioned in the glitchy volumes beyond +-16km, this way you don't lose any high quality normal world.

Dopium ... 2km depth could be enough for a realm, 1km atmosphere, 1km underground. You could have 16 realms within +-16km.
Last edited by paramat on Tue Jun 18, 2013 03:40, edited 1 time in total.
I rely on donations to help provide an income https://forum.minetest.net/viewtopic.php?f=3&t=14935
 

Nore
Member
 
Posts: 468
Joined: Wed Nov 28, 2012 11:35
GitHub: Ekdohibs

by Nore » Tue Jun 18, 2013 05:14

That looks possible, but a question: if you want to make a surface realm underground, you need to add the sun; could it be possible (with add_node setting param1)?
 

User avatar
MirceaKitsune
Member
 
Posts: 809
Joined: Sat May 21, 2011 22:31
GitHub: MirceaKitsune
IRC: Taoki
In-game: MirceaKitsune

by MirceaKitsune » Tue Jun 18, 2013 12:23

paramat wrote:You can have vertically stacked realms with invisible barriers between.
I like the way Minetest and Minecraft are similar to cosmologies of ancient cultures, who considered the Earth flat with other realms of existence above and below. So in a way you could still consider vertically stacked realms as different dimensions.


I thought about that, but I'm not sure for several reasons. Many things (some hard coded others in the Lua API) depend on estimating water level at height 0 and ground level up to about 20. The 3D clouds are one example... if I'm correct they are rendered at height 200. A mod example is my Structures system which has a height limitation for spawning buildings, so they don't appear under water level or too high up.

Those are however things that can be fixed. The clouds can be re-rendered at another position when multiple realms are set, and I guess mods could go with treating each height differently. It's not an impossible option, if related issues can be solved.

paramat wrote:Essentially i like the idea, but am uncomfortable with reducing the size of the normal world, +-16km of bug-free volume feels only just large enough to me. So i would personally prefer this method if the realms were fairly small and positioned in the glitchy volumes beyond +-16km, this way you don't lose any high quality normal world.

Dopium ... 2km depth could be enough for a realm, 1km atmosphere, 1km underground. You could have 16 realms within +-16km.


The world size of Minetest is painfully small I agree. Splitting realms horizontally would make it even worse. For this reason I'm tempted to agree with stacking them vertically on a second thought. No one goes that high / low to use the vertical size, and it would be most optimal.

I'll ask hmmm if he agrees on adding this in mapgen v7 (multiple layers of ground levels specified in Lua, each with different biomes). Then if someone is willing to add the system for blocking world loading over the line separating realms... since we still wouldn't want the risk of someone flying too high and reaching the floor of the next realm or digging too low and falling through the sky of the realm below.
 

User avatar
Evergreen
Member
 
Posts: 2131
Joined: Sun Jan 06, 2013 01:22
GitHub: 4Evergreen4
IRC: EvergreenTree
In-game: Evergreen

by Evergreen » Tue Jun 18, 2013 12:28

MirceaKitsune wrote:
paramat wrote:You can have vertically stacked realms with invisible barriers between.
I like the way Minetest and Minecraft are similar to cosmologies of ancient cultures, who considered the Earth flat with other realms of existence above and below. So in a way you could still consider vertically stacked realms as different dimensions.


I thought about that, but I'm not sure for several reasons. Many things (some hard coded others in the Lua API) depend on estimating water level at height 0 and ground level up to about 20. The 3D clouds are one example... if I'm correct they are rendered at height 200. A mod example is my Structures system which has a height limitation for spawning buildings, so they don't appear under water level or too high up.

Those are however things that can be fixed. The clouds can be re-rendered at another position when multiple realms are set, and I guess mods could go with treating each height differently. It's not an impossible option, if related issues can be solved.

paramat wrote:Essentially i like the idea, but am uncomfortable with reducing the size of the normal world, +-16km of bug-free volume feels only just large enough to me. So i would personally prefer this method if the realms were fairly small and positioned in the glitchy volumes beyond +-16km, this way you don't lose any high quality normal world.

Dopium ... 2km depth could be enough for a realm, 1km atmosphere, 1km underground. You could have 16 realms within +-16km.


The world size of Minetest is painfully small I agree. Splitting realms horizontally would make it even worse. For this reason I'm tempted to agree with stacking them vertically on a second thought. No one goes that high / low to use the vertical size, and it would be most optimal.

I'll ask hmmm if he agrees on adding this in mapgen v7 (multiple layers of ground levels specified in Lua, each with different biomes). Then if someone is willing to add the system for blocking world loading over the line separating realms... since we still wouldn't want the risk of someone flying too high and reaching the floor of the next realm or digging too low and falling through the sky of the realm below.
Yes, I think it would be a much better idea to stack them vertically(if the shadow problem can be fixed). No one goes up that high anyway. Also, considering that minetest is written in C++, I'm surprised that we don't have worlds as large as minecraft worlds are.
"Help! I searched for a mod but I couldn't find it!"
http://krock-works.16mb.com/MTstuff/modSearch.php
 

User avatar
PilzAdam
Member
 
Posts: 4026
Joined: Fri Jul 20, 2012 16:19
GitHub: PilzAdam
IRC: PilzAdam

by PilzAdam » Tue Jun 18, 2013 12:28

MirceaKitsune wrote:The 3D clouds are one example... if I'm correct they are rendered at height 200..

They are rendered at 120 by default IIRC. There is a setting for this in minetest.conf.
 

paramat
Member
 
Posts: 2662
Joined: Sun Oct 28, 2012 00:05
GitHub: paramat

by paramat » Wed Jun 19, 2013 15:24

Image


Work in progress lua mod, Titan / Mars type realm with unlimited depth, fissure cave systems and dusty orange tinted atmosphere.
Last edited by paramat on Wed Jun 19, 2013 19:18, edited 1 time in total.
I rely on donations to help provide an income https://forum.minetest.net/viewtopic.php?f=3&t=14935
 

User avatar
Evergreen
Member
 
Posts: 2131
Joined: Sun Jan 06, 2013 01:22
GitHub: 4Evergreen4
IRC: EvergreenTree
In-game: Evergreen

by Evergreen » Wed Jun 19, 2013 15:38

paramat wrote:-snip-


Work in progress, Titan / Mars type realm with unlimited depth, fissure cave systems and dusty orange tinted atmosphere.

⊙.◎ Once again, you never fail to impress me. :D
"Help! I searched for a mod but I couldn't find it!"
http://krock-works.16mb.com/MTstuff/modSearch.php
 

Nore
Member
 
Posts: 468
Joined: Wed Nov 28, 2012 11:35
GitHub: Ekdohibs

by Nore » Wed Jun 19, 2013 15:46

*wow*
How do you get all those idea to affect mapgen? They always are great!
Suggestion: make a mod where you can go to areas that have random characteristics (ores more frequent, jungleworld, caveworld, waterworld, meteors, other forms of danger, ...). It will however probably be long and difficult to make...
 

paramat
Member
 
Posts: 2662
Joined: Sun Oct 28, 2012 00:05
GitHub: paramat

by paramat » Wed Jun 19, 2013 17:47

I was inspired by the discussions here and wanted to try something. The top chunk layer is completely lua generated, all the underground chunk layers use Pilzadam's nether method to quickly turn air to stone, after that lua creates the fissure caves in that stone. The atmosphere is airlike nodes with an orange 'post effect color'. Chunks generate within 30 seconds on my slow laptop and 'even faster' underground.
Last edited by paramat on Wed Jun 19, 2013 17:49, edited 1 time in total.
I rely on donations to help provide an income https://forum.minetest.net/viewtopic.php?f=3&t=14935
 

User avatar
MirceaKitsune
Member
 
Posts: 809
Joined: Sat May 21, 2011 22:31
GitHub: MirceaKitsune
IRC: Taoki
In-game: MirceaKitsune

by MirceaKitsune » Wed Jun 19, 2013 18:37

paramat wrote:Work in progress lua mod, Titan / Mars type realm with unlimited depth, fissure cave systems and dusty orange tinted atmosphere.


Very nice, I like! Although if the mapgen for it is done in Lua, I would instantly have to pass putting it on my server. Minetest could never have a mapgen in Lua... at least not relying on the current set_node function. No surprise it takes 30 seconds per chunk... it is a sad limitation.

Anyway, I spoke to hmmm about having this in v7. There is good news and bad news. The good news is that v7 already has multiple realms at different heights. From what I heard there are the floatlands in the sky and also a nether deep underground. Bad news is that they're hard coded. You can't specify a height at which to run each type of mapgen, which would be required to support unique realms per game.

What v7 would need is Lua functions to customize realm ranges vertically (including the default world). Apart from giving unique biomes to each realm, you'd need to specify what type of mapgen runs there. Either the normal one which generates the ground with hills / valleys and caves underground, either the one that generates a layout filled with stone and large holes in it (nether), or the one that generates floating islands in mid air (floatlands / aether).

I don't know if hmmm approves of this. But if anyone else supports the idea you should probably tell him your suggestions, since mapgen v7 would be a great occasion to add support for custom realms all the way. It shouldn't be hard to allow those ranges to be specified in Lua.
 

paramat
Member
 
Posts: 2662
Joined: Sun Oct 28, 2012 00:05
GitHub: paramat

by paramat » Wed Jun 19, 2013 19:17

Yeah i read the discussion on IRC dev, very interesting. Hard coded mapgen yes but it sounded like there will be a few per-world parameters you can set, in perhaps minetest.conf. I'm just glad there will be control over height range, i need a lot of vertical space for all my realms i need to keep MGV7 aether out of the way.
Last edited by paramat on Wed Jun 19, 2013 19:18, edited 1 time in total.
I rely on donations to help provide an income https://forum.minetest.net/viewtopic.php?f=3&t=14935
 

User avatar
MirceaKitsune
Member
 
Posts: 809
Joined: Sat May 21, 2011 22:31
GitHub: MirceaKitsune
IRC: Taoki
In-game: MirceaKitsune

by MirceaKitsune » Wed Jun 26, 2013 14:02

I spoke to hmmm about this a few days ago, and after looking at the source code of mapgen v7 I found good news. Biome definitions allow a minimum and maximum height, and the terrain_type parameter lets you choose what type of terrain will be generated there (normal, floatlands or nether). This means that if you want to make another ground-type terrain generator at say 10000 height (with its own dirt at the top and caves you can mine in and explore) you may do so without any issues.

Of course there's no way to isolate parts of the world from loading, so if you fly too high or dig too low you'll hit the bottom / ceiling of the other realm. Still that's rather unlikely, and not something I could complain about now that V7 makes realms possible at all :)
 

User avatar
Inocudom
Member
 
Posts: 2889
Joined: Sat Sep 29, 2012 01:14
IRC: Inocudom
In-game: Inocudom

by Inocudom » Wed Jun 26, 2013 14:48

MirceaKitsune wrote:I spoke to hmmm about this a few days ago, and after looking at the source code of mapgen v7 I found good news. Biome definitions allow a minimum and maximum height, and the terrain_type parameter lets you choose what type of terrain will be generated there (normal, floatlands or nether). This means that if you want to make another ground-type terrain generator at say 10000 height (with its own dirt at the top and caves you can mine in and explore) you may do so without any issues.

Of course there's no way to isolate parts of the world from loading, so if you fly too high or dig too low you'll hit the bottom / ceiling of the other realm. Still that's rather unlikely, and not something I could complain about now that V7 makes realms possible at all :)


Look at the world as if it is a hollow planet, I guess.
Last edited by Inocudom on Wed Jun 26, 2013 14:49, edited 1 time in total.
 

paramat
Member
 
Posts: 2662
Joined: Sun Oct 28, 2012 00:05
GitHub: paramat

by paramat » Wed Jun 26, 2013 17:18

I've been following the IRC discussions ... this is excellent news.
It would be easy to add barriers between realms. An invisible barrier with a large gap beyond so the realm beyond never generates or comes into view.
Personally i would store the 'other dimensional' realms at the very top and bottom, sealed between impassable barriers ... leaving plenty of space inbetween for those realms that are physically located above and below the normal surface.
Also this allows the fun possibility of somehow cheating your way into another dimension by passing through the barrier somehow, the barrier could be made difficult but passable.
Last edited by paramat on Wed Jun 26, 2013 17:47, edited 1 time in total.
I rely on donations to help provide an income https://forum.minetest.net/viewtopic.php?f=3&t=14935
 

roku
Member
 
Posts: 34
Joined: Tue Jun 25, 2013 21:31

by roku » Sun Jun 30, 2013 21:59

MirceaKitsune wrote:I wouldn't want minetest_game to have something just like the Nether, but I'd like a different non-Earthly world that you can craft portals to.
We need portals into the planes of oblivion, complete with fauna that only grows there are mobs that are harder to kill.
 

luciferleftwing
Member
 
Posts: 10
Joined: Tue Oct 23, 2012 14:21

by luciferleftwing » Fri Jul 05, 2013 15:25

it may sound stupid but what do you think of a server portal that allows to pass from a server to another carring username and inventory? incompatible items could be lost in the "jump" this would be a real world jumping portal i assume that it would need some work on the engine side and a whitelist management of the destination servers
Last edited by luciferleftwing on Fri Jul 05, 2013 15:38, edited 1 time in total.
 

markveidemanis
Member
 
Posts: 211
Joined: Thu Sep 27, 2012 15:41

by markveidemanis » Fri Jul 05, 2013 16:05

luciferleftwing wrote:it may sound stupid but what do you think of a server portal that allows to pass from a server to another carring username and inventory? incompatible items could be lost in the "jump" this would be a real world jumping portal i assume that it would need some work on the engine side and a whitelist management of the destination servers


Only if the original server and destination server have the same mods, but you would have to find a way to keep all the mods loaded. Also this could be a security threat as people could just join and send to the server to give them say, mese.
BitCoin: 1Eq4arvykGNa1YC2DbJpWcwGfMvtFGjAoR
 

luciferleftwing
Member
 
Posts: 10
Joined: Tue Oct 23, 2012 14:21

by luciferleftwing » Mon Jul 08, 2013 11:36

markveidemanis wrote:
luciferleftwing wrote:it may sound stupid but what do you think of a server portal that allows to pass from a server to another carring username and inventory? incompatible items could be lost in the "jump" this would be a real world jumping portal i assume that it would need some work on the engine side and a whitelist management of the destination servers


Only if the original server and destination server have the same mods, but you would have to find a way to keep all the mods loaded. Also this could be a security threat as people could just join and send to the server to give them say, mese.


i may have not explained me well the code should implement an ip or domain based whitelist of enabled servers

lets say we have 2 servers A and B
a player logs into A and then wants to jump into B lets say that server A is a single player creative mode server running on the player PC

server A ask server B permission to operate a jump server B check is own white list of servers for the IP of server A if server A is on the list then the player can enter if server A is not on the list the player is "bounced"

as for mods there could be a requiremente of same mods beteween the servers or the function that imports the player could destroy items from nonexistent mods if so a warning before the teleport would be a nice thing to have

and then for as i intend it it is not an universal world jumper something more like a mean to create federations of servers that talk to each other on paper even one way jump would be possible

the main problem is ensure that a player can not log to multiple servers to duplicate is own inventory but that could be achieved with an "server ip" field in the player database to redirect a logging player to the last server he jumped into

i dont se it as easily achievable in LUA too much netcode but i may be wrong
 


Return to Minetest Features

Who is online

Users browsing this forum: No registered users and 10 guests

cron