On 12.07.2011 20:12, Brian Brown wrote:
Thanks guys,
I'm not using Pyopengl. (I found it a little too hard to use.)
Pygame and SDL are working perfectly for me-- except-- I need faster
blitting. That's all, I think.
I've designed my game's graphics to simply rely on the blitting of
many 60x60 24-bit surfaces. (Approximately 300 to 500 blits per frame
on a scrolling screen of 640x480 resolution. The game is tile based
with an overlapping 3D illusion. The floor is drawn first, the "mat"
second, and the characters and "blocks" sorted by distance from bottom
of screen are last. Should look fantastic when graphics are finished
and when the fps is higher.)
If SDL 1.3 will blit basic 24-bit surfaces (with a single colorkey) 3x
faster I think my game will work quite nicely.
* I am using convert().
* I'm _not_ using per-pixel-alpha.
* I even blit the freshly-loaded-surfaces onto a new surface to be
sure the surfaces haven't inherited any unnecessary data from the png
file. (I found this to significantly increase speed.)
* The whole screen is scrolling so I use pygame.display.flip().
* I think I'm using 24-bit images.
* I need a high refresh rate for high speed chases with the local
wildlife . . . (bear, tigers, unicorns etc.)
* I'll have to try using surface.fill() instead of blitting . . .
* My program's code is already running at a nice speed.
Sounds like a great idea to continue programming with pygame and then
later speed things up, but--
It's just a little harder to program with slow graphics --My personal
policy for low stress programming is to reward myself after every day
of hard work by playing the game, and it's not the most fun in slow
motion.
Is there a way to convert 24-bit pygame surfaces to 8 bit RLE just
to temporarily speed things up for testing?
Thanks for the great advice guys.
On Tue, Jul 12, 2011 at 6:14 AM, René Dudfield <ren...@gmail.com
<mailto:ren...@gmail.com>> wrote:
On Tue, Jul 12, 2011 at 1:59 PM, Sean Wolfe <ether....@gmail.com
<mailto:ether....@gmail.com>> wrote:
Dude this was a really good answer. Rrrrrespect
Indeed, good answer.
Also, are you using fast rendering techniques?
* Using 8 bit RLE encoded surfaces for the low colour depth images
* avoiding per pixel alpha surfaces.
* using convert() appropriately (except not on those low
colour surfaces).
* using fill() to fill in colours instead of blit.
* using LayeredDirty sprite group, and DirtySprite sprites to
do dirty rectangle updates.
* updating parts of the screen at the lowest refresh rate they
need. eg, displaying fps, may only need be done once every
10 frames.
* profiled your game ( to see which parts are slow.)
http://pygame.org/wiki/Profiling
SDL 1.3 is faster with opengl/direct3d surfaces. But it's _still
not finished.
cu.
Hi
Just a side note: If you have a scrolling world then blit only the
visible parts, that will give you a performance boost (not sure if you
do this already).
~DR0ID