Understanding Isometrics from scratch?Monkey Forums/Monkey Beginners/Understanding Isometrics from scratch?
| Anyone have tutorials, guides, or famous books on this subject?|
I need to understand how to do the following:
1. Build my own isometric world from scratch, but not just project graphics.
2. Understanding how to navigate it, and also pathfind in it.
3. understand how collision detection works in it.
I'm a noob at this.
| There is a book called isometric game programming with direct x 7.|
I did pathfinding with isometric and it is not different than with 2d. Array x,y. Just the tiles are rotated rectangles on the screen. 2d is also just rectangles.
For the collision you could use collision maps. Arrays where the area that the collision needs to be done can be found on. 1 value on the field is true collision. You could make a mask array for each tile/graphic.
On the google books search site you could probably find more info from books.
It is not a bad investement to buy books on the subject.
I have a isometric collision example in the tutorial forum.
| thanks, when you say collision mask that is stored, in an arraym, every frame you update you store its new change in position, and offset the values of the mask, or what?|
(base_pos + offsetmask)
(nice website by the way, I like the changes, makes it much easier to see the examples than before 10/10)
| Most isometric worlds are just the same to navigate as flat tiled maps. And when they have a third dimension, you can still use the same pathfinding algorithms extended to 3D. [Your most basic isometric world is just a flat map with fancy graphics - no different from a chess game in 3D as distinct from 2D graphics.)|
Collision masks won't work. If you want collision testing on a scale smaller than tiles (e.g. small aerial units, bullets etc.), you can probably just use distance checking based on spheres or boxes.
| Sorry, I understand to a certain point, so, when I make my isometric positioning math, and I want to test a wide array of objects with different sizes that may not be a perfect tile size that I have set up as my standard single tile space unit such as 32x32 or 64x64, to test collisions in this world I should use 2Dimensional spheres or square graphics that are applied with the spriteObject/GameObject/isoObject in this space to handle odd shaped collisions? So these collisions they would be attached to isometric movement objects but how would collision work if you simulate Z depth, just pass that onto the sphere or box double checking the sourceIsoObjects depth value based on its position in the world space or what?|
sorry im a noob at this.
| What kind of game do you want to make? Watching screenshots of the type of game you want to make would make it easier to understand.|
I only ever worked on civilization 2 type isometric worlds.
| Oh ok, something like |
this: or this or this,
basically id simulate Z levels with floors and layer graphics according to what the player can view or see. (how do I use a spoiler tag?)
| With a game like that shown, I would normally expect collisions to be tile-based, e.g. your hero can attack a monster in an adjacent tile. In other words I would expect an object to occupy one or more full tiles. Likewise, even if a cupboard is drawn so that it takes less than a full tile, nothing else could enter that tile, and interacting with it would interact with the cupboard.|
You can go beyond this with collision boxes etc., but then you kind of lose the point of an isometric tiled world - you might as well move to full 3D.
| How would you raycast and shoot off of your Z level in that scenario with collision boxes? attach Z physics able objects bodies to the objects which can be "shot" like in project zomboid/ultima online? |
| Well, a straight line in 3D is still a straight line in isometric projection. |
| ahh that makes sense |
| RedGTurtle had you seen http://gamedevelopment.tutsplus.com/tutorials/creating-isometric-worlds-a-primer-for-game-developers--gamedev-6511 |
| Wow, I missed this one, thanks alot. |
| In case this is useful to you, my tiled engine loads isometric Tiled maps. It still needs some work with documentation, and I'll get to that someday, but the example is pretty in-depth. https://github.com/bitJericho/bit.tiled|
I'm also on IRC if you have any questions. I'm on all the time :)