55 Commits

Author SHA1 Message Date
Paul Bailey
e5e7c0e343 export.sh: keep build/ out of the game (a .gdignore): screenshots and voice samples there were being packed into it 2026-11-09 00:00:03 +00:00
Paul Bailey
73599401bf Old Tam in the trailer: three short lines, timed to the dawn flyover, the wolves and the Cove (same clip size) 2026-11-08 23:58:43 +00:00
Paul Bailey
a629ddba49 0.6.2: playtest fixes (animals off the cliffs, bigger and odd-shaped houses, real thunder, the tutorial's daylight, Old Tam's new script and voice); protocol 19 2026-11-08 23:40:34 +00:00
Paul Bailey
a3660f91cf Old Tam rewritten and re-voiced (Gitea #3): a new script in his own voice, an old West Country farmer (Qwen3-TTS cloning one recording, so he's the same man in every line), each line's best take chosen by checking its words with Whisper 2026-11-08 23:35:18 +00:00
Paul Bailey
4a691b72e1 Old Tam says "W, A, S and D", not "Wasad" (Gitea #3, first part); make_voice.py re-records a line when how it's spoken changes, not only its text 2026-11-08 20:32:09 +00:00
Paul Bailey
8f3c58c810 Real thunder (Gitea #4): six CC0 recordings, close cracks and distant rolls, in place of the synthesised rumble; a storm's flash is followed by a roll seconds later or a crack sooner, quieter indoors, and a strike on a tree cracks from the tree 2026-11-08 20:29:48 +00:00
Paul Bailey
07b8db1683 The tutorial's sun waits for you (Gitea #5): the afternoon goes no later than 16:30 until the torch step brings dusk 2026-11-08 20:19:15 +00:00
Paul Bailey
5672f0713d Odd-shaped houses (Gitea #7): roofs may run through other roofs (an L, a wing at an angle, roofs at different heights), but not inside an identical one, and nothing else goes through them; the guide explains growing a house 2026-11-08 20:19:15 +00:00
Paul Bailey
31f8e0d22c Bigger houses (Gitea #7): a second row of roof on a wider house, a Roof Ridge for a 6 m-wide one, and a Half Wall and Ridge Gable to close their taller ends; also no error when a piece is dismantled straight after it's placed 2026-11-08 19:56:16 +00:00
Paul Bailey
415e673b28 Animals stay off the cliffs (Gitea #6): nothing walks up or along ground steeper than 35 degrees, and a carcass on steep ground slides down to where it can be reached and butchered 2026-11-08 19:29:09 +00:00
Paul Bailey
da29308522 Roadmap: cloud saves, desktop and web both ways (a Cloudflare Worker, a name and password, the newer-copy check) 2026-11-07 16:48:52 +00:00
Paul Bailey
79061d8572 Roadmap: a single-player web version after the playtest (what the web renderer looks like, what's needed), and Android as a maybe 2026-11-07 16:31:20 +00:00
Paul Bailey
1f67d58b92 The Gitea repo is Admin/Cinderwild: the update feed, Report a bug, the site's links and publishing (0.6.0 and 0.6.1 games still reach it through Gitea's redirect from Admin/Emberwild) 2026-11-07 16:21:08 +00:00
Paul Bailey
c2c86b5f78 0.6.1: Emberwild is now Cinderwild (the old name's taken on Steam). Saves, identity and settings are copied across from the Emberwild folder on first start; the site moves to cinderwild.psbailey.uk; same protocol (18), so 0.6.0 and 0.6.1 play together 2026-11-07 16:14:11 +00:00
Paul Bailey
04b9d17826 A better download page: a hero over the Cove with the download for your computer, the trailer, what you'll do, what's new and how to report a bug, screenshots (tools/site/make_shots.sh), downloads, and playing with friends with the ports 2026-11-07 13:24:46 +00:00
Paul Bailey
3b611a6d34 0.6.0: the Cove's own, for a playtest (the wreck and a treasure for each player, the drowned crew, crabs and gulls, a rowing boat at the pier, Report a bug); protocol 18 2026-11-07 13:04:36 +00:00
Paul Bailey
27040d6805 Report a bug in the pause menu (a new Gitea issue filled in with the version, computer, mode, land and where you are; copy the details; the log file), the playtest guide (docs/PLAYTEST.md), and the Cove's 0.6.0 parts in the player guide 2026-11-07 12:45:37 +00:00
Paul Bailey
2004fe193c The rowing boat: seagrass at the tide line and resin from pines; rope, pitch, and a boat at the workbench (driftwood, rope, pitch, nails); tied up at a berth of its own at the end of the pier, one each, saved; Set sail needs the ship's compass and the Highlands aren't charted yet; online too 2026-11-07 11:16:15 +00:00
Paul Bailey
9709d2c424 The Cove's shore life: crabs up the beach from dusk till dawn (keep to the sand, pinch if you get close, crab meat to cook), gulls after food on the sand and fish on a smoking rack; online too 2026-11-07 10:23:49 +00:00
Paul Bailey
5bcfa23710 The pirate treasure: each player's own mound at their X, dug with a pickaxe; the drowned crew rise at night or when the chest comes up; the ship's compass, a spyglass, a cutlass and pirate gold; online too 2026-11-07 09:54:51 +00:00
Paul Bailey
74bd8f5898 The wreck in dark weathered oak; the map's key lists only this land's places 2026-11-07 02:04:48 +00:00
Paul Bailey
419c71e638 The Cove's wreck: driftwood and salt on the beach, the captain's sea chest (a treasure map, nails, salt; once each), each player's own X on the map; online too 2026-11-07 02:00:31 +00:00
Paul Bailey
ec8caa9ef4 Each land's set pieces from its data: the barrow, the standing stones and the bear are the Valley's alone, the Cove keeps its wolves; the Cove's 0.6.0 plan (treasure: one each, each in its own place) 2026-11-07 01:14:32 +00:00
Paul Bailey
1bf33935e0 Download page: forward UDP 24243 too for the Cove; test_net_lands can run against an exported build (EMBERWILD_SERVER_BIN) 2026-11-07 00:33:03 +00:00
Paul Bailey
62b3d6c47f 0.5.0: the journey on a server (a server per land; chat, the player list, admin and sleep across lands); protocol 17 2026-11-07 00:23:43 +00:00
Paul Bailey
f9b138b304 J3c: a land server stopping tells its players and is started afresh when they rejoin; the extra ports to forward on the Host page, the hosting message, the server log and HOSTING.md 2026-11-07 00:08:05 +00:00
Paul Bailey
86ebe07899 J3b: chat, the player list (with each player's land) and admin commands across lands; sleep needs everyone in every land, with a 'waiting for everyone else' message 2026-11-06 23:42:50 +00:00
Paul Bailey
85bbed249b J3a: the journey on a server. A server per land (Lands: the hub starts land servers on demand over a private link), the cliff tunnel online, crossings with one-time passes, shared characters that remember their land, one clock from the hub; test_net_lands 2026-11-06 23:14:11 +00:00
Paul Bailey
6544862885 Map: other players in your land shown on a co-op server, never with PvP on 2026-11-06 22:33:14 +00:00
Paul Bailey
109fff22d0 0.4.1: the Cove's stream (trout), the seam and sea cave in real rock, one clock for every land (going home no longer rewinds the day) 2026-11-06 22:02:16 +00:00
Paul Bailey
b938e045cb One clock for every land: going back to a land catches it up on the time away (like a night's sleep) instead of rewinding to when you left; J3 decided: a server per land with the Valley's as hub, sleep needs everyone in every land 2026-11-06 21:57:37 +00:00
Paul Bailey
ad47cd53da The Cove's stream: a stream block whose water only runs downhill (spring to the bay), its own water ribbon, trout, on the map; scenery and landmarks keep clear 2026-11-06 21:35:04 +00:00
Paul Bailey
0209c6149a The seam and the sea cave built from real boulders (rock_pile.gd: the scenery's rocks with matching colliders), the seam a cleft between two slabs with pick marks and loose stones 2026-11-06 21:26:15 +00:00
Paul Bailey
b86fb879d2 Site: trailer encoded smaller (CRF 23, 3.5 Mbit/s cap) to fit Cloudflare Pages' 25 MiB file limit; make_site.sh refuses an oversized file 2026-11-06 21:06:08 +00:00
Paul Bailey
2b7e52cd82 0.4.0: map (N) that fills in as you explore and a compass (closes #1); Old Tam's seam and Cove tips (voiced); the journey and sea fish in the guide; trailer with the tunnel and the Cove; protocol 16 2026-11-06 18:36:20 +00:00
Paul Bailey
980ee53579 J1: the cliff tunnel (seam, six propped stretches, dark, lights), travel Valley <-> Cove through the sea cave, a save file per worldlet; New World has no Where (--dev-worldlets to try others) 2026-11-06 17:51:58 +00:00
Paul Bailey
793b214786 W3: the Cove (bay, pond, pier for sea fishing), mackerel and cod (cod only in deep water), non-start worldlets offered for testing when run from source 2026-11-06 17:08:42 +00:00
Paul Bailey
9b88a10609 W2: several lakes per worldlet, a beach block shelving into the sea with a current that turns swimmers back; testbay test worldlet through the water, edge and boundary suites; the two ways to play (journey, one land) recorded 2026-11-06 16:48:20 +00:00
Paul Bailey
68e6d814d9 W1: choose a worldlet (New World and Host Game pages, kept once an island exists), worldlet shown in the Load list; Godot .uid files 2026-11-06 16:10:32 +00:00
Paul Bailey
db4a659236 W0: terrain from worldlet building blocks (Valley in data/worldlets, identical heights), WorldInfo API, worldlet in saves and servers; the cliff tunnel plan 2026-11-06 15:51:43 +00:00
Paul Bailey
f4df2bc99d Journey: one boat each, no passengers; tunnels, ropes and burrows shared 2026-11-06 14:30:51 +00:00
Paul Bailey
5584f74a8b Journey: multiplayer spread out (decided) 2026-11-06 14:17:56 +00:00
Paul Bailey
77517be778 Journey decisions: extendable ending, four crossings, biome hazards; server cost measured 2026-11-06 14:16:07 +00:00
Paul Bailey
40f5e25c41 Version 0.3.1 2026-11-06 14:05:24 +00:00
Paul Bailey
eaeb841c1d Lights to place indoors (tallow candle, torch stand); docs brought up to date; the journey plan; sticky teleports in net tests; protocol 15 2026-11-06 13:56:43 +00:00
Paul Bailey
5f40fa3f7b Version 0.3.0 2026-11-06 11:58:27 +00:00
Paul Bailey
4b2e687188 Uses for every material (clay jar, bedroll, pelt rug, fang necklace, bear cloak, pemmican, bait), Q to drop, K/M bag rows on 1-8, help pages; protocol 14 2026-11-06 11:49:42 +00:00
Paul Bailey
5778d61763 Version 0.2.1 2026-11-06 00:12:53 +00:00
Paul Bailey
787d8d1d65 Old Tam speaks (Kokoro); CC0 birdsong, crickets and owls; no plants through floors; menu and marker fixes 2026-11-06 00:03:59 +00:00
Paul Bailey
0550a4daa0 tools/publish_release.sh: create the Gitea release, upload and verify 2026-11-05 21:06:33 +00:00
Paul Bailey
a33fbd5d88 Version 0.2.0 2026-11-05 21:04:08 +00:00
Paul Bailey
caa611fac6 Audio: mood music, ambience, sound effects and creature voices (Kenney CC0 + synthesised); protocol 13 2026-11-05 21:03:54 +00:00
Paul Bailey
2a9d47630e Trailer: encode standard-range yuv420p so Safari and QuickTime play it 2026-11-05 19:37:24 +00:00
Paul Bailey
1d0008d34b Trailer tool (Movie Maker + ffmpeg) and a static download page built per release 2026-11-05 19:31:33 +00:00
Paul Bailey
608c66ea54 Update feed: the repo is now Admin/Emberwild 2026-11-05 19:15:05 +00:00
477 changed files with 14505 additions and 414 deletions

8
.gitignore vendored
View File

@@ -18,3 +18,11 @@ Thumbs.db
# Editor # Editor
*.tmp *.tmp
# Cloudflare wrangler cache (tools/site deploys)
.wrangler/
# Old Tam's voice environments (tools/voice/make_voice.sh sets one up; .venv was Kokoro, before 0.6.2)
tools/voice/.venv/
tools/voice/.venv-qwen/
tools/voice/__pycache__/

View File

@@ -16,7 +16,33 @@ addon SDK with guard rails.
## Status ## Status
See `docs/ROADMAP.md` for milestones and `docs/ARCHITECTURE.md` for the design. See `docs/ROADMAP.md` for milestones and `docs/ARCHITECTURE.md` for the design.
Current milestone: **M0 — playable single-player world skeleton** (scaffolding on disk; needs Godot 4 installed to open & run). **Cinderwild 0.6.2** is released (download page and player guide:
https://cinderwild.psbailey.uk, builds on the Gitea releases). Up to 0.6.0 it
was called Emberwild (a name already taken on Steam); before that, Valheimlike.
Built so far:
- M0-M1: the island, survival, crafting, building, weather, wildlife, hunting, fishing.
- M2: self-hosted multiplayer (Host Game, dedicated servers, rules, chat, admin).
- P1-P5 (`docs/PROGRESSION_DESIGN.md`): iron, stone building, the wolf moon and
alpha, the bear, crows and foxes, the barrow, hazards, the Old Stag. P6: a use
for every material, lights to place, dropping items, bag rows on the hotbar.
- T1, T2, T4 (`docs/TUTORIAL_DESIGN.md`): the tutorial with Old Tam (spoken),
and his tips in normal worlds.
- M4 so far: packaged builds, the update check, music, ambience, sound effects
and creature voices (`assets/audio/CREDITS.md`), the trailer and help pages,
the map (N) and compass.
- W0-W3, J1, J3 (`docs/WORLDLETS_DESIGN.md`): worldlets as data, the Cove
(beach, pier, sea fishing, a stream), and the cliff tunnel between them,
with a save file per worldlet; on a server, a server per land (the Valley's
starts the Cove's on the next UDP port), with chat, the player list,
admin commands and sleep across lands, and one clock everywhere.
- 0.6.0, the Cove's own (`docs/WORLDLETS_DESIGN.md` §5): the wreck, a
treasure map and a dig for each player, the drowned crew, crabs and gulls,
and a rowing boat to build and moor at the pier (sailing comes with the
Highlands). Report a bug in the pause menu; `docs/PLAYTEST.md` for testers.
Next: after the playtest, J2 (each tunnel's own gate and supplies), then the
Highlands (by sail).
Running from the source, `godot --path . -- --dev-worldlets` lets New World
start in any worldlet, to try one directly.
## Requirements ## Requirements
- **Godot 4.3+** (standard build; no C# needed — this project uses GDScript). - **Godot 4.3+** (standard build; no C# needed — this project uses GDScript).
@@ -36,7 +62,7 @@ godot --headless --path . -- --server
## Packaged builds ## Packaged builds
```bash ```bash
tools/export.sh # build/Emberwild-<version>-macos.zip and -windows.zip tools/export.sh # build/Cinderwild-<version>-macos.zip and -windows.zip
tools/export.sh macOS # or just one ("macOS" / "Windows") tools/export.sh macOS # or just one ("macOS" / "Windows")
``` ```
Needs the Godot export templates for your Godot version (Editor > Manage Needs the Godot export templates for your Godot version (Editor > Manage
@@ -45,14 +71,24 @@ Export Templates). The version number is `application/short_version` in
- **Mac:** a universal .app, ad-hoc signed but not notarised. On another Mac, - **Mac:** a universal .app, ad-hoc signed but not notarised. On another Mac,
the first launch needs right-click > Open (or System Settings > Privacy & the first launch needs right-click > Open (or System Settings > Privacy &
Security > Open Anyway). Security > Open Anyway).
- **Windows:** unzip and run `Emberwild.exe` (keep `Emberwild.pck` beside - **Windows:** unzip and run `Cinderwild.exe` (keep `Cinderwild.pck` beside
it). It's unsigned, so SmartScreen says "Windows protected your PC": it). It's unsigned, so SmartScreen says "Windows protected your PC":
More info > Run anyway. More info > Run anyway.
- A packaged copy is also a dedicated server: - A packaged copy is also a dedicated server:
`Emberwild.app/Contents/MacOS/Emberwild --headless -- --server` (Mac) or `Cinderwild.app/Contents/MacOS/Cinderwild --headless -- --server` (Mac) or
`Emberwild.exe --headless -- --server` (Windows). Saves and settings live in `Cinderwild.exe --headless -- --server` (Windows). Saves and settings live in
the same user folder as a copy run from source. the same user folder as a copy run from source.
## Trailer and download page
```bash
tools/trailer/make_trailer.sh # build/Cinderwild-trailer.mp4: recorded in-game (Movie Maker), needs ffmpeg
tools/site/make_shots.sh # build/shots/*.jpg: the page's screenshots, rendered in a window
tools/site/make_site.sh # build/site/: index.html, guide.html, the shots, poster and trailer for the current release
```
The page's download links point at the Gitea release named in
`build/version.json`, so rebuild it after each `tools/export.sh` release.
Gitea doesn't serve HTML pages: copy `build/site/` to any static web host.
## Layout ## Layout
``` ```
project.godot Godot project definition project.godot Godot project definition

72
assets/audio/CREDITS.md Normal file
View File

@@ -0,0 +1,72 @@
# Audio credits
Everything here is CC0 (public domain): free to use, change and ship, with
no attribution required. Credit is given anyway.
## Kenney (CC0)
`sfx/kenney/` holds sounds from three of Kenney's packs, renamed:
- **RPG Audio**: creaks, doors, cloth, leather, knife, metal clicks
- **Impact Sounds**: wood, mining, plank, punch and soft impacts; footsteps
on grass, snow, wood and concrete
- **Interface Sounds**: open, close, tick and confirmation chimes
https://kenney.nl/assets/rpg-audio,
https://kenney.nl/assets/impact-sounds,
https://kenney.nl/assets/interface-sounds:
"License: (Creative Commons Zero, CC0)
http://creativecommons.org/publicdomain/zero/1.0/". Thank you, Kenney.
Which file is which is listed in `KENNEY` in `tools/audio/make_audio.py`,
which also re-copies them (`--kenney <folder with the unzipped packs>`).
## SamsterBirdies (CC0)
`ambience/birds.ogg` is from "Bird ambience. Coniferous forest dawn chorus."
by SamsterBirdies (https://freesound.org/people/SamsterBirdies/sounds/745273/,
License: Creative Commons 0): its first 90 s (kept in
`tools/audio/sources/birds_samsterbirdies_745273.ogg`), softened a little and
made into a seamless loop by `tools/audio/make_audio.py birds`. Thank you.
## OwlStorm (CC0)
`ambience/crickets.ogg` is "Night Crickets Ambience on Rural Property" by
OwlStorm (https://freesound.org/people/OwlStorm/sounds/320145/, License:
Creative Commons 0; the preview is in `tools/audio/sources/`), with the low
rumble taken out and made into a seamless loop by
`tools/audio/make_audio.py crickets`. Thank you.
## Breviceps (CC0)
`ambience/owl_0.ogg` and `owl_1.ogg` are the two hoots in "Owl Hoot" by
Breviceps (https://freesound.org/people/Breviceps/sounds/465697/, License:
Creative Commons 0; the preview is in `tools/audio/sources/`), cut at 0.12 s
and 2.65 s (leaving out the short sound between them), then levelled. Thank you.
## Thunder (CC0)
`sfx/thunder/` is cut from six Freesound recordings, all License: Creative
Commons 0 (the previews are in `tools/audio/sources/thunder_*`), each round
its loudest strike, faded out and levelled by
`tools/audio/make_audio.py thunder`. Close cracks: "Thunder 08" by Emulius
(https://freesound.org/people/Emulius/sounds/744723/), "thunder11" by
saha213131 (https://freesound.org/people/saha213131/sounds/696550/) and
"Thunder strike" by AyaDrevis
(https://freesound.org/people/AyaDrevis/sounds/652690/). Distant rolls:
"Short_Thunder_Mid" by SholeColtis
(https://freesound.org/people/SholeColtis/sounds/683421/), "thunder7" by
nednednerb (https://freesound.org/people/nednednerb/sounds/38250/) and
"Thunder Clap OWB KY 441x16.wav" by Dave Welsh
(https://freesound.org/people/Dave%20Welsh/sounds/194364/). Thank you.
## Old Tam's voice
`voice/` is spoken by **Qwen3-TTS** (Qwen3-TTS-12Hz-1.7B by Alibaba's Qwen
team, Apache-2.0, https://huggingface.co/Qwen; run through mlx-audio, MIT).
His voice, a reedy old West Country farmer, was designed once from a written
description by Qwen3-TTS VoiceDesign (`tools/voice/old_tam/`), and every line
is spoken by cloning that recording. Each line's takes are checked against
the script by Whisper (OpenAI, MIT; mlx-whisper). The recordings are made from
our own text; rebuild them with `tools/voice/make_voice.sh` after changing any
line. (Up to 0.6.1 he was Kokoro-82M by hexgrad, Apache-2.0.)
## Cinderwild's own (CC0)
`music/`, `ambience/` and `sfx/synth/` are synthesised from scratch by
`tools/audio/make_audio.py` (no samples): the five music tracks (calm,
night, storm, danger, boss), the fire crackle, the creature voices, and the
swings, eating, splashes, the fishing reel and bite, the bow, the hurt thump
and death. Released under CC0 like the rest of this folder.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
assets/audio/music/boss.ogg Normal file

Binary file not shown.

BIN
assets/audio/music/calm.ogg Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More