The last two weeks I have found myself straying away from my Visual Studio .Net and grazing back into the world of Java and the awesome Eclipse workbench. I’ve never mentioned Eclipse here before, if fact I had never even used it until just last week when I fired up my old CO871 SpaceInvaders project. What can I say? I’m hooked!
I don’t think I’ve ever come across a development tool that was this quick and easy to use, download a zip, extract it and run the .exe, no installer, no configuring classpaths, it took care of everything for me right out of the box!
I’ve decided to go back to this SpaceInvaders project for a couple of reasons, first, I promised myself I wouldnt’ be doing any more ‘free’ projects for work at home in my spare time. And secondly, I thought it would be a excellent, easy to understand tech demo for me to show some of my skills to potential employers down the road. Even back when I first submitted this project nearly 9 months ago I knew there were things broken or missing that I wanted to include. I wanted a more robust multi-player system instead of the ‘competing by score’ that kinda works sometimes, there were some memory management issues with the vectors for storing game entities and the UI code could have used some more work on the double-buffering. Sound and explosions would have been a nice touch too, but I suppose at the time I was just learning Java and ended up doing the whole project myself, so I don’t feel all that bad about it.
Now for the list of things that I want to change/improve in the next version I release:
- Rewrite the networking class to allow multiple simultaneous connections (will test my concurrency skills!) and to provide a cleaner interface to the game engine for sending and receiving objects from remote clients.
- Update the UI with better support for double-buffering and some de-coupling from the game engine, will also be updating the scoreboard classes. Would also like to have explosions and sound effects for supported platforms.
- Abstract the game engine to provide a better framework for more game modes to be added using a set of standard interfaces.
- Update the single-player game experience to include multiple levels of difficulty and enemies that drop towards the player, more realistic to the original.
- Update the multi-player game to allow for more than two players to be playing at the same time, this will interface strongly with the networking module and require some design changes to the UI to allow for displaying a scoreboard of all connected players. Would also be nice to have the ability for players on a ‘hot streak’ to send enemies to their opponents as a reward for good shooting.
- Create a completely new Head2Head mode where two players are on the screen at the same time with enemy ships between them. The objective would be to clear a path though the enemies so that you could take out your opponent, or simply outlast them being destroyed by the enemies. I drool when I think about how much fun this would be to play against my friends.
- There’s also some issues with my first version that I want to fix up too, some memory management issues and some generally ugly code that needs to be re-written.
I figure that’s enough to keep me busy for at least a little bit, after all it’s still the summer and I don’t find myself sitting at home looking for something to do all that often. I need to get back into this stuff though because I feel like I’m loosing some of my programming mindset with the primitive work I’ve been doing in my current job.
Here’s a question to those of you out there who are familiar with cross-platform threading with Java: Does threading still work on handheld devices? I had been thinking about having the main engine run in it’s own thread and then the UI could easily poll it for updates, before I go and change something like that though I just wanted to make sure that it would still be portable. I’ll be doing some research into it, but if anybody has some first-hand experience it would be much appreciated.
I suppose I should actually do some work today seeing as we just recovered from a crisis, but I had to get this all out before I forgot what it was that was keeping my awake at night. As usual, once the game is ready it will be available here and I will be taking challenges from anybody who dares!
Take it easy.