On OS X 10.5, ctrl+<arrow> is the combination to change the virtual desktop, so when i wanted to fire and steer at the same time my desktop would switch away, which made the game a bit more complicated.So for OS X users with spaces enabled some other key kombination would be great. Since you have 6 spare bytes you could probably add an alternative key for fire and lift.

(but not x and y keys, because than I have to complain about german keyboards where the x and z keys are swapped )

The controls felt good enough, but I found it really hard to tell if I hit an enemy or not, and sometimes it felt like I was shooting straight at them for a very long time, but no bullets seemed to hit.I like the trees. =) Polygonal cuteness.

Yup, very Virus like, only this is slightly easier to ctrl than the original (especially since you can land on water) . Very good to squeeze all that into 4K. I found that the only way to kill the virus was to aim dead center on them and then let them hover up into my stream of bullets, since it is very difficult to see if the bullets are above or below the virus. You also seem to lose lift force when shooting and/or moving and/or turning. Guess it would have been nice with some badies moving around, but difficult enough to hit them as it is really.

Noticed that trees that are behind a hill are "lifted up" so that the root is always visible, and they seem to be drawn in front of trees that are closer. Guess you are aware of this and it is just a shortcut to cram it into 4K. Hardly noticeable when you play anyway.

Replace it with enableEvents(InputEvent.XXXX_MASK), and override processEvent(....) (or processXXXEvent if you are only interested in one type of event)This will remove 2 methods, saving ~50 bytes each.

2) get rid of getWidth/getHeight - as you are making an applet, the size is hardcoded anyhow.

3) stick with using just 1 Color constructor, and don't reference the static final instances. e.g. as you are already using the Color(int.int.int) constructor, you will reduce your constants pool size by replacing "Color.black" with "new Color(0,0,0)". (store in a local if you are worried about extra garbage)

4) Don't use String concatenation - it pulls in loads of rather large constants pool entries, and the bytecode for performing the concatentation is rather large.

5) If convenient - use drawChars instead of drawString, it has a smaller method signature resulting in a smaller constants pool entry.

6) Use the default Font!

btw, as far as I am aware Component#createImage(width,height) does not create a VolatileImage back buffer, meaning all of your fillPolygon operations are not being hardware accelerated.If you switched to using BufferStrategy (or a Volatile backbuffer) I'd expect an enormous fps boost. (probably a solid 60fps on most machines)

1) get rid of the Listener2) get rid of getWidth/getHeight - as you are making an applet, the size is hardcoded anyhow.3) stick with using just 1 Color constructor, and don't reference the static final instances. 4) Don't use String concatenation - it pulls in loads of rather large constants pool entries, and the bytecode for performing the concatentation is rather large.5) If convenient - use drawChars instead of drawString, it has a smaller method signature resulting in a smaller constants pool entry.6) Use the default Font!7) If you switched to using BufferStrategy (or a Volatile backbuffer) I'd expect an enormous fps boost. (probably a solid 60fps on most machines)

1,2) They're just thrown in there to make an applet version - the submitted entry will be a JFrame.3) Good call!4,5) Hmmm... Will I save enough space to warrant it? If I was gonna get 200+ bytes I'd do it, but I don't think I will!6) No way! It could be anything!7) I changed to VolatileImage and noticed only a small (but significant) speed increase, but that may just be my rubbish graphics card. I've updated the applet also - is it faster for you now? (even with the Color()s sorted using this has got me back up to 4087 bytes )

7) I changed to VolatileImage and noticed only a small (but significant) speed increase, but that may just be my rubbish graphics card. I've updated the applet also - is it faster for you now? (even with the Color()s sorted using this has got me back up to 4087 bytes )

A very technologically impressive entry, as I'm sure most people would agree. First time I played the game I got a little confused with the controls (sometimes spacebar wouldn't register for vertical thrust if I was hitting too many other keys I think?) and had issues shooting some of the aliens down, but pretty soon I managed to figure it out. It's actually pretty fun once you know how to kill things, since usually the enemy ends up hitting you once or twice, esp if you're attacking 2 enemies, and there's a real sense of "oh crap I might die", which is important to have.

But I eventually got it down so I could reliably destroy the guys, and actually got through the first wave, only to my disappointment to find there was no second wave! I went back to the main base and healed my ship, but "Wave 1" just sat there... taunting me. And yes it said 0 enemies left.

Perhaps would be more fun if the engine was more efficient/rendered faster, but a very excellent entry overall.

there was no second wave! I went back to the main base and healed my ship, but "Wave 1" just sat there... taunting me. And yes it said 0 enemies left.

There's 10 different waves in all (hit 'Enter' to continue to the next wave - I should make that clearer...) I can't get past wave 3; 60 enemies!

Edit - 'Tis done - it now says 'Press ENTER to continue' under 'Wave Complete'. NB I've also added a cheat (applet only!): Press 'A' to kill all the enemies and finish the wave.One other thing - your score now goes down the more the land is polluted - so there's an incentive to clear the ground as fast as possible!

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