Java-Gaming.org    
Featured games (81)
games approved by the League of Dukes
Games in Showcase (487)
Games in Android Showcase (112)
games submitted by our members
Games in WIP (553)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1] 2
  ignore  |  Print  
  Diabolus Ex Machina  (Read 12823 times)
0 Members and 1 Guest are viewing this topic.
Offline 65K
« Posted 2012-05-20 13:25:40 »



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 Grin)
- 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  Smiley

Offline Dream Of Sleeping
« Reply #1 - Posted 2012-05-20 20:36:20 »

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

Offline ra4king

JGO Kernel


Medals: 345
Projects: 2
Exp: 5 years


I'm the King!


« Reply #2 - Posted 2012-05-20 20:41:51 »

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

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

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! Smiley

It looks very impressive. I couldn't figure out how to start a game though.
You create a new game, then hit save I think.

Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline Dream Of Sleeping
« Reply #3 - Posted 2012-05-20 20:44:33 »

Ok cool. I was just hitting new.

Offline Dream Of Sleeping
« Reply #4 - Posted 2012-05-20 20:47:35 »

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.

Offline Dream Of Sleeping
« Reply #5 - Posted 2012-05-20 20:49:05 »

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

Offline 65K
« Reply #6 - Posted 2012-05-20 21:07:19 »

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 ?)

Offline ReBirth
« Reply #7 - Posted 2012-05-20 23:50:00 »

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

Offline Dream Of Sleeping
« Reply #8 - Posted 2012-05-21 17:51:49 »

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.

Offline EgonOlsen
« Reply #9 - Posted 2012-05-21 20:54:47 »

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... Huh

Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline BoBear2681

JGO Coder


Medals: 18



« Reply #10 - Posted 2012-05-21 20:58:40 »

Swing aint that bad basically, only sometimes like today when simple things like scrolling a text pane to the beginning just doesn't work...

Just call textPane.setCaretPosition(0).
Online deathpat
« Reply #11 - Posted 2012-05-21 22:46:07 »

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 Smiley In fact like EgonOlsen, I don't understand what I have to do Sad
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 ! Smiley

Keep up the good work ! Wink

work in progress : D A E D A L U S
Offline 65K
« Reply #12 - Posted 2012-05-22 06:22:13 »

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  Smiley

Offline Dream Of Sleeping
« Reply #13 - Posted 2012-05-22 08:32:24 »

Game balance
Yep, it's too hard. Question is, what to change.

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.

Offline 65K
« Reply #14 - Posted 2012-05-23 17:18:25 »

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.

Offline ReBirth
« Reply #15 - Posted 2012-05-24 05:52:11 »

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

Offline 65K
« Reply #16 - Posted 2012-05-24 06:25:26 »

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.

Offline ReBirth
« Reply #17 - Posted 2012-05-24 06:45:53 »

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

Offline 65K
« Reply #18 - Posted 2012-05-24 06:58:05 »

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.

Offline 65K
« Reply #19 - Posted 2012-05-28 12:33:25 »

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


Offline charlieg

Senior Newbie


Medals: 1



« Reply #20 - Posted 2012-06-09 17:50:15 »

Looks really good.  When I finally upgrade Java6 to Java7, I'll give it a go.

Is the game or the engine or both open source?
Offline 65K
« Reply #21 - Posted 2012-06-10 09:34:35 »

Looks really good.  When I finally upgrade Java6 to Java7, I'll give it a go.
The game brings its own private JRE, so you wouldn't have to update your system.

Is the game or the engine or both open source?
The source code is not open source.
Maybe that will change some day, but it would require a good amount of work for the documentation beyond JavaDoc and it is questionable if there is enough interest to make it worth it.
But I have been thinking already to extract and publish dedicated modules.
If I find time to do it. Right now I am fighting Ant, Linux, Apache and HTTP...

Offline 65K
« Reply #22 - Posted 2012-06-11 19:58:25 »

A little update bringing these enhancements:
  • added background ambient track
  • extended documentation
  • introduced online highscores
  • added Linux package

Offline 65K
« Reply #23 - Posted 2012-06-14 13:34:26 »

Even more updates:
  • improved tunneling prevention of collision detection
  • fixed options saving for online logins
  • tweaked game balance
  • updated to Java 7u5, LibGDX 0.9.4, LWJGL 2.8.4
  • fixed games sometimes not starting up
  • fixed design of level 3

Offline 65K
« Reply #24 - Posted 2012-07-04 18:19:23 »


Here comes a fun update.
Particles !
Though clueless when it comes to OpenGL, with LibGDX and its particle editor I could easily set up particles for explosions and other visual effects.
Also good to keep up the overall motivation to do some nice stuff in between. Evil multiplayer classes are still waiting to get me persecutioncomplex

Offline xsvenson
« Reply #25 - Posted 2012-07-04 19:02:13 »

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.


Interesting, why G1 ?

“The First Rule of Program Optimization: Don't do it. The Second Rule of Program Optimization (for experts only!): Don't do it yet.” - Michael A. Jackson
Online Cero
« Reply #26 - Posted 2012-07-04 19:23:01 »

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.


Interesting, why G1 ?

Pretty sure G1 is actually enabled by default in Java 7. For good reasons I suppose.

Offline 65K
« Reply #27 - Posted 2012-07-04 19:24:26 »

Interesting, why G1 ?
This was just experimental, with the newest garbage collector type, which is as far as I remember, a specialist for guaranteeing short pauses. But its been some months since I looked deeper into that topic, so that is no general recommendation.

Offline xsvenson
« Reply #28 - Posted 2012-07-04 19:37:38 »

Interesting, why G1 ?

Pretty sure G1 is actually enabled by default in Java 7. For good reasons I suppose.

No, it's just "fully supported". The old one is still default.

My question was because, firstly, it was explicitly defined. I thought that maybe some extencive profiling was done to warrant this.
Secondly, by my own knowledge and testing, G1 is more for heavy lifting, server side gc. While having more predictability and generally being "better", my own profiling has shown some disappointing numbers for my lil things.

So was just wondering maybe there is some knowledge to be shared.

This was just experimental, with the newest garbage collector type, which is as far as I remember, a specialist for guaranteeing short pauses. But its been some months since I looked deeper into that topic, so that is no general recommendation.

This anwered my question though Smiley


“The First Rule of Program Optimization: Don't do it. The Second Rule of Program Optimization (for experts only!): Don't do it yet.” - Michael A. Jackson
Offline 65K
« Reply #29 - Posted 2012-07-04 20:05:15 »

I had some profiling sessions, but stopped it because it is very time consuming and hard to draw the right conclusions for JVM tweaking.
The only clear result was to not use the server VM as default because it's aggressive optimizing is too CPU consuming for weak (single core) machines. The game showed bad stuttering. So there is only an optional "optimized server VM launcher".

Pages: [1] 2
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

 

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

TehJavaDev (17 views)
2014-08-28 18:26:30

CopyableCougar4 (26 views)
2014-08-22 19:31:30

atombrot (39 views)
2014-08-19 09:29:53

Tekkerue (36 views)
2014-08-16 06:45:27

Tekkerue (33 views)
2014-08-16 06:22:17

Tekkerue (22 views)
2014-08-16 06:20:21

Tekkerue (33 views)
2014-08-16 06:12:11

Rayexar (67 views)
2014-08-11 02:49:23

BurntPizza (45 views)
2014-08-09 21:09:32

BurntPizza (36 views)
2014-08-08 02:01:56
List of Learning Resources
by Longor1996
2014-08-16 10:40:00

List of Learning Resources
by SilverTiger
2014-08-05 19:33:27

Resources for WIP games
by CogWheelz
2014-08-01 16:20:17

Resources for WIP games
by CogWheelz
2014-08-01 16:19:50

List of Learning Resources
by SilverTiger
2014-07-31 16:29:50

List of Learning Resources
by SilverTiger
2014-07-31 16:26:06

List of Learning Resources
by SilverTiger
2014-07-31 11:54:12

HotSpot Options
by dleskov
2014-07-08 01:59:08
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!