Diabolus Ex Machina

http://voodoosoft.de/dem/game-scaled-50.png]

A little game inspired by an old time C64 classic.
The oldest source code dates back to 2004, but only during the last months it’s been heavily under development.
There are also distant roots planted in ancient ages on the Amiga, when I was unsuccessfully struggling with Assembler and graphic chip programming.

Some features:

  • Client/Server and MVC architecture
  • OpenGL with LibGdx/LWJGL
  • basic hierarchical goal based AI
  • state machine for character movement, collision detection, etc.
  • a bit of multithreading
  • Pitbuller’s lighting
  • Appel’s A* implementation
  • NIO for network

During development, generic game independent parts were extracted to foundate a framework. But the clear focus was not to build another infamous game engine, but a game.
The relation is now roughly 40% game and 60% framework, roughly 58.000 LoC. Does it look like that ? Well…

System requirements:

  • Java 7
  • 2+ core CPU
  • 512 MB RAM
  • Graphics card capable of OpenGL 2.0

Open issues:

  • Multiplayer (oh dear ;D)
  • Game balancing
  • Fullscreen mode
  • Playing custom maps created with Tiled

Tested on Windows 7, XP and Linux.
Windows XP is not recommended because of unreliable timers.
On Mac, there is currently a LWJGL-issue, should run with the (unpolished) Java2D fallback, though.
Linux freaks must bring their own JRE 7 so far, because packaging with Ant does not preserve file permission flags.

Feedback much appreciated :slight_smile:

It looks very impressive. I couldn’t figure out how to start a game though.

Wow! This looks awesome! I’m surprised however, you used Swing for GUI and LWJGL for the game?! :o

It’s best to let go your ties with old slow Java2D/Swing and use a GUI built for LWJGL like TWL. :slight_smile:

The controls aren’t really the best. Arrow keys to move and mouse to shoot? How about WASD to move so it can be more comfortable :wink:

Overall, I’m impressed with the graphics and the amount of work that went into this! :slight_smile:

You create a new game, then hit save I think.

Ok cool. I was just hitting new.

Ok the game started. I quickly posted that last response, while doing so I died, and now I can’t get it to start again. I admit I don’t do a lot of gaming other then retro stuff or flash games, but this seems pretty complicated to make it start. I’m not creating a new game, and hitting save and it’s not starting this time.

I think it might be a bug, because when I close the application and open it again, it will start.

Hey, thanks for checking it out !

To start a game, you hit new, save and run. If nothing happens then, its a bug…
This procedure originates from the multiplayer mode.

The lobby is all Swing, the game is OpenGL with self-made UI buttons, except the level change screen which uses LibGdx buttons.
When I started, I used only Java2D and Swing and now I really don’t have the time to re-implement it (multiplayer mode is driving me mad). Swing aint that bad basically, only sometimes like today when simple things like scrolling a text pane to the beginning just doesn’t work…
Switching between the Swing Lobby and the OpenGL based game works like a charm.

Different keymaps are indeed already implemented and shipped (see user-inputmap.properties) but the options editor is not finished to actually enable them. (Anybody knows a nice property editor component for Swing for various data types, default values and validation ?)

Can’t wait a server to up and host we all.

It looks and sounds really great. Totally professional. I’m assuming you are a professional programmer.

But I can’t last more then 30 seconds without dying. And the fact that it’s such a pain to start a new game, makes me not want to. I’ll probably stick with it, but that’s because you’re on this forum. If this was a game on the web I would have moved on by now.

Starting a new game is annoying. After all, i want to play a game not to setup a server. There should be a kind of short cut button to start a single player game IMHO. Game play wise, i don’t get how to take over other bionics. I can stun them with the blue bullet…and then…what? I’ve no idea… ???

Just call textPane.setCaretPosition(0).

I tried it, the graphics and sounds are really good. But like the others, it took me ages to figure out how to start a server. Then for the gameplay, I played about 10 times, and never last more than 20 seconds :slight_smile: In fact like EgonOlsen, I don’t understand what I have to do :frowning:
The physics applied to the drone ( what is it exactly ? ) is also a bit strange like when you go to the left, gain full speed and then go to the right, there’s no more inertia so it’s a bit confusing and difficult to handle.

I think there’s not much to do to improve it, maybe you should add more details about how to play in the text displayed in intro. And also review/simplify the UI to login / create a server. Otherwise I say it again I love the graphics ! :slight_smile:

Keep up the good work ! :wink:

Starting a game
Alright, I think for the offline mode that can be simplified to one button.

Game balance
Yep, it’s too hard. Question is, what to change. There are many parameters, like actor and bullet power, basic aggression, impact of battles on aggression, values of the different actor classes (-> colors), costs of capturing better Bionics.
Then, it shouldn’t be to easy to just grab a better Bionic and walk through the game.
Do levels have the right size ? What should the power bonus be for successful camouflage ? What about relations between Bionic and bullet power ?
All this really gives me a headache.

Game play
There are basically three ways to go:

  1. Shoot and kill (left mouse)

  2. Camouflage as better Bionic (gives power & score bonus if you succeed). This has an impact on hostile Bionics. Use the colored button bar. If hit, you are disguised and lose power (the stake). Originally was an idea for the multiplayer mode. Came to my mind when playing a Poker game.

  3. Take over other Bionics to improve bullet power, maximum power and constantly scare off enemies. Shoot a blue energy ball (right mouse), quickly approach the paralyzed Bionic (you hear its heart beat then) and press the assimilation button. Only possible if you have enough power and are quick (currently only 3 seconds).

Messing with stronger Bionics and with groups is currently a sure way to die. Maybe on each level there should only be one class/color so you can slowly improve.

The button legend is under the help tab. Maybe it should be selected on the first game start. Not knowing what to do is clearly the worst.

Scrolling text pane
Now it works, after I found the correct place to do it with a fresh mind…

Physics
There is a primitive velocity/acceleration handler doing its work. Maybe its easy to handle direct heading changes with it as well.

Thanks :slight_smile:

The main thing that would make it easier would be if the player new what they were supposed to do. It might not be too hard if I knew what I was supposed to do. Your instruction page is stylish as if it’s not game instructions but real life, but that just makes it confusing. I think you need to dumb it down. I would prefer instructions that told me exactly what to do.

It’s hard to say what you can do to make the game easier without really understanding it. But there are a lot of robots firing me at the beginning, can’t there just be one? What about an in game tutorial at the start? Because even the instructions in the message above can get a bit hard going to get through. I don’t think there is anything wrong with having a really stupidly easy level at the beginning either.

I’ll definitely be back to try it again when you updated it though, it looks like it could be really good. I think from my own game and seeing others on the showcase it can be quite easy to make your game too hard.

I uploaded a small update mainly for simplifying the start process:

  • introduced one-click play button
  • enhanced help text
  • lowered initial Bionic aggression
  • only class 1 Bionics in first level

Now I’ll see if I can hack together an in-game tutorial.

I have jdk7 installed but both your exe and bat couldn’t find it.

No, that’s right. The smaller bundle without JRE is only a temporary testing download when people have their own JRE installed and don’t mind editing the start scripts.

The full bundle should always work, though.

Then I just need to modify that jre7 parameter on bat right?

Yep, this is the basic the command to run the game:
java -client -Xms256m -Xmx256m -XX:+UseG1GC -Djava.library.path=client/lib -jar client/dem-client.jar

The optimize-scripts use the server VM instead of client. But the above line should do it.
Should there a day come when the game is finished, the JRE paths are hardcoded to prevent trouble from different Java versions and path problems, so everything will be bundled.

Here comes an important change for the game AI:
There was an issue causing low aggressive Bionics attack the player when they shouldn’t.
Most of them are wimps now.

List of all changes:

  • raised aggression boost on bullet hit, lowered boost on hearing bullets
  • fixed enemy tracking
  • introduced imprecise shooting depending on actor class
  • shoot frequency of Bionics depends on aggression
  • implemented dragging force for easier door passing
  • added options dialog for input maps
  • fixed Bionics attacking players on low aggression
  • fixed high score list