Skip to content

Latest commit

 

History

History
118 lines (77 loc) · 6.88 KB

CONTRIBUTING.md

File metadata and controls

118 lines (77 loc) · 6.88 KB

Contributing to hg-engine

Hello! hg-engine is always open to contributors making pull requests for features or other battle engine facets. These contributions are assessed based on whether or not they are "in-scope" and then merged as they are completed.

Scope

The overall scope of the project is first and foremost battle engine overhauls. hg-engine aims to be a battle engine that ports all of the features from later generations to that of HeartGold.

From there, we also have quality of life improvements. These are things like repels that automatically prompt usage of another one as well as allowing for easy expansion and editing of the music combo tables.

Bug Reports

We use GitHub issues to track bugs.

The Issues list is somewhat of a TODO list that is worked through.

What should I do before making a bug report?

  • Does your bug occur on the latest unmodified (clean) version of the main? If not, please do not submit a report - the issue is most likely one introduced by your game.
  • Has somebody else already found this issue? This is best done by searching the bug tracker to see if anybody else reported it. If there is already an issue, replying to the existing issue with more information can help solve the problem.

How do I submit a bug report?

If you run into an issue with the project, open an issue.

The best bug reports have enough information that we won't have to contact you for more information. We welcome all efforts to improve hg-engine, but would be very grateful if you completed as much of the checklist as possible in your bug report. This will help other contributiors fix your issue.

If it is an issue that our implementation differs from how the game does it, it would be ideal to attach gameplay footage demonstrating the difference. Footage from Scarlet/Violet (or any of the games since USUM) is the best, followed by the Japanese Pokémon Wiki (ポケモンWiki). From there, the preference would be Smogon Forums Research post, then a Showdown Replay, and finally the description from Bulbapedia. Please mention if it's an overall battle engine or damage bug.

Ideally, the issue entry details reproduction steps and the context under which the bug occurs. Screenshots and even a save provided will immensely help in testing out and fixing the issue down the line.

Commonly, the issue is initially reported via a Discord message. It is talked about on the Discord channels in the Kingdom of DS Hacking or DS Modding Community, and then a link to the conversation is pasted in the Issue that is created on GitHub. This is also acceptable for the time being.

What happens after I submit a bug report?

It will be fixed at some point. Depending on its urgency, it may be marked as urgent and efforts will be prioritized there shortly.

Pull Requests

If you have read all of this and still need help, feel free to swing by the Discord server and ask for help in the hg-engine channels.

How do I submit a pull request?

1. Get a working local copy

If you haven't already, follow README.md to get a working local copy of hg-engine.

Contributors should work from their own fork so they have a repository they can push branches to while still pulling updates from the main project.

2. Fork the repository

Create your own fork of BluRosie/hg-engine on GitHub.

3. Clone your fork

Replace [YOUR-USERNAME] with your GitHub username.

git clone --recursive https://github.com/[YOUR-USERNAME]/hg-engine.git
cd hg-engine

4. Set hg-engine as an upstream remote

This designates the main hg-engine repository as the place you pull updates from.

git remote add upstream https://github.com/BluRosie/hg-engine.git

5. Create a new branch

This will create a new branch and switch to it.

git switch -c newFeature # the name newFeature can be anything you want. This tutorial assumes you used newFeature.

6. Copy main to your new branch

This will change your new branch to match the latest version of your local main.

git reset --hard main

7. Implement your code

All of your work should go on this new, clean branch. If you already started work on a different branch, you can cherry-pick you old commits onto this new branch, or just copy and paste the changes from the original files.

8. Format your changes

hg-engine uses the repository's .clang-format for C and header formatting checks.

Before opening a pull request, make sure clang-format is installed and available on your PATH.

Common install commands:

  • Debian/Ubuntu/WSL: sudo apt-get install clang-format
  • macOS with Homebrew: brew install clang-format
  • Arch Linux: sudo pacman -S clang
  • MSYS2: pacman -S clang

Then run the following command to register the pre-commit hook that will automatically format your code before you commit it.

git config core.hooksPath .githooks

9. Commit and push your changes

When you push your first commit, you'll need to push the new branch to the remote repo.

git push --set-upstream origin newFeature

10. Open Pull Request

Once your work is complete and pushed to the branch on Github, you can open a pull request from your branch, targeting the main branch from hg-engine. Please fill out the pull request description as completely as possible. If you are updating the battle engine, please add relevant test cases.

What happens after I submit a pull request?

The pull request is reviewed and comments are made. There is a little bit of a back and forth where the maintainers will comment and potentially request changes, and you will have to implement the suggestions. After a bit, the PR will be approved at which point it is ready to merge.

Contributors are responsible for responding to and updating their branch by addressing the feedback in the review. Contributors are also responsible for making sure the branch passes the build check at all times.

There is a lot of good faith currently in the PR process that puts a little effort on the contributors to ensure that their code builds and works. We may refuse contributions that are clearly untested or dysfunctional.

Note

This is roughly adapted from pokeemerald-expansion's CONTRIBUTING.md

The process is intentionally less formal in hg-engine.