Toxic Bunny HD

1997 Dos platform game ported to HD in Java. The game is due for release here in South Africa in October. Blog about the development available on blog.toxicbunny.co.za

You can find out more about the game on www.toxicbunny.co.za

http://www.toxicbunny.co.za/wpimages/55d79d6d65bc.jpg

We have 11 level of parallax particles or lighting overlays. Full frame draw at under 8ms on entry level machine. Using Java2D not open gl libraries.

Completely hand draw levels no tiling anymore (original was tiled)

http://www.toxicbunny.co.za/wpimages/66963210a6ed.jpg

Under 300mb footprint when executing. Works with all the controllers and joysticks we can get our hands on.

Garbage collection was our worse enemy without a doubt. Partial lag beats full lag erratically.

To see more about our Indy Company take a look at www.celestial-games.com

Thanks

If you have any questions about the Java development challenges feel free to email me. travis@celestial-games.com

The art is look great. Hope it will be done soon.

Thanks us too.

[quote]Full frame draw at under 8ms on entry level machine
[/quote]
Are you testing/targeting Macs as well? In my experience (testing on Snow Leopard; Macbook Air and iMac), Java2D gets fill-rate limited very easily and doesn’t seem to take advantage of hardware (plus, the “opengl” JVM switch has no effect). See this simple benchmark. With all that’s going on in your screen shots, I am really curious about how it would perform on my Macs at full resolution.

Art style looks great, though. Excited to see more.

Thanks. Yes screen is fairly busy lighting fully dynamic although the particles tend to be the most expense element.

We do test on a MAC at the office entry level MAC book about 1 1/2 old. Not sure about distribution on MAC we considering using Excelsior JET for the distribution to simplify the game distribution.

Essentially the MAC and PC only stutter on GC. We really spending a lot of time making sure we reuse and prevent object creations where we can.

One thing we have discovered in that JAva 2D create a rectangle for each image draw and then uses the rectangle intersect to determine if the image needs to be drawn. So hand culling before calling drawImage can save a lot of rectangles been build. We have about 2000 sprites at 24fps we were building more or less 48k rectangles on the heap per second. Surprisingly these didn’t seam to get Eden gc’ed.

One trick for the GC has been to reduce the VM’s available ram to force more regular GC’s that don’t then stall due to size. Most machines no longer see stalls but we been as thorough as we can to get the best possible experience on as many machines.

Damn, you got all that performance from java2d? Do you guys have any developer diaries to share?

Heh that’s what I was wondering; I’d probably be over 8ms just drawing the background! (on my crappy laptop anyway)

Nice job though, looks awesome!

Please…please…share your techniques on getting j2d to perform this way.

Thanks for the interest. Nice to be able to share the results with some people that understand the limitations of the platform.

There is a developer Diary although we had a reboot so most of the early articles are lost. The current is a little less tech then this audience might prefer.

Essentially we run at 1080p 24fps (this is legacy from the original game). We not in the mood to rewrite the whole game balance and logic.

At 1080p we sitting on the following breakdown for performance.

http://www.toxicbunny.co.za/demoimages/closeup.png

The numbers are in milliseconds.

This is from the following screen shot

http://www.toxicbunny.co.za/demoimages/timing.png

We started this project in Java 1.5 at that point we used Java3D to access the acceleration through the Java 2D pipeline. We found that if we connected Java3D to a full screen Java2D context all the Java2D features were in fact accelerated. From Java 1.6 on full acceleration was part of the JRE so we getting pretty good performance.

We have now dropped the 3D game context and work only with Java2D. There are a few tricks. Some of the Alpha composites are slow whilst others fast depending on graphics card. We had to reverse the lighting system since the one composite failed and went to slow mode. Also we use the Translation often for rotations and scaling but never simply scale the corners of an image. We found that often falls back on software.

I think if you test your Java2D right now you will find the performance exceeds your expectations. The thing we doing that’s special is more around the streaming of the background layers as the game plays.

Regards
Travis

I used to play with Java2D and play tricks with it to be fast.

With the simpleness of freely available libraries like Slick2D and LibGDX that use OpenGL underneath, and the speed of direct OpenGL itself, I am no longer willing to go back to relatively slow platforms like Java2D.

I am happy that you were able to do this go this amazing performance for these amazing graphics, but this is more to everyone else :slight_smile:

Cant argue there.

Our struggles are more along the lines that we don’t have access to sh adders and we cant control some head use that goes on under the hood. An opengl lib is certainly better for that.

On the flip side its been great showing off what Java can do. The only native lib is in jinput for now.

Hey guys :slight_smile:

I’ve written an article on how we implemented one of the features for the game.

Here’s the link:

http://bitsandbytesza.blogspot.com/2012/10/simple-tile-based-volume-lighting-in.html

Toxic Bunny HD is now on steam

You will be able to see game play video there :wink:

http://steamcommunity.com/sharedfiles/filedetails/?id=108520156

And of course if you happen to feel generous a quick thumbs up wont do any harm.

Hey, well done on your losing your Steam virginity! Fingers crossed, I hope it does well for you.
Ahh wait a minute, I thought you meant you’d already been accepted.
Better get soliciting those thumbs ups from everyone in here then! At the very least get your homepage pointing right at it.

Cas :slight_smile:

Thanks its kinda exciting and fairly terrifying all at the same time :slight_smile:

Steam virginity? so literary you’re fukked by Steam? :x

Btw good luck!

Where is the link to the game?

This looks amazing thumbs up on the art work :slight_smile:

Does the showcase rule mentioned by masteryoom indicate that your game should be free to download and play?

I would have expected it to be more about the completeness of the game then the idea that it is free to download and play.

Am I mistaken?

Playability refers to completeness.