Development Team/Sugargame

From Sugar Labs
Jump to navigation Jump to search

Sugargame

Sugargame is a Python package which allows Pygame programs to run well under Sugar. It is fork of the olcpgames framework, which is no longer maintained.

Sugargame embeds the Pygame window into a GTK window, and translates GTK events to Pygame events.

What it does:

  • Wraps a Sugar activity around an existing Pygame program with few changes
  • Allows Sugar toolbars and other widgets to be added to the activity UI
  • Provides hooks for saving to and restoring from the Journal

Differences between Sugargame and olpcgames

The olpcgames framework provides a wrapper around Pygame which attempts to allow a Pygame program to run mostly unmodified under Sugar. To this end, the Pygame program is run in a separate thread with its own Pygame message loop while the main thread runs the GTK message loop. Also, olpcgames wraps Sugar APIs such as the journal and mesh into a Pygame-like API.

Sugargame takes a simpler approach; it simply offers a way to embed Pygame into a GTK widget. The Sugar APIs are used to interact with Sugar, the Pygame APIs are used for the game.

Sugargame advantages:

  • Simpler code
  • More elegant interface between Pygame and GTK
  • Runs as a single thread: no thread related segfaults
  • Possible to use Sugar widgets with Pygame

Sugargame limitations:

  • No support for Pango or SVG sprites (yet)

Using Sugargame

To use Sugargame in an activity, copy the sugargame folder into the activity's source directory.

The activity directory should look something like this:

  activity/            - Activity directory: activity.info, SVG icon, etc.
  sugargame/           - Sugargame package
  MyActivity.py        - Activity class
  mygame.py            - Pygame code
  setup.py             - Install script
  

To make the Activity class, start with test/TestActivity.py.

Support

For help with Sugargame, please email the Sugar Labs development list:

sugar-devel@lists.sugarlabs.org

Author

Sugargame is developed by Wade Brainerd <wadetb@gmail.com>.

It is loosely based on the source code to the olpcgames framework, developed by the One Laptop Per Child project.