Thanks for your interest in opsu!
This document provides basic guidelines for contributing to the repository. If you plan on making major changes, consider opening an issue first to discuss your ideas.
We are happy to see the problems you reported! You can do as belows:
- Make sure the problem is not about the device itself, and deal with it when necessary.
- Look through the issues list, and see if your issue was reported before by others.
- Provide relevant details. The issue template can help you.
If you are unsure about this problem, you can post in our discussion page first.
You can use Crowdin to translation opsu! into your language!
For existing language entries, please direct to the project page on Crowdin to start translating them. And if your language doesn't appear on the list, feel free to create an issue!
- Fork the repository and set up your build environment, as described in the README.
- Make your desired code changes in your fork.
- Test your change. We have automated CIs that can help check your code, but changes in gameplay and interface still need manual checks. Read the testing tips below for some suggestions.
- Commit your change and create a pull request. Follow up with any requested changes as needed.
- An issue or a pull request should only contain one feature or bug fix (at least, one exact part of the game). Though PRs with multiple features are also acceptable, those with one exact point are easier to review and check.
- Keep the original stucture of source code, like block orders and styles.
- In general, follow the same coding style as the file that you're editing. The
.editorconfig
can help set up your IDE. - Write comments in your code as needed. At minimum, Javadoc comments are expected on all classes, methods, and global variables as to make code easier to read and understand.
- Use tabs for indenting, not spaces.
- Indentation and brace placement follow Java conventions. Braces are usually not used for single-statement
if
,while
, andfor
. - Avoid upgrading / downgrading dependencies manually.
- Gameplay changes: Depending on the change, consider playing through a regular or 2B beatmap, watching a replay, pausing/resuming the game, enabling/disabling experimental sliders, etc.
- UI changes: Be sure to try different client resolutions (such as 800x600 and widescreen) and different skins (if applicable).
- Graphics/audio changes: Test on different operating systems if you can, I'm lack of usable devices at this time xD
Maintaining this huge project by myself alone is a challenging task. So I'm appreciated if you are willing to help me in the long term! When you have made up your mind, please email me using the address on my profile. Thanks a lot!