How to do "map chunks", like terraria or minecraft maps?
- by O'poil
Due to performance issues, I have to cut my maps into chunks.
I manage the maps in this way:
listMap[x][y] = new Tile (x,y);
I tried in vain to cut this list for several "chunk" to avoid loading all the map because the fps are not very high with large map. And yet, when I update or Draw I do it with a little tile range. Here is how I proceed:
foreach (List<Tile> list in listMap)
{
foreach (Tile leTile in list)
{
if ((leTile.Position.X < screenWidth + hero.Pos.X) &&
(leTile.Position.X > hero.Pos.X - tileSize) &&
(leTile.Position.Y < screenHeight + hero.Pos.Y) &&
(leTile.Position.Y > hero.Pos.Y - tileSize)
)
{
leTile.Draw(spriteBatch, gameTime);
}
}
}
(and the same thing, for the update method).
So I try to learn with games like minecraft or terraria, and any two manages maps much larger than mine, without the slightest drop of fps. And apparently, they load "chunks".
What I would like to understand is how to cut my list in Chunk, and how to display depending on the position of my character. I try many things without success.
Thank you in advance for putting me on the right track!
Ps : Again, sorry for my English :'(
Pps : I'm not an experimented developer ;)