Skip to content

SiegeSmith Making a Game

codingncaffeine edited this page Jul 10, 2026 · 2 revisions

Making a Game from Scratch — the walkthrough

This is the beginning-to-end path: an empty viewport to a playable, distributable .dsmap with terrain, scenery, weather, music, monsters with loot, an NPC with dialogue, a quest journal, and scripted logic. Every step names the exact buttons. For depth on any tool, the World Builder Guide documents every feature individually.

You need SiegeSmith running (it finds your DS1 install automatically) and the SiegeFX engine built once (dotnet build -c Release) so the Play button has something to launch.


Step 0 — Open the World Builder and name your game

Open the World Builder from SiegeSmith's main window. On the Map tab (bottom), set:

  • Map name — becomes the tank name (map_<name>.dsmap) and the folder tree inside it.
  • Region name — your first region.
  • Mod identity — author, version, one-line description. These write a manifest into the packed map so a distributed file says who made it.

The viewport's empty-state text lists all the camera and editing controls; F1 shows them any time.

Step 1 — Lay the terrain

  1. In the Nodes palette, search for a floor tile (try t_grs01 for grassland, t_dgn for dungeon). The thumbnail under the list shows what you picked. Star (★) the ones you like.
  2. Click Place as anchor — your first node appears.
  3. Tick 🖌 Paint terrain, then click-drag across the viewport: each ~50px of drag chains another tile onto the nearest free door. Sketch your whole layout this way — rooms, corridors, a boss arena. Every step is one undo if you overshoot.
  4. For an exact join (a specific doorway), untick Paint and use Connect to selected node with explicit door picks; use Link existing doors to close a loop back on itself.
  5. Turn on the Bounds overlay (above the Outliner) to sanity-check for overlaps, and use Replace mesh on selected node to swap any tile without losing its connections.
  6. Select nodes and change their Texture set in the Inspector to vary the look.

Checkpoint: press Test terrain ▶. The engine launches and you can fly over your bare terrain. Close it (or keep it open — ⟲ Sync game will restart it with your edits from now on).

Step 2 — Dress the set

  1. Flip the Objects palette to Props mode. Use the tag filter (tree, barrel, fence, …) and search.
  2. Drag-drop hero pieces (a well, a cart, a house) exactly where you want them. Drag to slide, Shift-drag to rotate (toolbar 15° snap for clean angles), or type exact numbers in the Inspector.
  3. Tick 🌿 Scatter, set count/radius/gap, and click-drag to sprinkle grass, rocks, and trees with random facing — instant forests.
  4. Ctrl+click several pieces to group them: Align/Distribute straightens fence rows; Save prefab turns your campfire arrangement into a reusable stamp you can place in any future region from the Custom tab.

Step 3 — Light and atmosphere

  1. Lights tab: add a directional light and tune its color/direction — the viewport shades live. Add point lights by the campfire; the Radii overlay shows their reach.
  2. Map tab → Atmosphere: set fog (e.g. near 8, far 60, color #9AA5B1) and tick Audition fog in viewport to tune it live. Add rain + lightning, or snow, and wind if you want weather in Play.
  3. Mood & music: set ambient/standard/battle tracks (import your own MP3s in Step 6 if you like).

Step 4 — Enemies, loot, and patrols

  1. Objects palette → Actors mode. Drag a few krug_scouts into the woods.
  2. Make a boss: select one, and in Instance overrides set Life 500 and Scale × 1.4 — this one placement is now a giant with boss hit points while its species stays stock. Put a reward in Drop (e.g. a weapon template) — guaranteed on death, on top of its normal loot roll.
  3. Give a sentry a route: select it, tick 🚶 Draw patrol route, click waypoints around the camp, untick. The blue ribbon is the route; the actor walks it in Play.
  4. Place a chest (ctn_ templates) and set its Drop override — guaranteed contents.

Step 5 — An NPC, dialogue, and the quest journal

  1. Place a friendly actor (e.g. a farmer template) near the start.
  2. Logic tab → add a Conversation. In the Inspector give it a key and add lines in order: a greeting, then the hook — "Clear the krug camp east of the well."
  3. On that line, set activate_quest to your quest key (e.g. quest_clear_camp).
  4. Map tab → Quests: set the chapter name/intro, add quest_clear_camp with a screen name and description. The validator will confirm the dialogue reference resolves.
  5. Back on the conversation, Bind it to the placed NPC.
  6. Open the Graph tab → Dialogue and Quest flow to see the whole story wiring as boxes and arrows; click any box to edit it.

Step 6 — Custom content (optional but this is the "new game" part)

On the Custom tab, set your assets folder once, then:

  • Import texture — any PNG/JPG becomes a DS1 .raw: use it on decals (your own signage), custom terrain tiles, or template art.
  • Import mesh — an OBJ/glTF becomes a placeable .asp prop.
  • Import audio — WAVs for sound cues, MP3s for your soundtrack (reference them in Mood & music).
  • Custom templates — create my_boss_axe (weapon damage), iron_guard_armor (defense), forest_troll (monster with your life/damage numbers), or a named NPC — each specializes a shipped base so it animates and fights out of the box, and each appears in the palette immediately.

Everything in the assets folder bundles into the map automatically — the .dsmap is self-contained.

Step 7 — Scripted moments (optional)

Logic tab → add a Trigger at the camp entrance. In the Inspector give its row a condition party_member_within_bounding_box(4,4,2) and an action such as send_world_message("we_req_activate", 0x…) targeting a command gizmo — an ambush, a door, a cinematic camera order. The Volumes overlay shows the activation box; the Graph → Trigger flow view proves the wiring has no dangling ends (grey stubs = mistakes).

Step 8 — Validate, then play it

  1. Validate (toolbar). Fix anything red — the rows name the offender (unknown template, duplicate id, unresolved texture, dangling quest reference).
  2. Dependencies (Map tab) lists everything the map reaches for, flagged if unresolved.
  3. Play ▶. The engine launches your map: walk it as a PC, fight the krug, kill the boss for its guaranteed drop, talk to the farmer, watch quest_clear_camp appear in the journal (L key in-game).
  4. Iterate: move things, tune fog, add loot — then ⟲ Sync game restarts the running session with your latest state in one click.
  5. 📸 Baseline before a big session and Diff after, to see exactly what you changed.

Step 9 — Ship it

The status bar names the packed .dsmap after every launch. That single file is your game: it contains the terrain, placements, logic, dialogue, quests, moods, your custom art/audio/templates, and the identity manifest. Copy it out of the temp folder, name it, and distribute it — players run it with the SiegeFX engine (--play-region), and the wiki's Building and Running page covers the engine side.

Autosaves of your work-in-progress live in %APPDATA%\SiegeSmith\autosave; Save region… writes the terrain graph (nodes.gas) wherever you keep project sources.

Where to go next

  • Grow the world: the World tab stitches multiple regions into one continuous map.
  • Deepen the systems: the World Builder Guide covers every tool in detail.
  • Mod the original game instead: the Modder's Guide covers editing shipped content and folder-mods.

Clone this wiki locally