Description razynoid is a arkanoid/breakout clone written in Java (LWJGL + OpenAL). The game graphics are enhanced by the use of 3D accelerated hardware. This game is mostly a tech demo of my 2D engine and don't have the finishing touch required to be a commercial-grade game. It contains 10 levels but you can create your own with the level editor.
This package contains 3 executables, 2 for the game and one for the level editor. The custom executable allow you to run the game with different resolution and settings but bare in mind that support for widescreen ratio is not present a this time.
I am interested in hearing about how the game perform on old hardware, if you can test it please contact me at ybourbeau AT mrgtech DOT ca
You can download the game and test it at:
Nicely done. For other Java game developer enthusiasts (which are quite far and few), perhaps you can write a postmortem describing your experiences with Java and any helpful insight others may benefit from. The editor is pretty intuitive to use too. I have my suggestions outlined below.
1) The paddle should influence the direction and speed of the ball. At least that's how it was done in Arkanoid.
2) The game uses full CPU resources. I know Java isn't that bad, so I'll ask if you have an efficient renderer? Do you sleep between drawing to limit the frames per second and take a load off the CPU?
I'm curious as to how you will handle the widescreen format (I've often gave this thought, but never committed). Professional GUI systems I've used in the past offer automatic scaling and adjustment by use of percentages and stacking panels. Not easy to implement, but very intuitive to use. Some games where I looked into their SDK use floating point numbers between 0.0 and 1.0 to denote the location on the screen with automatic scaling to compensate for larger or smaller screen resolutions. This is easy to implement yet not as intuitive to use and requires mouse coordinate conversion. Just a thought I brought up and wouldn't mind hearing your side of it.
About post-mortem, I think I can say the hardest part is to make everything run synchronized in only one thread. In the game itself I am using jBox2D (physics engine) to handle balls movement and brick collision. This engine does not handle variable time steps, you have to guarantee the same amount per second. All the other stuff is easy in comparison I actually ported my engine from C++ to JAVA in 2 weeks.
BTW: I plan to release the source code for both the game and the engine behind it very soon. (With a good javadoc)
The paddle actually influence the direction and speed of the ball but I think its not perfect, from borders to center the angle modification is from 0 to 30 DEG. If you have a ball going down at 270 DEG and you hit it with a pad border, the bouncing angle will not be that much changed.
About CPU resources, this is true, you can fix this by using Crazynoid_custom executable and enable VSYNC or check CPU-FRIENDLY option. CPU-FRIENDLY option reduce the CPU usage alot but accelerate the gameplay, I am currently working on a better solution.
My game engine handle multiple resolutions based on one resolution, when you start your game project you specify a resolution you will use, for Crazynoid it was 1024x768. Since all coordinates are stored as float, resizing will not break the overall design. The default behavior is to rescale the position and the size of a graphic element but I can also only rescale the position and let the size unchanged. Calculating widescreen aspect ratio is just a question of multiplying a additional value to horizontal coordinate and size. I saw about 0..1 approach from other engines and like you I dont like to have convert mouse coordinates, in my engine this part is handled automatically