1
\$\begingroup\$

I'm developing an isometric tile-based game using Unity 3D.

I'm using an orthographic camera looking down yaw:45° and pitch:45°.

The game has an infinite world, which is loaded from a remote server. Because it is impossible to load everything at once, the game should only load visible areas of world.

But I don't know how to determine which tiles should be requested from server in order to fill up all the visible space on the screen.

I tried loading tiles by chunks e.g. 16x16 tiles chunk around camera. But this looks hacky to me and sometimes leaves blank edges visible on the screen.

Is there better solution to simulate a continuous world on the client side?

\$\endgroup\$

1 Answer 1

2
\$\begingroup\$

It looks like you are on the right lines with your approach of loading the world in chunks, however you may need to take this a bit further.

The way most games achieve this (a notable example is minecraft) is to divide the world into chunks of a predetermined size (16 x 16 for example) and only load the chunk the player is in, and the four (or eight) surrounding chunks. By doing it this way, you reduce the amount of data needed in memory, but prevent the player from encountering an unloaded area.

enter image description here

When the player enters a new chunk, you repeat the process, unloading the chunks that are now too far away (squares in red on the picture), and loading the new neighbouring ones (squares in green).

enter image description here

If you try this but still notice blank edges then you may need to increase the size of your chunks (or load more) to store more of the game world at a time.

\$\endgroup\$

You must log in to answer this question.