sge project site
I started this engine a few years ago. My primary aim at that time was to learn and practice good C++. Today I would like to share my programming work and to bring new developers and users to it.
The engine is written in clean C++ and makes heavy use of RAII and the library 'boost'.
The whole user interface is standard C++ only and doesn't require the user to include any non standard headers besides the engine's own headers nor to use any platform or library dependant functions or structures. The aforementioned headers are not even included indirectly (except the boost headers).
Specific backends like opengl are plugins which can be loaded and unloaded at runtime. For every plugin type there is an abstract core interface plus additional interfaces that can be obtained from those. Here are the plugin types supported by sge:
- audio_loader (wave, vorbis)
- audio_player (openal)
- font (freetype)
- image (devil)
- input (X11, direct input)
- renderer (opengl, direct3d9)
The current codebase in git is considered to be in alpha state.
- Most opengl functionality.
- Mouse and keyboard using the X input plugin or the direct input plugin.
- Playing sounds using the openal audio plugin.
- Loading wave and ogg vorbis files.
- Loading images using the devil image plugin.
- 'Making' fonts using the freetype font plugin.
- Rendering fonts using the engine's font architecture.
- A full automated and texture efficient sprite engine.
- A console.
- Basic md3 loading support.
- Basic GLSL support.
- A gui with buttons, text edits, a list with vertical scrollbar, a checkbox, static text, graphical buttons and frames. (a new gui is currently under development.)
- Some parts of the math library should be replaced with something more appropriate.
- 3d rendering facilities such as model loaders, scene graphs and more.
- HLSL and mabye Cg support.
- Joystick support.
- Of course there is always more…
You just enter the following in a terminal:
git clone git://git.tuxfamily.org/gitroot/sge/spacegameengine.git
You can either use cmake (which is recommended) or the Code::Blocks project files.
Building plugins or the test application(s) is optional.
To start the build run
cmake . and pass the options to enable what you need. The following options may be specified:
-DCMAKE_INSTALL_PREFIX=/where/to/install (important: This is your installation destination which is usually /usr)
-D ENABLE_DEVIL:=1 (build the devil plugin)
-D ENABLE_DINPUT:=1 (build the direct input plugin)
-D ENABLE_DGA:=1 (build dga support)
-D ENABLE_FREETYPE:=1 (build the freetype plugin)
-D ENABLE_GUI:=1 (build the gui)
-D ENABLE_OPENAL:=1 (build the openal plugin)
-D ENABLE_OPENGL:=1 (build the opengl plugin)
-D ENABLE_TEST:=1 (build the test application)
-D ENABLE_VORBIS:=1 (build the vorbis plugin)
-D ENABLE_WAVE:=1 (build the wave plugin)
-D ENABLE_XINPUT:=1 (build the xinput plugin)
For Gentoo users an ebuild is provided in the repository.
Note that some of these libraries may in turn require additional libraries by themselves.
- boost (1.35 or later is required)
- X (Linux only)
- devil: devil
- direct input: DirectX SDK
- freetype: freetype
- openal: openal
- opengl: glew, xf86vidmode (for optional fullscreen mode, Linux only)
- vorbis: libvorbis
- xinput: xf86dga (for optional dga support, Linux only)