Repository navigation
Conversation
Include solo, pass-and-play, and badge-link modes, the menu icon, and usage documentation. Correct development instructions to match the available validation tools. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
Landing-state handling can bypass fall damage, while multiplayer turn/phase gates can discard pause requests without allowing retries to recover them.
3 open issues
What changed in this PR
Adds Pig vs Goose, a turn-based water-balloon game for the Universe 2026 badge, with computer, pass-and-play, and two-badge modes.
Changes:
- Implements destructible terrain, rolling carts, wind, soak damage, and a butterfly-triggered hairdryer bonus.
- Adds host-authoritative multiplayer with fragmented snapshots, acknowledgments, and retries.
- Documents controls, development checks, and outstanding physical-badge verification.
| File | Description |
|---|---|
badge/apps/pig_vs_goose/README.md |
Explains gameplay, multiplayer setup, requirements, and validation. |
badge/apps/pig_vs_goose/multiplayer.py |
Handles pairing, state synchronization, remote controls, and shared match actions. |
badge/apps/pig_vs_goose/game.py |
Implements physics, terrain, damage, turn rules, and computer aiming. |
badge/apps/pig_vs_goose/__init__.py |
Provides rendering, input handling, menus, and runtime integration. |
Review effort: Balanced
| if self.phase != "move" or self.walk <= 0: | ||
| return | ||
| player = self.players[self.active] | ||
| if not self.supported(player): |
Comment on lines
+239
to
+243
| if grounded: | ||
| player["y"] = ground | ||
| player["tilt"] = tilt | ||
| player["vy"] = 0 | ||
| player["fall"] = ground |
Comment on lines
+271
to
+274
| if round_id != self.round or turn != self.game.turn: | ||
| return | ||
| if phase != PHASES.index(self.game.phase): | ||
| return |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

What does this PR do?
Adds Pig vs Goose, a turn-based water-balloon duel for the Universe 2026 badge.
badgeware.linkfor two-badge play.This is the complete new app, not an attribution-only change. The contribution is limited to five files under
badge/apps/pig_vs_goose/.Type of change
badge25/) maintenanceBadge app checklist
badge/apps/<name>/with__init__.pyand a 24x24icon.pngREADME.mdstarts with a one-sentence description, followed by usage and any hardware or network requirementsbadge,screen,image, ...) and logical buttons such asBUTTON_SELECTbadge.ticks_delta)assets/, are PNG where possible, and are as small as practicalbadge/secrets.pystays empty)The only shipped image is the launcher-required
icon.pngat the app root; there are no additional artwork assets. No credentials or state files are included, andbadge/secrets.pyis unchanged. The README intentionally includes the author's requested public name and GitHub profile.Screenshots
Simulator capture at the app's native 320x240 display resolution:
How to use it
Choose a mode with Left/Right and press Select. Drive with Left/Right, then Select to aim. Left/Right changes angle, Up/Down changes power, and Select throws. Back returns from aiming to driving; Menu pauses. The first player to reach 100% soak loses. Hitting a butterfly directly activates a hairdryer that removes 25 soak points.
Badge vs Badge requires two badges with
badgeware.linkfirmware. Both players choose that mode, bring the badges close, and confirm with Select. The simulator cannot verify the radio.Licensing and intellectual property
This is an open source repository released under the MIT License. Everything merged here is distributed under the terms of that license.
We can't accept contributions that use someone else's intellectual property (for example, characters, artwork, logos, trademarks, game names, music, fonts, or code) unless that person or company has agreed to its release under the project license. This includes recognizable likenesses of existing games or brands that could be confusing.
Additional notes
Validation performed:
python3 .github/skills/hyb26-skill/scripts/validate_app.py badge/apps/pig_vs_goose— passed, zero warnings.python3 .github/scripts/validate_app_readmes.py badge/apps— passed.python3 -m unittest discover -s tests -p 'test_pig_vs_goose*.py'— exited with status 5 because no matching tests exist; this is not a test pass. The README no longer advertises these absent tests.check_app— passed, no errors or warnings.run_script— exercised computer mode, aiming/throwing, the computer's following turn, pause/title navigation, pass-and-play, simulated rotation, and the link-search lobby without a traceback.record— captured the hairdryer animation and asserted that it reduced soak from 70% to 45%.No physical badge deployment or on-hardware checks were performed. Two-badge pairing, radio delivery/retries, disconnects, shared pause, rematches, and the menu icon still require real hardware verification. Licensing checkboxes are left for the contributor's explicit attestation.