106 lines
5.2 KiB
Markdown
106 lines
5.2 KiB
Markdown
# Valheim-like Survival Game (working title)
|
|
|
|
A stylised-realistic, low-poly survival game built in **Godot 4**, inspired by
|
|
Valheim (look/feel) and Rust (survival depth, player-run servers). Cross-platform
|
|
(Windows / macOS / Linux). Self-hosted authoritative dedicated server. Sandboxed
|
|
addon SDK with guard rails.
|
|
|
|
## North star
|
|
- **Look:** low-poly meshes + atmospheric lighting + fog/post-processing. Mood over texture detail. (Valheim recipe — a 5-person team made it run on potatoes.)
|
|
- **World:** mesh/heightmap terrain, procedurally generated, biomes. NOT voxels.
|
|
- **Building:** snap-together prefab pieces (walls, floors, roofs) with structural rules.
|
|
- **Survival loop:** gather → craft → build → defend. Health/stamina, day/night, enemies.
|
|
- **Multiplayer:** authoritative headless dedicated server, same codebase, self-hostable on any OS. Clients are never trusted.
|
|
- **Addons:** sandboxed (Lua), capped API, CPU/memory quotas, no host filesystem/network/escape. Guard rails from day one.
|
|
|
|
## Status
|
|
See `docs/ROADMAP.md` for milestones and `docs/ARCHITECTURE.md` for the design.
|
|
|
|
**Emberwild 0.6.0** is released (download page and player guide:
|
|
https://emberwild-95k.pages.dev, builds on the Gitea releases). 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
|
|
- **Godot 4.3+** (standard build; no C# needed — this project uses GDScript).
|
|
- Git.
|
|
|
|
## Quick start (once Godot is installed)
|
|
```bash
|
|
# Open the project
|
|
godot --path . --editor # or open Godot and import this folder's project.godot
|
|
|
|
# Run the game
|
|
godot --path .
|
|
|
|
# Run the headless dedicated server (later milestone)
|
|
godot --headless --path . -- --server
|
|
```
|
|
|
|
## Packaged builds
|
|
```bash
|
|
tools/export.sh # build/Emberwild-<version>-macos.zip and -windows.zip
|
|
tools/export.sh macOS # or just one ("macOS" / "Windows")
|
|
```
|
|
Needs the Godot export templates for your Godot version (Editor > Manage
|
|
Export Templates). The version number is `application/short_version` in
|
|
`export_presets.cfg`.
|
|
- **Mac:** a universal .app, ad-hoc signed but not notarised. On another Mac,
|
|
the first launch needs right-click > Open (or System Settings > Privacy &
|
|
Security > Open Anyway).
|
|
- **Windows:** unzip and run `Emberwild.exe` (keep `Emberwild.pck` beside
|
|
it). It's unsigned, so SmartScreen says "Windows protected your PC":
|
|
More info > Run anyway.
|
|
- A packaged copy is also a dedicated server:
|
|
`Emberwild.app/Contents/MacOS/Emberwild --headless -- --server` (Mac) or
|
|
`Emberwild.exe --headless -- --server` (Windows). Saves and settings live in
|
|
the same user folder as a copy run from source.
|
|
|
|
## Trailer and download page
|
|
```bash
|
|
tools/trailer/make_trailer.sh # build/Emberwild-trailer.mp4: recorded in-game (Movie Maker), needs ffmpeg
|
|
tools/site/make_site.sh # build/site/: index.html + poster.jpg + trailer.mp4 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
|
|
```
|
|
project.godot Godot project definition
|
|
scenes/ game scenes (.tscn)
|
|
scripts/ GDScript (.gd)
|
|
core/ shared systems (world, net, save)
|
|
player/ player controller, camera
|
|
world/ terrain, chunks, generation
|
|
building/ snap-together building system
|
|
addons_sdk/ the sandboxed addon host + API
|
|
addons_examples/ example mods written against the SDK
|
|
assets/ models, materials, textures (low-poly)
|
|
docs/ architecture, roadmap, addon SDK spec
|
|
```
|
|
|
|
## License
|
|
TBD (lean toward MIT or a source-available license — decide before first public release).
|