Skip to main content

Python game framework inspired by LÖVE2D

Project description

pylove2D PyPI version Python Version

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.

Github


Features

  • 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.

Installation

PyLove2D requires Python 3.10+ and Pygame. Install via pip:

pip install pygame-ce pylove2d

Getting Started

To install PyLove2D run this command in your terminal:

pip install pylove2d

Basic 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.py

You should see a window with “Hello, World!” on a dark background.

API Overview

Graphics

love.graphics.set_color(1, 0, 0)
love.graphics.rectangle("fill", 100, 100, 50, 50)

Input

if love.input.key_down("left"):
    print("Moving left")

Audio

sound = love.audio.Source("sound.wav")
sound.play()

Timer

love.timer.after(2, lambda: print("2s passed"))
love.timer.every(1, lambda: print("Every 1s"))

Examples

Pong :

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)

Platformer

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

Contributing :

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

License

MIT License © 2025 nnei

Tips :

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pylove2d-0.1.3.tar.gz (8.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pylove2d-0.1.3-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

File details

Details for the file pylove2d-0.1.3.tar.gz.

File metadata

  • Download URL: pylove2d-0.1.3.tar.gz
  • Upload date:
  • Size: 8.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.10

File hashes

Hashes for pylove2d-0.1.3.tar.gz
Algorithm Hash digest
SHA256 74988b7c2b1eb0c280a03afe211734663401256032cbc9b025af73184d1975ee
MD5 4e2c2d29c3053564d53576cc34483a0f
BLAKE2b-256 74d52ff08dc523d7966ed700d4c55296bcc9e7220de86e387d20b0e1df116d84

See more details on using hashes here.

File details

Details for the file pylove2d-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: pylove2d-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 10.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.10

File hashes

Hashes for pylove2d-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 1c8667ffa64fe9b75df7c080dd32ae3881f701d7d6a44ca21d3b7e2ea2c6b474
MD5 4f3c4774ec088e10f5a1e67b90ec55de
BLAKE2b-256 5cccf002bf3c7ff295d5181756018e6b15781af9fa989ddaf8094e444e436b86

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page