Valheim
You are viewing a potentially older version of this package. View Latest Version
Install with App

Details

Date Uploaded
3 weeks ago
Downloads
3.4K
Size
302KB
ADDatHost Valheim hosting
€1

Growbed

A tiered placeable farming station for Valheim. Seed it, watch it grow through visual stages, harvest the batch in one interaction — the Fermenter/Smelter pattern reskinned as farming, in four material tiers.

Built on BepInEx + Jotunn. Multiplayer and dedicated-server safe by design.

Status

Milestone State
1. Dummy placeable in-game compiles against the real game assemblies; not yet run in-game
2. Interact/harvest loop + ZDO sync compiles; not yet run in-game
3. Real models, stage visuals geometry generated; Unity build tooling written, bundle not yet built
4. Tier config table done — all four tiers are data rows
5. Balance pass numbers chosen and applied; needs playtesting to confirm
6. Polish (sound, particles, tooltips) tooltips done; effect lists wired but unassigned
Packaging Thunderstore manifest, 256x256 icon and package script done

The mod builds clean against Valheim's real assemblies and packages into an installable dist/Growbed-0.1.0.zip. Nothing has been run inside Valheim yet — Valheim has no macOS build, so the in-game half of milestones 1–2 needs a Windows or Linux machine. See docs/SETUP.md.

Layout

src/Growbed/          the mod
  GrowbedPlugin.cs    BepInEx entry, piece registration, localisation
  GrowbedTier.cs      the tier table — all balance numbers live here
  Growbed.cs          the station behaviour: state, interaction, visuals
  SeedRegistry.cs     seed -> crop discovery
  GrowbedConfig.cs    admin-only, server-synced config
assets/blender/       procedural model generation
assets/icons/         build-menu icons (rendered, embedded in the DLL)
unity/                Editor tooling that turns the models into the AssetBundle
assets/out/           generated fbx/glb/blend + preview render (gitignored)
tools/                assembly fetch, packaging, r2modman deploy, apicheck
docs/                 HANDOFF (start here), SPEC, SETUP, BALANCE, MULTIPLAYER

Two deliberate departures from the original spec

Seeds are discovered, not allowlisted. The spec called for matching m_shared.m_name against known seed prefabs. Instead SeedRegistry walks the game's own Plant prefabs and reads seed, crop, yield and grow time straight off them. Same free compatibility with crop mods, but it also means grow times and yields track vanilla automatically instead of being hardcoded constants that drift when the game rebalances.

Growth stage is derived, not stored. The spec listed stage as a ZDO field. Storing it would mean replicating a value every peer can compute, and a stage advance would need an RPC that can be missed. Only the plant time is stored; each client derives the stage. One source of truth, no desync, correct for a client joining mid-growth. See docs/MULTIPLAYER.md.

Build and install

tools/package-thunderstore.sh

Builds and writes dist/Growbed-<version>.zip, ready for r2modman -> Settings -> Import local mod. BepInEx and Jotunn come in as declared dependencies rather than being placed by hand.

Requires the .NET SDK and a path to Valheim's managed assemblies — full instructions, including how to get those on a Mac, in docs/SETUP.md.

For iteration against an existing profile, tools/deploy-r2modman.sh copies the built DLL straight into it.

Generate the art

/Applications/Blender.app/Contents/MacOS/Blender --background \
  --python assets/blender/gen_growbed.py -- --outdir assets/out

Current output, all comfortably inside the low-poly budget:

Tier Slots Trough tris Worst case on screen
Wood 4 132 660
Bronze 6 228 1020
Iron 8 260 1316
Silver 12 260 1844

Balance model

Grow-time multipliers are deliberately above 1.0 — a plant in a growbed grows slower than the same plant in the ground. A bed packs roughly twice vanilla's plant density into its footprint, so vanilla-speed growth would have put even the entry tier at 2x vanilla throughput per m². What a bed sells is batch planting, batch harvest and a tidy build, not raw output. Full working in docs/BALANCE.md.

Tier Slots Time mult Throughput vs vanilla per m²
Wood 4 2.20x 0.9x
Bronze 6 1.80x 1.1x
Iron 8 1.60x 1.3x
Silver 12 1.30x 1.5x

Open questions

  • Ship with all crops (automatic, given seed discovery) or restrict to 1–2 at launch.
  • Piece build recipes have no vanilla concept of a crafting-station level, so "Forge lvl 2/4" cannot be enforced the way the spec assumes. Material cost already gates progression — you cannot hold silver before the Mountains. Worth dropping the level requirement unless it needs enforcing for its own sake.
  • Beds lock from planting until harvest; you cannot top up a partly planted bed. Allowing top-ups would let a player plant one seed, wait, then fill the rest for a near-instant harvest. Locking is the simple correct answer, but it should be a conscious one.
DatHost — Valheim server hosting, first month for one euro
DatHost — Valheim server hosting, first month for one euro
DatHost — Valheim server hosting, first month for one euro
DatHost — Valheim server hosting, first month for one euro
DatHost — Valheim server hosting, first month for one euro