overviewer / Minecraft-Overviewer

Render high-resolution maps of a Minecraft world with a Leaflet powered interface
https://overviewer.org/
GNU General Public License v3.0
3.35k stars 482 forks source link

"North" is lower left, expected to be upper left or upper right #48

Closed gshort closed 13 years ago

gshort commented 14 years ago

Entering on behalf of a few user comments on the SA MC thread. In short, they expect the community-accepted north (the direction clouds move towards) to be either upper left or upper right. Currently, north is the lower-left corner of the map.

My own suggestion would be for north being in the upper-left corner, as most people are right-handed and that's the way one would normally orient a piece of paper for reading/writing (obviously not to the extreme of the isometric view, but you get the idea.)

brownan commented 14 years ago

I saw those posts, but not until they were 4 pages old. That thread sure moves fast.

To anyone that's wondering, maps are laid out with southeast at the top because, when I was writing the early parts of the code, I wasn't sure which direction they would come out. So I picked one arbitrarily and it happened to be this one. Since no one complained, I hadn't done anything about it yet.

Like everything else I said I'd do, this is one of the things I want to get to when I get a good chunk of free time.

Luckz commented 14 years ago

Choosing what direction to render from or even having it turnable would of course be great.

mfn commented 14 years ago

Oh, turnable ... I gave this a thought, well, just a small one. Currently my map data renders to ~0.9GB pngs (crushed already) and that is only one direction. If rotation is considered that surely would mean the map must be rendered four times (once for every direction), which would create about 3.6GB data in my case .. quite big.

I'm wondering if rendering static PNGs is the appropriate approach for this use-case.

brownan commented 14 years ago

I'm still going to make the maps point north-east. I don't plan to make them rotatable, or code in any other directions.

submitteddenied commented 14 years ago

If they weren't rendered obliquely, you could just rotate the resulting PNG...

brownan commented 14 years ago

Rendering a straight top down view would be pretty easy, but I don't think it would look anywhere near as good. Or maybe I just like to give myself a challenge.

If someone can convince me that it would be worth it, though, I'll give it a shot

mfn commented 14 years ago

Convince? Like money? :) Just kidding.

I could see your tool becoming the swiss army knife for Minecraft in that regard. Unfortunately my python-foo is like below 0 :-/

brownan commented 14 years ago

Hah, no I meant make a case that a lot of people would find it useful.

Still though, with how busy I am, I need to pick and choose which tasks I want to tackle. I would love to see this become a swiss army knife tool, but to immediately do the most good, there are three things I want to do: make it faster, make it easier to use (gui), and make a windows exe (done).

keisisqrl commented 13 years ago

Throwing in my support and a number of others for north up. Still love it though.

mfn commented 13 years ago

But optional, if ever, please. Quite some people currently build stuff facing west and north so it's visible on the maps ...

brownan commented 13 years ago

Yes, definitely. Whenever I find the time to tackle this, I'll probably put it on a separate branch and then figure out how to proceed.

I have the math worked out, but I have yet to actually start coding it.

MyrddinE commented 13 years ago

Wouldn't fixing this be a simple matter of swapping the signs on one or two axis (probably in more than one place)?

brownan commented 13 years ago

Pretty much. The chunk rendering needs to be changed, and the tile rendering has to be changed. Since the coordinate system is being translated along the way, it's slightly confusing.

It's not like it can't be done, I've just had like no time to work on this for the last few weeks.

Luckz commented 13 years ago

to chime in with what mfn said, since alpha vespucci uses the exact same orientation for it's "Oblique Left" rendering style ( http://luckz.de/files/minecraft/tetrix-vespucci-overlayable-obleft/ ), any forced "rotation" of my Minecraft-Overviewer output would be extremely confusing :P

stellarfirefly commented 13 years ago

+1 to making this at least an option. I always render my AlphaVespucci maps with -obliqueright and it would be very nice for Overviewer to also have a "north is up-and-something" option.

eminence commented 13 years ago

in order to alleviate potential confusion for viewers who may not be aware of where North is, could we place a compass rose on the map (with the correct perspective) to indicate which direction is north? i'd be glad to look into how to do this with the google maps interface if someone can provide an nice attractive image.

rmccue commented 13 years ago

To work around this, we built a physical compass on the map right next to spawn to help orientate ourselves.

I would think it would be easy to support other alignments of the map, however. You should be able to simply take the code and apply a translation matrix depending on the desired alignment.

Deszeraeth commented 13 years ago

It has been a while since i seen someone post on this issue/feature request, but i found it important enough to actually make an account to comment on this. It would be nice to have an option when building the map to determine which is north (up-right, up-left, down-right, down-left; choices). The changes made to the program so far are wonderful, thank you for the time making it. : )

MidnightLightning commented 13 years ago

Ditto Deszeraaeth's suggestion; there should be a command-line flag for the gmap.py script that allows an input orientation: 'SE' (default), 'SW', 'NW', or 'NE'.

kiloforce commented 13 years ago

It has been a few months since the last post on this. Does Minecraft Overviewer now have configuration settings to change the orientation?

pironic commented 13 years ago

sorry @kiloforce, this remains low on our priorities at the moment... i have thought of the ability to use google's rotation settings within the api... but im not certain it will work. As for true perspective its rendered from, we really can't change this very easily.

Deszeraeth commented 13 years ago

I like this project but due to the file/folder count causing some issues with our server limits and the directional compass consistently confusing/upsetting players i have decided not to use it for our servers. The mapping tool is very powerful and i hope to see it flourish soon. For now we are using a dynamically updated map through bukkit that can be hosted on our mc server (with relatively low bandwidth use) rather than our web server that currently has a file count limit.

Thank you for your time and hard work!

mianosm commented 13 years ago

Just adding the same desire to the list. Great utility otherwise! :)

ghost commented 13 years ago

Throwing my support on the pile for rotatable maps! This would be an awesome feature.

gtaylor commented 13 years ago

This confuses our players pretty regularly on our SMP server, will +1 this too.

KariTrace commented 13 years ago

I have to agree with the OP. People are viewing the map and then trying to find there way around the world. Very confusing for the player. +1 to place north in the top left or top right.

Not so much rotatable, such a space hog and the render time would be *4 as well. Just north pointing up to either corner...

tkrajcar commented 13 years ago

+1 for sure.

rmrector commented 13 years ago

http://imgur.com/D5PSM

That is the exmaple map, rotate with north pointing to the upper-right corner!

Code is here https://github.com/rmrector/Minecraft-Overviewer.

I've added more new bugs than new features, I think, but it's running nicely on my server, so at least it's unlikely to eat your cat.

gtaylor commented 13 years ago

Great to see progress on this, your work is appreciated.

agrif commented 13 years ago

Whoah, nice work! This has been probably the single most-requested feature, at least since the DTT merge. Once it's finished it's a shoo-in for a merge.

I'll check it out more thoroughly when I find the time, and maybe help squash some of those bugs / performance problems.

KariTrace commented 13 years ago

o_0, that's awesome! I'll be giving this a test go today see if I can't help out with the bug hunting.

Fenixin commented 13 years ago

Great! Nice way to implement it!

deddy commented 13 years ago

Any chance of a win32/64 compiled version for testing?

eminence commented 13 years ago

unless @rmrector has any objection, please stop by #overviewer on freenode and we'll try to get a windows binary build for you.

KariTrace commented 13 years ago

Running a series of render passes now, options, directions, etc. Recording time stamps and any other relevant information. Do what I can to help out.

Did some tests, results: Using these parameters: overviewer.exe --processes=1 --rendermode=lighting,night --north-direction=lower-right "folderfrom" "folderto"

Got these results:

Test 1-0: Upper-right: Started:2:11 Ended: 2:52 Total: 41min

Test 1-1: Upper-left: Started:3:05 Ended: 3:42 Total: 43min

Test 1-2: Lower-left (defualt): Started:4:18 Ended: 4:30 Total: 12mins

Test 1-1: Lower-right: Started:4:53 Ended: 5:05 Total: 12mins

Icarus-xx commented 13 years ago

@rmrector : it seems that the north direction has broken the biome support @KariTrace : i do not have this issue, all both upper direction and default one render with almost the same time (tests done using 16 cores)

rmrector commented 13 years ago

@KariTrace Thanks! It's curious that it's split between upper and lower. I had initially thought that every direction except lower-left would be slower. Curious. @Icarus Biomes! Biomes completely skipped my mind. I'll add it to the list. It's also curious that it's not any slower for you. My tests with 3 cores are slower, but only 30%, not more than 300% like @KariTrace's single process tests. I suppose that is what 16 cores are for, though.

Icarus-xx commented 13 years ago

@rmrector You said around 30% slower with 3 cores, that makes around 5% slower with 16 cores. I use 5 renderers on a 70MB world, everything is rendered in around 10mins. 5% of 10 is 2 and honestly I did not notice any difference.

Another issue (beside the Biomes), is that the compass is not shown. I guess it comes from a wrong merge.... But perhaps you could try on a fresh clone of your rep.

KariTrace commented 13 years ago

Ran another test using normal render mode only:

Start time: 9:18:43.19

C:\Program Files (x86)\Mojang\overviewer_test>START /WAIT cmd /C ROBOCOPY /MIR "C:\Program Files (x86)\Mojang\Server\world" "C:\Program Files (x86)\Mojang\overviewer_test\world_map" World Copy finished: 9:18:49.24 Total: 6s

C:\Program Files (x86)\Mojang\overviewer_test>START "Renderer Running 1" /WAIT overviewer.exe --processes=1 --rendermode=normal --north-direction=upper-right "world_map" "C:\Program Files (x86)\Mojang\overviewer_test\upper-right" 9:33:19.03 15mins

C:\Program Files (x86)\Mojang\overviewer_test>START "Renderer Running 2" /WAIT overviewer.exe --processes=1 --rendermode=normal --north-direction=lower-right "world_map" "C:\Program Files (x86)\Mojang\overviewer_test\lower-right" 9:48:27.54 15mins

C:\Program Files (x86)\Mojang\overviewer_test>START "Renderer Running 3" /WAIT overviewer.exe --processes=1 --rendermode=normal --north-direction=lower-left "world_map" "C:\Program Files (x86)\Mojang\overviewer_test\lower-left" 10:01:09.74 13mins

C:\Program Files (x86)\Mojang\overviewer_test>START "Renderer Running 4" /WAIT overviewer.exe --processes=1 --rendermode=normal --north-direction=upper-left "world_map" "C:\Program Files (x86)\Mojang\overviewer_test\upper-left" 10:14:25.98 13mins

...I think we have a trend here...Trying it again using 'night' render mode, I'll let you know the results.

Icarus-xx commented 13 years ago

Redering 'night' using 16 cores, the world size is 78MB.

My results:

The biggest delta is 10 seconds. Not really a big deal.

For info, here is the settings.py I use everyday (the tests were done with night only), it usually take 10 to 15 minutes to finish the rendering. https://gist.github.com/1086174

Please note that 'defaultZoom' and 'minZoom' options are modifications made by me and not available in other forks. The diff is here https://gist.github.com/1086181 (@agrif: if you think it worth it, include it in the main repository).

@rmrector : I an issue related to the north direction, some trapdoors are not well rendered, you can see it on this picture: http://img837.imageshack.us/i/traprender.png/ The trapdoors should look as the others on the south side of the house but there are down&left shifted by one block. This happens on lower-right and upper-left (not tested with lower-left). It is ok for upper-right.

I hope this information will be helpful.

Cheers.

Fenixin commented 13 years ago

@Icarus, @rmrector, about the trapdoors, maybe it's obvious, but just in case: they are not shifted by one block, they are in the correct block but the ancillary data is not rotated correctly, so they are drawn as they were hanging in the air.

Fenixin commented 13 years ago

Some more info!

The render times for exmaple in the four orientations are for me:

OrientationTime
upper-right44.406s
upper-left35.998s
lower-right41.764s
lower-left 38.022s

I did these tests with profiling and the results are:

lower-left: http://imgur.com/zKLlb lower-right: http://imgur.com/eaRMn upper-left: http://imgur.com/bBWUN upper-right: http://imgur.com/rLLJy

(Here are the prof files)

In the graphs the lower-right and upper-right orientations take 4 times more calls to rendernode:274:_apply_render_worldtiles and rendernode:297:_apply_render_inntertile functions than the lower and upper-left orientations, and these *-right orientations are the affected ones. I haven't looked the code and I don't know why this happens, but this may be the problem.

Hope this helps!

rmrector commented 13 years ago

@Fenixin Thanks for the kick in the pants reminder that I still had work to do! I was pretty engrossed in staring out into space there for awhile.

Thanks everyone for the benchmarks and profiling data, that got me pointed in the right direction. There no longer seems to be any significant performance hit for any of the rotations.

The code is complete and a pull request is in, so it's only a matter of time before this is included!

Fenixin commented 13 years ago

You are welcome! Thanks a lot for the hard work and the nice implementation!

agrif commented 13 years ago

rmrector's pull request has just been merged, and --north-direction is now in the master branch. I've just uploaded builds of the new 0.2.0 version. Have fun! and remember to report any issues you come across.

Edit: so it seems there's a pretty big ol' bug in 0.2.0 when rendering new maps, so go for achin's 0.2.0-1 nightly. Sorry!