Having used both I can say that PyGame provides much more out of the box but that this is not just a pro but also a con. For example in pygame there is a concept of “sprite” that has movement and you can tell it move left, move right etc. In Ebiten it surprised me to find that there is no such thing but it’s nice for two reasons:
- implementing movement is trivial and maybe you don’t want your sprite to move like that, e.g. my first game with Ebiten had moons orbiting, not moving left-right etc.
- Ebiten is much simpler to understand
When I was using PyGame I’d say I spent roughly 80% of the time reading the docs and trying to understand how to use correctly what is already there and only 20% working on the game, whereas with Ebiten it was the other way around, 80% of time programming my game.
And then my last point for Ebiten is that it makes it easy for you to build a single binary that you can ship to any popular platform. Ironically just yesterday I closed the last outstanding issue on my awful PyGame game that has been open for 3 years: To bundle the game into a runnable .exe file, I failed, it was too hard for me, but with an Ebiten game, Go’s build tools do the job for you.
Maybe a bit of a long, opinionated rant but I wanted to share the experience:
- PyGame makes it easy to get into gamedev if you have zero experience because its framework provides rich existing general features for a game but don’t expect others to be able to play your game (if everyone in your class is already using Python and have it installed then this is not an issue)
- Ebiten is by design simple to the core, so easy to understand, it is less a framework and more a strong library, you may have to implement some of details yourself but if you’re already familiar with Go programming then this could be fun and not so challenging, and it will be easier to share your game with others as .exe or for web etc
There are surely many more pros/cons for both, but these are the two that stood out the most for me. I don’t regret using PyGame for my first competition entry, it was a good introduction, but I won’t use it again.