I love the idea behind this topic! For me, this jam was an opportunity to improve my Python skills, and I believe my submission is the only one written in Python (and without an engine). However, much of the source code is hacked together, as I learned the pygame library has some limitations:
- Outdated collision detection based on creating rects based on images. This method is fine until you want to rotate your colliders (hitboxes), at which point you cannot achieve pixel-perfection anymore. The best solution I can see is to not use the built-in rect system and instead use the Pymunk library for collision handling. Unfortunately, rewriting my game to use a physics library would have caused me to miss the deadline.
- Modern engines can take multiple inputs within a single frame. Pygame cannot. Let that sink in a moment - you can't detect if two keyboard keys are pressed at the same time. My only workaround was to check for keyup events and use boolean flags to control movement, this way you can press multiple keys around the same time, though it still isn't perfect input detection.
- Pygame can only play 16-bit audio. This is a problem since most free SFX on the Internet (not to mention background music) is 32-bit or higher. I had to manually re-export all audio using Audacity so they would be downsampled to 16-bit. I believe most published Python games use OpenAL or an actual audio library, so this is something I will be looking to integrate moving forward.
I'll continue to develop my submission (closed source, of course) as a side project learning exercise, but I am not sure if I will ever take it to published completion.