Building a "quick" game in Python

About two months ago, I sat down with a friend in hopes of cranking out a game that night. After spending a few hours shooting down each others ideas, we finally settled on a concept. Design something like an arcade game, except add strategy by letting users build various defenses that end up defining the shape of the map. Our goal was to add an open map tower defense mechanic, while avoiding the feeling that you can just sit back and watch.

We didn't expect this to turn into a large project, so when we were deciding technologies to use, we just wanted something we could get started with quickly. Because of that, we ended up with PyGame. He's on windows and I'm on mac, so it just made sense to use something that we could both run easily.

In hindsight, this might not have been the best choice. It would have been worth spending a little more time and going with a more modern library such as PySDL2 or even a fully fledged game engine like Godot. We greatly underestimated the amount of time it would take to create the complex system we had in mind.

Development of the game is ongoing, with no end in sight. You can check it out on my GitHub, but beware, it's still far from a complete game. As it grew in complexity, our code quickly got unmanageable. Thankfully, PyCharm has great tools that couldn't make refactoring easier. Now, we have a much more scalable architecture and have broken down the logic into small, manageable, and testable methods.

Check back later for updates on how we solve some of the more interesting challenges coming up.