ID:1277788
 
It's a simple question. Is there any real difference in performance with say, using a map with dimensions 2000x2000, and 1 z-level, or a map with dimensions 200x200 with 10 z-levels. This of course includes annoyances such as having to wait 30 minutes to open the map up in dream maker. Is there any real difference in performance, or are these two maps identical in that regard, due to technically having the same amount of tiles?
Well, doing the math, 2000*2000 equals 4 Million, whereas (200*200)*10 equals 400,000, 10 times smaller, not identical in any fashion of the word.

On the note of formatting your map, it's really up to you, but I find it easiest to separate maps based on their Z level. Even large overworld maps can be separated into different z levels if you're clever about your design.
you can always use different maps mate
I think he meant that since a 2000x2000 map size technically is the same as having 10planes of 200x200 (size wise), which (if any) would be more efficient?

Assuming that all Z-planes are generated at runtime, regardless of the presence of a client, I guess they would be more or less the same. Of course I have no idea whether or not it takes a greater amount of system resources to have multiple Z-planes, which is probably why he/she asked.
In response to Solomn Architect
Solomn Architect wrote:
Well, doing the math, 2000*2000 equals 4 Million, whereas (200*200)*10 equals 400,000, 10 times smaller, not identical in any fashion of the word.

On the note of formatting your map, it's really up to you, but I find it easiest to separate maps based on their Z level. Even large overworld maps can be separated into different z levels if you're clever about your design.

Why are you multiplying? You should be adding 2000+2000=4000, 200+200=400, then 400*10 = 4000. They're both the same size.

I don't think it's any better on performance to use multiple Z levels because then you need to calculate when to switch between them unlike a larger map.
3x3 map =

xxx
xxx
xxx

How many x are there? 9

How do we find that? 3x3... 3 * 3 = 9

If we have 3 of those maps, how many tiles do we have?

xxx
xxx
xxx

xxx
xxx
xxx

xxx
xxx
xxx

3x3 = 9 x 3 = 27 (count the x's)

To answer your question, 100x100 map isn't any different than 100 10x10 maps. To the computer, its all the same.

If you want some really serious size, you need to figure out how to host pieces of your world in multiple daemons, and transfer players back and forth from daemon to daemon when they cross a server boundary. This is what games like WoW and UO do in order to accomplish such a huge world. This works best if your characters are saved, loaded, accessed from a central "data server" whose only job is to server other servers requests. So when player john crosses server a's boundary into server b, server a saves john's character on data server, sends john's client to server b, while server b fetches the updated character data from data server.
I've been thinking on ways to develop a modular framework to do that for some time. Unfortunately my C++ projects are consuming too much of my time as is. I was thinking something along the lines of using a datum class to store and transfer the player and objects. Unfortunately there's no seamless way to do it, since connecting to a new server requires the client to disconnect the current server and reconnect to the target, which pulls up a BYOND splash screen in the process.

I would suggest having a main, parent server, and the map servers as children. That way, the players can log onto the main server so it can parse the player's last coordinates and pass them along to the proper area. It's actually extremely simple, since BYOND has built-in functions to do just that.
In response to Solomn Architect
Solomn Architect wrote:
I've been thinking on ways to develop a modular framework to do that for some time. Unfortunately my C++ projects are consuming too much of my time as is. I was thinking something along the lines of using a datum class to store and transfer the player and objects. Unfortunately there's no seamless way to do it, since connecting to a new server requires the client to disconnect the current server and reconnect to the target, which pulls up a BYOND splash screen in the process.

I would suggest having a main, parent server, and the map servers as children. That way, the players can log onto the main server so it can parse the player's last coordinates and pass them along to the proper area. It's actually extremely simple, since BYOND has built-in functions to do just that.

They just fixed the splash screen issue, per my request. link() will wait to close client much longer now.
Wow, nice. So how will the transfer look? Will the parent server close and the child server open right after, or will it maintain the same window?
In response to Solomn Architect
Solomn Architect wrote:
Wow, nice. So how will the transfer look? Will the parent server close and the child server open right after, or will it maintain the same window?

Maintains the same window, actually. It's nice, I already tested it, its great!
Wow! That really puts everything a step ahead. Just that little tidbit boosts the possible quality of games on BYOND. I'm actually a bit excited to see what people do with this.
Appreciate the answers. General opinion is that there is no difference with performance, so I'll go with that answer. Thanks again.