Back to Soybert 3D
SOURCE / PINNED RELEASE

Made of little things.

Soybert 3D

Release
4bf80e758af1…
Author-recorded commit
298fa2d0e8b1…
License
LICENSE
Author’s source reference
nostr://npub1n8ga89w8h6tvwamxusfyzexw8gjy84yxu9rxgnmk955cxtml4ujswzxydd/wss%3A%2F%2Fgit.napplet.soy%2F/n-9021e1b6a96

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

README.md
# Soybert 3D

A compact character showcase based on `src/assets/soy-mascot.png`. Soybert rotates below beveled Fredoka 3D lettering on a turntable, then enters an open studio stage. Run, jump, fire the shotgun and celebrate. Includes keyboard, mouse and touch input, optional sound, reduced motion, and light/dark runtime themes. Floating hands follow the shotgun and its pump. Running has quick acceleration, banked turns, a springy jump and landing squash. No login, network requests or saved game state.

## Play locally

Use `soyli dev` to open the actual napplet sandbox. The current preview is normally at http://127.0.0.1:4173/. `pnpm dev` alone is a source server without a napplet host.

- **WASD / arrow keys:** move relative to the camera.
- **Space:** jump. **F:** fire the shotgun. **C:** celebrate.
- **Drag the scene / scroll:** orbit / zoom.
- **R:** reset position and camera. **Esc:** pause / resume.
- **Touch:** drag the circular movement pad and tap the action buttons.
- Losing focus pauses control and clears held inputs.

Shots follow the visible shotgun barrel. This is a character demo: no enemies, score, damage or win condition.

## Editable character

- `art/soybert.blend`: the editable Blender 5.1 source, materials, eight-bone armature, and five actions: Idle, Walk, Jump, Shoot, Celebrate.
- `art/soybert.glb`: portable skinned character and animation clips.
- `src/assets/soybert-rig.json`: the bundled mesh, material and bone data used by the app. The browser animates these bones procedurally for continuous movement and action transitions.
- `scripts/build-soybert.py`: reproducible Blender authoring/export script. Set `ROOT` to this checkout, then execute inside Blender. It replaces the generated Soybert collection, preserving other scene objects.

The three-quarter reference supplies the face, proportions and shotgun design. The unseen sides/back and animation style are artistic interpretations. No additional textures or external models are required.

The model is bundled directly, avoiding network-capable loaders. The built napplet is one self-contained `dist/index.html` (about 3.5 MiB). Optional NAP-THEME and NAP-CONFIG use the installed SDK; the core demo has no hard capability requirements.

Fredoka is supplied by `@fontsource/fredoka` under the included `art/Fredoka-LICENSE.txt`. Run `pnpm build:title` to regenerate the bundled 3D lettering from the package outlines. Font parsing and tessellation happen at authoring time, with no runtime font downloads.

## Verification

```sh
pnpm type-check
pnpm build
pnpm test:guidance
pnpm test:simulation
pnpm test:conformance
pnpm test:browser
```

`test:browser` uses the Chromium dependency already supplied by the conformance tool. It checks opaque-origin iframe rendering at 200×160, 320×560, 900×600, 960×900 and 2400×1200 in both themes, plus input, pause/reset, settings, theme changes, teardown and absent optional domains. Screenshots and its JSON report are private generated files in `.napplet-space/verification`.

Conformance currently passes 5 checks and skips 5: signed manifest evidence, emitted wire evidence and measured lifecycle evidence are not supplied to that runner. Browser tests independently cover subscription cleanup and optional-domain behavior. See `docs/verification.md` for the checked revision and host limitation.

## Authoring guidance

Read `docs/napplet-space.md` first, then `docs/context-map.md` and `docs/soybert-design.md`. The existing scaffold and single-file Vite plugin are retained. Napplet skills are installed locally; elsewhere install with `npx skills add napplet/napplet`.