The Sprite32 Project
Originally written by Jeff Read, Sprite32 is a compact, portable, extensible C++ library for developing 2D, sprite-based games and other diversions in an object-oriented manner. In contrast to other free software game development libraries, Sprite32 offers the advantage of an unusual combination of small size and remarkable power. This makes it potentially suitable for development on smaller capacity devices like PDAs and handheld game systems, in addition to desktop and laptop PC's.
Sprite32 is currently only available for 32-bit (hence the name) systems which are Unix-like enough to support X11R6. However, there are currently two renderers available: an X11 SHM renderer and an OpenGL renderer. The library is designed to be extensible to other window managers and graphical subsystems, even bare framebuffer devices if need be, and is also designed as a simple, thin abstraction layer with a small, easily comprehensible API.
This library only deals with sprite-based animation. It does not solve other problems, like sound and music. A multichannel sound library designed to work well with Sprite32 is, however, in the works.
Sprite32 is licensed under the terms of the GNU General Public License (not LGPL). This means any code that you write which uses Sprite32 as a library must also be released under the GPL. This choice of license was made for several reasons:
- I wanted to preserve Sprite32's status as free software at all times, especially if I should decide to discontinue involvement with the project at some later date.
- Sprite32 incorporates GPLed routines from a standalone image viewing program in order to do some low-level pixel format conversions.
- RMS said so :). While the FSF's official stance that new, original libraries should be GPLed is, to some, offputting to the non-free software community and hence harmful to free software, games enjoy a special status: it is perfectly acceptable to have a GPLed game engine and level data, graphics, sounds, etc. under different copyright terms. For examples of this I refer you to the GPL-released Doom and Quake engines from id Software.
Planned enhancements, in roughly descending order of importance:
- Dynamic libs for more platforms, especially the BSDs and Win32.
- Display/event back ends for more window systems: SDL, Win32, and raw Linux hardware drivers (draw on the framebuffer device, poll keyboard and mouse events).
- PNG support and alpha blending.
- Affine transforms for scaling, rotating, and shearing sprites.
- Loadable module support.
- Resource-based image loader.
- Scripting engine support for either Guile or SCM.
You may download current Sprite32 releases here.
You may also visit the project homepage to keep abreast of development.
Copyright (c) 2003 Jeffrey T. Read.