ClanLib is a medium level development kit. At its lowest level, it provides a platform independent way of dealing with display, sound, input, networking, files, threading, etc. Beyond that ClanLib builds a generic game development framework, giving you easy handling of resources, network object replication, graphical user interfaces (GUI) with theme support, game scripting and more. It lets game developers avoid lowlevel trivials like setting up a directdraw window, sound mixing, reading image files, etc. All those things are simplified into object oriented classes and function calls. ClanLib uses a resource system to keep track of images, fonts, samples and music. It supports Targa, PCX, JPEG, PNG and BMP for images; wave files for sample; and Ogg Vorbis and MikMod for music. The resource system separates physical data formats from your code, and makes it easy to make themes and other plugins for your game. All classes in clanlib focus on making simple interfaces that are customizeable and expandable. This keeps your game code clean and simple, but still lets you to do advanced work. ClanLib is object oriented, which lets you operate at both high and low levels, minimizing redundant code but still letting you do things not supported by clanlib's high level APIs.