A scene from the game "ColorIt"


Type Game / Framework
For University Course, Group Project
Platform(s) Windows Vista, Windows 7
Language(s) C++, HLSL
Libraries DirectX 11, XAudio, XInput, C stdlib, LibRocket, PhysFS
Effort ~ 190 hours

What I did Contribute

  • Simple modular framework in which the game runs
  • Component based object model – Entities are integer IDs, components are retrieved from stores where they are kept in cache-friendly pools
  • Renderer, Shaders for Phong Shading and Normal Mapping, Material System supporting Selective Bloom Post Processing and selective specularity
  • Simple, extensible key frame animation system for model position, orientation, scaling and also material properties such as bloom-intensity or specular exponent/intensity
  • Scriptable in-game console that mediates between sub-systems
  • Various debugging facilities such as a tracing heap allocator, static and run-time assertions (thanks Niklas Frykholm, Charles Nicholson and Tom Forsyth) as well as logging of various debug-streams to files
  • Lightweight in-engine scope profiler
  • LibRocket render interface
  • Sane build configuration (checkout, build, copy the BuildOutput folder containing just the executable, two 3rd-party dlls and an asset archive containing everything from textures to models to compiled shaders)
  • SIMD-optimized cellular automaton simulation and bitmap painting code
  • Cache-efficient Flood Filling algorithm

What I did not contribute

  • Most of the design and gameplay code (Thanks, Martin!)
  • Our cool radial menu (again, Thanks Martin!)
  • Any art assets (would you have guessed: Thanks, Martin! Also thanks Thomas G.!)
  • The Audio Module (even though I regret it)
  • Loading of compressed assets (thanks PhysFS!)
  • Font Rasterization and UI Layout (thanks LibRocket!)
  • Offline Model Converter (fbx > vertex buffer ready model format, thanks Georg!)

The Game

ColorIt is a real time tactics game for two to four players in splitscreen-mode. Players use a Microsoft XBox 360 Controller for Windows to control their cursor across the map. Pressing the A-button will mark the area below their cursor with each player’s respective color. Holding that same button, players can paint paths and figures onto the neutral map. Paths that are connected to their own base building will gradually be conquered by their color. Using this mechanic, players need to first mark and then conquer strategic points that are scattered across the map. As long as strategic points are held by a player, they will contiguously increase that player’s victory score by a fixed amount per time quantum. The player that first manages to completely fill their victory score wins the game.

Players can paint across opponent’s paths and by doing so, cut off their supply. Any territory that is not connected to a player’s base building by at least one path will gradually deteriorate and finally vanish unless it is connected again.

Players can utilize three additional abilities:

  • Placing an outpost by pressing B – This will fortify their own color in the outpost’s vicinity so that opponents cannot simply paint over it
  • Placing bridge heads by pressing X – The first bridge head must be located in their own territory, the second one can be placed anywhere. Once a certain amount of time, dependent on the distance between the bridge heads has passed, the bridge heads will be connected by a path of the building player’s color. Such paths can be interrupted  by placing outposts between bridge heads
  • Placing a nuke by pressing Y – Nukes will detonate after a certain amount of time, neutralizing any territory in their vicinity, even the placing player’s. Nukes can be defused by cutting of their supply line to the base building.


Read my post-mortem analysis of the ColorIt project!


Sadly, I can’t yet offer the complete game for download, as we ponder publishing it with added bells and whistles. That’s also the reason why I can’t offer the complete source code yet, even though I’d like to. I will, however, publish the source code for some interesting modules and link them in the details section of this page.



Die Kommentarfunktion ist geschlossen.