All Projects → ppb → Pursuedpybear

ppb / Pursuedpybear

Licence: artistic-2.0
A python game engine.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Pursuedpybear

Lint Action
✨ GitHub Action for detecting and auto-fixing lint errors
Stars: ✭ 161 (-0.62%)
Mutual labels:  hacktoberfest
Emacs Fsharp Mode
F# Emacs mode
Stars: ✭ 160 (-1.23%)
Mutual labels:  hacktoberfest
Mobile.buildtools
The Mobile.BuildTools makes it easier to develop code bases in a clean, consistent, secure, and configurable way. Determine at Build which environment your app needs to run on, and what Client Secrets it should have. Plus many more amazing features!
Stars: ✭ 162 (+0%)
Mutual labels:  hacktoberfest
Rubanok
Parameters-based transformation DSL
Stars: ✭ 161 (-0.62%)
Mutual labels:  hacktoberfest
Acre2
Advanced Combat Radio Environment 2 (ACRE2) for Arma 3
Stars: ✭ 161 (-0.62%)
Mutual labels:  hacktoberfest
Libwww Perl
The libwww-perl collection is a set of Perl modules which provides a simple and consistent application programming interface to the World-Wide Web. The main focus of the library is to provide classes and functions that allow you to write WWW clients. The library also contain modules that are of more general use and even classes that help you implement simple HTTP servers.
Stars: ✭ 161 (-0.62%)
Mutual labels:  hacktoberfest
Yaaf
Easing the form object pattern in Rails applications
Stars: ✭ 161 (-0.62%)
Mutual labels:  hacktoberfest
Awesome Programming Presentations
Presentations that programmers should watch
Stars: ✭ 162 (+0%)
Mutual labels:  hacktoberfest
Mobile Toolkit
📱 Shell scripts for Android and iOS device management
Stars: ✭ 161 (-0.62%)
Mutual labels:  hacktoberfest
Glidex
glidex.forms is a library using Glide for faster Xamarin.Forms images on Android. Find out more about Glide at https://github.com/bumptech/glide
Stars: ✭ 162 (+0%)
Mutual labels:  hacktoberfest
Funnyalgorithms
A repository with a bunch of funny algorithms, beginners friendly
Stars: ✭ 161 (-0.62%)
Mutual labels:  hacktoberfest
Datascience Pizza
🍕 Repositório para juntar informações sobre materiais de estudo em análise de dados e áreas afins, empresas que trabalham com dados e dicionário de conceitos
Stars: ✭ 2,043 (+1161.11%)
Mutual labels:  hacktoberfest
Nimbus Eth2
Nim implementation of the Ethereum 2.0 blockchain
Stars: ✭ 162 (+0%)
Mutual labels:  hacktoberfest
Standup Raven
A Mattermost plugin for communicating daily standups across teams
Stars: ✭ 161 (-0.62%)
Mutual labels:  hacktoberfest
Vue Materialize Datatable
A fancy Materialize CSS datatable VueJS component.
Stars: ✭ 162 (+0%)
Mutual labels:  hacktoberfest
Kubernetes Scripts
A collection of scripts and commands for various Kubernetes tasks
Stars: ✭ 160 (-1.23%)
Mutual labels:  hacktoberfest
Anitya
A cross-distribution upstream release monitoring project
Stars: ✭ 161 (-0.62%)
Mutual labels:  hacktoberfest
Elm Geometry
2D/3D geometry package for Elm
Stars: ✭ 162 (+0%)
Mutual labels:  hacktoberfest
Ember Cli Addon Docs
Easy, beautiful docs for your OSS Ember addons
Stars: ✭ 162 (+0%)
Mutual labels:  hacktoberfest
Web Shells
Some of the best web shells that you might need!
Stars: ✭ 162 (+0%)
Mutual labels:  hacktoberfest

PursuedPyBear

Documentation Status

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 its 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 type to the system is as simple as firing an instance of your new event class with signal. 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. Each object only has enough information to respond to the event provided, which always includes the current Scene. 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.

Fun

One of the maintainers put it best:

If it’s not fun to use, we should redo it

ppb is about filing off the rough edges so that the joy of creation and discovery are both emphasized. A new user should be able to build their first game in a few hours, and continue exploring beyond that.

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
from ppb.features.default_sprites import TargetSprite


class Ship(TargetSprite):
    target = ppb.Vector(0, 40)


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


ppb.run(setup=setup)

Depending on your operating system, you may need to install additional packages (see installation guide).

Compatibility

ppb is guaranteed compatible with Python 3.6 or later.

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 relevant portions of Contributing.MD

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].