Back to Poly Dogfight
SOURCE / PINNED RELEASE

Made of little things.

Poly Dogfight

Release
b8511ee374e3…
Author-recorded commit
5579434b9d8b…
License
LICENSE
Author’s source reference
nostr://npub1ye5ptcxfyyxl5vjvdjar2ua3f0hynkjzpx552mu5snj3qmx5pzjscpknpr/wss%3A%2F%2Fgit.napplet.soy%2F/n-44f63e5422b

Archive hash verified: bcadd2430d8ea2bc…. The source-to-build association is the author’s claim; it has not been independently rebuilt.

README.md
# Poly Dogfight

A low-poly flying and dogfighting **napplet game built with [napplet.soy](https://napplet.soy)**. Fly a biplane around a tiny spherical planet, weave through rock arches and the Great Rift canyon, or bring friends for split-screen dogfights.

**[Play on napplet.soy](https://napplet.soy)** — find **Poly Dogfight**, take off, and make it your own by forking and remixing it.

![Poly Dogfight gameplay](preview.png)

## Play

- Explore a whole planet you can circle in about a minute, with five-second respawns after a crash.
- Fly with keyboard, gamepad, or touch. Choose **Beginner controls** in the start or pause menu for automatic throttle and easier steering.
- Connect standard-mapped game controllers for up to four local pilots in split screen.
- Dogfight with machine guns, heat-seeking rockets, and visible wing and tail damage.
- Switch between chase, far, and cockpit cameras.

## Controls

| Action | Keyboard | Gamepad | Touch |
| --- | --- | --- | --- |
| Pitch / roll | W S A D or arrows | left stick / d-pad | left stick |
| Rudder | Q / E | LT / RT (or right stick X) | ◁ ▷ |
| Throttle | T or Shift up, G down | RB / LB | slider |
| Boost (limited meter) | Space | A | Boost |
| Fire (unlimited) | F / Enter | B | Fire |
| Rocket (2, reloading) | R | Y | Rocket |
| Camera (chase / far / cockpit) | C | X | ◉ |
| Pause | Esc / P | Start | ❚❚ |
| Mute | M | | menu toggle |

Stick back / S = nose up (flight convention); invert pitch in the menu.

## Fork and remix

Poly Dogfight is open source under the [MIT license](LICENSE). Fork it, change it, and share your own version: build a different planet, tune the flight physics, customize the planes, or invent new ways to play.

Start from Poly Dogfight on [napplet.soy](https://napplet.soy) to fork and remix the game, or work from a local copy of this repository:

```bash
soyli setup
soyli dev
```

Open the URL printed by `soyli dev` to play your changes inside the napplet.soy sandbox. Stop the preview session when you finish testing. This project already includes its toolchain configuration and adapted agent skills.

The game uses TypeScript, Vite, and three.js and builds to a single self-contained `dist/index.html` napplet. Useful places to start:

- `src/sim/` — flight physics, combat, and world generation.
- `src/world/` — planet and obstacle meshes. The planet is split into patches, and each view hides the ones behind the horizon (`src/world/chunks.ts`).
- `src/players.ts` — local multiplayer and pilot management.
- `src/main.ts` and `src/styles.css` — game startup and interface.
- `napplet.json` — title, description, previews, and publishing metadata.

See the [game design reference](docs/game-design.md) for the full design brief, beginner steering, flight model, battle damage, and multiplayer behavior. Read the [workspace guide](docs/napplet-space.md) for preview, remix, and publishing workflows, and the [visual design guide](docs/napplet-visual-design.md) before changing the interface.

## Verify your changes

```bash
pnpm type-check
pnpm build
pnpm test:guidance
pnpm test:game
pnpm test:conformance
```

Press the backquote key (`` ` ``) in game to show a performance overlay with frame rate, the worst frame gap, CPU and sim time, and draw calls and triangles summed across all split-screen views.

`pnpm verify` combines guidance checks, game tests, type checking, and the build. `pnpm test:conformance:ui` opens the live conformance runtime.

Conformance tests load the build in a real sandboxed iframe with a reference shell. Manifest, wire, and lifecycle checks can report `SKIP` when their required evidence is absent; a skipped check is not verified.

Poly Dogfight has no required NAP domains. Optional `storage` and `config` support preferences; the game runs without them. Keep host capabilities behind `@napplet/sdk` and preserve the single-file build. See the [boundary guide](docs/boundaries.md) and [authoring checklist](docs/authoring-checklist.md) before changing protocol-facing behavior.