Skip to main content
GameDev.net gamedev.net
🔒 Locked

Calculate chunk From Global X,Y,Z

Started by Lance Mazon Sep 19, 2012 at 8:18 AM 3 replies 2.5k views
Original Post
Lance Mazon
Lance Mazon
I have a tiled world divided into 64x64x64 chunks. The player is at a global x,y,z tile position and I need to figure out which chunk he is in so I can render it. Currently the chunks are referenced by the global x,y,z position of the tile in the corner of the chunk(chunk position 0,0,0)but this is starting to suck as a referencing system. I clearly need to revisit math I haven't done in years, but while I'm doing that, could one of you math wizards point me in the right direction on this one? Thanks in advance.
rnlf_in_space
rnlf_in_space
Why not just reference your chunks by their own coordinate system, using 0,0,0 for the first chunk, 1,0,0 for the chunk right of it, 0,1,0 for the one above and so on.

The chunk id is then just the player's (global) block position divided by chunk size truncated to zero decimal places.
Ashaman73
Ashaman73
First off, use integer positions for your chunk to avoid equal-comparisions of floats/doubles.

First approach: own coordination system like rnlf sugguested


int x = (int)(player.x/CHUNK_SIZE_X);
..


Second approach: chunk is referent by real coord

int x=(int)( floor(player.x/CHUNK_SIZE_X)*CHUNK_SIZE_X);
Lance Mazon
Lance Mazon
I got this working, or so I thought. The problem is my world is isometric and my tiles are...well...see for yourself:

264297_3752821945410_1475854459_n.jpg

So the above solution doesn't compute the correct chunk based on coordinates because it assumes square chunks. For reference, the Y axis goes northwest to southeast. I'll keep working away at it, but if anybody has an algorithm that will help I'd sure appreciate it. Thank you!

Lance...

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.