Why...
... do all most free modern Linux games with
1993-era graphics and gameplay (which is a feature, not a bug) require
2009-era computers?
Take Freetennis, as an example. A few years back, my brother used to play a game called just "tennis" on my parent's 133Mhz computer. It looked about the same, had a slightly larger number of features, and ran pretty quickly on that system.
Freetennis doesn't work on my laptop, because it hogs the CPU and doesn't appear to be getting enough. Especially not if I try to run it fullscreen.
My laptop is a 1.3Ghz PowerPC G4.
Now if it were just freetennis, I wouldn't care much. But it's a lot, lot more. The only game which I've found that does not make my laptop squirm and die is a little game called "Starfighter". But only barely so, and only if I do not run it fullscreen.
I blame the layers and layers and layers and layers and layers and layers of SDL and X and libpng and libalsaplayer and other utter crap that are between my CPU on the one side, and the output devices on my laptop on the other side.
Especially SDL.
Not Happy.
Did you check your X configuration ? check your gl acceleration is ON ? etc. I had a big surprise when I actually took the time to configure this stuff on my pc.
If you're using etch you might want to look at bug #377287 (assuming of course you got hardware acceleration working at all).
The etch version of libsdl1.2 can't do HW acceleration, which was fixed in 1.2.11-1.
Programs using libsdl (e.g. for sound), but doing their GL operations using libgl1.so directly are not affected.
HTH, Christian Aichinger
SDL is pretty damn cool on its own and works great on (for instance) embedded devices with touchscreen interfaces which I won't name here. Yes, on fairly limited hardware (compared to what you're running on, anyway).
The problem is X11. X11 is not designed for high-throughput. X11 is designed for high flexibility and network transparancy.
I just tried quake2 on my X40. I've recently installed the glx packages from experimental, but to put a long story short. Quake2 is a little choppy at times.
I had to fiddle quite a bit, just to make sound playback properly.
Quake2 is almost a 10 year old game that doesn't run on probably the best supported Debian machine!
Frozen bubble is like that, too. It's a real CPU hog. SDL is not to blame, well, tangentially perhaps for not having good docs explaining programming essentials, but I don't know if they should really be responsible for doing that.
The games all have busy-loops for their main loop I think.
The problem in my experience is that there is no 2D hardware acceleration either available from X, or maybe it's just not used in SDL (except for DGA, which can only used by root AFAIK). This results in poor framerates for higher resolution games (640x480+), especially when they blit a whole screen every frame. So in my experience the limiting factor is the speed of blitting to the framebuffer.
This is the reason a lot of people use OpenGL even for 2D graphics.
Another thing is that there is no way in SDL to synchronize to the screen refresh rate. This means that some games blit frames as fast as they can (no synch/delay in the main loop), which of course hogs the CPU big time.