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

Submitted by Olivier ZEGDOUN, posted on January 14, 2002

Image Description, by Olivier ZEGDOUN

These screenshots are taken from the game "De profundis" I just started 6 months ago. It is supposed to end as an action adventure simulator where the player takes the role of a submarine pilot in an underwater universe. It's a kind of "Elite" under the sea : do commerce and make profit, or be a pirate and steal (but in this case, watch the patrols). Upgrade your hull, equipment, weapons, and engage in non-linear random adventure.

A demo is available at

Some technical highlight:
  • OpenGL for the graphics, DirectSound (did you hear a whale ?) and DirectInput (with universal device mapping configurator available)
  • Brute force terrain algorithm with frustum culling (quicker and nicer than ROAM or CLOD on my GeForce3 so I stopped trying) "Infinite" terrain : the relief is repeating every 4096x4096 tiles, but not the object contents.
  • true 6 DOF flight model (I use quaternions to avoid the "Gimbal Lock" problem relative to Euler angles) : looping available ! (you better have a Joystick here) and nice HUD
  • Fast sphere-tri collision detection with tri-tri detection when necessary
  • Particule system (explosion, torpedoes trail)
  • This should be considered as a pre-alpha version since there is nothing exciting to do yet except feeling the ambiance, shooting some torpedoes, and going back to the base for reloading...


    Image of the Day Gallery


    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.

    January 14, 2002, 05:36 PM

    Damn. I'm very impressed. The controls were a bit odd for me, but I got used to them soon enough. I really like the Torpedo Explosion effect, as well as the underwater caustics. How exactly did you accomplish that?

    Igor Kravtchenko

    January 14, 2002, 06:09 PM

    Doing this alone in 6 months is very productive.


    January 14, 2002, 06:45 PM


    Oh and yes - this IOTD is groovy - I wish I had the focus ;0)


    January 14, 2002, 07:37 PM

    This game looks amazing - the graphics are great (for 6 months of work too!) and it sounds fun... now I wish I hadn't nuked Windows yesterday :)

    Jeff Olson

    January 14, 2002, 07:37 PM

    hehe i got about 56fps on a 1gig athlon tbird, 394megs ram geforce3 ti200 and winxp :)

    Jeff Olson

    January 14, 2002, 07:38 PM

    btw thats in 1280x1024x32


    January 14, 2002, 08:58 PM

    bah, we had nearly the same idea o_O.
    Havent played your demo yet so I dunno how it compares with
    what I got going. But hopefull great mines think alike :


    January 14, 2002, 09:04 PM

    Minds. And I wouldnt say exactly alike. :)


    January 14, 2002, 09:08 PM

    That radar's rock!!!!!!!

    Steven Wittens

    January 14, 2002, 10:37 PM

    Compared to its successor, Aquanox, Archimedian Dynasty has the coolest plot ever. But then again, Aquanox sucks totally, except for the pretty graphics that keep you interested the first 5 minutes. After that it gets boring :P

    They cut out the weapons trading and removed the freedom of movement you had. Pretty lame. I loved the way you could sorta do what you wanted, which is the same thing that made Privateer so cool (Privateer had way more freedom than Archimedian Dynasty too).

    Speaking of Privateer, it was the first thing that sprung into my mind after seeing this ship model... it's very privateer-styled.


    January 14, 2002, 10:57 PM

    The controls are a bit of a bitch, but the atmosphere totally rocks, it's kinda creepy!

    Olivier Zegdoun

    January 14, 2002, 11:27 PM

    You can map any keyboard / mouse / wheel / joystick / gamepad / whatever DirectInput compatible device on any game action.
    Just click on the "Configuration..." button of the starting dialog box.

    Olivier Zegdoun

    January 14, 2002, 11:30 PM

    Check out
    It's great stuff, even if you may have to rework some world coordinate.

    Olivier Zegdoun

    January 14, 2002, 11:35 PM

    For the controls :
    You can map any keyboard / mouse / wheel / joystick / gamepad / whatever DirectInput compatible device on any game action.
    Just click on the "Configuration..." button of the starting dialog box.

    The caustic effect is a multitexture trick with an 32 frames pre-animated caustic texture effect.

    The explosion effect was difficult to obtain : I wanted to simulate how an explosion would look like underwater ;-) so I looked U-571 frame by frame, das Boot, Abyss ;-)) and try particles + sphere + textures... Glad you like it.

    Olivier Zegdoun

    January 14, 2002, 11:38 PM

    ...and if I tell you I only worked on it several week-end ;-)

    I wish I could do that fulltime.


    Olivier Zegdoun

    January 14, 2002, 11:40 PM

    May be we could work together then ?
    Do you have a demo too ?

    Olivier Zegdoun

    January 14, 2002, 11:48 PM

    Thank you all for these very positive feedback ! It really encourages me to go further (and beyond) !

    A few answers here to some FAQ :

    - you can map your keyboard/mouse/joystick/gamepad/whatever directinput compatible input device using the "Configure..." button from the starting dialog box. See the list of available action there too.
    - you can't surface (yet... but wait a few weeks ;-))

    I really would like that project to become fulltime, but in the meanwhile, I'll try to build a strong playable prototype so that we can have fun with it.
    All you "Privateers"/"Archimedean Dynasty"/"Elite" fan like me should be pleased soon ;-)

    And again, people who would like to contribute are welcome.


    January 15, 2002, 01:15 AM

    i need a new compouter :)


    January 15, 2002, 03:04 AM

    would you mind elaborating a little more on the modulo technique you use for the inifinite repeat?
    Thanks :)


    The Legend

    January 15, 2002, 05:06 AM

    We have a special name for Aquanox here: Q3FA - "Quake 3 Flooded Arena"


    January 15, 2002, 06:59 AM


    really nice,

    nice attention to details, and I love the radar already


    Carpe Diem

    January 15, 2002, 07:21 AM

    Well my congrats on your work!
    That's an amazing thing to do this in 6 months all by yourself...

    Go on and good luck with the milia thing!

    Neil Edelman

    January 15, 2002, 10:14 AM

    This sounds like not just another pretty IOTD, but an actually fun game in the making.


    January 15, 2002, 11:04 AM

    I happen to like the black texture on the ship, kind of like a shadow vessel from Bab 5.

    Olivier Zegdoun

    January 15, 2002, 11:12 AM


    I assume here that you have loaded the terrain (i'm using here a 513x513 raw greyscale bitmap here : the 0-255 valur give the height of the terrain). the terrain is generated using the mid displacement technique with terragen so that the terrain ca be tiled continuously.

    Everything is put in an float HeightMap[513][513] array.

    For convenience, you copy the first raw 0 into the last, and the first column into the last. This ensure continuity for normal computation.

    Now, each time you need a height data y = height(x,z) at a position (x,z), you have to be carefull that x and z are in the 0-512 range.

    Since height(x+n512, z+m512) = height(x,z) with any integer n and m,
    you just need to use a modulo 512 on the coordiante to put them back in the 0-512 range and obtain the needed height value.
    So, before accessing the array HeightMap, I just do a little :

    lx = x;
    lz = z;
    while (lx > 512)
    lx -= 512;
    while (lx < 0)
    lx += 512;
    while (lz > 512)
    lz -= 512;
    while (lz < 0)
    lz += 512;

    now you can safely access the HeightMap array :

    y = Heightmap[lx][lz];

    the terrain vertex to be drawn is then at coordinate (x, y, z)

    That's mostly it !
    Hope that helps.

    to draw the vertex


    January 15, 2002, 12:37 PM

    Thanks very much for taking the time to write this!!!
    I will look at it closely when Im home from work!
    One thing, why dont you use an array

    #define TerrainSize 513
    float Heightmap[TerrainSize * TerrainSize ];

    will save you a lot of memory, and you can access the data using the following.

    Heightmap[X + Y*TerrainSize ];

    instead of


    This is not a gripe, just a suggestion! Maybe you already do this :)


    Olivier Zegdoun

    January 15, 2002, 01:13 PM

    Well, I did have a define for the size,
    but concerning your other suggestion, I thought that

    float HeightMap[MAPSIZE][MAPSIZE];

    was equivalent in memory size to

    float Heightmap[MAPSIZE*MAPSIZE];

    Do I miss something here ?



    January 15, 2002, 03:23 PM

    great mind think for themselve :-)


    January 15, 2002, 05:24 PM

    Come to think of it, your right :)
    Dont know what I was thinking all that time :))

    and the #define was not a suggestion, I just used it for my example

    Olivier Zegdoun

    January 15, 2002, 06:36 PM

    Well, You know you plant a seed of a doubt in my mind here ;-))
    I even ran some little tests wondering if the memory allocation could have been non-linear in a 2D array case !! Well, everything is perfectly aligned hopefully.


    This thread contains 66 messages.
    First Previous ( To view more messages, select a page: 0 1 2 ... out of 2) Next Last
    Hosting by Solid Eight Studios, maker of PhotoTangler Collage Maker.