Most efficient way to save tile data of an isometric game

Posted by Harmen on Stack Overflow See other posts from Stack Overflow or by Harmen
Published on 2010-04-02T12:06:06Z Indexed on 2010/04/02 12:13 UTC
Read the original article Hit count: 297

Hello,

I'm working on an isometric game for fast browsers that support <canvas>, which is great fun. To save information of each tile, I use a two-dimensional array which contains numbers representing a tile ID, like:

var level = [[1, 1, 1, 2, 1, 0],
             [0, 1, 1, 2, 0, 1],
             [0, 1, 1, 2, 1, 1]];

var tiles = [
    {name: 'grass',  color: 'green'},
    {name: 'water',  color: 'blue'},
    {name: 'forest', color: 'ForestGreen'}
];

So far it works great, but now I want to work with heights and slopes like in this picture: alt text

For each tile I need to save it's tile ID, height and information about which corners are turned upward.

I came up with a simple idea about a bitwise representation of all four corners, like this:

1011 // top, bottom and left corner turned up

My question is: what is the most efficient way to save these three values for each cell? Is it possible to save these three values as one integer?

© Stack Overflow or respective owner

Related posts about game-development

Related posts about tiles