[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[pygame] GSoC Proposal

Hi team,

I'm Casey, a student of computer science and computer game design at UC Santa Cruz beginning this fall. For game programming, I've been using Allegro for a few years now, I've gained some experience with SDL and XNA in the last year, and I've been using pygame for about 6 months. I greatly prefer Python to C/C++/C#, but pygame has some drawbacks that prevent me from making a total transition right away. To explain, first a few things about my approach to game design:

* I tend to code retro-style 2D games in low resolutions: 320x240 or 640x480.
* Fullscreen mode is excessive for these types of games, so I never use it.
* Low resolution games can be unplayable in windowed mode, so I stretch the buffer, and apply scale2x if it suits the graphics.

Because pygame doesn't support hardware acceleration in windowed mode, I'm stuck with software rendering, which is super slow for side-scrollers where dirty rectangles are not an option. The console style platformer and RPG engines I'm working on get an average of 30-45 FPS on most hardware, and I have yet to see them run at the full refresh rate on any of the hardware I've tested them on.

To address these issues, I would like to code a library that overloads pygame's graphics modules with OpenGL enhanced ones. I know that some 2D OpenGL libraries exists, but none of them do what I would like them to, and what I think would be most beneficial to the community, which is to play nice with existing code.

What I'm proposing is essentially a wrapper, with which one could theoretically take any existing game, add the line "from [proposed library].locals import *", set the mode to OPENGL, and it would run exactly as expected with improved OpenGL powered rendering. Of course, that might not be possible for all code (it depends on how it's written), but the fundamental idea is to make learning and implementing the proposed library as painless as possible.

Before I elaborate any further, I'll leave this open to questions and comments. If anything is not clear, let me know.

To conclude, I've been thinking about this for a while now and I'm confident I could implement it within the GSoC timeframe. Also, I would be pleased to continue to maintain it when the summer is over, since I would undoubtedly be applying it to my personal and academic projects.

Looking forward to comments and suggestions...