2.24.2012

Imperial Toolkit

The Imperial Toolkit (ITK) is a project designed for games, software rendering and currently also multithreaded task-based program execution. It's the result of a process of getting proficiency in C/C++, finding generic, reusable and efficient ways of coding frame-based games, simulations and other sorts of related programs. Though there is very little code, it's designed with care and thought about performance, crossplatform compatibility and whatever one might want to have in an actual toolkit - not a framework. Thus, there are very few things actually forcing one to specific ways of coding or programming paradigms. It can be seen as the essence of all the hurdles I encountered during my quest for making "the game", which does of course also include "the technology" - which's definition is still something I cannot exactly define nor find. It started off as a collection of C++ classes with an heavy emphasis on templates and inlining but turned into a C project due to higher compiler predictability and lack of tasks that profit from OOP and C++ features.

Seen from a more pragmatic point of view, it's a set of loosely bound macros and functions which's actual use depends on how creative one's able to combine them. They can, however, serve as a very competent base for quick coding of mandatory engine features. For example, most of Imperial Graphics Engine's functionality (which can also be found here) was coded in just two days using ITK. More features will be added in the future if I can find worthwhile, reusable additions. There's a basic doxygen-style documentation within the code, but it doesn't cover all details yet as well as important things like certain function call orders. ITK's also not free of bugs and it shoud be used with care in the current release.

Currently covered functionalities:
  • Sentinel node lists/items/rings and related iteration/sorting
  • Object pool management
  • Simple state machines
  • Patchwork vector operations
  • Loop and index calculation macros for n-dimensional arrays
  • Hash arrays
  • Four-state logic
  • Logic-based function flow control
  • Custom thread system with pause/resume on a pthread base
  • Synchronization with reduced racing conditions
  • Task-oriented program flow
  • Multithreaded event programming
  • Streaming, demand-based ressource management
  • Multithreaded, correctly timed debug logging

    Planned and WIP modules
  • Shape tracing macros (for rendering)
  • Basic serialization
  • Generic text and binary data parsing/assembling
  • Matrix operations

    Library dependencies:
    SDL

    License:
    Modified BSD License

    Download:
    ITK Release 0b
  • No comments: