1
\$\begingroup\$

I have a simple isometric map of 128px x 128px, tile in a 2D field [xxxx][xxxx] I have a problem with my calculating. I need to get startx:[0], startY[0] and endX[20], endY[10], if I know the screen width and height, and the camera offset like this:

enter image description here (not effective for big maps)

This is my current code:

starti = (-camera.xOffset - tileWidth) / 64;
int endi = (-camera.xOffset + camera.width + tileWidth) / 64;
int startj = (-camera.yOffset - tileHeight) / 64;
int endj = (-camera.yOffset + camera.height + tileHeight) / 64;

Point start = twoDToIso(new Point(startx,starty));
Point end = twoDToIso(new Point(endx, endy));
for (int i = start.X; i < end.X; i++)
{
    for (int j = start.Y; j < end.Y; j++)
    {

This does not work; it will create something like this: enter image description here

It does something, but when I move and my offset is changed, it does not work at all. How do I calculate the visible lines on a big isometric map?

\$\endgroup\$
3
  • \$\begingroup\$ The last time I wrote an isometric engine I was a bit lazy and drew a diamond-shape with the corners outside of the screen. This wasn't much of a problem because in the API I was using (html5 canvas) the cost for drawing outside of the screen was almost none. Would that solution be good enough for you, too? \$\endgroup\$
    – Philipp
    Commented Jul 17, 2017 at 16:07
  • \$\begingroup\$ not sure if it would help, i have code that is efficient for 500*500 tile map with stable FPS but i needed to change it into Tile[x][y], now if i can calculate right way to get tiles that are visible i can get easy map of 5000*5000 it will be just memory issue but that can be soved by loading chunks ahead of camera movement \$\endgroup\$ Commented Jul 17, 2017 at 16:50
  • \$\begingroup\$ There have been many related questions about mapping from screen coordinates back to isometric map coordinates. gamedev.stackexchange.com/questions/45103 gamedev.stackexchange.com/questions/34787 gamedev.stackexchange.com/questions/12362 gamedev.stackexchange.com/questions/65968 gamedev.stackexchange.com/questions/32350 \$\endgroup\$
    – Jimmy
    Commented Jul 17, 2017 at 21:12

0

Browse other questions tagged .