Game Development Stack Exchange is a question and answer site for professional and independent game developers. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I want to create a hexagonal tilemap and show regions of different height in the same screen. What ways can you think about to indicate which height a tile is on. (current, lower, higher?)

Several tilemap games avoid this by having special mountain tiles, but that allows for ~2 heights and I would like for more differentiation.

Another approach is to just draw the tiles of current height, but this does look very strange if the map is very bumpy (lot's of holes).

I have not found a nice way to whiten or blacken tiles that are lower or higher than the current viewpoint. Any ideas?

share|improve this question
What are the game-play implications of tiles at different heights. Is it impassable if they are higher (by more than one, two levels...)? Slower? This is probably the main guidance.. – Philip Whitehouse Feb 10 '13 at 20:47
How many height levels do you actually need? – Philipp Feb 10 '13 at 21:04

I would go for the pseudo-3d approach and visualize the height with a vertical offset. To avoid the problem that parts of the map are concealed by cliffs, I would only use a few pixels per height level and avoid having differences of more than 4 or 5 levels.

enter image description here

As you can see from this mockup, this is good for visualizing that the tile to the north is higher than the tile to the south, but not so good for visualizing that a tile to the south is higher. For that reason I would recommend to avoid this situation in map design... or you give the player the ability to rotate the map so that they can always choose the best angle to visualize the situation. But don't rely too much on this - you want the player to fight the enemy, not the camera.

share|improve this answer
"you want the player to fight the enemy, not the camera" great sentence! – o0'. Feb 11 '13 at 9:43

I only have experience using GLSL but I'm sure something similar would work for other shading languages.

When you pass your vertex to the shader, you can also pass a uniform stating the current height you're at. That way if you pass the vertex's height through to the fragment shader, you can blend that value with your normally generated texture or color value using mix() or some such.

share|improve this answer
When he would want to use a 3d engine he wouldn't have that problem. – Philipp Feb 11 '13 at 12:57

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.