The above is a screenshot from the mobile game I’m working on, Napoleon’s Scared of the British. As you can see, currently, it’s more like Napoleon’s Scared of Skidders and Glitches. Nevertheless, the above image represents my first day of progress.
So, what is Napoleon’s Scared of the British? It’s an endless mobile game where you play as Napoleon Bonaparte. The aim is to avoid an oncoming army of British soldiers as they charge across the screen. Only, Napoleon is without a weapon and shit scared. Points are given for each British soldier avoided.
The premise and functionality are simple, but this is my first mobile game so I’m keeping the scope realistic. To those of you versed in mobile game development, hearing that I’m using PyGame may sound stupid. Of course, there are better mobile-optimised languages out there like Java, but I have an existing rudimentary knowledge of Python, so PyGame gives me a relatively comfortable springboard.
PyGame is actually meant for desktop game development, meaning porting games to mobile may prove difficult…but that’s a bridge I’ll cross later down the line.
From Kivy to PyGame
Originally, I planned to use PyGame to build NSB, but after some research, I decided to switch to the Kivy library as it’s made for cross-platform development with touch inputs. Either way, I wanted the main driver for my mobile game to be Python.
I spent a few hours building a basic game engine with Kivy. It was pretty simple and it didn’t take long for me to build a playable system. However, when I started adding sprites and animations, the engine began playing up.
After spending some time debugging the code with the help of ChatGPT and Claude, I found myself stuck. Whilst there are many benefits to using Kivy over PyGame, there’s a lack of community support and online resources. PyGame, on the other hand, has a wealth of free online resources.
So, pretty quickly, I decided to switch back to PyGame. I managed to mostly replicate my progress on Kivy with PyGame, but I plan to start building the engine from scratch again tomorrow. This time, I want to avoid the use of AI so I can get a better grasp of the language and actually learn something. Whilst AI is a great debugging tool, it’s easy to use it as a crux and fail to learn.
Aside from the game engine, I played around with Pixel Art Studio and put together a player sprite, along with a simple walking and idle animation.
What’s Next?
Tomorrow, my plan is to rebuild the game engine from scratch with some basic controls. I’ll likely waylay the addition of sprites and animations until I’ve got the game engine in a solid state. I’d also like to explore adding some slippery physics to make controlling Napoleon a little easier, but maybe I shouldn’t get ahead of myself.
In regards to this development log, I’m going to try and write a post whenever I make significant progress or implement something interesting. Hopefully, these posts will hold me accountable and, who knows, maybe you guys can help me out when I get stuck!
If you’d like to join my game development journey, please consider subscribing to Jimbo’s Lab.