Isometric Game Issues

Isometric viewing angles, cameras, graphical information, and just all around research is next to impossible because people don’t seem to even know what isometric means.

I am trying to figure out if Isometric is a better way to go than Dimetric, because Dimetric is giving me quite a bit of problems. The problem is mainly getting in the mindset of how to create a 2.5D world with tall buildings, without those buildings needlessly covering up a ridiculous amount of vertical space that should have other things on it. Another reason is that movement feels very slow in a Dimetric world, because of the 2:1 pixel ratio.

I don’t have a problem with movement at all. I can do both Isometric and Dimetric movement, with correct speeds (including diagonals) and I accomplished this on my first guess-work of code.

However, any thread I research from here unto eternity, including any at gamedev or the amazing fluff google provides, it’s all a bunch of morons! Constant references to needing “true isometric” or “real isometric” which is actually DIMETRIC.
No actual topics about isometric. All of them seem to be dimetric. Also…no use of the word dimetric! Ironically, I type in Isometric Graphics in google Images, and I get dimetric. If I type in Dimetric Games in google, I get Isometric graphics!

I am just so frustrated, finding thread after thread of people asking for help with “true isometric” and getting responses to true DIMETRIC and then the problem being resolved with a “thank you, thats what I wanted, all I could get was this fake isometric!” Fake Isometric being true isometric, and “True Isometric” being True Dimetric…

It seems that Isometric ACTUALLY means Dimetric, and “True Isometric” is the exact opposite of true. In a world of logic and math… there is neither.

Honestly, I was just wanting to do a little research, as this is my first 2.5D game, and creating the art assets at the correct angle (as well as movement and translucent buildings, as well as overly tall buildings) is causing me a lot of curiosity (amongst the problems) as to the benefits of Isometric (which is what I’m trying to research) over Dimetric (which is what I’m currently using).

It actually occurred to me that those people who pointed me to make my world Dimetric (calling it “True Isometric”) many months ago, might have been total morons as I am beginning to not see much of a benefit of Dimetric over Isometric. However, doing research before beginning again is quite important to me. I just can’t stand the illogical statements of others calling “true isometric” as true dimetric…as if they’re the same thing!!

If anyone has any ACTUAL experience building Dimetric or Isometric worlds, I would like to know what you think of either, the pro’s and the con’s, and which you prefer.

Of course… most of this is actually assuming the game is using Tiles.

Isometric Tiles = Diamond Shape
Dimetric Tiles = 2:1 Pixel

However… the buildings seem to come in all sorts of shapes, sizes, realism, and imagery/trickery.

I am having a lot of trouble knowing what angle to create the buildings, or if I should keep them at a Dimetric angle but create them to be unrealistically shaped.

Like I said, this is my first 2.5D game, and although I prefer for my characters to be perfectly Dimetric, the buildings are giving me quite a bit of trouble.

I think life’s too short to get so frustrated about such things… I think people don’t really care about what it’s called, or what version (Di/Isometric) they are creating. Instead, as they should, they care about the effect that they are getting.

At the end of the day, that’s all that the players care about!

It DOES matter because when you’re dealing with “complex” mathematics, the details are VITAL to the correct formula.

I am scratching my head that another might say “It doesnt matter!” when the whole concept of creating video games requires these details and this precision.

When one is actually trying to find legitimate research and cannot because of other’s lack of precise detail in an area which requires every number to be exact (or else the program won’t run) then it is certainly frustrating. Regardless, I drew up an image explaining my biggest problem, in hopes of finding out a solution.

As you can see, Figure1 is actually far NorthWest of the actual building, highlighted in Red. The building doesn’t take up any more space than where it is highlighted in red. However, the game view is Dimetric, which means it DOES matter.

If one saw the entire screen, sure, it might not be a problem. However, when Figure 1’s game screen is (as attached) he will be walking South East and suddenly think there is someone right next to them. Instead, they should not even be visible! However, the Game View for everyone else South East of the building is perfect.

553777--19565--$Figure1 Game View.png553777--19566--$Isometric.png553777--19567--$Player2GameView.png

So far I have two solutions. Three if you want a crappy 2nd.

Solution #1) Any time Someone is directly behind the building (Figure 1 and the figure below him) then the building will be rendered as just the square red box (a foundation graphics), or transparency.
Otherwise, the image is fully visible.
The problem with this is that it is a bit odd to see nothing but a square of red, and certainly a hinderance of the image is transparent, especially when it is so tall.

Solution #2) A flat cutoff of the top, to limit building height. After the second story, the image would have another “red box” at the top which is pure black or foundation, showing that although there is more, it is not rendered. This would be incredibly ugly though, unrealistic, and just plain crappy.

Solution #3) Would be an alpha which slowly increases as one gets closer to the building (from behind) but this is a bit more complex than I originally wanted to code, and I’d have to learn how to do that, as opposed to a simple off/on, switch-a-roo, or color.a change.

However, I lack the foresight to see problems with #1 or #3.

I think you’re over-complicating it for yourself Ronny. These kinds of problems existed in 2D representations of this, but not when doing it in 3D. I’d expect threads like this over on the Scirra Construct forum (expect, and remember fondly… eye twitches).

Anyway, the problem seems to be simply “how do I see my guy behind a building?” Well, since it’s 3D, you’ve got distances. Which solves all your problems.

Camera pointing at your guy. If an object tagged with “bigassbuilding” and a collider, gets between a raycast from your camera to your guy. Switch the buildings material to one setup to be transparent and fade it from 100% opaque to 10% transparent, until its no longer being hit by the raycast, at which point fade it back again. Use the tags to ensure only bigger stuff is faded out that way.

Naturally, fading it out means you’ll have a blank space on the ground that the building would otherwise take up, you could leave this as black or empty. Or be creative and have previously hidden building foundations now visible, cables, sewer pipe etc. Or just brick and dirt.

If your buildings can be entered, then switch meshes from simple outside only versions for the fading, to full (but also occluded interior) versions for entering. Then do a check in your script to see if your guy is stood near the entrance or not, if he is then you fade things differently so you can see inside the building and also enter it.

Thank you!

I am quite new to Unity (and game design in general) so the idea of 3D Cameras, Tags, and raycasts really helps a lot. I cannot believe I didn’t think of using the Camera as the collider instead of having all sorts of crazy box collidors on the player or building.

Oh wait… this doesn’t actually solve the problem. It just explains how to make the buildings transparent when the player is behind one. I could have done that with two box collidors, right? Am a bit confused now that I re-read your post.

My problem isn’t “How do I see my guy behind that big building?” but actually “How do I make sure that building isn’t drawn unless appropriate?”

The character isn’t behind the building. He is “behind” it in the “game” but not in reality. It is all 2D, so Figure1 is actually Above and to the Left of the building. No collision happens. Yet it is certainly awkward to see the top of a building when naturally, there should be nothing but flat ground.

The problem is that Figure1 is NOT right by the rooftop figures. Those figures are hundreds of feet above him, should not be visible, and Figure1 cannot see the flat ground directly infront of him!

The solution isn’t as simple as “If he collides with the building, the building is gone!” As that would make objects randomly disappear and simply confuse the player.

Wait…the camera is 3D with a perspective even in orthographic… so it would draw raycasts from the outer edge of the camera towards the character even though it’s X and Y only?

Hmmm…sorry, I didn’t even know what raycasting is (barely) so excuse me if your answer IS the solution.

You’re thinking in 2D representation of 3D space though, like how it was done in the awesome classic Spectrum isometric games. Where there was no real depth, so tricks had to be designed which would tell the program when something was in front or behind an object. Sometimes this used a coordinate type system, other times it was a very basic and early version of the depth buffer (which worked something along the lines of the top of the screen was further away than pixels at the bottom of the screen). Which of course brought with it the problem of how to deal with different elevations. Which was why you didn’t often see complex elevation, faked depth and being able to walk behind objects, very often.

But you don’t have that problem in Unity, because all the distances are there. Using the orthographic camera mode, setting up the camera for the correct angle you want. Everything else still behaves as normal. Distances, raycasting etc.

Try imagine it this way. Imagine you’re not making an isometric/diametric game at all. But an FPS. At one point you press a button to view the playing area from a CCTV camera. This camera happens to view things in the isometric style. That’s it. That’s the only difference. If you set the camera near clip distance very close to the camera and move the camera back a ways. Then all the buildings etc. no matter how tall they are, will appear in shot correctly.

Here’s a quick example. All those blocks and capsules are different distances. From the camera they look the same though. But thats just how the camera is seeing it. It’s still all in 3D, and all the tricks that used to be needed when doing it in 2D, no longer apply.

I dunno, maybe I’m completely missing the problem you’re having though. It’s just, to me, there shouldn’t be a problem. But I’ve been known to be wrong before, lol.

I will have to mess around and see.

You’re probably right, as I’m pretty new to all of this. My experience is mostly in 3D modeling and 2D graphics, not game engines or programming, although I’m not ignorant to either.

You are taking into consideration I’m using planes and textures, so everything is irrelevant on the Z axis right? No 3D objects at all (besides flat planes or quads).
If so, then you’re most likely right, I just have to test it and see. (Busy now making the building, as the characters are 512x512 originally, so the building has to be rendered out 4096x4096 or greater, to keep things simple, before shrinking it in photoshop.) Then I have to research the scripting references for all this raycast stuff and also making a material’s alpha change. (I found how to color.a, but not material alpha yet, had a bit of trouble finding that reference).

Soon, I will check it out, and like I said, you’re most likely right, I am probably just not understanding until I use this thread as a reference while doing it, and then I’ll understand afterwards.

I’m going to have to wait until someone else gets online to help me with this Physics.Raycast stuff.

I’m a bit new with the programming, so I think it’ll be easier on me if I just wait for someone else to teach me. Hopefully one of the two will be working today :stuck_out_tongue:

I found it though,
http://unity3d.com/support/documentation/ScriptReference/Physics.Raycast.html

(I also make sure to document my steps to figuring it out, in case anyone else, even months later, happens upon this thread.)

Ohh, so you’re basically doing nothing in 3D then? So basically completely emulating how it used to be done, or still done, in 2D? Oh in that case erm… twitches more and more and looks at his watch Oh damn is that the time, I gotta go, I got a thing…

Seriously though, in all honesty you could cause yourself far more problems than it’s worth if you’re doing it that way, when you could simply do it in 3D and using the depth that exits there, (even if you were to still use flat planes and textures, it would still be somewhat easier… ) it would ultimately just be easier to use real geometry though. You’ll lose less hair that way. :slight_smile:

I’m just going to go with a tile system, where I create the buildings using smaller squares of wall, floor, roof, etc.

Similar to how Ultima Online did their buildings.

Also, I am changing the gameplay to go with a roller-coaster-ride type of level (a level on tracks, one direction) as opposed to placing the player in the middle of a map and making them go all over it to find random objectives. This way the player never even goes behind a building unless it’s specifically made to enter or move behind.

So any taller buildings or sky scrapers are “background” or the “edges” or borders for the level.
Similar to Shadowrun for SNES, which was isometric.