Skip to content

Latest commit

 

History

History
74 lines (53 loc) · 2.76 KB

File metadata and controls

74 lines (53 loc) · 2.76 KB

Contributing to Egg Catcher LCD

Thanks for taking a look. This is a small, single-maintainer game, so the process is deliberately light.

Before you write code

Open an issue first for anything larger than a typo. Gameplay changes in particular are worth discussing before implementation: the difficulty curve and the four-position layout are tuned, and a change that feels better on one screen size often feels worse on another.

Good contributions that need no discussion:

  • fixes for crashes or incorrect behaviour on a device you own;
  • support for a Garmin product that is currently undeclared, with a screenshot from the simulator or the watch;
  • documentation corrections.

Licensing, and what that means for art

The code, scripts, configuration and prose in this repository are MIT licensed. The visual assets are not — see ASSETS_LICENSE.md. You may use them locally to build, run and test the game, and you may contribute changes to them, but you cannot reuse them elsewhere.

By opening a pull request you agree that your code contribution is offered under the MIT License, and that any artwork contribution is assigned to the project under the same all-rights-reserved terms as the existing assets.

Setting up

  1. Java 17.
  2. Connect IQ SDK Manager with SDK 9.2.0 selected as the active SDK.
  3. The device definition for whatever product you are testing.
  4. Visual Studio Code with the Monkey C extension, or the command-line tools.
  5. A developer key. Generate your own; the project's key is never committed.

Before you open a pull request

Run the static checks, which need no SDK and no macOS:

./scripts/validate.sh

If you have the SDK installed, run the model tests too:

./scripts/run-tests.sh

Then state in the pull request which device or simulator you actually ran the game on. "Compiles" is not the same as "works on a watch", and this project has been bitten by that difference before.

Style

  • Match the surrounding code. Strict type checking is on (project.typecheck = 3) and pull requests are expected to keep it passing.
  • Express layout in proportions of the screen, not in absolute pixels. If you genuinely need a pixel value, put it through scaled() in FoxEggsView.
  • Guard optional device capabilities, such as vibration, before calling them.
  • Keep the game loop free of storage writes.
  • Add a CHANGELOG.md entry under the unreleased heading.

Reporting a bug

Use the issue template and include your watch model, the firmware version and what you were doing when it happened. If the game is installed from the Connect IQ Store rather than sideloaded, say so.

Security-sensitive reports and asset licensing questions go to eggcatcher@addicted.sh instead of the issue tracker.