games
A Sprite Engine...
from a Slightly Different Point of View
Kyra is a simple, fully featured, industrial strength Sprite engine written in C++. It is built on
top of SDL and has been tested on Windows and Linux. It is provided free for open source projects
under the GPL and LGPL.
What is a Sprite Engine? A Sprite Engine is the drawing and rendering component of 2D and quasi-3D
games. Examples of this kind of game are Civilization, Donkey Kong (classic arcade), Pharaoh, Zeus,
Warcraft, Diablo, Frogger, and Pirates!, among many others. It is so called because the "characters"
or "little men" are referred to as "sprites".
Simple and Easy to Use. Kyra has a clean and simple C++ interface. Or at least as simple as an engine
can be. It comes with several examples to get you started, as well as full documentation for the API
and the tool chain.
Fully Featured. It is fully featured, supporting top-down, side, and isometric rendering. It supports
the 'Sprite' as its basic type, but also supports Tiles and user-drawn Canvases. It can draw to a
traditional bitmap surface, and supports OpenGL hardware acceleration.
Industrial Strength. Kyra has a complete tool chain including a sprite editor and encoder. It's fast
and capable, with specialized code for rendering and rectangle updates.
...From a Slightly Different Point of View. But Kyra does some things differently. It supports color
transformations and alpha blending (!). All objects in Kyra are inserted into a containment
hierarchy, and children are transformed by their parents. So a complex object can be moved simply by
changing the coordinates of the top level object, and color transformations and alpha transformations
work the same way. The alpha blending can be applied at a per-image or per-pixel level.
Objects can be scaled up or down when drawn, or scaling can be pre-cached. The screen can be split
into sub window views, and each view has its own object transformations.
Use as is. Kyra is currently working and ready for use. You can put it into your programs and start
using it now. It has been used enough to mature some and be already bug fixed. On the other hand, if
you're someone who likes to get involved, there are still optimization and feature opportunities in
the code.