A want to write a AAA videogame (definition) but I don’t have an idea where to start. In the first place, you must know that producing a game of that kind is a massive undertaking. Second, you need to select the platform to develop it. Third, you need to select the programming language, the framework, interface, library, modules, IDE, and more tools. At that point, you already have 1000 steps more 😵 #sorryNotSorry
Ok, it sounds like a lot of work (actually, it is..maybe more than you think). But suppose you have more experience programming in Python, then this post is for you. There a compilation list of the engines/libraries that can help you with the selection in how to start to code a videogame, including its Github repository to keep update about those 🤖
Then, let's start with the list 🤓 (there is no a particular order, just an unordered list)
Maybe, PyGame is the most famous library to write gaming code for Python. Pygame is a Python wrapper for the SDL library (Simple DirectMedia Layer). This library is free and open source also cross-platform for the development of multimedia applications.
It is possible to install Pygame on Raspberry Pi, Windows, Mac OS X, Unix, and basically any system where you can compile it.
Once you installed Pygame, you can tested with the command:
python -m pygame.examples.aliens
Check this code in https://github.com/pygame/pygame/blob/master/examples/aliens.py
If you want see more about the impact of Pygame, please check some projects built over it-> https://www.pygame.org/tags/all
Ren'Py is a visual novel engine
Ren'Py is a free and cross platform engine for digital storytelling. It makes it easy to combine words, images, and sounds to create visual novels and life simulation games.
Ren'Py's script language makes it easy to write visual novels, and other writing-heavy games. It's easy to learn, and scales well to the largest projects. Even without customization, Ren'Py provides the features players have come to expect from their visual novels.
There is a list of created games in Ren'Py -> https://games.renpy.org/
Panda3D is a game engine, a framework for 3D rendering and game development for Python and C++ programs. Panda3D is open-source and free for any purpose, including commercial ventures (something called liberal license).
Panda3D requires no boilerplate and no complicated initialization code. What you see here is a complete Panda3D app written in Python! However, Panda3D core is written in portable C++.
Also, it includes command-line tools for processing and optimizing source assets, allowing you to automate and script your content production pipeline to fit your exact needs.
Pyglet is a cross-platform windowing and multimedia library for Python, intended for developing games and other visually rich applications. It supports windowing, user interface event handling, game controllers and joysticks, OpenGL graphics, loading images and videos, and playing sounds and music.
Pyglet emerge from the Cocos2D for Python and it works on Windows, OS X and Linux.
Kivy is an open source Python library for rapid development of applications
that make use of innovative user interfaces, such as multi-touch apps. Kivy is cross-platform (Linux, Windows, OS X, Android, iOS and Raspberry Pi) and it supports several inputs such as WM_Touch, WM_Pen, Mac OS X Trackpad and Magic Mouse, Mtdev, Linux Kernel HID, TUIO.
Kivy is written in Python and Cython, based on OpenGL ES 2, supports various input devices and has an extensive widget library. With the same codebase, you can target Windows, macOS, Linux, Android and iOS. All Kivy widgets are built with multitouch support.
Here you can check a set of projects to explore -> https://kivy.org/#gallery
Wasabi2d is a game engine for Python, making it easy to use fast, modern graphical effects without low-level OpenGL programming. It is capable to draw sprites, polygons, lines, text labels, particles, full-screen post-processing effects and more.
The minimal boilerplate for a wasabi2d game is basic:
from wasabi2d import Scene, run scene = Scene() # The rest of your code goes here. run() # keep this at the end of the file
For the OpenGL lovers, PyOpenGL is the most common cross platform Python binding to OpenGL and related APIs. The binding is created using the ctypes, supporting OpenGL from version 1.1, GLU, GLUT/FreeGLUT and more extensions (e.g. GL, EGL, WGL).
Moreover, it is possible to use with other external libraries such as wxPython, PyGame, PyQT, PyGTK, TKinter and more.
A side note: there is a competitor of PyOpenGL called ModernGL which is a python wrapper over OpenGL 3.3+ core. I prefer ModerGL instead PyOpenGL (less boilerplate code!).
I know there are more frameworks, libraries, packages in Python, however, this is a short compilation expecting that be useful for you. For further information, you can visit the official Python's wiki for Python games.
From a geek to geeks