Paul Bailey 4640f5e577 M1a: survival core, pause menu, title screen and save/load
Design: docs/SURVIVAL_DESIGN.md (core loop, systems, architecture, phases).

Survival core (M1a):
- Items/recipes as data (data/*.json) in the addon SDK's define_item /
  define_recipe shape; procedural item meshes and offscreen-rendered icons
- Inventory class (40 slots, hotbar = row 1) shared by player and chests;
  click / right-click split / shift-click quick-move
- Actions autoload: the intent layer (craft, pickup, harvest_hit, place,
  transfer) that validates every change; becomes the RPC surface in M2
- Gathering: ground pickups (sticks, stones, flint); trees chopped with an
  axe fall and leave stumps; boulders mined with a pickaxe shrink per hit
- Crafting screen with station checks (workbench); placement mode with
  green/red ghost, rotation and overlap/slope validation
- Pieces: campfire (light, flames, embers), workbench, chest (16 slots)
- HUD: hotbar, held tool view model with swing, prompts, toasts

Menus and saving:
- ESC pause menu: resume, controls, fullscreen, mouse sensitivity, quit
- Title screen over a flyover of the island: Continue / New World (name +
  seed) / Load World (with delete) / Quit
- Saves autoload: one folder per world under user://worlds, atomic writes
  with a .bak; stores only player changes (player, pieces, chest contents,
  harvested resources, taken pickups) and regenerates the rest from the seed
- Autosave every 2 min, Save & Quit to title/desktop, save on window close

Fixes: UI screens now fill the viewport (were pinned top-left); title
backdrop no longer captures the mouse.

Tests: test_survival_core (31 checks), test_save_load (round trip + slots),
test_terrain_edges now checks 8 seeds for deep pits / unbanked water.
2026-11-04 00:34:46 +00:00

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.

Current milestone: M0 — playable single-player world skeleton (scaffolding on disk; needs Godot 4 installed to open & run).

Requirements

  • Godot 4.3+ (standard build; no C# needed — this project uses GDScript).
  • Git.

Quick start (once Godot is installed)

# 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

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).

Description
Low-poly survival game (Godot 4)
Readme 16 MiB
2026-11-07 16:14:11 +00:00
Languages
GDScript 94%
Python 3.6%
HTML 1.3%
Shell 1.1%