Development:Main
Outlined below is information on assisting with the development of the Spring source itself.
- NOTE: For information about developing a mod (units, maps, etc.) see the Mod Development page.
Below you can find information on how to work with the Spring source in the current mainline (Windows platform) if you like to work on another platform (Linux & Mac) please look at the bottem of this page under "Multiplatform development"
Starting Development
To start development, you'll need
- The latest version of the source
- A good code manipulation program
- Compiling your modified source
Source Code Documentation
A good place to start is the source code documentation, which can be found here: doxygen
An explanation on how the code is executed ingame can be found in the Spring Engine Code page.
Obtaining the Source
If you just want to take a look at the code you can use HTTP based viewing of the repository
Another option is to manually download it along with the latest released version of the game. However, for serious developers, a better way would be to download the source straight from the subversion(SVN) repository. This will also allow you to make a patch out of the changes you make to the code, and send it to one of the developers with SVN access.
More information about downloading from the svn repository is avaiable at the BerliOS Project page Two good windows SVN clients are SmartSVN and TortoiseSVN.
Learning C++
You will need to know C++ to modify or understand Spring's source code. If you're interested in learning C++, see Learning_CPP
However please note that badly designed code (code created by a C++ novice for example), will even if working not be included in the spring code. Spring is a large project, and therefore it is necessary to stay away from hackjobs and create general solutions to problems.
Modifying and Compiling the Source
See Development_IDEs. You either have to use the SCons buildsystem that is used on linux, or use the vcproj for building spring in Visual Studio 2003. Currently the build is actively updated for linux and for Visual Studio 2003 You will needs these libraries:
- Boost C++ library
- OpenAL Audio library
- GLEW (OpenGL extension loading)
- zlib + minizip
- SDL
- DevIL (Image loading)
- Freetype font rendering
Development Suggestions
Before starting to make modifications to the source, take a look at the development guidelines which outlines some important things to think about. To find something interesting to work on, look at the list of example projects. You can also check the list of whois doing what to see what others are doing. If you do edit the code, please add Doxygen style comments to the code, which will then enhance the source code documentation.
How to get your code included
If you create something that you think should be included in the official source tree, you can send an email to the development mailing list shown at Linux page. Sending your code in the form of a patch (also known as a .diff file), will make the chances of including it in the main code. It's also considered standard practice to post one's modifications in the development forum and get feedback.
Multiplatform development
Current development is done on the portable code only, located at Berlios All future releases will be based on this code. The current spring code is being developed on Windows and linux. A mac port, as well as other unixes, is very possible, but currently no developers are working on this. Use the mailing list listed on the Linux page to reach all developers (windows and linux). However if you have a feature request or bug report, the mantis bugtracker is probably a better way. Development information about the portable code can be found here: MultiplatformSpring
Spring Engine TODO list
There is a TODO list for developers who want to contribute to the engine itself: SpringEngineTODO
See Glossary