Skip to content
Snippets Groups Projects
After you've reviewed these contribution guidelines, you'll be all set to contribute to this project.
CONTRIBUTING.md 9.74 KiB

Contributing to GemRB

First off, thanks for taking the time to contribute!

GemRB is a community driven Free/Libre Open Source Software project that welcomes all. It would not be possible without the help of hundreds of volunteers like you, so everyone is encouraged to contribute, be it code, knowledge, fun or something else!

This file is a non-exhaustive set of soft guidelines and ideas for contributing to GemRB.

Please stay friendly and constructive, we are not robots. I promise.

Where to start?

Programmers

If you don't trust your skills, take a look at the good first issue subset of reports, ranging from trivial to simple.

Instructions on building and IDE setup can be found in INSTALL or the online developer docs.

If you don't know what to work on:

  • try playing a game with GemRB and make note of any bugs, annoyances or missing features ... then report and fix them,
  • check the list on the bugtracker,
  • check the Roadmap to see what priorities we are currently working on,
  • check out the FIXMEs and TODOs spread throughout the code,
  • write one of the missing file format plugins (doesn't require any game!),
  • pick some of the janitorial tasks (eg. refactoring),
  • ask either on the forums or chat.

You can also help by:

If you're a web developer, check the website reports.

Modders, game designers and artists

  1. GemRB comes with a bundled demo, but it is short. The challenge is to enhance it, but a lot of (compatibly licensed) art is missing. Check the current progress tracker. See also the docs on creating a new game

  2. Some GemRB mods are in the gemrb-mods repo. The mod idea page also lists several ideas from simple tweaks to more complex mods. If you know WeiDU, a good task would be to add more of the documented tweaks (idea page) to gemrb-tweakpack.

  3. Modders can also contribute with research (see above), especially when it requires WeiDU test mods.

Everyone else

The easiest way for you to contribute is to take GemRB for a spin and report problems, omissions, bugs and wishes on the tracker.

Some of the biggest progress has been made when power users tested features in great detail, comparing the original with GemRB behaviour. The games and their engines are complex, so programmers alone can't figure everything out. You can help out by sharing your knowledge in existing reports on the tracker.

Take an active part in the GemRB and Gibberlings3 communities, helping other users, proposing ideas and representing our "colours".

You can help spread the word about the project outside the main channels. Try to bring in new contributors, blog, vlog (Let's Play?), social media posts, organize an event, write a song or other undefined creative approaches.

You can write, film or sing documentation, whether it is included with the project (eg. website, this file) or not (forum, youtube ...).

Let us know of any articles, buzz or other materials you find about GemRB.

You can suggest cool screenshots or fanart for the gallery and videos for the video playlist.

If you're a web designer, check the website repo and suggest improvements.

And finally, do what you want, as long as it is beneficial to the project. :)

But I am completely new to open source, git and GitHub!!

Worry not and check these resources:

Contributing to Free Software and open source projects can be a life changing experience. And it should be fun, so if you find any of this hard to figure out, let us know so we can improve our process and documentation!

Axioms of Style

  1. When in doubt, follow the style of the existing function or file.
    • When creating a new file, follow the style of existing files, pe. Game.h/.cpp.
      • Do not forget to include the license header.
  2. Code indentation is done with single tabulators.
  3. Spaces around operators (foo += bar;).
  4. Try to avoid creating very long lines. There is no set maximum.
  5. Sort includes by type (module, project, system) and alphabetically.

Useful links

Useful tools

  • gdb / admin/run.gdb

You can use the following to automatically run gemrb and already start with a breakpoint in abort():

gdb -q -iex "set breakpoint pending on" -iex "b abort" -ex run --args path/to/gemrb -c agame.cfg
  • valgrind / admin/run.valgrind