Skip to content

Developer Onboarding

Enno Rehling edited this page Sep 21, 2013 · 1 revision

Developer Onboarding

Welcome

Hello, new developer! We're going to try not to waste a lot of time, and run this projet like professionals. That means there will be a task board (Trello or Pivotal), source control (git and github), project and design documentation (this wiki), unit tests and integration builds (TBD), and a shared development server (TBD).

Agile Development

The project has a number of milestones that each correspond with a new version of the game that will be tested by the public. Each milestone defines a list of new rules to be implemented, and these rules correspond to user stories, each of which is described in a few paragraphs on this wiki before it can be worked on. Development happens in month-long sprints, and at the start of each sprint we choose a number of user stories to work on during the month. Each story gets a technical design document that points out what needs to be done, and from this we break out programming tasks for our task board. Developers are then free to pick up any task they like and work on it. At the end of the month, we see how far we actually got, and we adjust our velocity for the next sprint planning, where the cycle begins again.

Engineering Rules

The game is written in portable C, with polyfills for differences between C runtime libraries. At a minimumn, Visual Studio 2010 and gcc 3.4 are supported, but the more compilers, the better. We are targeting Windows and Linux operating systems, with a preference towards Linux. That means your code must compile and pass all tests on Linux + gcc at a minimum for your pull request to be accepted, and the integration builder will run on that platform. All of the code is both 64 and 32 bit safe.

You will need a github account to clone the repository. All development happens in your own clone, until you have a working feature that compiles and passes tests, at which point you send a pull request to the repository you cloned from.

Your development environment is up to you, but the central build tool is CMake. It creates output for Makefiles or Visual Studio, and I believe Code::Blocks and Eclipse are also possible.

Clone this wiki locally