Grafyte is a lightweight and simple 2D game engine written in C++ with OpenGL and exposed to Python using pybind11. It aims to provide a fast and easy-to-use interface for creating 2D games and interactive applications.
- Simple API: Designed for ease of use with a straightforward Pythonic interface.
- Fast Rendering: Core engine written in C++ using OpenGL.
- 2D Sprites: Support for textures and colored objects.
- Text Rendering: Easy text display with scale and color control.
- Simple Collision System: Integrated AABB-based collision detection with automatic resolution.
- Input Management: Easy-to-use action-based input system with support for keyboard triggers (Press, Hold, Release).
- Scene-based Workflow: Manage game objects within scenes.
To install grafyte, run the following command in your terminal:
python -m pip install grafyte- Python 3.10+
- A C++ compiler (MSVC, GCC, or Clang)
- CMake
- OpenGL drivers
Note
When applicable, please make sure to test your code on both windows and linux as well as on Python 3.10 to 3.14 if possible.
To set up the development environment and build Grafyte:
Windows:
scripts\setup.bat
.\.venv\Scripts\activate
pip install .Linux:
chmod +x scripts/setup.sh
./scripts/setup.sh
source .venv/bin/activate
pip install .Finally, you can build the python extension using CMake:
mkdir build
cd build
cmake ..
cmake --build .Here's a minimal example to get you started:
import grafyte
from grafyte import Key, InputTrigger
# Initialize application
app = grafyte.Application("My Game", (800, 600))
scene = app.make_new_scene()
# Create a player object
player = scene.spawn_object((0, 0), (50, 50))
player.color = (0, 255, 0), 1.0
# Register an action
app.input.create_action("move_right", InputTrigger.Hold, Key.D)
while not app.should_close():
dt = app.dt
# Handle input
if app.input["move_right"]:
player.pos.x += 100 * dt
# Render scene
app.render()
app.quit()For further information, please refer to the full documentation on readthedocs.io
Here is another example of a game made using only grafyte:

Grafyte is licensed under the MIT License – see the LICENSE file for details.