Pygame is a Python framework designed for creating games and other multimedia applications. It is built on SDL and runs on almost any platform that supports Python and SDL. Pygame was made as a replacement for PySDL after its development stalled. It is currently the most popular Python framework for writing video games, but it does have its limitations.
Pros and Cons
While Pygame is very beginner friendly, it is not really recommended for complex games mostly due to the limitations of Python, SDL 1.2, and Pygame itself. Things like scrolling backgrounds or large areas can really bring your program to a crawl. Despite this, Pygame has been used in professional quality games like Frets on Fire, Dangerous High Schools in Trouble, and Unity of Command. It is also a very popular framework to use in game jams.
Pros
- Easy to use and beginner friendly
- Python itself is easy to learn
- Supports Python 2.x and 3
- Built-in sprite module, making handling game objects easier
- Cross-platform - supporting almost any operating system that can run Python and SDL
- Open source (Licensed under the LGPL)
- Active community though not as big compared to other frameworks and engines
- Tons of third-party libraries
- Doesn't require OpenGL
Cons
- SDL2 is not officially supported, but there is an unofficial SDL2 fork of Pygame (see links below)
- Python can be slow even compared to other scripting languages; converting scripts to executables can even make you program run slower due to overhead
- Fairly low level compared to other frameworks
- Pygame can be very dependency heavy. This makes it especially hard if you are trying to convert your scripts into an executable.
- Compatibility can be a mess as some system related functions only work with certain operating systems and drivers
- No built in networking support - You need to implement this yourself or use an additional library if you want networking
Resources
Tutorials
Scripts
- Script to convert Pygame scripts to Windows executables using Py2exe
- Example Pygame source code running on Android
Libraries
- Phil's pyGame Utilities - a collection of modules to make Pygame easier (mostly GUI stuff)
- Pyjsdl - convert Pygame applications to HTML5
- Pyganim - Pygame animation library
- Pygcurse - A "curses" emulator built on top of Pygame
- Pygame_sdl2 - a fork of Pygame that supports SDL2
- Ren'Py - a visual novel engine built on-top of Pygame
- PyOpenGL - an OpenGL library for Python that allows you to use Pygame as a frontend. Useful for making 3D games.