Craig posted at Cult of Mac about Tim Langdell’s continuing attempts to sue anyone who uses the word ‘Edge’ (which, last we heard, was an English word) in a videogame context and now, apparently, to prevent anyone making any kind of game involving a sphere.

In passing, Craig mentioned the characteristic use of an axonometric projection in marble-rolling titles, ‘commonly referred to as “isometric” in the games industry’. Which immediately (because I’m a geek, or at least a journalist pretending to be a geek) got me peering at the screenshots working out whether they were in fact axonometric and/or isometric.

As Nikolaus commented, isometric is one type of axonometric projection (he usefully cites Wikipedia’s very good, if not very English, explanation). Unlike a perspective projection – which, by one means or another, makes things look as they would in reality, with more distant objects appearing smaller – an axonometric projection keeps measurements the same all the way along each axis. Isometric takes this one step further and makes the scale of each axis the same, so in a drawing of a cube, for example, the lengths of all the edges are the same on the drawing, as well as in reality; hence ‘iso’, equal.

The angles also match, although they’re plus or minus 30 degrees in the projection. Here’s where the interesting bit comes in the axonometrics of game graphics. When you’re working at low resolution, non-perpendicular lines tend to look ‘jaggy’, because they’re made up of offset pixels that form steps rather than continuous lines. The effect is greatest when there’s no aliasing (interspersing of mid-coloured pixels to smooth edges), as in older games for less graphically capable systems. Where possible, you’ll try to use 45 degree lines, because the stepping is regular, like a staircase. Doubling (or tripling, etc) the length of the steps gives an almost equally neat appearance, but intermediate proportions are rougher:

Because of this, games that present a 3D world but are drawn in 2D often use a bastardised isometric projection using angles of 26.5 degrees* – like the second example above – rather than 30. This is so common that someone must have made up a name for it, but I can’t seem to find one, so I’m going to propose ‘tetarto-orthometric’ (quarter-right-angled). Two of Craig’s examples use this projection, while only one is truly isometric; no coincidence, I think, that this is also the only one based on a 3D engine:

There must be some interesting implications to the non-isometricness of tetarto-orthometric games. Unfortunately, I can’t think of any at the moment. If you’re still reading this, um, sorry.

*This is counter-intuitive: surely it should be 22.5 degrees, half of 45? It does seem logical to expect that rising at half the rate means halving the angle, but the error is quickly seen if you work it through. Your intuitive hypothesis is that if a right-angled triangle has angle *A* of 22.5 degrees opposite edge *a*, then doubling the length of *a* will double *A* to 45 degrees. OK then, so now let’s double the length of *a* again; have you just created a triangle containing two 90 degree angles, or is your hypothesis pants? back

{ 6 comments… read them below or add one }

nice demonstration, thanks Adam :)

I can’t think of any implications, as the game’s model is almost certainly going to work in a different space to the presentation. In this case, the X and Y axes in the simulation may run ‘top-left to lower-right’ and ‘lower-left to upper-right’ respectively, allowing the game to be run as if it were top-down, but visualised isometrically.

Tetarto-orthometric and isometric projections is just coordinate transformations; I have no doubt that you could change Edge from being isometric to being tetarto-orthometric, or any other (linear projective) view by changing the definition of the transformation (a single line of code). (Assuming it uses an OGL/DX style renderer. Non projective transformations aren’t allowed in a standard 4×4 matrix, so a custom shader would be needed.)

If the logic of the game were particularly tied to its presentation (some kind of pixel filling game, like a QIX game with a pre-filled isometric pattern), then the visualisation would directly influence the design of the model.

As a likeminded pedant who has railed on this issue for years on various pixel art forums and chat channels, first of all, thank you for writing an article and giving a name to this.

Second, I’ve experimented in the past in the free ray tracer POVRAY. I can tell you that to produce any of the above mentioned projections, you merely need to use the orthographic camera, and you need only to adjust the angle of the camera to the ground, and the aspect ratio of the projected image. Internally this is ultimately implemented as a transformation matrix. The abstraction that is presented to the user however, is somewhat simpler and more intuitive way of thinking about it.

Some other factoids.

In a regular top down projection, the diagonal line of a square is the square root of 2, multiplied by the length of one of its sides, so if it’s 1 foot square, the diagonal is roughly 1.414 feet. In an isometric projection, a square becomes somewhat squashed so that one of its diagonals, is in fact, the same length as any of its sides. And the other diagonal is the square root of 0.5 (roughly 0.707, which is half the square root of 2)

A perfect cube in an isometric projection, is projected into the shape of an equilateral hexagon.

However in a Tetarto-orthometric projection, things are just a little bit more, squashed. A cube cannot form a “perfect” hexagon, as the angles are not right. You may be able to preserve the lengths of the the cube’s edges, but I think if you do, you risk a stretched appearance to objects within the projection. It’s gotten late and my brain’s just hit a brick wall. I may have more observations later.

Wires crossed. the other diagonal stays as 1.414, the same as the original diagonal. apologies for inflicting you with my muddy thinking.

“The effect is greatest when there’s no aliasing (interspersing of mid-coloured pixels to smooth edges)”

Don’t you mean anti-aliasing, here?

Well written otherwise.

@Johan: yes, I do - thanks.