Isometric Stuff

This forum is currently in read-only mode.
  • Hey guys, if you've read my stuff before, you've probably noticed I'm either spouting something about isometric sorting or the animation editor not being robust enough lol.

    Well, I've basically only been working on one thing for about 2-3 years on and off (off being some pretty large amounts of time), and that is, my isometric sorting engine for my somewhat grandiose plan for a game.

    There is one thing I have learnt, isometric sorting is REALLY HARD TO DO!

    Here's a little demo of what I've got at the moment:

    <img src="http://dl.dropbox.com/u/1289341/isodemo.png">

    http://dl.dropbox.com/u/1289341/ISOsemiWorking.exe

    Yes there are variable heights, yes there are larger sprites sorting correctly for the most part

    It's not a game at all yet, it's kinda funny that I've spent all this time just on sorting....

    Anyway, it may look like it works perfectly, but trust me, it doesn't, it's still broken

    I'm still kinda happy with this, tell me what you think

    Also I would love to know how this runs on slower computers, mine is currently quite fast, and I know there's a pretty fat loop constantly running at the moment, so performance will vary. The engine isn't close to done yet, I'm going to work on a way of sorting more efficiently, this demo is just doing it's best to get the correct order, efficiency be damned

    I'm posting this because basically I'm getting disillusioned haha. I'm doing my best to make this sort everything perfectly, no matter what the configuration of objects are. It's close, but it's not there and I'm finding it incredibly daunting! I could leave it where it is, and just use level design to get around some of the sorting errors, but I'd much prefer not having that problem.

    Anyway, enjoy! Feel free to ask questions or to give some feedback.

  • Now, after 3yrs of making the engine, you have to make a game using it! It looks pretty finished to me, I've noticed only little sprites overlaping when moving under that gate in the example while in snapped mode. Compliments to you for all that time you must've spent on it.

  • I think it looks fantastic. What are the "broken" parts of it? Also, is this a plugin, or are you just doing it with events?

    Either way, I think you should ask for help in the forums, there are some users who may be able to weigh in and give you some ideas. With how long you've worked on it, and how close you are, it's definitely not the time to give up. Also, if you've ever done even a little programming, and this is purely events, I would really recommend trying out the SDK tutorial. I've found that in most cases, the more complex the solution gets, the more it lends itself to an actual programming language more than Construct. Also, when you have your solution, it's portable, and easy to use. You'll have actions and conditions in related to the isometricness, and when you go to make a new game you just add the behavior or object, and it's there again

  • Try Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Try Now Construct 3 users don't see these ads
  • Thanks guys!

    Yeah there's still many problems, it's all to do with the order in which it performs the er... ordering. Had I put the player at the top of the map, rather than at the bottom as in this demo, it completely falls on it's head

    This is because it assembles a 2D array using the amount of objects in the family as the width and height, it then uses the array to check each object's position relative to every other one. This also means that each object has to have it's bounding box defined, eg: xFront and xBack.

    The problem is, I check through the array left to right, top to bottom, so some objects don't have the correct relationships set up because they should be in front of/behind other objects that haven't been checked yet. I've come close to kind of 'retroactively' setting up an object's order before it gets checked, based on the relationship of other checked objects (confusing huh?) but it's usually just a couple of numbers off...

    Yeah Lucid, it's all events, I've done a little programming and am currently doing a Bachelor of IT, soon to be majoring in software development, I've never looked at making a plugin though...

    I'll go into further detail as to how I've done it if anyone's interested. I haven't put the .cap up because honestly, the code is pretty sloppy and hard to understand if you're not me.

  • have you tried double checking? so it orders everything using whatever logic you're using, and then does it again, so that the objects that were checked against unchecked objects would go again with updated info. Maybe even loop it several times, if necessary

  • Hey, the engine is looking pretty good .

    Since that PM you sent me a while ago indicated that you were interested in Unity, I whipped up a little isometric demo. You can play it here (requires Unity web player plugin):

    http://dl.dropbox.com/u/529356/IsoTest.html

    Move with arrows, jump with X.

    It might take a second to load. Anyway, the movement is a little weird, but that's because I don't really know how to code that well so I just threw a pre-made move-and-jump script that I found onto the player cube.

  • Deadeye.... I absolutely LOVE how you made it my test level!! Hahahah!

    That looks really good! You're really making me want to try that out now.

    Ironic that you whipped that up in a day and it's taken me three years!

    Actually Lucid, I did try a 'twice through' loop, I think it actually worked too, but because it's a pretty fat loop, it affected the performance dramatically so I took it down. However.... if I implemented a system that uses the fat loop to get the initial order and assemble a master list, then all I would need to do is make a similar loop that just swaps objects around that need swapping, rather than resorting everything every tick.

    I might give that one a try

    Oh Deadeye, what kind of code does Unity use? I've started learning C# and (technically) VB and I've dabbled a little in Java and Actionscript years ago...

  • Thanks . It took me a few hours to do that, but it would have taken me like 20 minutes if I knew what I was doing.

    As for code, Unity uses C# or javascript. Or Boo, if you want to use Boo I guess.

  • Very cool Arcticus. I've always wanted to make an isometic game, but the sorting and other niggly technical issues always kinda bummed me out a bit and I didn't really feel like spending a lot of time coming up with a good engine like you have. You definitely should start work on a game, because the engine seems rock solid. Your demo sparked vivid visions of an isometric towerclimb in my head. The level generation would actually be the exact same code, but with a third axis, so it's quite easy to do. Pair that up with a layered cutaway style camera and It could actually make a rad iso-platformer.

  • Yay Unity uses C#, I think it's decided that I will grab Unity and Blender and try those out.

    I still want to fix my current 2D iso code up, I'll try to get around to using that double check method paired with a bubble sort. Maybe even down the line I could turn it into a plugin that everyone could use.

    Davio... isometric towerclimb would completely rock my world!

    Thanks for encouragement everyone! I was starting to get a bit bummed out

  • Quick update, I tried out the 'double check' method again, and it's working really well no matter where I put the player, with the exception of the little stack of three boxes and the archway, they're still really stuffing up, once I get some more time I'll sit down and try to figure out why....

    (By glancing at my code, it really should just work )

  • I know it's impractical for actual realtime purposes, but did you happen to try triple checking?

    even if it can't work in practice, it'll at least let you learn something about why it's not working

    theoretically, the same way some things could be placed incorrectly in the first round due to the fact that they had outdated info on objects

    something that depended on the location of one of those objects would have outdated info after the second round, when it was updated. this could obviously build up to a big problem, but at least you would know if the sorting logic is flawless, and then you'd just have to work out the order of the checking logic.

    also, you saw rojo's iso thing from a long time ago right? not sure if that would be of any help

  • Yeah I tried triple checking, the exact same thing happened so I'm pretty sure it's just an issue in my code somewhere. In a previous iteration of the code, where I first used the double check, from memory, it worked without a hitch, but the code was a little bulkier then and slowed it down a lot...

    I have not seen Rojo's iso stuff, I'm not entirely sure it will help me, but that's me remembering all the research I did on the net and not finding anything useful except an algorithm that converts screen XY into isoXY lol, but here's hoping he's a smart chap, I'll look around for it.

  • ...I can't help but think this Filmation method is a lot better than the method I spent so long making. I've looked around for code like that but never found it, now that I've found it, I don't quite understand most of the math jargon they're using.

    And they have a really solid collision method working too!

    I certainly feel like I've wasted a lot of time on this sloppy method of sorting...

    If someone here know's how to translate that maths for me, I could apply it to my sorting and see if it's any better

    What a bittersweet finding..

  • Like others have said, you should definitely make something with this. I've always really dug isometric games. They are far too rare and provide lots of possibilities for various game genres.

Jump to:
Active Users
There are 1 visitors browsing this topic (0 users and 1 guests)