NOTE: This is a preliminary template, basically copied from the GSoC ideas list of 2009. Be aware that it is not clear, how pygame will participate in the GSoC of 2010. Do not let that stop you from getting into touch with pygame, though. You can express your interest in participating as a GSoC student at any time.
Pygame might mentor some students under the Python Software Foundation (PSF) umbrella or as an own organization for Google Summer of Code 2010. If you are an interested student or mentor, please contact us on the Mailing List or IRC Channel to discuss ideas. You should also take a look at PSF's GSoC pages:
Student Application Template
Students should adhere to this application format when submitting their final proposals, and it is also a useful set of guidelines to consider when forming and discussing a project proposal.
About Your Project
This is a list of projects, sorted by difficulty, that students could take on for GSoC 2009. Feel free to suggest other projects, keeping in mind that they need to be doable in one summer.
These projects can be completed mostly or entirely in Python, or involving porting existing work.
Revive pygame-ctypes for fast prototyping and a better idea flow in both directions (there's a large user base interested in pygame-ctypes)
Reading and understanding C code as well as being familiar with Python and ideally ctypes should be no matter for interested developers.
Improved Sprite and scene system
The sprite system of pygame is currently very specific and does not fit the requirements for many games.
This involves a lot of prototyping, sharing design ideas and to communicate a lot with the whole community. You should have made your first steps with Python already and be highly communicative.
These projects are deeper and would require using the C Python API, and coding in C and Python.
Camera Module for Windows
Pygame currently supports camera access for v4l2 cameras in Linux. Adding Windows support would require knowledge of Video for Windows, DirectShow, or Direct3D. The goal would be to make cameras usable in Windows under the same API as Linux. This project would require using the Python C API. Below are some references:
Simple fasm version that seems to work on a number of computers: http://flatassembler.net/examples/fasmcam.zip
Nehe tutorial on how to use video for windows to read from avis onto opengl textures. http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=35
This requires some knowledge of the Windows API as well as robust C coding skills.
pygame for tinypy
tinypy is a tiny version of python, with less than 64K of source code. Porting pygame so it works on tinypy would mean a very minimal python optimised for pygame games. Your journey will take you to the land where bits and bytes are counted, so be sure to fasten your C belt and have your good C coding skills around.
Easy simple software 3d.
Software 3D with the possible option of adding hardware 3D support would be nice to have. Possibly something like tinyGL being used by pygame , and a few extra parts, or just something like a textured polygon drawer. Basically... model = load_model();model.render(screen, (0,0))
You will require some knowledge about 3D APIs and techniques, good C skills and to be strong enough to survive the 2D vs. 3D debates.
Improved graphics format support
Pygame could deal with even more graphics formats. This would widen its usage fields and allow developers to stick with their preferred graphics requirements.
You already should have some undertanding about colour spaces, image formats and conversion routines as well as good C coding skills.
A pure C library port based on some parts of pygame has been started recently. It aims to clearly isolate certain parts of pygame and wrap them up in a set of functions and modules for C/SDL developers.
You will require good C coding skills, some knowledge about cross-platform development and build systems such as make.
These are extremely difficult projects, and are recommended to be undertaken only if the student has significant prior experience in the subject matter.
OSC is like the new midi protocol for networks. This would let pygame talk to a lot of synths, and music programs. It's a latency aware protocol, so it has high resolution time stamps, and bundles of atomic operations, and you can schedule events in the future etc.
All things which are useful for interactive music stuff, but also for games. There's already code that does this, and pygame would then be more useful for multimedia and art type applications.
Links about it:
http://www.ixi-audio.net/content/body_backyard_python.html - this is using pygame actively for that purpose. Super collider is the main one to note here. It's a cool programmable synth. It is a smalltalk like language, but the synth part runs as a server controlled by OSC. So you can use it from other programs. But other apps can be controlled with OSC too.
You will require strong C skills, having done some network programming already and be really interested in music and synths.
Unsorted or Incomplete
Please help complete these project ideas and categorize their difficulty. Include references to pages with more information if possible, and give a rough outline of what the project would involve, like where to start, and what languages the coding would be in.
Support for importing and rendering SVG files is missing from Pygame. This is currently possible using pycairo to render the image and then loading it into pygame, but a more direct route may be desirable.
pygame on flash
During the europython 2007 pypy sprints some people made a proof of concept pygame running on the flash vm.
Another sprint is going to continue this work at pycon 2008:
Continue this work to get pygame games running unmodified(or mostly unmodified) on flash.
There were something like 12 student applications for this in 2006.
ai. A*, flocking etc.
Get a decent vectorizing compiler like vectorC or an intel compiler to help generate mmx assembly for a lot of stable functions.
Architecture specific modules compiled. This could even take advantage of normal gcc optimization flags, which can give a nice speed boost, eg. surface.so, surface_686.so, surface_x86_64.so.
So the setup.py could be changed to compile with different CFLAGS, and then have the modules load the correct one for the particular cpu at runtime(if the module is available).
Video effect plugins.
Using some of the real time video effect plugins would be good. There's a video effect plugins that would also be kind of fun for games too :)
Probably be a pretty simple module to write to allow using the video effect plugins.
Also some of the video stuff from freej (an SDL based VJ software) could be cool to place into pygame. Of course freej uses livido plugins for effects too.