Skip to main content
Python Software Foundation 20th Year Anniversary Fundraiser  Donate today!

A simple game framework

Project description


Quest provides a simpler interface to python's Arcade library.


Quest runs on Python3. Quest will be distributed on PyPI, so that you can install it with pip. But for now, you have to install it manually. As usual, a virtual env is recommended but not required.

$ python3 -m venv env
$ source env/bin/activate
$ git clone
$ cd quest
$ pip install -r requirements.txt
$ pip install -e .
$ cd quest/examples
$ python

The point is to subclass the classes provided in the framework to make your own game. There will be documentation explaining how all the code works, but it doesn't exist yet. So you'll just have to read the source!

Creating sprites and maps


  • Test case: Create beast game.
    • TilePhysicsEngine
    • NPC Strategy
      • Wrap sprites in simpler class (including animated textures, sounds, callbacks)
      • Doesn't currently work.
  • Write documentation




  • Object-oriented programming
    • classes
    • inheritance
  • Tick-based time system
  • Introductory algorithms
    • terrain/maze generation
    • NPC behavior
  • Using logging for evaluation


  • Collaboration (students will work in groups to create a game)
  • Planning (especially considering alternative possible implementations)
  • Reading documentation
  • Reading source code; navigating multiple-file projects
  • Subclassing to change behavior of exisiting system

Possible Activities

  • Have students trace inheritance chain of classes, list method instances.
  • Have students trace call execution through class methods
  • Have students implement subclasses using method hooks
  • Observe default behavior of existing framework and tracing the codebase to find where
  • Make trivial changes via subclassing. Each can be achieved by adding a single property:
    • change the player sprite filename
    • scale the player sprite to be larger or smaller.
    • change the player speed
  • Make small changes by overriding methods (with low task complexity)
    • change the input keys
    • add a "run" mode: the character goes faster while spacebar is pressed
    • load a different map (eg load a Maze map but change the number of stars)
  • Plan possible implementation strategies
    • Give students a list of possible game mechanics (eg an enemy chases you; add an inventory; moving between maps; a way to win the game; a key unlocks a door) and have them write a plan of what could be overridden/extended to make it happen.
  • As groups start developing games, brainstorm needed features as a class, and collaborate on implementing them. (This will reward good design, as we want an inventory system or an enemy behavior system that can work for everyone.)

Project details

Download files

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

Files for questgame, version 0.1.11
Filename, size File type Python version Upload date Hashes
Filename, size questgame-0.1.11-py3-none-any.whl (798.8 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size questgame-0.1.11.tar.gz (725.9 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page