Like many others, I grew up playing video games (among other things, of course). I always had a fascination for them, and like to many others, video games seemed like magic to me – that was until 2011 when I tackled jMonkeyEngine. Alas, I didn’t have enough solid knowledge about Java and I stopped wondering about game development for a while, not to mention that’s it’s a hell of a challenge to develop a decent 3D game by yourself.
Recently, the Android phones my family bought has inspired me to make a game that I haven’t yet seen on portable devices. I wanted to make a 2D shooter. Why 2D? Because 3D fps are very cumbersome on touch devices due to an overwhelming amount of controls. How can you control two d-pads while controlling a shoot button? The aiming process is painful! That’s why I want to make a simple, yet fun online multiplayer 2d shooter platformer for Android. I think of it as Quake ported to 2D.
I’m using PyGame and Euclid.py for the moment. For those of you wondering what Euclid.py is, it’s a library that I used for managing vectors (really handy). I plan to use the Mastermind library (there are complications with the license, however) for handling the online part. I tried using PyIgnition for particle effects. I value the library very much, but it ended up draining my FPS to 30. I even couldn’t get a decent frame rate for some default PyIgnition examples. All of this pushed me to ditch that library, even though I would’ve loved to include it. I haven’t settled on a library for GUI yet, but this will come in due time.
I approached the coding process in a couple of steps:
- The platformer part (physics engine + display character and map + custom map editor)
- The projectiles (For some reason I thought this was going to be hard. Turned out to be easy.)
- The server+client (I think that I’ll have to hit the books for that)
- The GUI (I’ll start worrying about this when I finish the server+client
- Porting to Android (I took a quick glance at the Android subset for PyGame; I think porting will be easy)
For now, the source code is chaotic, but I will clean it up in due time. Many lines of code should be adapted into classes and functions so that anyone else considers looking at the source code.