PyLove2D is a Python game framework inspired by LÖVE2D. It allows you to quickly build 2D games using Python and Pygame, with a simple API for graphics, input, audio, and more.
- Graphics: Draw shapes, images, and text easily.
- Audio: Play sound effects and music.
- Input: Keyboard, mouse, and joystick support.
- Timer: Schedule delayed or repeated actions.
- Math utilities: Vectors and transformations.
- Filesystem helpers: Load/save data easily.
PyLove2D requires Python 3.10+ and Pygame. Install via pip:
pip install pygame-ce pylove2dTo install PyLove2D run this command in your terminal:
pip install pylove2dBasic Game Example :
Create a file main.py:
import pylove2d as love
def load():
love.window.set_title("Hello PyLove2D!")
def update(dt):
pass
def draw(g):
g.clear(0.1, 0.1, 0.2)
g.set_color(1, 1, 1)
g.print("Hello, World!", 200, 200)
if __name__ == "__main__":
love.run(width=800, height=480)Run your game:
python main.pyYou should see a window with “Hello, World!” on a dark background.
love.graphics.set_color(1, 0, 0)
love.graphics.rectangle("fill", 100, 100, 50, 50)if love.input.key_down("left"):
print("Moving left")sound = love.audio.Source("sound.wav")
sound.play()love.timer.after(2, lambda: print("2s passed"))
love.timer.every(1, lambda: print("Every 1s"))import pylove2d as love
p1 = {'y': 200}
p2 = {'y': 200}
def load():
love.window.set_title("Pong")
def update(dt):
if love.input.key_down("w"): p1['y'] -= 200 * dt
if love.input.key_down("s"): p1['y'] += 200 * dt
def draw(g):
g.clear(0, 0, 0)
g.set_color(1, 1, 1)
g.rectangle("fill", 50, p1['y'], 20, 100)import pylove2d as love
player = {'x':100,'y':300,'vx':0,'vy':0,'w':40,'h':60,'on_ground':False}
def update(dt):
if love.input.key_down("left"): player['vx'] = -200
elif love.input.key_down("right"): player['vx'] = 200
else: player['vx'] = 0
player['vy'] += 800 * dt
player['x'] += player['vx'] * dt
player['y'] += player['vy'] * dt
def draw(g):
g.clear(0.1,0.1,0.2)
g.set_color(0.8,0.3,0.3)
g.rectangle("fill", player['x'], player['y'], player['w'], player['h'])Project Structure
pylove2d/ ├── pylove2d/ │ ├── __init__.py │ ├── app.py │ ├── graphics.py │ ├── input.py │ └── ... ├── examples/ ├── tests/ ├── README.md ├── LICENSE ├── pyproject.toml └── setup.py
Contributions are welcome! Please:
Fork the repository
Create a feature branch: git checkout -b feature/myfeature
Commit your changes: git commit -m "Add my feature"
Push to branch: git push origin feature/myfeature
Open a Pull Request
MIT License © 2025 nnei
Always run in a virtual environment.
Use pip install --upgrade pylove2d to update to the latest version.
Check the examples/ folder for ready-to-run demos.
See examples/pong/main.py for a full example.
.png)