summaryrefslogtreecommitdiffstats
path: root/README-DEV.txt
blob: 8d0c1aaf1152cd9d845cba9c13fbdc63b67a3d09 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
README for developers

This file outlines the most important things for developers.

1. Goal.

  This branch is the main development branch into which features from other development branches will be pulled in after completing their goals. Currently these branches include:
   * opengl-dev  branch - branch dedicated to rewriting the graphics engine using SDL and OpenGL
   * ...

2. Build system and organisation of directories.

  The directories in the repository are as following:
   src/CBot              separate CBot library
   src/app               class CApplication and everything concerned with SDL plus other system-dependent code such as displaying a message box, finding files, etc.
   src/common            shared structs, enums, defines, etc.; should not have any external dependencies
   src/graphics/common   interface of graphics engine (CEngine) and device (CDevice), without concrete implementation, shared structs such as Vertex, Material, etc., "effects" classes: CCamera, CLight, CParticle that will use the graphics engine interface
   src/graphics/opengl   concrete implementation of CEngine and CDevice classes in OpenGL: CGLEngine and CGLDevice
   src/graphics/d3d      in (far) future - perhaps a newer implementation in DirectX (9? 10?)
   src/math              mathematical structures and functions
   src/object            non-graphical game engine, that is robots, buildings, etc.; dependent only on interface of graphics engine, not on concrete implementation
   src/ui                2D user interface (menu, buttons, check boxes, etc.); also without dependencies to concrete implementation of graphics engine
   src/sound             sound and music engine written using fmod library
   src/physics           physics engine
   src/script            link with the CBot library
   src/old               old modules that will be replaced by new code

  Other directories, not very important right now, include:
   src/doc               contains the Doxygen mainpage text; it will probably be removed to app/main.cpp or some other place soon
   src/metafile          a separate program for packing data files to .dat format

  The build system is as follows:
   /CMakeLists.txt - definition of project, build type setup, general compiler options and reference to src subdirectory
   /src/CMakeLists.txt - currently defines two targets: colobot_old - the original game comprised of old sources, compiles and runs only on Windows; colobot_new - new implementation in SDL, compiles and runs on Windows and Linux, for now only "hello world"-like; colobot_old target references also CBot library
   /src/CBot/CMakeLists.txt - defines the CBot library target

  There is also a generated header common/config.h with #defines set by CMake.

3. For other things, refer to README files in respective feature development branches.