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.
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.
We use GitHub issues to track bugs.
The Issues list is somewhat of a TODO list that is worked through.
- 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.
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.
It will be fixed at some point. Depending on its urgency, it may be marked as urgent and efforts will be prioritized there shortly.
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.
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.
Create your own fork of BluRosie/hg-engine on GitHub.
Replace [YOUR-USERNAME] with your GitHub username.
git clone --recursive https://github.com/[YOUR-USERNAME]/hg-engine.git
cd hg-engineThis designates the main hg-engine repository as the place you pull updates from.
git remote add upstream https://github.com/BluRosie/hg-engine.gitThis 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.This will change your new branch to match the latest version of your local main.
git reset --hard mainAll 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.
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 .githooksWhen you push your first commit, you'll need to push the new branch to the remote repo.
git push --set-upstream origin newFeatureOnce 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.
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.
This is roughly adapted from pokeemerald-expansion's CONTRIBUTING.md
The process is intentionally less formal in hg-engine.