CRT-XY Library

comparison-rockdodge.png - Screenshot.
Draw lines, make games.

Jump to: Purpose | What's the Point? | Goal | Screenshots | Download | Documentation | Help Me! | Links | Comments | Contact



"Star Wars" by Atari, 1983

The purpose of "libcrtxy" is to provide an easy way to create vector-graphics-basic games, similar to arcade games of the late 1970s and early 1980s, such as Star Wars (KLOV | Wikipedia), Battlezone (KLOV | Wikipedia), Lunar Lander (KLOV | Wikipedia), Asteroids (KLOV | Wikipedia), Tempest (KLOV | Wikipedia), and, of course, Space Wars (KLOV | Wikipedia).

What's the Point?

Some of my first games for modern systems (X-Window on Solaris in the late 1990s) were 3D games drawn using vector outlines (e.g., ICBM3D). One of my games, Vectoroids, has been ported to many platforms, including mobile devices and handheld game systems. This is no doubt because it's scalable (thanks to vector graphics), doesn't require much horsepower (it uses fixed-point math and trigonometric look-up tables), and is written atop a highly portable library (libSDL).

"Vectoroids" on an i-Station V43 music player
(Original, libSDL-based version)

I have a number of years experience doing cellphone game development on BREW and J2ME. The games that were easiest to port were some classic-arcade-style vector games, for the same reasons Vectoroids has been ported so often.

While doing mobile game development, one learns that there are many screen sizes to deal with, many CPU speeds to deal with, and therefore it's easiest to think of your game in a virtual canvas, and map those positions onto the physical screen. To keep gameplay timing and movement close, regardless of the different sizes and speeds of phone it will run on, frame-rate independent code works best.

libcrtxy puts these concepts together into a light API on top of libSDL.


My goals for libcrtxy are:


Below are some screenshots of the test programs that come with libcrtxy's source. When comparing two renders, remember that the game was not recompiled. libcrtxy itself was given a different set of options — via the library's configuration file, via command-line options to the app. which were then passed to the library, and/or via environment variable.

Drawlines demo at 320x200. Anti-aliasing, alpha-blending and backgrounds are all off.

Drawlines demo at 320x200. Anti-aliasing, alpha-blending and backgrounds are all on.

Rockdodge demo at 320x200. Anti-aliasing, alpha-blending are on.



You can browse the documentation (generated with 'doxygen') via the web interface to the CVS repository:

Help Me!

I'm looking for help implementing all of the neat things I'd like libcrtxy to do! Know OpenGL and SDL? Can you build library DLLs for Windows? Etc.!




Using the mailing list is preferred, but you can also email Bill directly at: You can also find Bill on the libSDL IRC channel on Freenode, #sdl; nickname: kendrick or kendwork.

Hosted by