Not logged in, Join Here! or Log In Below:  
 
News Articles Search    
 


Submitted by Jad Meouchy, posted on June 26, 2001




Image Description, by Jad Meouchy



"Jadlings," as I egotistically call it, is insipred by the cross-platform game concept of Lemmings(TM), by Psygnosis, DMA, et al. The gameplay is similar; the player guides the creatures from entrances to exits by utilizing attributions such as climber, floater, and exploder. By minimizing fatality rates, the player achieves high scores and recognition by his or her peers. Eventually, the player becomes the god (through his own eyes) that Jadlings allows him to be. On a psychological level, this scheme appeals mainly to Populous enthusiasts; those who revel in the brief two seconds when Neo flexes his muscles and bends the walls and world around him.

Anyway, allow me to explain the photons above: The screener in the middle is what the main menu looks like. "Configure" just takes you to the level editor, where you can use the arrow keys to change tiles and the mouse buttons to place them. Invert your eyes to the upper-right and view an in-game screenshot. If things just aren't going your way, click on that mushroom cloud and watch as all the Jadlings get a five second counter hanging over their heads. Five seconds later and their innards bounce across the map.

Features:
  • Windows AND Linux
  • Slow Motion
  • Fast Forward
  • Pause
  • Level editor
  • 24bit color
  • Gravity
  • Scaled solidity minimap
  • Quake-style console with commands, command listing, environment variables, EV listing
  • Particle System with gravity, bouncing, fading
  • Visually pleasing interface (soft colors)
  • Nostalgic gameplay
  • As for the actual programming, I chose an interesting path. Just about everything that is calculated is based on dt, the change in time in milliseconds since the last time the world was updated. There is a big advantage to this - the game time matches real time so it runs at the same speed on every computer, regardless of processor. There is a big disadvantage to this - if dt gets too high, collision detection accuracy is pretty much out the window. So there is a rudimentary check in there already to split up dt to the point of reasonability, but of course bugs still exist. When using fast forward, Jadlings are often stuck inside rocks, etc.

    The game is about 80% complete and will stay that way unless someone is interested in helping me finish it. This was more portfolio work to keep me busy while I seek employment. Speaking of which, my resume is available upon request ;)

    A playable demo will be up at my website as soon as I upload it:
    www.Jadware.com, Software section. Anyone interested in seeing the source code needs just pledge a few hundred lines of code towards the ultimate completion of the game. Thank you for the time.

    Thanks,
    Jad Meouchy
    Jadware.com


    [prev]
    Image of the Day Gallery
    www.flipcode.com

    [next]

     
    Message Center / Reader Comments: ( To Participate in the Discussion, Join the Community )
     
    Archive Notice: This thread is old and no longer active. It is here for reference purposes. This thread was created on an older version of the flipcode forums, before the site closed in 2005. Please keep that in mind as you view this thread, as many of the topics and opinions may be outdated.
     
    Pants

    June 26, 2001, 11:56 AM

    Lemmings, WooHoo!

    I'll have a look at the demo and get back to ya...

    Pete

     
    morgan

    June 26, 2001, 11:57 AM

    Very nice! Morgan Systems is always looking for new titles, e-mail me if you are serious about wanting someone to help finish the code. We can help you finish the game then distribute it.

    -m

     
    EGreg

    June 26, 2001, 12:04 PM

    JADLINGS OH BABY!

    Just beware of Psygnosis suing you

    -Greg

     
    NEGA

    June 26, 2001, 01:10 PM

    Hey I love that 2D classics are coming back in style :p
    -Oh and a nice ghostly GUI, i like

     
    MK42

    June 26, 2001, 03:11 PM

    I love the simplicity of Lemm...erh..Jadlings. Especially the "Oh no!!" before they blow to bits and pieces .

    - MK42

     
    MC BAXTON

    June 26, 2001, 03:12 PM

    Seems like particle explosion particle system is created at last ..
    congrats !

     
    Pseudo_Me

    June 26, 2001, 03:14 PM

    about that problem with the lemmings getting stuck if dt is too high...assuming that your game logic doesn't take too long, you could just process the collision more than once per fame. so if your dt is above 10, you could process the collision detection dt/5 times with a new dt of dt/(dt/5). Does that make sence? if not, just disregard it.

     
    elikez

    June 26, 2001, 03:50 PM

    I like the game and the look, but what about originality? Why do they look like lemmings? Use some other sprites.

     
    Jad Meouchy

    June 26, 2001, 04:32 PM

    Pants/Pete - The playable demo is up now at my web site. There really is just one thing you have to type to actually play it right now: ~load "Level 1". Just type it in the main menu or anywhere. The ~ is there to bring down the console. "load" is a console command; "Level 1" is its parameter.

    MK42 - Games don't need to have a thirty hour learning curve to be fun! Black and White is neat, but far too complicated.

    MC Baxton - The particle system in there right now is very nice. There is just one tiny little adjustment that needs to be made to make it ultimate. I am also a big particle system enthusiast. Check out the "Credits" section of the semi-playable demo.

    PsuedoMe - I actually thought of something like that in the shower this morning, and just haven't had time to update the code. Obvious, yet brilliant idea!

    As for the sprites, they are just temporarily somewhat Lemmings-ish. Legally, they are different since I did draw them myself. In the release version, I assure you they will look different - red hair or something like that...

     
    Jad Meouchy

    June 26, 2001, 04:33 PM

    Oh, I am quite serious about someone helping me finish the game. If anyone is interested, just drop me an e-mail: Jad@Jadware.com

     
    Kalani Thielen

    June 26, 2001, 04:43 PM

    Why not treat all potential intersecting objects (any objects moving fast enough to be considered within the player's quadrant) as extending through time? That way it's just a simple line intersection test and it'll work for ANY dt values.

     
    MK42

    June 26, 2001, 05:11 PM

    erhh ... what did I do wrong? I like it ... I loved Lemmings! Especially the Armageddon-Button, when you couldn't solve the level. The Lemmings would raise their tiny arms, shake their head an scream "Oh no!!".

    - MK42

     
    kewldude

    June 26, 2001, 07:03 PM

    JJJ.Jadware.com
    jadlings j@d jadware
    by Jad "the jad" Meouchy

    I hate your name already and i havent even unpacked the game yet!

     
    Tom Spilman

    June 26, 2001, 08:09 PM

    Damn Jad.... could you make your website more difficult to navigate? =) Tom

     
    Jackal

    June 26, 2001, 09:24 PM

    >if dt gets too high, collision detection accuracy is pretty much out the window

    Try clamping the dt to a maximum value. I had the same problem when my game loaded, the dt was to high and the collision detection wouldn't work properly.

     
    Ben Dilts

    June 26, 2001, 11:00 PM

    Ummmmm
    Excuse me, but how do I get to play the actual GAME in that demo? I downloaded it, and when I hit Learn nothing happens and when I hit Play, it says No Level Loaded, and all the .lvl files have underscores and your console input does not support underscores, and how the heck do I get to play this game?

    Am I missing a readme?



    ~BenDilts( void );

     
    Kalani Thielen

    June 26, 2001, 11:15 PM

    I've already posted this as a response but I haven't received a response to my response yet. :)

    To detect intersecting objects, I extend the bounding boxes (or bounding spheres, or bounding squares for a 2D game) for all objects that have the potential to intersect (that is, all objects within the regions of other objects that need to check for intersection -- there's no reason to waste cycles on a check that you can just skip entirely.) If the bounding "hypercubes/spheres/rects" intersect, then it's just a matter of putting the mesh at the point of intersection and seeing if the meshes themselves intersect (so that you don't trigger intersections for events that are really just close shaves.)

    Am I making sense here or am I just an ass? I've been doing this for quite a while.

     
    Arne Rosenfeldt

    June 27, 2001, 01:54 AM

    Some messages above he said,
    how to use the concole for that!

     
    Arne Rosenfeldt

    June 27, 2001, 02:33 AM

    IMHO
    when my old 16MHZ 386 was able to do pixel precise collision detection,
    then a modern computer should be able to run a constant timestep,
    const pixelsize bitmap-collision detection in the background (KISS),
    and interpolate, scale and alphablend for the visuals.

    Arne

     
    Kalani Thielen

    June 27, 2001, 02:53 AM

    The problem with having a constant dt value between frames is that your program will really only run optimally under one particular hardware configuration (the one that you used to make the game to begin with.)

    It's not a question of whether or not the machine CAN iterate object positions based on a constant dt value, it's whether or not it SHOULD. Really, I didn't think that anyone even considered this to be an issue. Games are generally time-dependent devices.

    As for precise pixel-level intersection code for your 386 ... that was performed in much the same way I described in my above post. All on-screen objects (different from scene objects) were run through initial tests that just checked their bounding rects. If there was an intersection of rects, it was a very simple matter to isolate the result of the intersection (see set theory) and see if any non-empty pixel values overlapped the corresponding entries in the other sprite. It's a bit more complicated to extend that concept to 3D but the idea still holds (and intersection tests of gradually increasing precision MUST be implemented by any game made these days -- there's no excuse for NOT doing it.)

    So having established that allowing fluctuations in dt values is important, along with a general intersection-test approach of simplest checks gradually cascading down to most precise, I think that my previous post outlines the best way (that I have figured out) of going about this. In essence, you're "projecting" the segment of the 4D object that is the lemming, or ship, or whatever, into 3D space and using the result in your standard run-of-the-mill mesh intersection test (testing the extending bounding box, then the extended meshes within the intersection of those bounding boxes [if any intersections exist.])

    K?

     
    henry ludemann

    June 27, 2001, 03:46 AM

    What I think Arne Rosenfeldt was getting at is that you only run the frames (not the animation frames, just the collision detection/movement). Have a look here.

     
    Joachim Hofer

    June 27, 2001, 04:01 AM

    I didnīt have a close look at the totd, but a very cool way is to use two Threads.
    One for the displaying and one for rendering. This way you will get relative constant game updates and possibly run on two processors on a dual board system (one processor running the game logic, one the displaying).
    Even though it is not always simple to do a good synchronization of the two threads, I think it is worth having a look at this idea.

     
    Raspberry

    June 27, 2001, 04:32 AM

    About the dt problem: why not (and i know this is going to sound so stupid and way too simple) just chop up the logic clock more? if the dt goes over a certain value (whatever you determine to be a logically safe dt), you do one tick with the safe dt, and then take the safe value off the currently required dt, else do the smaller dt tick, and set dt to zero. Once this is done, if dt > zero, then do it again.


    while( dt > 0.0f )
    {
    if( dt > SAFE_DT )
    {
    DoTick( SAFE_DT );
    dt -= SAFE_DT;
    }
    else
    {
    DoTick( dt );
    dt = 0.0f;
    }
    }



     
    iMalc

    June 27, 2001, 07:39 AM

    Hmm, I recognise that purple spiral from the Mac game "Space Madness"!

    Must be fun to make a Lemmings style game. Simple concept and quite playable.

    What would be really neat is if you made it such that the Lemm ... er Jadlings collided with each other instead of just passing behind. That would make for a little different gameplay.

    Also I suggest you get someone else to do the level design. Good luck with the collision and timestep etc..

     
    Arne Rosenfeldt

    June 27, 2001, 08:45 AM

    Yes I was aiming at this thread

    I would not use bounding boxes,
    just draw every sprite and look if the pixel is already
    covered by an id of another sprite.

    One test for every pixel.
    With such small lemmings no problem.
    Worst case is not so worse.
    lemming almost always collide with the floor,
    so bounding box rejection will not help here much.
    (framebuffer clear would need dirty rectangles though for optimal...

     
    Arne Rosenfeldt

    June 27, 2001, 09:43 AM

    And the nice thing about combining a pixel world
    with const timestep,
    is that
    a lot of velocities can be choosen to be an integer,
    wich makes things simple

     
    shrike

    June 27, 2001, 10:03 AM

    That is a nice thought, but there are certainly non linear movements that have to be taken into account. Gravity will make what you said not work.

     
    Stefan Karlsson

    July 02, 2001, 12:52 PM

    iam tired so i wont check if it was 'that' they spoken about in this url but i will just post an url wich was kinda funny about some physics:

    http://www.ioi.dk/Homepages/tj/publications/gdc2001.htm

    well.. if you dont care about dont read it i guess ;)

     
    This thread contains 28 messages.
     
     
    Hosting by Solid Eight Studios, maker of PhotoTangler Collage Maker.