Skip to main content

An Event Driven Python Game Engine

Project description

PursuedPyBear

PursuedPyBear, also known as ppb, exists to be an educational resource. Most obviously used to teach computer science, it can be a useful tool for any topic that a simulation can be helpful.

A Game Engine

At it's core, ppb provides a number of features that make it perfect for video games. The GameEngine itself provides a pluggable subsystem architecture where adding new features is as simple as subclassing and extending System. Additionally, it contains a state stack of Scenes simple containers that let you organize game scenes and UI screens in a simple way.

The entire system uses an event system which is as extensible as the rest of the system. Register new values to existing event types, and even overwrite the defaults. Adding a new event system is as simple as calling Engine.signal with a new datatype. Instead of a publisher system the engine knows everything in its own scope and only calls objects with appropriate callbacks. The most basic event is Update and your handlers should match the signature on_update(self, update_event, signal).

Guiding Principles

Because ppb started to be a game framework great for learning with, the project has a few longterm goals:

Education Friendly

Non-technical educators should feel comfortable after very little training. While some programming knowledge is required, the ability to think in objects and responses to events allows educators to only focus on their lessons.

Idiomatic Python

A project built on ppb should look like idiomatic Python. It also should look like modern Python. As such, we often add new language features as soon as they're available, letting a new user always know ppb runs on the latest Python.

Object Oriented and Event Driven

ppb games are built out of instances of objects that inherit from EventMixin. Each object only has enough information to respond to the event provided, which always includes the current BaseScene. Because ppb doesn't have a master list of events, you can provide new ones simply to add more granular control over your game.

Hardware Library Agnostic

Because ppb strongly tries to be extensible and pluggable, each hardware extension can provide its own hooks to ppb, and you can nearly seamlessly switch between various Python libraries.

Try it

Install ppb in the standard method:

pip install ppb

ppb provides a run function that makes it simple to start single screen games.

To make a very simple game, make a directory and add an image file called ship.png to it. Then add the following to a python file and run it.

import ppb


class Ship(ppb.BaseSprite):

    def on_update(self, update_event, signal):
        self.position += 0, -(4 * update_event.time_delta)


def setup(scene):
    scene.add(Ship(pos=(0, 3.5)))


ppb.run(scene_kwargs={"set_up": setup})

Compatibility

ppb is guaranteed compatible with Python 3.7. The event system uses dataclasses so you might need to inject a shim into your environment if you use earlier versions. That said, it is strongly encouraged you use 3.7 to develop ppb projects.

Get Involved

The fastest way to get involved is to check out the ongoing discussions. If you're already using ppb feel free to report bugs, suggest enhancements, or ask for new features.

If you want to contribute code, definitely read the relavant portions of Contributing.MD

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

ppb-0.4.0rc2.tar.gz (13.4 kB view details)

Uploaded Source

Built Distribution

ppb-0.4.0rc2-py3-none-any.whl (13.8 kB view details)

Uploaded Python 3

File details

Details for the file ppb-0.4.0rc2.tar.gz.

File metadata

  • Download URL: ppb-0.4.0rc2.tar.gz
  • Upload date:
  • Size: 13.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.1 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.7.0

File hashes

Hashes for ppb-0.4.0rc2.tar.gz
Algorithm Hash digest
SHA256 1da1e55e43a65df1b6f303b1d33176ec7eb14b4688d0d0d520c2a3463c0d584f
MD5 7fac324573f60ec6374675bb5d3a1989
BLAKE2b-256 da9a8b7c079e1819e0a8487f3362ea4e1e0cfb9af7a35499c430aa298e389beb

See more details on using hashes here.

File details

Details for the file ppb-0.4.0rc2-py3-none-any.whl.

File metadata

  • Download URL: ppb-0.4.0rc2-py3-none-any.whl
  • Upload date:
  • Size: 13.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.1 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.7.0

File hashes

Hashes for ppb-0.4.0rc2-py3-none-any.whl
Algorithm Hash digest
SHA256 efc1dc3c1937670c7bd56259f56faaa3c3349d0cc2260c8c027087f90d0090b2
MD5 71875f6f2426612ce942dc9d78a4d5a2
BLAKE2b-256 d6263c9d4592d633675e76ae00dd27cddd6c265efc8036950a1532e3dea75d73

See more details on using hashes here.

Supported by

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