Skip to main content

A Python game engine with physics, rendering, and input systems

Project description

Pyg Engine

A Python game engine built with Pygame and Pymunk for 2D physics, rendering, and game development. Inspired by the Unity game engine's Monobehavior system with scriptable game objects, rigidbody and collider system. Built in physics materials, update system, and mouse+keyboard input system. Built-in window resizing.

NOTE: This is in alpha development stage. Everything is under active development and large changes will likely be made. Also, its pronounced pig engine :)

Features

  • OOP Model: Easy and simple game object implementation system. Create players, environment, enemies, etc. with ease
  • 2D Physics: Built-in physics via Pymunk
  • Input: Mouse and keyboard input handling
  • Components: Modular component-based architecture
  • Scripts: Dynamic script loading and execution
  • Camera: Flexible camera with multiple scaling modes
  • Collision: Advanced collision detection and response

Installation

pip install pyg-engine

Or install from source:

git clone <repository-url>
cd pyg-engine
pip install -e .

Quick Start

from pyg_engine import Engine, GameObject, Size
from pygame import Color, Vector2

# Create the engine
engine = Engine(
    size=Size(w=800, h=600),
    backgroundColor=Color(0, 0, 0),
    windowName="My Game"
)

# Create a game object (supports both tuple and Vector2 formats)
player = GameObject(
    name="Player",
    position=(400, 300),  # Can use tuple
    size=(50, 50),        # Can use tuple
    color=Color(255, 0, 0)
)

# Alternative using Vector2 objects:
# player = GameObject(
#     name="Player",
#     position=Vector2(400, 300),
#     size=Vector2(50, 50),
#     color=Color(255, 0, 0)
# )

# Add to engine
engine.addGameObject(player)

# Start the game loop
engine.start()

Examples

Run examples directly:

# List all available examples
python examples/__init__.py

# Run a specific example
python examples/basic_example.py
python examples/mouse_example.py
python examples/enhanced_mouse_example.py
python examples/main_physics_test.py
python examples/simple_drag_test.py

Available examples:

  • basic_example.py - Basic engine setup and object creation
  • main.py - Complete physics demo with collision detection, mouse and keyboard input, multiple game objects, and physics materials.
  • enhanced_mouse_example.py - Advanced mouse interactions with physics
  • mouse_example.py - Mouse input handling and interaction

Documentation

See the docs/ directory for detailed guides:

  • README.md - General documentation
  • PHYSICS_CONTROLS_GUIDE.md - Physics system guide
  • MOUSE_INPUT_GUIDE.md - Input system guide
  • SPRITE_SYSTEM_UPGRADE.md - Sprite system documentation

Testing

Run the test suite:

cd pyg_engine
python -m pytest tests/

Development

To set up the development environment:

pip install -e .

TODO

In Development:
  • State machine
  • Animation system
  • Sprite colliders
  • Audio system
  • Coroutines and async services
  • More basic shapes
Planned:
  • Debug interface
  • File storage system
  • 2D lighting system

License

MIT License

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

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

pyg_engine-1.0.0a2.tar.gz (62.1 kB view details)

Uploaded Source

Built Distribution

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

pyg_engine-1.0.0a2-py3-none-any.whl (43.1 kB view details)

Uploaded Python 3

File details

Details for the file pyg_engine-1.0.0a2.tar.gz.

File metadata

  • Download URL: pyg_engine-1.0.0a2.tar.gz
  • Upload date:
  • Size: 62.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for pyg_engine-1.0.0a2.tar.gz
Algorithm Hash digest
SHA256 d2d8746198611ca5d0ce9fba497cea544f838a364a8a5cb77adefcb83c51610f
MD5 71c8e8a33ef972c0f988a54d22065397
BLAKE2b-256 f49745054f7b30d003db875310a6c2059c52b79a6dfae85ec83c0af7b8791305

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyg_engine-1.0.0a2.tar.gz:

Publisher: publish-to-pypi.yml on aram-ap/pyg-engine

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyg_engine-1.0.0a2-py3-none-any.whl.

File metadata

  • Download URL: pyg_engine-1.0.0a2-py3-none-any.whl
  • Upload date:
  • Size: 43.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for pyg_engine-1.0.0a2-py3-none-any.whl
Algorithm Hash digest
SHA256 a74f969f6546b802044e4898badd339190c9e98ecc6b05207e60db9eea4ca2b5
MD5 4393c49d7e2511c6957b7f073434f09c
BLAKE2b-256 2aafd43702ffcc83cd930292cd8440fd4e691792425d747dc76eae89b618e778

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyg_engine-1.0.0a2-py3-none-any.whl:

Publisher: publish-to-pypi.yml on aram-ap/pyg-engine

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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