# MOO-51 Assets

Static runtime assets for **MOO-51**, a third-person Three.js game about a cow escaping an alien spacecraft.

## npm package

```text
@skylarknight/moo51-assets
```

After publishing version `1.0.0`, files are available through jsDelivr:

```text
https://cdn.jsdelivr.net/npm/@skylarknight/moo51-assets@1.0.0/<path>
```

Examples:

```text
https://cdn.jsdelivr.net/npm/@skylarknight/moo51-assets@1.0.0/models/cow.glb
https://cdn.jsdelivr.net/npm/@skylarknight/moo51-assets@1.0.0/models/ufo.glb
https://cdn.jsdelivr.net/npm/@skylarknight/moo51-assets@1.0.0/audio/moo.wav
```

Always use an exact package version in the challenge prompt.

## Package contents

```text
audio/
├── alarm.flac
├── end-scene-music.wav
├── farm-ambient-music.wav
├── impact.ogg
├── moo.wav
├── tractor-beam.wav
└── victory-sting.mp3

models/
├── cow.glb
├── Horse.glb
├── Pig.glb
├── Sheep.glb
├── rover.glb
├── ufo.glb
├── alienplants/
│   ├── plant1.glb
│   ├── plant2.glb
│   ├── plant3.glb
│   └── plant4.glb
├── farm/
│   ├── Barn.glb
│   ├── Fence.glb
│   ├── Fence2.glb
│   ├── Silo.glb
│   └── Windmill.glb
└── shipinterior/
    ├── Column_1.glb
    ├── Column_2.glb
    ├── Column_3.glb
    ├── Column_Slim.glb
    ├── Details_Arrow.glb
    ├── Details_Arrow_2.glb
    ├── Details_Basic_1.glb
    ├── Details_Basic_2.glb
    ├── Details_Basic_3.glb
    ├── Details_Basic_4.glb
    ├── Details_Cylinder.glb
    ├── Details_Cylinder_Long.glb
    ├── Details_Dots.glb
    ├── Details_Hexagon.glb
    ├── Details_Output.glb
    ├── Details_Output_Small.glb
    ├── Details_Pipes_Long.glb
    ├── Details_Pipes_Medium.glb
    ├── Details_Pipes_Small.glb
    ├── Details_Plate_Details.glb
    ├── Details_Plate_Large.glb
    ├── Details_Plate_Long.glb
    ├── Details_Plate_Small.glb
    ├── Details_Triangles.glb
    ├── Details_Vent_1.glb
    ├── Details_Vent_2.glb
    ├── Details_Vent_3.glb
    ├── Details_Vent_4.glb
    ├── Details_Vent_5.glb
    ├── Details_X.glb
    ├── Door_Double.glb
    ├── Door_Single.glb
    ├── FloorTile_Basic.glb
    ├── FloorTile_Basic2.glb
    ├── FloorTile_Corner.glb
    ├── FloorTile_Double_Hallway.glb
    ├── FloorTile_Empty.glb
    ├── FloorTile_InnerCorner.glb
    ├── FloorTile_Side.glb
    ├── Props_Base.glb
    ├── Props_Capsule.glb
    ├── Props_Chest.glb
    ├── Props_Computer.glb
    ├── Props_ComputerSmall.glb
    ├── Props_ContainerFull.glb
    ├── Props_Crate.glb
    ├── Props_CrateLong.glb
    ├── Props_Laser.glb
    ├── Props_Pod.glb
    ├── Props_Shelf.glb
    ├── Props_Shelf_Tall.glb
    ├── Props_Statue.glb
    ├── Props_Vessel.glb
    ├── Props_Vessel_Short.glb
    ├── Props_Vessel_Tall.glb
    └── RoofTile_Corner_Pipes.glb
```

## Cow animation clips

The cow model contains these source clip names:

```text
Idle
Idle_2
Idle_Headlow
Walk
Jump_toIdle
Idle_HitReact_Right
Idle_HitReact_Left
Gallop_Jump
Gallop
Eating
Death
Attack_Kick
Attack_Headbutt
```

Suggested gameplay mapping:

| Game action | Clip |
|---|---|
| Idle | `Idle` or `Idle_2` |
| Graze | `Eating` |
| Walk | `Walk` |
| Sprint | `Gallop` |
| Headbutt | `Attack_Headbutt` |
| Damage | Alternate `Idle_HitReact_Right` and `Idle_HitReact_Left` |
| Launch | `Gallop_Jump` |
| Landing | `Jump_toIdle` |
| Failure | `Death` |
| Optional kick | `Attack_Kick` |

Mooing, abduction floating, and victory poses can be layered procedurally in Three.js.

## Excluded file

`audio/ship-ambience.mp3` is intentionally excluded from `package.json`.

Its Freesound source is licensed **CC BY-NC 4.0**, so it should not be used in a prize challenge or redistributed in this public npm package. Replace it with a CC0 or original spaceship ambience before submission.

## Browser format recommendations

For smaller downloads and broad browser support, consider converting:

- `alarm.flac` → `alarm.ogg`
- `farm-ambient-music.wav` → `farm-ambient-music.ogg`
- `end-scene-music.wav` → `end-scene-music.ogg`
- `tractor-beam.wav` → `tractor-beam.ogg`
- `moo.wav` → `moo.ogg`

After conversion, update `package.json` and the prompt URLs.

## Publish

From the package root:

```bash
npm login
npm whoami
npm pack --dry-run
npm publish --access public
```

Inspect `npm pack --dry-run` carefully. It should not include source Blender files, archives, private files, or `audio/ship-ambience.mp3`.

## Licensing

See [LICENSES.md](./LICENSES.md). Every third-party asset retains its own license.
