Powered by Invision Power Board

 
    Reply to this topicStart new topicStart Poll

> Someone Willing To Teach Me Isometric
Unspecified
Morshu McPhereson
  Posted: Jul 25 2006, 05:21 PM
Quote Post


Who's got the sweetest disposition?
[*]

Group Icon
Group: Members
Posts: 20184
Member No.: 685
Joined: 23-November 04

Status: (0d) [--]


In GM. I don't want an engine, I want to learn. As in, a walk-through. You WILL be credited. Thanks in advance. biggrin.gif

EDIT: Mario And The Seven Gems has FAKE iso, as in, jumping animation.

This post has been edited by Mason on Jul 25 2006, 05:31 PM
PMEmail Poster
Top
Unspecified
Golem
Posted: Jul 25 2006, 05:59 PM
Quote Post


Really short legs
[*][*][*]

Group Icon
Group: Members
Posts: 930
Member No.: 1603
Joined: 4-November 05

Status: (0d) [--]


Learning from an engine is possible, though it takes a lot of thinking. You basically look at the code and visualize what the code means for the player, taking it one event at a time.

Though, you said you didn't want an engine, and while I can't exactly provide a tutoral, I figured my thoughts might help:

Depth can be considered as the Z plane. The more positive the depth is, the farther back into the Z plane (away from the screen towards the back of the monitor, if you can visualize it) you are. Any movement caused by the use of the up or down arrow keys should change the depth.

The basic concept I've worked with uses shadows to define where the player is.

You put a shadow directly underneath the player, and leave it in place when the character jumps (a jump that should be programmed just like a 2D one, with the usual vspeed and gravity setup). That is, don't have the shadow jump with the charater, but still have the shadow move with the character in the arrow key directions. When the character comes back down and hits the shadow, set gravity and vspeed to 0 (this may require something like "if I'm below shadow.y, set vspeed and gravity to 0 plz," as opposed to "upon collision with shadow, stop").

The shadow also judges on what height the player is. First, blocks should consist of two parts as well--the top of the block and its shadow.
I'm pretty sure this only works if they don't overlap, but instead should work like this:
O (top of block, takes up Y space of 0 through 15)
O (shadow of block, takes up Y space of 16 through 31)
If the player's shadow comes in contact with a block's shadow, it should move up on the y plane but not change its depth, so that it is on top of the block. If the shadow is below the player's feet, allow the player to go forward. If not, put the shadow back under the player's feet where it was, beside the block's shadow. This method requires some compensation for moving up the y plane and jumping onto a block. Also, you should make sure the shadow's depth is close to the block's depth, else the player will walk onto the block when approaching from above it, speaking in terms of the y plane.

This method definetely has inherent flaws, some exceptions that you'll have to work out. This also means you have to make different objects for each height--for example, if you had 16X16 blocks, a block on the ground would have a shadow object that sets depth equal to the negative y location, and the top of the block would have depth equal to the negative of its y location plus 16. However, a block above that one would have a top that would have its depth equal to the negative of its y location plus 32. Also, I haven't used this engine much, so I haven't thought of a technique to handle floating blocks. It seems like it'd be possible to do easily and would only take a little thinking to do, though.

That's just the thinking I've taken to isometric engines. Sorry it's not much of a tutoral, but I don't really have anything polished to give as an example. Whenever you want to do something in Game Maker, just think of what you want to do and what you don't want to do. Be sure to take it in small steps.

This post has been edited by Golem on Jul 25 2006, 06:06 PM


--------------------
Quoth the raven, "~teehee~"
PMEmail PosterUsers WebsiteAOL
Top
Unspecified
Morshu McPhereson
Posted: Jul 25 2006, 06:53 PM
Quote Post


Who's got the sweetest disposition?
[*]

Group Icon
Group: Members
Posts: 20184
Member No.: 685
Joined: 23-November 04

Status: (0d) [--]


QUOTE (Golem @ Jul 25 2006, 05:59 PM)
Learning from an engine is possible, though it takes a lot of thinking. You basically look at the code and visualize what the code means for the player, taking it one event at a time.

Though, you said you didn't want an engine, and while I can't exactly provide a tutoral, I figured my thoughts might help:

Depth can be considered as the Z plane. The more positive the depth is, the farther back into the Z plane (away from the screen towards the back of the monitor, if you can visualize it) you are. Any movement caused by the use of the up or down arrow keys should change the depth.

The basic concept I've worked with uses shadows to define where the player is.

You put a shadow directly underneath the player, and leave it in place when the character jumps (a jump that should be programmed just like a 2D one, with the usual vspeed and gravity setup). That is, don't have the shadow jump with the charater, but still have the shadow move with the character in the arrow key directions. When the character comes back down and hits the shadow, set gravity and vspeed to 0 (this may require something like "if I'm below shadow.y, set vspeed and gravity to 0 plz," as opposed to "upon collision with shadow, stop").

The shadow also judges on what height the player is. First, blocks should consist of two parts as well--the top of the block and its shadow.
I'm pretty sure this only works if they don't overlap, but instead should work like this:
O (top of block, takes up Y space of 0 through 15)
O (shadow of block, takes up Y space of 16 through 31)
If the player's shadow comes in contact with a block's shadow, it should move up on the y plane but not change its depth, so that it is on top of the block. If the shadow is below the player's feet, allow the player to go forward. If not, put the shadow back under the player's feet where it was, beside the block's shadow. This method requires some compensation for moving up the y plane and jumping onto a block. Also, you should make sure the shadow's depth is close to the block's depth, else the player will walk onto the block when approaching from above it, speaking in terms of the y plane.

This method definetely has inherent flaws, some exceptions that you'll have to work out. This also means you have to make different objects for each height--for example, if you had 16X16 blocks, a block on the ground would have a shadow object that sets depth equal to the negative y location, and the top of the block would have depth equal to the negative of its y location plus 16. However, a block above that one would have a top that would have its depth equal to the negative of its y location plus 32. Also, I haven't used this engine much, so I haven't thought of a technique to handle floating blocks. It seems like it'd be possible to do easily and would only take a little thinking to do, though.

That's just the thinking I've taken to isometric engines. Sorry it's not much of a tutoral, but I don't really have anything polished to give as an example. Whenever you want to do something in Game Maker, just think of what you want to do and what you don't want to do. Be sure to take it in small steps.

Thanks, that helps. I'm still slightly confused though, can you say how to do this step-by-step? You can AIM me via

MagikoopaMason

or

SexOnASandwich
PMEmail Poster
Top
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

  Topic Options Topic Options Reply to this topicStart new topicStart Poll

 




[ Script Execution time: 0.0458 ]   [ 14 queries used ]   [ GZIP Enabled ]   [ Server Load: 0.25 ]