Omnimaga

Calculator Community => Other Calc-Related Projects and Ideas => TI Z80 => Topic started by: Builderboy on August 30, 2009, 10:27:15 pm

Title: Isometric Engine
Post by: Builderboy on August 30, 2009, 10:27:15 pm
So I was really sick from Friday to Today, and while i was wallowing in a lake of my own phlegm I dreamed up an idea for an Isometric engine...  After I got better enough to program, I quickly set about doing it, and quickly came up with a basic demo program writen in BASIC with xLib.  A few more hours of tinkering and this is what I got.

A basic example screen built using 4 tiles: Empty - Box - Grass/Sand - Rock
(http://farm3.static.flickr.com/2602/3873207516_c727bfafa5.jpg)

And animation of a beta scrolling algorithm (SE)
(http://i199.photobucket.com/albums/aa72/builderboy2005/th_ANIMATION.gif)

The data is read directly from a single matrix, but in a very confusing way :(.  This will make collision detection even more difficult, although this isn't the best engine for RPG's or such, as you would need to do some heavy calculating while displaying objects, so that they stay in back of the objects they need to stay in back of and such.

Each object has an image and a mask to make sure he objects occlude each other correctly.
Title: Re: Isometric Engine
Post by: Raylin on August 30, 2009, 10:30:53 pm
Interesting! Is this in TI-BASIC w/ Celtic III or ASM?
Title: Re: Isometric Engine
Post by: DJ Omnimaga on August 30, 2009, 10:31:32 pm
holy shit! that looks awesome, I wonder if it would be possible to gain enough speed from such tilemapper? it would be cool to have something like Kirby's Dream Course (Kirby Bowl) or Mario RPG
Title: Re: Isometric Engine
Post by: Raylin on August 30, 2009, 10:33:32 pm
How 'bout that Final Fantasy Tactics? :)
Title: Re: Isometric Engine
Post by: Builderboy on August 30, 2009, 10:34:41 pm
Oh yeah, this is in Basic with xLib

The speed is pretty good with an SE, but displaying objects might pose a problem
Title: Re: Isometric Engine
Post by: Raylin on August 30, 2009, 10:55:42 pm
So, I heard you had a matrix going.
*cough*complex list*cough*
Title: Re: Isometric Engine
Post by: Builderboy on August 30, 2009, 11:02:45 pm
Well, the reason I'm using a Matrix is to take advantage of xLibs fast Tilemapper, which is the reason scrolling is possible :P  Lists might work if I converted them to Matrixes every frame, but I'd have to see.  (And I'd have to have a very good reason for switching to lists :))
Title: Re: Isometric Engine
Post by: Raylin on August 30, 2009, 11:07:24 pm
I'm thinking in terms of short-term memory. (RAM). If you have a complex list as the entire map and parse two rows at a time into matrices and have no need to re-display the entire map, this could make a very memory-efficient Tactics clone.

EDIT: That may not work with XLib's tilemap function, though.
Title: Re: Isometric Engine
Post by: Eeems on August 30, 2009, 11:10:22 pm
you could use string, like I do (it works with Celtic III)
Title: Re: Isometric Engine
Post by: Builderboy on August 30, 2009, 11:15:09 pm
Well, the tilemapper isn't able to display the entire map in an instant anyway.  What you see in each frame of the animation is a single row being drawn and then the screen moved up.  So that could work, but it would be slower, because you would have to put the lists into the Matrix each frame it moves, and the matrix is really weird.

The matrix is really weird.

Let me put it this way.  You see that vertical scrolling action?  That is the tilemapper scrolling vertically through the matrix :|

EDIT: Blarged by Ninja Eeems!  Strings would work weird with the mapper though.
Title: Re: Isometric Engine
Post by: Raylin on August 30, 2009, 11:17:12 pm
lolwut?
EXP < Necessary level for comprehension.

(That's really weird... Why did you it that way?)
Title: Re: Isometric Engine
Post by: Builderboy on August 30, 2009, 11:21:01 pm
Because its fast and fast trumps all
Title: Re: Isometric Engine
Post by: simplethinker on August 30, 2009, 11:39:36 pm
This looks awesome Builderboy :o  Could you post some of the code so we can see how weird the matrix is?

I'm thinking in terms of short-term memory. (RAM). If you have a complex list as the entire map and parse two rows at a time into matrices and have no need to re-display the entire map, this could make a very memory-efficient Tactics clone.
With this kind of program, RAM usage should probably take a back seat to speed issues.

Because its fast and fast trumps all
Not always ;)
Title: Re: Isometric Engine
Post by: Builderboy on August 31, 2009, 10:20:35 am
Because its fast and fast trumps all
Not always ;)
:P

Code: [Select]
real(0,1
real(7,0
DispGraph
Repeat 0
3->A
For(F,0,19
real(4,A,4,3-A
real(4,0,2,0
real(2,0,0,F,12,1,0,12,6,7,2,1,8,0
real(2,0,0,F,12,1,0,12,6,7,1,2,8,0
5-A->A
End
End
although you need the Matrix and the pictures to get it to work.  The Matrix is 12*20.  Pic1 is the image, Pic2 is its Mask.  I'll post them a little later.
Title: Re: Isometric Engine
Post by: Eeems on August 31, 2009, 01:45:13 pm
hmm, I was looking at the Celtic III 3.09s commands and I found BOXSHIFT, which you could possibly use to make this easier...take a look if you want
link to post where you can get v3.09s (http://www.unitedti.org/index.php?s=&showtopic=8038&view=findpost&p=135672)
Title: Re: Isometric Engine
Post by: DJ Omnimaga on August 31, 2009, 03:49:22 pm
Keep in mind that to download Celtic, you must first register (and validate) a forum account on United-TI. For some reasons, they disabled attachments for guests a few months ago.
Title: Re: Isometric Engine
Post by: Iambian on August 31, 2009, 04:15:25 pm
EDIT: Link was fixed

The BOXSHIFT command is nowhere near "fully" implemented. That command still needs to be tested and once I can get the logic down correctly, I'll be finishing up with the rest of the code to bring it to fully implemented status.

Though, I would like to hear about how it *could* be implemented. You know, something to provide a little motivation to bring it to completion.
Title: Re: Isometric Engine
Post by: JoeyBelgier on August 31, 2009, 04:43:35 pm
EDIT: no idea what previous post had to do with this
do not consider it spam plz, remember they don't even speak English as native language on my continent x.x
Title: Re: Isometric Engine
Post by: Eeems on August 31, 2009, 04:44:32 pm
well he has to do some shifting, so he could use this instead or something like that, I hadn't really thought it out, but yeah...I was sure he could think of something
Title: Re: Isometric Engine
Post by: DJ Omnimaga on August 31, 2009, 04:51:05 pm
EDIT: Link was fixed
post
Title: Re: Isometric Engine
Post by: Iambian on August 31, 2009, 05:07:53 pm
As far as shifting goes, I think what could be done to simulate "smoothscrolling" of sorts would be to have a black border the same width as a "tile" to cut off the work area for the screen when it's updated. The work area, juggled around in a pic file, would contain the stuff used by the boxshift routine to perform said shift. Then again, xLIB has a command a little like that which would be a bit more economical (fullscreen shifts). At least, I *think* it has a command for it. If not, then it certainly is a part of Celtic III as I remember the pains of coding in such a routine.
Title: Re: Isometric Engine
Post by: Eeems on August 31, 2009, 05:58:41 pm
yes xLib does have a full screen shift, I played around with it for a while, so yeah, that would work
Title: Re: Isometric Engine
Post by: Builderboy on August 31, 2009, 06:03:24 pm
xLib does have fullscreen shifting, and I can't seem boxshift to do anything :( except give strange errors.  Maybe because it is in production and not finished?
Title: Re: Isometric Engine
Post by: Eeems on August 31, 2009, 06:06:54 pm
which version are you using? did you make sure to use 3.09s?
and I haven't tested it myself, so I'll take a look into it, who knows, maybe Iambain made a mistake with it
Title: Re: Isometric Engine
Post by: calc84maniac on August 31, 2009, 06:13:47 pm
EDIT: Link was fixed

The BOXSHIFT command is nowhere near "fully" implemented. That command still needs to be tested and once I can get the logic down correctly, I'll be finishing up with the rest of the code to bring it to fully implemented status.

Though, I would like to hear about how it *could* be implemented. You know, something to provide a little motivation to bring it to completion.
QFT
Title: Re: Isometric Engine
Post by: Eeems on August 31, 2009, 06:18:27 pm
oh right, :P
forgot, well I got the same problems you got Builderboy
so yeah...that might come in the future :P
Title: Re: Isometric Engine
Post by: Builderboy on August 31, 2009, 06:37:10 pm
well right now I have very good speed using xLibs shiftscreen method, so I doubt i will ever need it :P And i forgot to mention, that this program only displays the status every other shift, so you can actually get twice the framerate if you mix around the code a bit.  (but not twice the speed)

Scrolling left/right, however, is going to be very difficult, because I would have to display 40 sprites for every 1/2 sprite shift :( and this takes about 1 second on my SE.  So it would probably be more practical to just redraw the entire screen under the cover of no buffer update, and shift the screen, like, 2 or 3 spaces.  A total screen redraw takes 1.5 seconds on my SE, which isn't that bad if the screen can be shifted an arbitrary amount right or left. 
Title: Re: Isometric Engine
Post by: necro on August 31, 2009, 10:39:41 pm
That looks awesome.
Title: Re: Isometric Engine
Post by: Builderboy on September 01, 2009, 07:59:36 pm
Blarg.

So i was working on how to get an object to display correctly, and if you want the object to be masked, these are the steps

save screen
clear screen
draw object
mask object with above 3 land masks
save pic
clear screen
draw object mask
mask mask with above 3 land masks
save pic
recall landscape
AND mask pic
OR object pic

:( thats huge, and all necessary to display a single object.
Title: Re: Isometric Engine
Post by: Eeems on September 01, 2009, 10:13:54 pm
hmm, do them all at once? so all the objects are done before moving on to the next step?
Title: Re: Isometric Engine
Post by: Builderboy on September 01, 2009, 10:25:05 pm
well, what if one object is behind another?  This I think is why true Isometry has never been implemented, because while it might be easy to display the map, it is crazily hard to do anything with it.
Title: Re: Isometric Engine
Post by: Seren on September 01, 2009, 10:52:25 pm
Can't you make what I think is called a z-buffer? Basically, every pixel on the screen is assigned a value which represents their "distance" from the screen (row 1 could be distance 1, row 2 distance 3, row 3 distance 5, etc.), which would allow for objects with special outlines and stuff. The objects drawn onto the tiles could be given their own distances (If they are on row 1, give them distance 0, row 2 gives 2, row 3 gives 4, etc). That would mean 1-byte per pixel (not 1 bit). I think however that you could easily allocate 6144 bytes of free space in the ram. Of course, with z-buffering you wouldn't be able to use a library, given how slow they are (not that I know, I've never used them), and it would have to be written in pure asm, but hey, that's the fun part.
Title: Re: Isometric Engine
Post by: Builderboy on September 01, 2009, 11:38:09 pm
O.O

Um, yeah, I don't know asm, and this project was just using xLib, so I don't think that would work.
Title: Re: Isometric Engine
Post by: Iambian on September 02, 2009, 01:23:48 am
Can't you make what I think is called a z-buffer? Basically, every pixel on the screen is assigned a value which represents their "distance" from the screen (row 1 could be distance 1, row 2 distance 3, row 3 distance 5, etc.), which would allow for objects with special outlines and stuff. The objects drawn onto the tiles could be given their own distances (If they are on row 1, give them distance 0, row 2 gives 2, row 3 gives 4, etc). That would mean 1-byte per pixel (not 1 bit). I think however that you could easily allocate 6144 bytes of free space in the ram. Of course, with z-buffering you wouldn't be able to use a library, given how slow they are (not that I know, I've never used them), and it would have to be written in pure asm, but hey, that's the fun part.
If I'm to reply to that, I have to assume that this project is being written in ASM, which I am willing to give it a go.

It would be a bit easier to get calc84maniac to spill the beans as to how he did his Mode 7 engine. That would allow you some pretty cool effects like smooth rotations you see in FFT and the like. Of course, you can't do variable-height squares with that, but then again, that's part of the fun. To figure out how.

Now, let's get back to the BASIC side of things, which this project is actually being coded in.

I'm responding to Builderboy: Having known a logic pattern for building an isometric map, what sort of enhancements do you think Celtic III might need in order to ease the pain of performing these grueling operations? I think I've asked this before, but not in this fashion, but I really like to know. Something that would seem relatively simple in ASM might make a world of difference for what you're doing. Just gotta let me know what that something is. I am willing to help, but ...

Maybe I should just read up on the whole "how it's done" section on the previous page before rambling on any further. bbl </chatroom>

EDIT: Maybe something to help with the juggling of the buffers?
Title: Re: Isometric Engine
Post by: DJ Omnimaga on September 02, 2009, 01:45:59 am
Isometric tilemap stuff would be cool as Celtic III feature, but would you have enough space?
Title: Re: Isometric Engine
Post by: Builderboy on September 02, 2009, 01:54:08 am
Hmmm, I can't think of anything right now...  And i don't want to ask for something thats super specific to this task. I know I have an efficient rendering engine, and fast vertical scrolling.  I have an idea of a project that could be realized with the current technology, maybe i will put together a small test demo...

Isometric is hard though, so I think it will be slow to do all those calculations and masking in anything other than asm

EDIT: Gosh, that would be crazy O.O not to mention difficult to design so that you could read from data structures and objects and stuff, and all through generic real( commands.  Seems for this kind of project a lot would need to be hand coded
Title: Re: Isometric Engine
Post by: Seren on September 02, 2009, 04:02:33 pm
I just realized that you don't need a z-buffer. All you have to do is

-Draw the tiles of the top row
-Draw the objects on the top row
-Draw the tiles of the second-highest row
-Draw the objects on the second-highest row
etc.

This would produce the exact same effect as a zbuffer, except without the 6144 bytes and individual bit checking.
Title: Re: Isometric Engine
Post by: Builderboy on September 02, 2009, 05:33:33 pm
That would work, but then whenever you needed to move an object, you would need t redraw the screen, which takes 40+ Tilemasking operations and screenshifts.  And display all of the objects over again.  For something like displaying a cursor in ISometric space, i think my previous method would be a lot faster. 

Also, for my previous object method, it can be drastically shortened if you don't have an object with black, clear, AND white.
It is assumed you have saved a picture of just the terrain

Clear Screen
Draw Object
Mask object with 3 overlaying landscape masks
Recall Terrain with OR


This could easily be fast enough to display an object with reasonable speed, as none of the objects are particularly taxing
Title: Re: Isometric Engine
Post by: Seren on September 02, 2009, 06:23:49 pm
Well, that's why I've never used libraries and don't use basic.

Edit: (sorry to anyone who was offended by this statement. It wasn't meant that way)
Title: Re: Isometric Engine
Post by: Builderboy on September 02, 2009, 06:30:40 pm
Well this project is being done in basic, so if you have a suggestion that requires me to switch to assembly, they won't be applicable.  The whole point of this project is pushing the limits of Basic and Basic Libraries.
Title: Re: Isometric Engine
Post by: DJ Omnimaga on September 02, 2009, 07:16:27 pm
True, plus at Omnimaga, we do not really encourage bigotry based on languages used nor programming language fanboyism (since it is rude toward people who just don't get assembly and still want to program games for calculators and in the past). I myself stuck with TI-BASIC during 8 years for that reason. However, I pretty much just do RPGs, so I barely even need speed. I think an isometric tilemapper would be possible in BASIC with the help of xLIB or Celtic, but it would probably take a lot of memory if you used masking, because you would need full of masks and stuff. If I made an isometric RPG, I would try to make sure to keep my maps layout in a way that my characters always walk in front of walls object as much as possible, and use no masking for tiny objects.
Title: Re: Isometric Engine
Post by: Builderboy on September 02, 2009, 07:43:16 pm
Yes thats true.  I myself never learned assembly, and I really have no intention to. :P Its just not my language.

On a slightly different note, I was fooling around and created some tiles with different heights for your visual enjoyment :)
(http://farm3.static.flickr.com/2528/3882968000_d0a5727d59.jpg)

I'm working on getting objects to display nicely, and use this to throw together a quick editor so I can make more nice maps :D
Title: Re: Isometric Engine
Post by: Seren on September 02, 2009, 07:48:37 pm
I apologize if I sounded insulting; it was never my intention.

What I suggest in order to increase the speed of your object method is to have a flag that determines whether the tiles in front of the character are going to be overlapping the object (in other words, is the tile "flat" or is it high enough to potentially obscure the object above it). While this might make the code longer, I would think that it would make it draw the object quicker (unless of course it's behind something, but I think the slight reduction of speed there would be worth the increase of speed in the other case).
Title: Re: Isometric Engine
Post by: Builderboy on September 02, 2009, 07:52:12 pm
Yeah, thats probably going to be what I end up doing.  I could sort the objects from highest to lowest, so the test would be as simple as "If Object# > 8" or whatever.
Title: Re: Isometric Engine
Post by: Eeems on September 02, 2009, 08:19:25 pm
looking good there Builderboy :P
Title: Re: Isometric Engine
Post by: DJ Omnimaga on September 02, 2009, 08:22:04 pm
That looks nice builderboy :D
Title: Re: Isometric Engine
Post by: Seren on September 02, 2009, 08:28:15 pm
Looking at your longer object-drawing method, and addressing the issue of interacting objects...

Code: [Select]
save screen
clear screen
draw object
mask object with above 3 land masks
save pic
clear screen
draw object mask
mask mask with above 3 land masks
save pic
recall landscape
AND mask pic
OR object pic

I'm wondering if you could do all the objects simultaneously - Draw all the objects, and put the "above" land masks of all the objects in the form of a list, and go through them one by one.

The only problem that would occur would be when an object is in front of a tile in front of another object. Then the top of the lower object would be cut off by the "overlapping" tile. The solution I see to that is to split tiles into two parts: the "normal square" of the tile, and the "overlapping" section. I don't know how this will affect your drawing engine, or if you simply add the "overlapping section" as a completely new parameter of your tile (and not modifying the current tile-drawing engine), I don't know how much extra space it would take. However, this eliminates the problem I just mentioned (this idea working with the "height" idea mentioned earlier - except I now see it more as a simple flag (either 0 or 1) which indicates whether the current object has the "overlapping" section or not).

Now, the problem remains when an object is in front of another object. A way to do it would be to draw all the objects from furthest away to closest, but you'd have to use their masks to erase objects behind the closer ones (and as a random optimization, the first object you draw won't need to use its mask - maybe you could also detect objects in proximity? (don't know if it would be faster to check if there are nearby objects or to simply apply the mask for all the objects)). However, once you have done that step, you can treat the whole collection of objects on your screen as one single giant object (I think) and apply the land masks as one on all your objects.

How does that sound? Will it work?
Title: Re: Isometric Engine
Post by: Builderboy on September 02, 2009, 11:51:46 pm
The only problem that would occur would be when an object is in front of a tile in front of another object. Then the top of the lower object would be cut off by the "overlapping" tile. The solution I see to that is to split tiles into two parts: the "normal square" of the tile, and the "overlapping" section. I don't know how this will affect your drawing engine, or if you simply add the "overlapping section" as a completely new parameter of your tile (and not modifying the current tile-drawing engine), I don't know how much extra space it would take. However, this eliminates the problem I just mentioned (this idea working with the "height" idea mentioned earlier - except I now see it more as a simple flag (either 0 or 1) which indicates whether the current object has the "overlapping" section or not)

Well, the way the masks are designed lets them be applied  all at one.  So what you described would work without any modification.  Also, I said in the previous post that I was going to make all objects applied with OR logic (no white) so this eliminates the problem with drawing the objects in a specific order.  All I need to do is draw each object onto the screen, mask each object with the landscape, and recall the landscape picture with OR logic.  The mask design of the sprites will take care of all the problems :) I'm working on the object system now.
Title: Re: Isometric Engine
Post by: Geekboy1011 on September 03, 2009, 04:12:11 pm
hmm awsome for one and 2 will you make the engine available at the end cause i would love to "mod"/use this to make a rpg or somthing or is that asking to much :)


edit: yay im not alone  (see next post :P)
Title: Re: Isometric Engine
Post by: Raylin on September 03, 2009, 04:35:40 pm
Indeed. I, too, want to mess with this engine.
Title: Re: Isometric Engine
Post by: Builderboy on September 03, 2009, 07:08:07 pm
Indeed, most likely all I will release the code for a completed engine, as I already have a project going on, and i don't want to start working on something else :P
Title: Re: Isometric Engine
Post by: Geekboy1011 on September 03, 2009, 08:54:21 pm
awsome that great   cant wait for serenity or this engine now :)
Title: Re: Isometric Engine
Post by: Builderboy on September 03, 2009, 10:27:14 pm
Alright, here we are, a map editor featuring the newly completed object display techniques.  It is also now dependent on CelticIII, as it uses real(9,2... to store pictures without updating the screen.  In the editor, it uses code for both regular Or-ed objects (fast) and more complex masked objects (more than twice as slow).  The cursor is an OR object, when you add tiles, you are writing Masked objects to the terrain.

(http://i199.photobucket.com/albums/aa72/builderboy2005/th_EDITOR.gif)

I can't erase Masked objects yet because I am actualy adding them to the Terrain pic, and so they overwrite data beneath them.  With the OR cursor, I am never storing it to the pic, so although I must update the screen ever time i want to use it, I can move it without destroying the background terrain.  
Title: Re: Isometric Engine
Post by: Geekboy1011 on September 03, 2009, 10:33:00 pm
wow this look even better now cant wait to recreate a ff tactics style game with this



edit : lol to following post     i dont like posting for lol every time to much like spam :P
Title: Re: Isometric Engine
Post by: Raylin on September 03, 2009, 10:33:47 pm
Builderboy! What have I told you about raping TI-BASIC?
Stop the epicness!
Title: Re: Isometric Engine
Post by: Builderboy on September 03, 2009, 10:56:38 pm
Heehe, this engine is turning out better than I expected!  i think this engine could be used for any number of games, ranging from Strategy and Tactics, to Simulation like Civilization.
Title: Re: Isometric Engine
Post by: Raylin on September 03, 2009, 10:59:18 pm
Teach me your secret ninja-like ways, O wise One.
Title: Re: Isometric Engine
Post by: DJ Omnimaga on September 03, 2009, 10:59:30 pm
for strategy, though, usually you don't need much isometric stuff, though. In Starcraft, maps are isometric, but buildings aren't and there are even some maps that won't look isometric at all.
Title: Re: Isometric Engine
Post by: Builderboy on September 03, 2009, 11:10:42 pm
well, I don't think you ever need Isometric, you could just as easily do top down, but it looks nice :)
Title: Re: Isometric Engine
Post by: necro on September 04, 2009, 04:14:24 am
looks great...hope some great games come of this
Title: Re: Isometric Engine
Post by: simplethinker on September 04, 2009, 10:31:56 am
Do you know yet how you'll handle raised terrain/hills? (Like this (http://www.rpg.bajtnet.pl/psx/hoshigami/wid.jpg))
Title: Re: Isometric Engine
Post by: Builderboy on September 04, 2009, 10:41:33 am
O.O I don't think my engine is advanced enough to simulate raised terrain without a serious rewrite, and some serious slowdowns.  I think the only raised terrain that will be supported is the different height of blocks.  But once i release the source (one i clean it up a bit) you can feel free to add the feature yourself :)
Title: Re: Isometric Engine
Post by: DJ Omnimaga on September 04, 2009, 04:37:23 pm
Ouch that would prbly be complicated x.x
Title: Re: Isometric Engine
Post by: noahbaby94 on September 04, 2009, 08:15:10 pm
Wow.
Title: Re: Isometric Engine
Post by: Geekboy1011 on September 05, 2009, 10:35:11 am
cool i hope it can support that type of terrain :) this is amzing so far :)
Title: Re: Isometric Engine
Post by: Builderboy on September 05, 2009, 11:22:52 am
Well, I don't know about raised terrain, but it does have full support for different height-ed tiles!  Raised terrain would force the tilemapper to go sprite by sprite, since all the sprites in a row would not necessarily be on the same level anymore.  This would mean instead of 2 tilemappers per row, it would be 24 sprites to display with the slowdown of BASIC now handling the loops and such.  That would translate from 40 Tilemaps to 480 sprite displays.  It would be unimaginaly slow :(. It is possible, though, that there is a way to do this that I haven't thought of.  I really don't code with libs that often.  But I will be releasing the source, so feel free to add that functionality if you want! :)
Title: Re: Isometric Engine
Post by: ztrumpet on November 25, 2009, 10:10:36 am
*ztrumpet necros...*
So... I found this and am wondering if you will release it.

I had an idea on how to move behind tiles:
This involes three pics to one tile: 1. Main tile 2. Mask 3. Anti-Mask (All pxls changed from black to white and vics versa)

Draw the tiles in the way that you've done it.  Then when you move in behind a tile 1:draw the anti-mask 2:draw your character 3:xor the anti-mask off 4:draw the tile in front of you.  This might let you draw characters behind tiles.
Title: Re: Isometric Engine
Post by: Builderboy on November 25, 2009, 12:26:11 pm
Hmmm, I'm not sure what it is your trying to fix?  The screenshot on page 4 shows that the cursor (easily replaceable with a character) is correctly occluded by tiles in front of it.  It basically 'goes behind' the correct tiles. 

As for a release, Perhaps i will spend this morning getting together all my files and releasing a beta version so all can see! :)
Title: Re: Isometric Engine
Post by: ztrumpet on November 25, 2009, 12:38:10 pm
Oh, I didn't realize it worked so well.  Great job on this!
Title: Re: Isometric Engine
Post by: Builderboy on November 25, 2009, 12:46:52 pm
Thanks! ^^ I hope some good games come out of it once i release the code (any minute now...).  There are so many possibilities!
Title: Re: Isometric Engine
Post by: Eeems on November 25, 2009, 12:55:11 pm
I can hardly wait to test this, even if it's only on an emulator
Title: Re: Isometric Engine
Post by: Builderboy on November 25, 2009, 01:20:17 pm
Alright here it is!

Just tell me if anything goes wrong, it sure has been a while.  And the documentation might be a bit strange ;)

Oh, and PS: 16x16 is ftw
Title: Re: Isometric Engine
Post by: ztrumpet on November 25, 2009, 02:00:44 pm
This is awesome!  The only thing I would add is making sure you don't go off the screen in prgmAB, so it has an Err:Invalid Dim.
Title: Re: Isometric Engine
Post by: Builderboy on November 25, 2009, 02:29:49 pm
Go ahead! Knock yourself out :P
Title: Re: Isometric Engine
Post by: ztrumpet on November 25, 2009, 04:20:41 pm
*ztrumpet knocks himself out with a chair*
Yes, DJ. I meant the reference...  :D
Title: Re: Isometric Engine
Post by: DJ Omnimaga on November 25, 2009, 04:56:26 pm
Lol :P

I doubt I would understand the code myself tho x.x, altough I could always give it a try anyway.
Title: Re: Isometric Engine
Post by: Tribal on November 25, 2009, 07:07:53 pm
This looks AWESOME  :o

I'm downloading it know to test it out  ;D
Title: Re: Isometric Engine
Post by: DJ Omnimaga on December 30, 2010, 12:08:34 pm
someone should really remake this in Axe. O.O
Title: Re: Isometric Engine
Post by: yunhua98 on December 30, 2010, 12:09:43 pm
lol, every great BASIC gmae with or without libs needs to be done in Axe.  :P
Builderboy, can we see the source?
Title: Re: Isometric Engine
Post by: DJ Omnimaga on December 30, 2010, 12:10:40 pm
True, but I kinda forgot about that one and its awesomeness. Someone should maybe give isometric tilemapping a try :D. It would require sprite masking, though.
Title: Re: Isometric Engine
Post by: ztrumpet on December 30, 2010, 12:13:01 pm
Builderboy, can we see the source?
http://ourl.ca/3625/69724
Title: Re: Isometric Engine
Post by: yunhua98 on December 30, 2010, 12:16:32 pm
oh, I didn't seem to notice that, thaks!
now time to force my brain to understand this stuff while finishing some work...  :P
Title: Re: Isometric Engine
Post by: Builderboy on December 31, 2010, 01:48:51 am
Hahah i can help you if you wanted :D And i think isometric in Axe is just begging for a library >:D
Title: Re: Isometric Engine
Post by: SirCmpwn on December 31, 2010, 02:25:58 am
Wow, this is great!  I'd love to see Final Fantasy Tactics for TI ;)
Title: Re: Isometric Engine
Post by: jnesselr on December 31, 2010, 05:11:05 pm
I'm surprised I've never notices this.  It's actually really nice.
Title: Re: Isometric Engine
Post by: DJ Omnimaga on December 31, 2010, 08:53:15 pm
Yeah this was an old thread. I believe someone mentionned it on IRC and I decided to bump it, now that we have Axe. :P
Title: Re: Isometric Engine
Post by: SirCmpwn on December 31, 2010, 09:08:16 pm
Yeah, I want to see an Axe version.
Title: Re: Isometric Engine
Post by: shmibs on December 31, 2010, 11:01:19 pm
i actually started a four-level-gray iso engine at one point. here are some sprites(if anyone recognises the larger versions it might be enough of an inspiration to finish it XD)
Title: Re: Isometric Engine
Post by: Builderboy on January 01, 2011, 06:00:37 pm
Hey that  looks pretty neat! :D What is it from?
Title: Re: Isometric Engine
Post by: DJ Omnimaga on January 02, 2011, 01:07:39 am
That looks nice, were you working on a Civilization clone or something?
Title: Re: Isometric Engine
Post by: shmibs on January 04, 2011, 05:47:34 am
ok, i guess nobody is going to guess it. those are from a handheld game which appears in the series flcl, Fire Starter. when i saw the crappy lcd i knew it just had to be ported.
Title: Re: Isometric Engine
Post by: TIfanx1999 on January 04, 2011, 08:51:50 am
Oh shiz!!! Thatz freakin awesome. I LOVE me some FLCL, but there's no way in hell I'd have remembered that those graphics were from the game that Mamimi was obsessed with. X) Very nice! =)
Title: Re: Isometric Engine
Post by: DJ Omnimaga on January 04, 2011, 04:05:03 pm
I never heard of flcl and although I heard of Fire Starter name, I have no clue what is it. I do not play handheld games very much.