Kosu is an OpenTK-based C# framework for rapid game development targeting desktop and mobile platforms. It's currently in early development therefore expect frequent API breaking changes!


  • Game flow through finite state machine with callbacks for input processing.
  • Loading and rendering AngelCode BMFont bitmap fonts.
  • Loading of sprite sheets created using Sprite Sheet Packer and libgdx TexturePacker.
  • VBO based class for non-indexed/indexed meshes.
  • Platform independent texture loading and filesystem access.
  • SpriteBatch/Cache for easy rendering of dynamic/static 2D sprite scenes.
  • Simple classes for easy sound/music playback.
  • Orthographic and perspective cameras.
  • Basic 3D math support (vectors, matrix, frustum culling, ray triangle intersection).


  • Mono/.NET 4.0 VM
  • OpenTK
  • csvorbis (not on Android)

Supported platforms:

  • Windows
  • Mac OS X
  • Linux
  • Android (through Mono for Android)
  • iOS (through MonoTouch)


  • Unit tests and interactive tests for Kosu are located here.
  • Here's a screencast showing how to use an early version of Kosu.
  • Look at this open sourced game as a sample for using Kosu in its current state.
  • Set up game using Kosu by creating new solution and adding Kosu project for the platform used and referencing it in the game project.
  • Assets are currently by convention placed in a "data"-Folder inside the game project. All asset files should be marked "Content".


High priority:

  • Correctly handling rotation and hide/resume on Android.
  • GLES2 support on mobile. Possibly reimplementing fixed function pipeline capabilities on top of GLES2 as default.
  • Stream ogg into pcm and feed it to OpenAL on desktop vs. decoding the entire file and keeping the PCM byte buffer in memory. See also this.

Low priority:

  • Finish simple text input support (currently already implemented for iOS).
  • Finishing SettingsUI feature allowing quickly setting up cross-platform setting dialogs.

  • Exploring possibilities for more OpenTK independence.

  • Windows Phone 7 and Xbox 360 support by implementing used OpenTK functionality using XNA.
  • Windows Phone 8 support by implementing used OpenTK functionality using SharpDX.
  • Possibly PS Vita support.