# How to render axometric/isometric tiles that are a 2d array in logic, but inclined 45º visually?

I am making a tile-based strategy game which i plan to have 2.5D visuals in an axometric/isometric fashion.

Right now i'm programming it's logic and rendering it as a literal 2-dimensional array (perfect squares, like an isometric top-down-view).

In short, i have something like this:

And i want to turn it to something like this:

Do i keep going on the 2d-array logic?

Is it all just a change in rendering behavior, as i'm thinking it is? or 2d-array is the wrong approach for my objective and I should change before it's too late?

What are the ways of doing it, anyways? How should i apply the 2.5D axometric/isometric view (45º rotation to the side, and 45º rotation upwards)?

-
See @JohnMcDonald's answer to this question as he sums it up well. Essentially, yes, it's just a change in rendering behavior. – Byte56 May 31 '12 at 21:25
Thanks very much, @Byte56. This is exactly what I was wanting. Bad thing the question's title there is on collision detection; It made me skip it when I searched for previous question's solutions. – AlmightyR May 31 '12 at 22:59
Well I think your question has created the link that future visitors may need then :). – Byte56 May 31 '12 at 23:01

Yes, that's exactly what you should do! Only a few days ago I answered another guy, suggesting him such logic here: Free movement in a tile-based isometric game

This is a simple MVC approach. Keep your model and controller simple, every 3D game with objects on flat surface with same height and on same height is really 2D underneath it's view.

-

A good example with pictures using libgdx was provided in libgdx's blog Isometric Tilemap Rendering with libgdx

-

Yes, isometric maps are just rendered differently. For the game logic it makes no difference what kind of angle the coordinates have.

Isometric rendering is similar to the rendering of square tiles, the difference is just how the tiles are aligned (how the drawing position is calculated).

Instead of drawing tile x,y at

``````x*tileWidth, y*tileHeight
``````

they are drawn at

``````tileWidth/2*x+tileHeight/2*y, tileWidth/2*x+tileHeight/2*y
``````
-