Let's Do This!

Posted 5/20/2023
by TheHocken

post title image
An unexpected jaunt into game development with Python and Pygame that opened my eyes to the world of game development.

For years I've thought about getting into game development, but it always felt like such a mountain to climb. If running solo you need solid programming, art, music, writing, and visual design skills. Even if you are that renaissance person you still need to build a strong gameplay loop and a narrative that it works with and find the time and capital to actually to build your vision.

Though I am an accountant by education and developer by trade, my focus has been on server-side code, data collection/analysis, and business intelligence, so my starting skills don't necessarily scream 'Game Developer'. I know my way around python, sql, some shell languages, etc., but nothing in the traditional game dev toolkit. Because of that, and the aforementioned mountain, it never felt like a realistic goal for myself.

My perspective changed in a big way when I came across a tutorial video for creating a Zelda-like game with Dark Souls elements using... Pygame of all things.

The video in question was posted by the content creator 'Clear Code' on youtube. If you are at all intrigued check out his channel at https://www.youtube.com/@ClearCode. Continuing on.

'Python is an awful language to create a game in', I thought, but I was curious so I opened it up. The intro showed the end product in action and, although not cutting edge AAA 3d graphics, the quality of the game was much higher than I had really expected would be possible in a language known for being slow and having game frameworks typically used for the purpose of teaching programming to students... so I gave it a try.

I was hooked!

This tutorial gave me a walk through on all sorts of basic concepts of game code like:

  • - Creating a game loop
  • - Handling user input
  • - The camera and simulation of depth
  • - Combat systems
  • - Progression systems

I eventually got to the end of the tutorial with all the features built by Clear Code and I just kept going. I looked at the base he provided and thought, there are so many things I would add here to make this a more complete game. So I added stuff. Stuff like:

  • - Status Effects including HoTs and DoTs
  • - Enemy Health Bars
  • - Floating Combat Text
  • - A Full menu system with dynamic sizing based on size of screen
  • - Object Interactions with Context Indicators
  • - A basic dialogue system
  • - Dynamic camera controls

So I looked into building and distributing my Pygame game and while it was very doable thanks to some tools out there, I saw obvious hurdles and challenges to maintaining support in the python ecosystem. I also started to see my first drops in perfomance using single-threaded code running SDL when I made some mistakes in the interaction indicators. And I obviously saw very few examples of games written in python which led me to conclude that almost nobody is developing games with the language meaning help would be hard to find.

... it was fun, but it was now time to find a better home for my new found passion project. More on that in a future post!

-TheHocken