Flash 3D Isometric Game Engine
ActionScript 3 (Vector) Version
Thanks to AS3’s speed, this can redraw the isometric space at runtime, so it is a “true” 3D engine. Have a play with the sliders to see what I mean. Keys QAOP move the ball (after you have clicked on the movie).
update: I have recently built a level editor. Keep an eye on the blog for further updates.
ActionScript 2 (BitMap) Version
These were intended to be the rich graphics approach, with all the components being 3D renders rather than vectors. This engine was used to make a game for Newsround. Keys QAOP (or the arrows) and SPACE control the Rabbit (after you have clicked on the movie). TAB zooms out the view.
The Inspiration


Alien 8
Highway Encounter
Head Over Heels
all content copyright zenbullets 2006, 2007, 2008
May 21st, 2007 at 4:57 pm
Hello,
I’ve been looking into Isometric engines for Flash 8, and yours has been one of the only ones I’ve found that seems to work in a reasonable fashion.
First, I’m emailing to make one recommendation to improve gameplay: The addition of a shadow under your character, would improve playability. At times, with lots of jumping, it’s hard to tell whether I’m north of a block, or on top of a block. A shadow would let me know where I stood, literally.
Second:
I’m wondering whether you went the standard tile-based, movieClip route, or used some blitting strategies involving bitmapData, or some creative hybrid created from the two.
Third:
Will you be posting any tutorials, source, or even more in depth musings on strategies you used? I’m all about reading people’s pseudo-code, just to understand the processes they’ve gone through. It can be very useful.
And finally: The Benny Hill version cracked me up.
May 22nd, 2007 at 1:33 am
thanks che, all good comments.
1. Yes, the shadow got lost in the AS2 version at some point because of a depth clashing issue – the depth management in the AS2 version is a bit chaotic – and I forgot to put it back. Fortunately, in AS3 depth management is much simpler.
2. I experimented with blitting, and manually controlling what was and wasn’t visible as the view moved around, but I found the processing time of this was actually slower than just using movieclips and a mask. There’s also the advantage of allowing animated tiles, although too many of those and it really does slow down.
3. When I have the time, yes, I’ll write a tutorial. Although I rarely have the spare time to work on the code, so don’t expect a write up in a hurry. I’ll also open source it one day too (not soon), if it’s still relevant by that time.
August 6th, 2007 at 2:32 pm
Greetings, i found your site on Google and checked out your AS3 isometric prototype. I am working on a similar project and was wondering how you handled the z sorting of the tiles and hero.
all the tutorials for as2 use a method of assigning depth based on grid X,Y and adding in a buffer between depths so you can just swap depth between the hero and the board tile. Obviously this won’t work in as3 since you can’t have emtpy depths and the depths must be created in order.
would you be able to give me any advice?
1. how to assign initail depths in the proper order
2. any ideas on z-sorting as hero moves.
thanks for any help you can provide.
August 6th, 2007 at 4:27 pm
Actually, the way AS3 handles depth makes things much easier than it was in AS2, because you can now insert clips into the Display List without worrying about their number, using the addChild and addChildAt commands.
To build your environment just loop through them by row, from the back forward, (then building up layer by layer if you have a 3d plane), adding objects to the Display List in this order. When a character moves around the environment you just need to know what tile you are over, and use an addChildAt command to insert the char into the Display stack above it.
It gets a little more complicated when you have two or more chars sharing a tile, but then you just layer them according to their (screen) y position, i.e. who is closest to the observer.
Hope this helps.
August 18th, 2007 at 11:05 pm
thank you for the ideas on how to layout the board. I have been able to get that to work but have not had any success with the z-sorting. I am able to find the tile the hero is on, but the problem is when he is moving. i don’t seem to be able to figure out how get it sort correctly. the sort either happens to late and part of the hero disappears, or it finds a tile to far from the hero and he ends up on top of stuff. Your Rabbit game seems to perform this function well. is there any possible way you could post the portions of that engine that deal with z-sorting? I am hoping it might give me some ideas, and i am getting really desperate.
September 23rd, 2007 at 11:31 am
Here’s an isometric engine I developed back in 2002, using Flash MX (or it may even have been Flash 5!) It uses AS1.0 and other than a bit of flickering when you jump around, it seems to work pretty well.
I could dig out some source code if anyone is interested….
March 11th, 2008 at 6:59 pm
You might want to check out this recently released isometric engine.
http://www.ffilmation.org
Best,