[BACK]Return to CONTRIBUTING.md CVS log [TXT][DIR] Up to [contributed] / brogue-ce

File: [contributed] / brogue-ce / CONTRIBUTING.md (download)

Revision 1.1, Thu May 27 20:31:34 2021 UTC (2 years, 10 months ago) by rubenllorente
Branch point for: MAIN

Initial revision

Contributing
============

For general help on using GitHub to contribute to a project, check out the
[GitHub.com help].

We have a Discord server for discussion; feel free to join it here:
https://discord.gg/8pxE4j8.

## Testing

The *master* branch represents the latest development snapshot, and should be
considered ready for play-testing at all times. If you're a Brogue player, you
can help out by playing the latest *master* and letting us know of any bugs you
run into! Just follow the build instructions (BUILD.md).

## Code

When submitting patches or opening pull requests to Brogue CE, please
attempt to meet the follow guidelines. To avoid wasted work, I recommend
first discussing with us the proposed changes on the Discord or by opening
an issue report.

### Branches and versions

Brogue CE version numbers follow 1.MINOR.PATCH. Essentially, patch-level
releases don't change the gameplay experience in any way--this is to avoid
breaking saves and replays. Minor-point releases may do so.

The are two long-term branches which you should base PRs on:

* *master* is for gameplay changes for the next minor-point release
* *release* is for bug fixes and other non-gameplay changes, for the next patch
  release. It is merged into *master* periodically.

Any other public branches may be rebased and force-pushed at any time, so please
be careful when branching from them.

### Commits

I find a clear Git history very beneficial to work with, so I care quite a bit
about how commits are presented in PRs.

Please read my [tips for using Git effectively][Git guidance], which can be
considered guidelines for contributing to this project.

### Change files

When making user-facing changes, please add a non-technical description of each
change to a Markdown (.md) file in `changes/`. These files are collated to
create the release notes.

If the change is from one commit, include this file in it. For a branch of
multiple commits, add it in a separate commit.

### Style

- Use 4 space of indentation
- Be consistent with formatting (pay attention to whitespace between brackets,
  commas, etc.)
- Try to follow the style of existing code
- Declare functions and variables local to a file as `static`
- Prefer `int` in new integer declarations; use `short` only when working with
  existing `short` variables
- Use braces for control structures on multiple lines

  ```c
  // no
  if (cond)
      action();

  // yes
  if (cond) {
      action();
  }

  // acceptable
  if (cond) action();
  ```

- When writing bracketed lists over multiple lines, wrap it naturally and don't
  align to the open bracket (this includes declarations)

  ```c
  // yes
  some_function(
      a, b,
      c,
      d
  );

  // no
  some_function(a, b,
                c,
                d);
  ```

- When writing multi-line if/while conditions, use at least the same indentation
  as the body. It can be clearer to over-indent to separate it

  ```c
  // same indent is ok
  while ((A && B)
      || C) {
      ...
  }

  // over-indent can be clearer
  while ((A && B)
          || C) {
      ...
  }

  // a gap works too
  while ((A && B)
      || C) {

      ...
  }
  ```

[GitHub.com help]: https://docs.github.com/en/free-pro-team@latest/github
[Git guidance]: http://www.collider.in/tom/git-guidance.html