Daedalus - no escape

Hello all,

some months ago, I decided myself to try to program a game I had in mind for quite some time. I’m originally a web developper, and have a pretty good knowledge in java so I naturally choosed this language, ignoring all the “java is slow !!” I was hearing here and there :slight_smile:
And so I naturally discovered this forum, which in turn made me discover LWJGL. Then I had no doubt that I would be able to do what I had in mind with java.

I started this project in october 2011, with zero knowledge in opengl. I had a previous little game experience 10 years ago using C and directX ( the game was a brick breaker … ) but I was a very beginner in programming at this time (during my studies …).

Ok, enough bla bla, let’s talk about the game ! :slight_smile:
The game I had in mind from the begining was a mix of quake3 and Alien breed ( the first ones on amiga :slight_smile: ). I took the top down view and the 2Dness from alien breed and the FPS/multiplayer aspect from quake3. So my idea was that any player that is used to an FPS will have absolutly no difficulties to handle my gameplay. I also had the idea to implement a fog of war so that you can’t see behind a wall and some dynamic lights/shadows :slight_smile:

A beta demo is available from here:


If you have any issue running the game, please tell me ! :slight_smile:

The game has been greenlit !!!


The latest trailer :


In game screenshots:




I’m also developping in parallel a map editor:


The controls :

defaults for FR:

  • forward : Z
  • backward : S
  • strafe left : Q
  • strafe right : D

for others :

  • forward : W
  • backward : S
  • strafe left : A
  • strafe right : D

for all :

  • walk/run : shift
  • fire weapon : left mouse click
  • melee attack : right mouse click
  • next/previous weapon : mouse wheel
  • 1 to 6 : direct weapon select
  • flashlight toggle : F
  • see scores : TAB

You can now change the controls as well as the display settings in the options of the game.

  • press F5 to see the FPS counter / server ping time

Ok I think that’s all for now, I’m waiting for your comments !!


PS : please forgive my english, I’m french :slight_smile:

PPS : the todo list :

  • screens:
    • options screen
      • controls
      • display
    • multiplayer screens
      • join game screen ( select server, enter IP address … )
      • create game screen ( server name, internet game, ports, pure server )
      • lobby ( select maps, frag limit, game type)
  • network :
    • handle lag for internet play
  • map/entities:
    • animated sprites
    • animatable entities
      • with animated sprites
      • moving sprites
    • non grid aligned elements
    • interactive elements
      • doors (require animatable entities)
      • buttons …
      • pickable elements ( weapons, ammo, medikit … )
    • temporary elements ( dead body, blood )
  • weapons:
    • shoot animation
    • melee weapons ( knife, hands … )
    • enhanced weapons
    • manage ammo
  • players:
    • animatable
    • different animations when moving
    • on death animation (replaced by blood explosion)
    • different player skins
  • game types:
    • deathmatch
    • team deathmatch
    • capture the flag
  • map editor:
    • advanced creation mode/brushes
    • modify entities
    • delete entities
  • particle system
    • blood
    • smoke
    • explosions
      … and certainly more :slight_smile:

Looks pretty nice so far.
Especially the lighting. I’m developing a somewhat similiar 2D top-down shooter as well, but still with pure Java2D.
Also, my multiplayer mode is so far usable only for a LAN environment.
You need some evil creatures.
Keep doing.

The daedalus window closes as soon as it opens…

65K : thanks, you have to post your game in the showcase :wink: And you’re right about evil creatures :slight_smile:

Jimmt : can you please look into your home folder in /.shoot/0.1.3/err.log and post the content ? you should find a nice stack trace :slight_smile:

Screenshots look great.

same here, java console shows this

java.lang.RuntimeException: Cannot compile shader /shaders/blurh.frag :
0(49) : error C7516: OpenGL does not allow constant arrays
0(56) : error C7516: OpenGL does not allow constant arrays

        at com.deathpat.shoot.util.ShaderUtils.createShader(ShaderUtils.java:18)

        at com.deathpat.shoot.util.ShaderUtils.createProgram(ShaderUtils.java:34
        at com.deathpat.shoot.model.renderer.Shader.create(Shader.java:20)
        at com.deathpat.shoot.engine.LightingEngine.init(LightingEngine.java:129
        at com.deathpat.shoot.engine.Engine.init(Engine.java:94)
        at com.deathpat.shoot.Shoot.main(Shoot.java:26)
Exception in thread "main" java.lang.NullPointerException
        at com.deathpat.shoot.engine.Engine.dispose(Engine.java:119)
        at com.deathpat.shoot.Shoot.main(Shoot.java:41)

hope that helps.

that helps a lot thanks :slight_smile:
it seems that some graphic cards don’t support const arrays in shaders … so I removed the const …
I just reuploaded the jar so if you have some time to try again it would be great !


It still doesn’t work.

Ah nice, works now.

Very nice start, its runs really smooth here and looks beautiful. Looking forward to seeing where this goes.

@Jimmt - please do try to provide a reason or tip why it doesn’t work (like the output of the console or logs), not very helpful to the developer otherwise.

@kappa : glad it worked for you, thanks for your comment :wink:

@Jimmt : as kappa said, if you could provide the error log it would help a lot !

That looks amazing for only 4 to 5 months of study. It makes me think I should have started PlanetBall using openGL via LWJGL. Great job for such a quick learning curve.

:o this is beautiful! Runs really smoothly here. I’m amazed you did all this in 4-5 months.

The amount of information in the debug modes is really really cool, I played around with a lot of stuff.

I wish you all the best and good luck with this! :slight_smile:

Window opens up and then it crashes before I can see anything, I opened the .shoot/1.3/ folder but there was only the config file, no error logs.

Wish it would work though because it looks amazing, especially for 4/5 months!


thanks all for your comments !

I just figured out that I was disabling the error log when in debug mode ( assuming it is run in a console … :slight_smile: ) … so it’s normal to not have any err.log file :slight_smile:
I reuploaded the jar, now the error log is written in every cases in case of crash. Otherwise it is possible to run the jar in a console to see the exception :wink:

@Swattkidd7 : if you can try again in a console or download again the jar to have the err.log file, it would be nice, thanks :wink:

Ahh ok I got the error log this time, here it is.

java.lang.IllegalStateException: Function is not supported
	at org.lwjgl.BufferChecks.checkFunctionAddress(BufferChecks.java:58)
	at org.lwjgl.opengl.GL30.glGenFramebuffers(GL30.java:1155)
	at com.deathpat.shoot.engine.LightingEngine.init(LightingEngine.java:159)
	at com.deathpat.shoot.engine.Engine.init(Engine.java:94)
	at com.deathpat.shoot.Shoot.main(Shoot.java:26)

This is bad news, it means that your video card does not support opengl 3.0 and it’s a prerequisite for the game to run. I’m using the frame buffer object from opengl 3.0 . I could have use the extension that is present in older versions of opengl to do this but anyway if the card doesn’t support opengl 3.0, I think it will not be fast enough to run the game :frowning:

Damn, I had a laptop which played Call of duty world at war on high settings perfectly fine, but it broke and the warranty sent me a new one (this one) and now it cant play this 2D Java game :cranky: :clue:

If it is the same laptop as before ( same video card ) maybe it is just a problem with the drivers ? Can you still run call of duty with your current setup ?

Its a good idea to show an error dialog and explain to the user why it doesn’t work.
You could use something like the code below to check for OpenGL 3.0 support.

if (!GLContext.getCapabilities().OpenGL30) {
    // show error dialog and quit as OpenGL 3.0 not supported

For sure, my error handling is almost non existent :slight_smile: Thanks for the tip to test the capabilities, I will add this soon :wink:

For info I’ve been able to test successfuly on linux ( just had to change the resolution in the config.xml, otherwise it was running at desktop resolution in windowed mode )
So I’ve edited the first post to include links to linux and mac jars :slight_smile: