Graphics programmingI started off by using Java2D, simply because it was easy and straightforward to use without the need to learn a lot.
It wasn't a bad decision performance wise. As long as you use Java2D for simply rendering textures, it is pretty fast (as opposed to repeated contrary statements). But to play in the gaming league of today, a game has to offer impressive graphics effects like lighting and particles. To deal with that, it was time to say goodbye to Java2D and look out for something more practicable to do the job. For the Java platform, it means OpenGL and most probably LWJGL. Furthermore, if you don't want to mess with low level details, Libgdx is the way to go. So, in the middle of development, I had to switch the frontend from Java2D to Libgdx. Luckily, because Biodrone Battle was planned and had already been developed as multiplayer game (more about that decision later...), this task wasn't such a drawback as one might think. There were relatively few places to change and reimplement.
By the way, why on earth did I start to develop a serious game with a language and platform everybody knows is slow ?
Two simple answers:
1. I knew Java very well due to my daytime job as business software developer. No learning efforts means more time for nothing but game programming.
2. Java is more than fast enough for the job.
And you probably all know that the most insanely successful Indie game ever was written with Java :)
As Biodrone Battle's maps are made of square tiles, I needed a map editor to create them. Because programming my own editor would have taken valuable time, I looked for a ready-to-use piece of software and stumbled upon Tiled. Using Tiled started out as very convenient, but as graphic features like lights and particles were added it became more and more cumbersome to create maps. Level design was one largely underestimated task anyway.
The multiplayer plagueOne driving idea and key feature was to not simply to create a Paradroid-inspired game, but if anything, it should become a multiplayer game.
Every game of today is multiplayer ready, isn't it ? So, Biodrone Battle got a full blown client-server architecture and worked nicely as network game. As local network game, to be precise. Because for the internet, you have to deal with lag, latency, client prediction, you name it.
To make things worse, Biodrone Battle uses the physics libary Box2d, which makes it very hard if not impossible to let a game work in a client/server setup. Furthermore, in a 2D game, every discrepancy between clients and server is hard to hide.
End of story, multiplayer support is history for this game. I still kinda regret it, thinking of very nice and fun game play enhancements, and the wasted development efforts. But it was right to do so. Would there have been enough people to play the game anyway ? And if there were, who would have run game servers to play on ?
It is regretful, but was the right decision.