Development:Getting Started: Difference between revisions

From Spring
Jump to navigationJump to search
Hoijui (talk | contribs)
Abma (talk | contribs)
 
(45 intermediate revisions by 7 users not shown)
Line 2: Line 2:


=Starting Spring Development=
=Starting Spring Development=
'''NOTE: Outlined below is information on assisting with the development of the Spring source itself. For information about developing a mod (units, widgets, maps, etc.) see the [[Mod_and_Unit_development]] page.'''
'''NOTE: Outlined below is information on assisting with the development of the Spring source itself. For information about developing a game (units, widgets, maps, etc.) see the [[Gamedev:Main]] page.'''


'''Even if you are developing a mod, it is highly recommended that you get the engine source. Engine source + full text search: DO IT.'''
'''[[EngineSource_for_GameDevs|Even if you are developing a game, it is highly recommended that you get the engine source. Engine source + full text search: DO IT.]]'''


==Overview==
==Overview==
To start development, you will need:
To start development, you will need:
#To read the [[Coding_Standards]]
#To read the [[Coding_Standards]]
#The latest version of the source
#A good code manipulation program: [[Development_IDEs]]
#A good code manipulation program
#[[Building_spring|Compiling]] the source code
#Compiling your modified source (see instructions above)


==Learning C++==
==Learning C++==
Line 18: Line 17:
However please note that badly designed code (code created by a C++ novice for example), even if working will likely not be included in the spring code. Spring is a large project, and therefore it is necessary to stay away from hack jobs and create general solutions to problems.
However please note that badly designed code (code created by a C++ novice for example), even if working will likely not be included in the spring code. Spring is a large project, and therefore it is necessary to stay away from hack jobs and create general solutions to problems.


==Keep track what others do==
=Source Code Documentation=
If you develop with others, you need to know what they do. You can browse the source [http://github.com/spring/spring/tree/master at our github-page], and there is a [http://github.com/feeds/spring/commits/spring/master commit newsfeed].
The [https://springrts.com/dl/buildbot/doc/ doxygen documentation] can provide an overview about the source, directory structure and its dependencies. Unfortunately, there is no server running it, so you need to make them on your own, to do this, install doxygen and run "doxygen" in spring source directory (will take some time).
 
==Source Code Documentation==
The doxygen documentation can provide an overwiev about the source, directory structure and its dependencies. Unfortunately, there s no server runnign it, so you need to make them on your own, to do this, install doxygen and run "doxygen" in spring source directory (will take some time).


An explanation on how the code is executed in game can be found in the [[Spring Engine Code]]
An explanation on how the code is executed in game can be found in the [[Spring Engine Code]]
Line 28: Line 24:


==Development Guidelines==
==Development Guidelines==
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 [[SpringEngineTODO]]. You can also check in the forums 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.
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 for todos in the [http://springrts.com/phpbb/viewforum.php?f=60 forum]. You can also check in the forums 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==
==Keep track what others do==
If you create something that you think should be included in the official source tree, you can report a "bug" in [http://spring.clan-sy.com/mantis/ mantis, our BTS]. Add your patch as attachment, and put "[patch]" in front of the subject, so it is easy for us to separate patches from bugs.
If you develop with others, you need to know what they do. You can browse the source [http://github.com/spring/spring/tree/develop at our github-page], and there is a [http://github.com/feeds/spring/commits/spring/develop commit newsfeed].


It's also considered standard practice to post one's modifications in the [http://spring.clan-sy.com/phpbb/viewforum.php?f=12 development forum] and get feedback.
==Buildbot and Stacktrace translator==
A buildbot server is [http://buildbot.springrts.com/waterfall?reload=60 here] available to automatically compile Spring, the default AIs and make the installer. It can also [http://stacktranslate.springrts.com/ translate stacktraces] directly from uploaded [[infolog.txt]] files.


==Buildbot and Stacktrace translator==
=Important Developer Tasks=
A buildbot server is available to automaticaly compile Spring, the default AIs and make the installer. It can also translate stacktraces directly from uploaded infolog.txt files. Join #buildserv on the lobby server and use !help to get all the available commands.
==[[Engine_Profiling|Profiling]]==
==[[Debugging_sync_errors|How to debug SyncErrors]]==
==[[Debug GFX problems]]==
 
=How to get your code included=
If you create something that you think should be included in the official source tree please create a pull request to the develop branch of the spring repository on github.com.
 
Make sure that your changes:
# Were successfully tested locally.
# Conform with the [[Coding Standards]].
# Are spread over an appropriate amount of commits - Please refrain from combining many individual changes into a single commit and from including merge commits.
# Include an update to the changelog if it's a major change - this is not to save work for the devs, but mostly to provide a concise explanation of what the pull request changes.
 
Post in the [http://springrts.com/phpbb/viewforum.php?f=12 development forum] or drop in [[IRC|#sy]] after creating the pull request (or while coding it) to get feedback and eventually to have it included.
 
=Spring Engine TODO list=
If you want to code something, look into the [http://springrts.com/phpbb/viewforum.php?f=60 New Developers Forum] for TODOs.
There is also a [http://springrts.com/phpbb/viewforum.php?f=21 feature request forum], which may give you some ideas. Don't be overwhelmed by the sheer number of (silly) requests though!
 
Alternatively, you may just search the code for the [http://en.wikipedia.org/wiki/Comment_%28computer_programming%29#Tags famous comment tags],
for example on linux:
{{code|grep -r "TODO" rts}}


==Spring Engine TODO list==
The Bugtracker contains a [http://springrts.com/mantis/view_all_bug_page.php long todo-list] as well.
There is a TODO list for developers who want to contribute to the engine itself:
[[SpringEngineTODO]]. There is also a [http://spring.clan-sy.com/phpbb/viewforum.php?f=21 feature request forum], which may give you some ideas. Don't be overwhelmed by the sheer number of (silly) requests though!


==Development links==
There are also some [[Project_proposals|project proposals]].


=Development links=
* [http://github.com/spring/spring/ View the latest source in a web browser]
* [http://github.com/spring/spring/ View the latest source in a web browser]
* [https://springrts.com/dl/buildbot/doc/{{EngineVersion:Stable}}/engine/ Doxygen documentation]
* [http://springrts.com/mantis/ Bug Tracking System]
* [http://springrts.com/mantis/ Bug Tracking System]
* [http://springrts.com/dl/docs/unitsync/group__unitsync__api.html Unitsync API docs]
* [http://buildbot.springrts.com/waterfall?reload=60 buildbot]
* [http://springrts.com/dl/buildbot/ buildbot builds]
* [https://springrts.com/dl/buildbot/doc/{{EngineVersion:Stable}}/engine/d9/d28/group__unitsync__api.html Unitsync API docs]
* [[Development:Minutes|Developer Meetings]]
* [http://stacktranslate.springrts.com Stacktrace Translator] (translates stacktraces from official win32 builds)
* [http://sourceforge.net/projects/springrts SourceForge project page]
* [http://github.com/spring/spring-website/ Web site repository]


Old:
=Legal=
* [http://springrts.com/dl/spring-vc8libs.exe Development libraries for Visual Studio 2005]
The Spring engine and content in the main installer is Free Software, distributed under the GPL license. You may distribute the Spring Engine freely, modify its contents, or redistribute the source. For details, please read the license, which is included in the installer and source code.  
* [http://spring.jobjol.nl/show_file.php?id=1102 Development libraries for MinGW]
 
* [http://buildbot.eat-peet.net/spring/ Automatic installer builds (crosscompiled, mingw)]
If you wish to use a game or mod in a game CD, promote it in a magazine, or promote it on another website, please contact the game's maintainers. The Spring Project is not responsible for the legal status of any games built with or using this engine, and does not support redistribution of illegal content.
* [http://spring.jobjol.nl/show_file.php?id=860 Spring base content files]
* [http://developer.berlios.de/projects/taspring-linux BerliOS project page]
* [https://lists.berlios.de/mailman/listinfo/taspring-linux-commit Commit mailing list]
* [http://sourceforge.net/projects/springrts SourceForge project page]
* [http://springrts.com/svn/spring/ TASServer, TASClient and Web site Subversion repository]
* [http://springrts.com/websvn/ TASServer, TASClient and Web site WebSVN]


[[Category: Development]]
[[Category:Engine Dev]]

Latest revision as of 19:56, 8 December 2016

Development < Getting Started

Starting Spring Development

NOTE: Outlined below is information on assisting with the development of the Spring source itself. For information about developing a game (units, widgets, maps, etc.) see the Gamedev:Main page.

Even if you are developing a game, it is highly recommended that you get the engine source. Engine source + full text search: DO IT.

Overview

To start development, you will need:

  1. To read the Coding_Standards
  2. A good code manipulation program: Development_IDEs
  3. Compiling the source code

Learning C++

You will need to know C++ to modify or understand Spring's source code. If you are interested in learning C++, see Learning_CPP

However please note that badly designed code (code created by a C++ novice for example), even if working will likely not be included in the spring code. Spring is a large project, and therefore it is necessary to stay away from hack jobs and create general solutions to problems.

Source Code Documentation

The doxygen documentation can provide an overview about the source, directory structure and its dependencies. Unfortunately, there is no server running it, so you need to make them on your own, to do this, install doxygen and run "doxygen" in spring source directory (will take some time).

An explanation on how the code is executed in game can be found in the Spring Engine Code page.

Development Guidelines

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 for todos in the forum. You can also check in the forums 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.

Keep track what others do

If you develop with others, you need to know what they do. You can browse the source at our github-page, and there is a commit newsfeed.

Buildbot and Stacktrace translator

A buildbot server is here available to automatically compile Spring, the default AIs and make the installer. It can also translate stacktraces directly from uploaded infolog.txt files.

Important Developer Tasks

Profiling

How to debug SyncErrors

Debug GFX problems

How to get your code included

If you create something that you think should be included in the official source tree please create a pull request to the develop branch of the spring repository on github.com.

Make sure that your changes:

  1. Were successfully tested locally.
  2. Conform with the Coding Standards.
  3. Are spread over an appropriate amount of commits - Please refrain from combining many individual changes into a single commit and from including merge commits.
  4. Include an update to the changelog if it's a major change - this is not to save work for the devs, but mostly to provide a concise explanation of what the pull request changes.

Post in the development forum or drop in #sy after creating the pull request (or while coding it) to get feedback and eventually to have it included.

Spring Engine TODO list

If you want to code something, look into the New Developers Forum for TODOs. There is also a feature request forum, which may give you some ideas. Don't be overwhelmed by the sheer number of (silly) requests though!

Alternatively, you may just search the code for the famous comment tags, for example on linux: <syntaxhighlight lang="bash">grep -r "TODO" rts </syntaxhighlight>

The Bugtracker contains a long todo-list as well.

There are also some project proposals.

Development links

Legal

The Spring engine and content in the main installer is Free Software, distributed under the GPL license. You may distribute the Spring Engine freely, modify its contents, or redistribute the source. For details, please read the license, which is included in the installer and source code.

If you wish to use a game or mod in a game CD, promote it in a magazine, or promote it on another website, please contact the game's maintainers. The Spring Project is not responsible for the legal status of any games built with or using this engine, and does not support redistribution of illegal content.