Pygame: Difference between revisions

From OLPC
Jump to navigation Jump to search
No edit summary
No edit summary
Line 3: Line 3:
[http://www.pygame.org Pygame] is the most commonly used library for creating Python games. In design it is a wrapper around the Simple DirectMedia Library (SDL), which provides a low-level interface suitable for doing reasonably efficient 2D games.
[http://www.pygame.org Pygame] is the most commonly used library for creating Python games. In design it is a wrapper around the Simple DirectMedia Library (SDL), which provides a low-level interface suitable for doing reasonably efficient 2D games.


See '''[[Game development HOWTO]]''' for details on usage.
See '''[[Game development HOWTO]]''' or [[Pygame wrapper]] for details on usage.


== Pygame on the OLPC XO ==
== Pygame on the OLPC XO ==
Line 9: Line 9:
Work in progress allows Pygame via SDL to interact with the Sugar (GTK and DBUS) environment. Discussions and announcements normally occur on the [http://mailman.laptop.org/mailman/listinfo/games OLPC Games info/devel OLPC Devel list].
Work in progress allows Pygame via SDL to interact with the Sugar (GTK and DBUS) environment. Discussions and announcements normally occur on the [http://mailman.laptop.org/mailman/listinfo/games OLPC Games info/devel OLPC Devel list].


There is a Pygame-to-Sugar wrapper maintained for the XO called 'olpcgames'.
There is a Pygame-to-Sugar wrapper maintained for the XO called 'olpcgames'. See [[Pygame wrapper]] for documentation.


* The SDL Pygame wrapper allows for nested Pygame windows using a separate thread. It forwards GTK events and converts them to Pygame events. If you use SDL Pygame (the default), you need to be aware of a few OLPC-specific things:
* The SDL Pygame wrapper allows for nested Pygame windows using a separate thread. It forwards GTK events and converts them to Pygame events. If you use SDL Pygame (the default), you need to be aware of a few OLPC-specific things:

Revision as of 19:36, 12 July 2007

  english | 한국어| español HowTo [ID# 50302]  +/-  


Pygame is the most commonly used library for creating Python games. In design it is a wrapper around the Simple DirectMedia Library (SDL), which provides a low-level interface suitable for doing reasonably efficient 2D games.

See Game development HOWTO or Pygame wrapper for details on usage.

Pygame on the OLPC XO

Work in progress allows Pygame via SDL to interact with the Sugar (GTK and DBUS) environment. Discussions and announcements normally occur on the OLPC Games info/devel OLPC Devel list.

There is a Pygame-to-Sugar wrapper maintained for the XO called 'olpcgames'. See Pygame wrapper for documentation.

  • The SDL Pygame wrapper allows for nested Pygame windows using a separate thread. It forwards GTK events and converts them to Pygame events. If you use SDL Pygame (the default), you need to be aware of a few OLPC-specific things:
    • You cannot set the display mode using pygame.display.set_mode. You must set it in the wrapper boilerplate instead (see Game development HOWTO).
    • Don't use the regular Pygame.font text drawing. You can use the wrapper to draw text using the 'olpcgames.pangofont' module. See Game development HOWTO#Fonts for more information.

Native Pygame events: Keyboard and mouse work. The "gamepad" buttons on the left and right of the screen come in as Numpad number keys (the d-pad is 8,2,4,6 and the buttons are 1,3,7,9). Window resizing probably doesn't work well yet (i.e., resizing windows via the screen rotate button), but we will try to get this working soon.

Mesh, microphone, camera, fonts: see Game development HOWTO.

Libraries

There are a number of libraries written on top of the Pygame system which provide simple mechanisms for creating games of certain types. These libraries make it possible for relatively young children to write games and for older children to write games of sufficient polish to distribute to others.

Among the libraries written on top of Pygame that might be useful in setting up a Game development sub-curriculum (or simply in making it easier to develop games for the OLPC):

* Pygsear
* Childsplay
* Gasp

Rationale and Discussion

Games are an important part of learning. Projects based on pygame that can be helpful for children who want to develop games for themselves and their friends.

The idea is to develop a curriculum that teaches older kids to Game Programming for the OLPC using Python and Pygame. They can then write additional games/activities for the Childsplay environment for younger kids.

Original email sent by Mamading Ceesay to Python-UK mailing list on Friday 20th May 2005:

One of the threads at the last London Python Meetup was about Python
for Kids.  Specifically about how to get kids into Python programming
and possibly how to get Python taught in Schools.  There was mention
of the Livewires python tutorial material for example.

Simon B. in particular (IIRC) was interested in Turtle Graphics for
Python (a la Logo).  Along similar lines, but drawing upon the Karel
the Robot tradition there is
RUR-PLE where there is a robot that is controlled using Python syntax,
 there is a set of lessons provided where the student has to
accomplish progressively complex tasks with the robot using Python
syntax introduced in the course of the lessons.  An overview of
RUR-PLE can be found at  http://rur-ple.sourceforge.net/en/help.htm. 
It's based on wxPython.

I have a young nephew who has just reached school age, so right now
I'm more concerned about him having educational games and software
than programming.  Being able to extend/enhance the software in Python
would be useful though.  Childsplay http://childsplay.sourceforge.net/
is just the thing, it's a suite of educational games for young
children along similar lines to Gcompris but without the C/C++ code
and GNOME dependencies.  It's based on Pygame and is cross-platform. 
It only has two games bundled, you have to install the plugins to get
the other available games.  Games are written as plugins in python
that run in the Childsplay environment.  Ideally, you might get your
older kids to write new game plugins to keep your younger ones amused,
just an idle thought! ;-)  Anyway, I intend to try out Childsplay on
the nephew this weekend.

Follow-up email sent by Mamading Ceesay to the Python-UK mailing list on Saturday 11th June 2005:

The nephew loves it and will nag me to fire up my laptop so that he
can run Childsplay.  Especially the PacKids game, which is quite
useful from the spelling and pronounciation perspective as well as
being entertaining.

The main drawback with Childsplay so far, is that most of the
games/activities are lacking in levels.  The project clearly needs
more developers to add more  levels and games/activities.  Perhaps it
might even be worth organizing a sprint at something like the rumoured
forthcoming PyCon UK.  Alternatively, the London Python Meetup crew
might like to do something.

Follow-up email sent by Mamading Ceesay to the Python-UK mailing list on Friday 21 October 2005:

Check out the Livewires course and see if it suits:
http://www.livewires.org.uk/python/

Alternatively, there's a new Beginning Python book which has 10
projects to build in the last third of the book:
http://apress.com/book/bookDisplay.html?bID=10013

I have been toying with the idea of getting some funding to develop
and run a Python course for kids with a focus on Game and Multimedia
programming.

First milestone - contact Pygame and Childsplay developer mailing lists to garner developer interest in this project.

See also