N'Al on 30/5/2008 at 12:17
Quote Posted by Yakoob
From a programming perspective, there's two ways: one is full 3D from an isometric angle (ala NWN), another is simply 2D (baldrus gate, arcanum).
There's also mixed games like
Temple of Elemental Evil where the background is hand-drawn/ tile-based, but the character models are in 3D.
Queue on 30/5/2008 at 20:20
Q) How does a 2-D isometric engine work?
A) They don't--they hire someone else to do it for them! *rimshot*
Sorry about that...I've truly got nothing
ZylonBane on 30/5/2008 at 21:38
Quote Posted by Queue
Sorry about that...I've truly got nothing
We've noticed.
Maybe you should stop posting.
Ajare on 31/5/2008 at 00:41
Strictly speaking, isometric projection refers to an azimuth of 60 degrees (anything else is a different
axonometric projection), but there's no reason to stick to this other than that it makes the maths easy. Some games then rotate the tiles 45 degrees (ie Diablo), 30 degrees (Fallout), others don't (Ultima 7; actually U7 has the damn weirdest projection I've ever seen). The projection I use is something like:
Code:
Vector2T<float> MapRenderer::worldToScreen (const Vector2T<float> &vec, float yOffset)
{
Vector2T<float> screen = vec;
screen -= mCameraPosition;
screen /= mMap->getTileSize ();
// For every X, we move right by (textureWidth / 2) and up by (textureHeight / 2)
// For every Y, we move left by (textureWidth / 2) and up by (textureHeight / 2)
// Also take into account the fact that we're rendering from the centre of the
// texture, whereas we want the origin to be at the bottom, so subtract half
// the texture's height
Vector2T<float> newScreen (mFloorHalfTextureSize.x * (screen.x - screen.y),
mFloorHalfTextureSize.y * -(screen.x + screen.y));
newScreen += 0.5f;
// Take away half the screen height, because we're calculating from the centre of
// the tile/whatever.
newScreen.y -= yOffset;
return newScreen;
}
Isometric games used to be fully 2D, but more recently they're starting to use 3D with an isometric projection matrix. This makes things like lighting/shadowing
much easier, and helps keep texture usage down, because with pure 2D sprites you get through a metric ton of texture memory and end up having to stream everything in. There's just so many little details to figure out with isometric engines that 3d just solves "naturally" - another big issue is scaling to different screen resolutions. One of the advantages of 2D was that you could have much higher detail worlds with no extra speed loss - because all the detail was 'baked' into a tile - but now that computers are faster, and the characters relatively far away, 3D is viable, and as explained, so much easier.
You could use a hybrid approach, whereby you draw everything in 2D (which gives you better looking graphics), and then render the world in 3D using a low-resolution proxy mesh, and use that to calculate lighting, culling, etc.
If you can program, I'd recommend looking at (
http://fifengine.de/) FIFEngine; I'm not sure what state it's in (haven't used it myself) but it looks promising.
Benvox2 on 31/5/2008 at 00:56
Wow thanks everyone for the wealth of information regarding the workings of a 2D engine (esp. Yakoob and Ajare)
But would you be able to comment on the Desperados/Robin Hood Games, ie:
IF they use full 2D, what angle they use, and any programs at all on what would be able to achieve a similar quality to them, so i can add to my list so far i have:
*Game Maker 7
*FIFEengine
Queue on 31/5/2008 at 01:28
Quote Posted by ZylonBane
We've noticed.
Maybe you should stop posting.
*bursting into the room...*
In the immortal words of some recently deceased guy, whom I've never met:
NEVER!*...rushing back out, resting on my laurels of having added absolutely nothing of relevance to the conversation*
Tocky on 31/5/2008 at 04:35
Is it too late to say how does a rainbow work- it just does?
Ajare on 31/5/2008 at 11:10
Quote Posted by Benvox2
But would you be able to comment on the Desperados/Robin Hood Games, ie:
IF they use full 2D, what angle they use, and any programs at all on what would be able to achieve a similar quality to them, so i can add to my list so far i have:
*Game Maker 7
*FIFEengine
It looks like they use a pretty standard isometric projection, fully 2D. I haven't used GM7, but it seems a little too simplistic for what you want: 2D isometric is darned complex for a number of reasons. FIFEngine would be better, but it's not as mature, plus you need to be able to program.
demagogue on 31/5/2008 at 23:16
Quote Posted by Queue
Sorry about that...I've truly got nothing
I was going to say they work with 2D isometric pistons ... obviously.
Yakoob on 1/6/2008 at 03:44
One more thing I forgot to mention - many 2D isometric games (such as diablo or arcanum) actually create fully animated 3D models, but instead of rendering them realtime onto a 2D background map, they pre-render them into 2D sprites (which looks shittier than if they rendered real-time).