Colobot
Colobot Documentation

Doxygen documentation of Colobot: Gold Edition project.

Colobot (COLOnize with BOTs) is a game combining elements of real time strategy (RTS) and educational game, aiming to teach programming through entertainment. You are playing as an astronaut on a journey with robot helpers to find a planet for colonization. It features a C++ and Java-like, object-oriented language, CBOT, which can be used to program the robots available in the game.

The original version of the game was developed by Epsitec and released in 2001. Later, in 2005 another version named Ceebot was released. In March 2012, through attempts by Polish Colobot fans, Epsitec agreeed to release the source code of the game on GPLv3 license. The license was given specfifically to our community, TerranovaTeam, part of International Colobot Community (ICC) (previously known as Polish Portal of Colobot (PPC); Polish: Polski Portal Colobota) with our website at http://colobot.info/.

Introduction

The source code released by Epitec was sparsely documented. This documentation, written from scratch, will aim to describe the various components of the code.

Currently, the only documented classes are the ones written from scratch or the old ones rewritten to match the new code. In time, the documentation will be extended to cover every major part of the code.

Code structure

The source code was split from the original all-in-one directory to subdirectories, each containing one major part of the project. The current layout is the following:

  • src/CBot - separate library with CBot language
  • src/app - class CApplication and everything concerned with SDL
  • src/common - shared structs, enums, defines, etc.; should not have any external dependencies
  • src/common/resources - filesystem management using PHYSFS library
  • src/common/system - system-dependent code such as displaying a message box, finding files, etc.
  • src/common/thread - wrapper classes for SDL threads
  • src/graphics/core - abstract interface of graphics device (abstract CDevice class)
  • src/graphics/engine - main graphics engine based on abstract graphics device; is composed of CEngine class and associated classes implementing the 3D engine
  • src/graphics/model - code related to loading/saving model files
  • src/graphics/opengl - concrete implementation of CDevice class in OpenGL: CGLDevice
  • src/graphics/d3d - in (far) future - perhaps a newer implementation in DirectX (9? 10?)
  • src/math - mathematical structures and functions
  • src/object - non-grphical game object logic, that is robots, buildings, etc.
  • src/level - main part of non-graphical game engine, that is loading levels etc.
  • src/level/parser - parser for loading/saving level files from format known as scene files
  • src/ui - 2D user interface (menu, buttons, check boxes, etc.)
  • src/sound - sound and music engine written using fmod library
  • src/physics - physics engine
  • src/script - link with the CBot library