ArTchie Studios
ArTchie-Bedder-Suite / Docs / BedderScript

Bedder Guide — play, edit, script inside the player

Plain English first. Sharp edges after.

1. What this is / is not

BedderScript (ABS) lets you play your game and change it while it is running. You write small scripts the game can safely run. You move objects, import art, and save named scene mods. Players can do the same in a shipped build.

It is not a second C# compiler. It is not a separate Importer or Converter store kit. Import allow-list + BsCsToBedder live inside com.bedder.script. It is not Charter (plans), Scribe (comment banners), or Atlas (code map). Those are sibling kits.

2. Open it

Bedder keeps its own SKU menu on purpose:

Tools / BedderScript / …

Job Click
Edit scripts in the Editor (no Play) Tools / BedderScript / Open Bedder IDE
Jump into Play with the in-game faces Tools / BedderScript / Play In-Game IDE
Wire loaders into the open scene Tools / BedderScript / Set Up Bedder Editor in Scene
Sticker every object with a BsId Tools / BedderScript / Add BsIds To Open Scene
Rebuild the MANUAL API appendix Tools / BedderScript / Regenerate API Reference
Ship a targeted content pack Tools / BedderScript / Export ABS Pack…
Demo scene (when you want a known-good setup) Tools / BedderScript / Build Demo Scene
Drop a .bedder on a GameObject Hierarchy → right-click object → GameObject / BedderScript / Assign Script…

Other ArTchie kits hang under ArTchie / <Kit> / …. Bedder does not.

3. First five minutes

  1. Open a scene that has Bedder wired (demo scene, or run Set Up Bedder Editor in Scene + Add BsIds To Open Scene, then save).
  2. Click Tools / BedderScript / Play In-Game IDE (or press Play yourself).
  3. In the Game view (not the Scene view), press the face keys:
Key Face What you get
F1 IDE (CODE) Edit .bedder / .bs. ▶ APPLY hot-swaps into running runners.
F2 Blox Blocks for the same script. Edits rewrite the text. No second copy.
F3 Scene Hierarchy, inspector, fly cam, gizmos, Project, Import, named saves.
F4 Bug report Name / description / repro + screenshot → Documents/<product>/Bugs/. Modal.
  1. Press F3. Fly with RMB + mouse and WASD ( Q/E up/down, Shift sprint). Click an object. Drag a gizmo (W move / E rotate / R scale).
  2. Click ▶ LOAD when you want staged edits written into the scene booklet. Then try Save as… (see meat below).

That is enough to know Bedder is alive. Deeper controls live in package MANUAL.md §7.

  • Empty / first-run: Editor IDE + F1 title No script open (New / Explorer; menu Tools / BedderScript / Open Bedder IDE or Play In-Game IDE). Explorer shows (no scripts yet — click New) when the Scripts folder is empty. F3 inspector Nothing selected + Create ▾ hint; empty Hierarchy No objects yet. Export ABS Pack No assets in pack yet; Assign picker No .bedder scripts yet; Ask AI No script open. Shared Editor chrome: BedderEmptyGui. Terrain HOLD still stands for terrain feel.
  • Hierarchy search · Problems filter: F3 Hierarchy Filter… (name contains; Esc clears). F1 Problems empty copy names APPLY; E/W chips; up to 24 rows. F1 Ctrl+Shift+P (also Ctrl+P) command palette — Verify / APPLY / Save / Format / Fix / Find / Outline (MANUAL §7).

4. The meat

F3 Scene — stage, then LOAD

Every create / delete / move / paint / assign stages a booklet op. You see imposters or hides now. Nothing is permanent until ▶ LOAD. That robot replays the booklet on boot (when auto-load is on, or after you Open a named save).

Ctrl+Z undoes pending ops while F3 is open. F1 keeps its own undo for script text. Closing F3 with unapplied ops asks: apply, keep staged, or stay.

Named saves — Save as… / Open ▾ / Reset

On the F3 toolbar:

  • Save as… — copies the current working booklet into a named save. If ops are still staged, it tells you to ▶ LOAD first.
  • Open ▾ — pick a save. Scene reloads pristine, then that save replays once.
  • ↺ Reset to the untouched scene — clears the working booklet and reloads the shipped floor.

On disk (under the product Documents root):

SceneMods/<scene>/Saves/<name>/
  booklet.json
  card.json

card.json holds name / description / author / created / thumbnail / opCount — the shape a picture picker grows into later.

autoLoad is opt-in

On BsSceneModLoader, autoLoad defaults off. Off = scene starts pristine; the player (or you) opens a named save from F3. On = resume the working booklet on Start. Open-save still forces a one-shot replay even when autoLoad is off.

Project + Import honesty

F3 Project roots: Scripts, Imports, SceneMods, (Editor) Assets, plus folders you add with + Add source….

Supported today (allow-list):

  • Images: .png .jpg .jpeg .tga .bmp .gif .tif/.tiff .psd
  • Audio: .wav .ogg .mp3 .aiff/.aif
  • Models: .obj .fbx .glb/.gltf (optional glTFast) .stl .ply .bsmesh (+ .pbmesh)

Hard cap: 50 MB. Same bytes = already in library (not a failure). Else _2 rename.

Honest load caveats: GIF = first frame. TIFF = 8-bit uncompressed/PackBits (LZW/JPEG/tiled may copy but not decode at Place). PSD = flattened 8-bit composite (ZIP/16-bit will not decode). FBX = static meshes + materials/textures; rigs/animation not imported. STL/PLY = mesh only.

Still refused as assets (status names what is supported): .exr .hdr .webp, .flac .m4a, .dae .3ds .blend, Mecanim/controller/anim, .unity scenes, fonts, video, etc. Prefer export to FBX/glTF/PNG.

.unitypackage / .abspack: select → Open package… (not Import). Tree + ticks. Prefabs assemble when wiring works. Finish line names skipped kinds with why.

CsToBedder lives in this package

Selecting a .cs in a source folder → Import runs BsCsToBedder into Scripts/<stem>.bedder and reports TODO(bs) count. C# is never copied into Imports. Package import converts scripts on by default (untick to skip). The converter is a translator assistant — unmapped lines stay commented with TODO(bs) for a human. Not a second kit. Not 1:1 on every C# shape yet.

MANUAL API regen rule

The MANUAL appendix between <!-- BSAPI:BEGIN --> / END markers is generated.

  • Do not hand-edit that block.
  • Edit docs on builtins (BsBuiltins.All), then run Tools / BedderScript / Regenerate API Reference.
  • Headless: -executeMethod BedderScript.EditorTools.BsApiReferenceTool.Run.

5. Common stuck

  1. F1–F4 do nothing — focus the Game view, not Scene. Faces need Play Mode + Bedder loaders in the scene. Try Play In-Game IDE / Set Up Bedder Editor in Scene.
  2. WASD walks the player instead of flying — open F3. Scene view owns WASD while F3 is up; gameplay on update pauses.
  3. Save as… refuses — staged ops are not in the booklet yet. Click ▶ LOAD, then Save as….
  4. Edits vanish after stop/restartautoLoad is off by default. Open your named save from Open ▾, or turn autoLoad on if you want resume-every-boot.
  5. Import says unsupported — read the one-line supported list in the status. Export to an allow-listed type. .cs uses Convert → Scripts, not Imports.
  6. MANUAL API looks wrong / incomplete — regenerate. Do not patch the BSAPI block by hand.
  7. Objects lack Delete / booklet stickers — run Add BsIds To Open Scene, save the scene, Play again. No BsId = skipped for Duplicate/Delete staging.

6. For pros

  • Contract: BsApi.ContractVersion = bs-contract-2. Bump on any API census change (proof battery asserts).
  • Destroy pitfall (bit us 3×): In Play Mode, Object.Destroy is end-of-frame. Same-frame destroy → lookup/rebuild (tree, inspector, booklet replay) must DestroyImmediate components or track a dying set. BsSceneApply.Kill DestroyImmediates components in Play Mode so remove→assign in one batch keeps the script. GameObjects stay deferred.
  • Terrain HOLD: Create / sculpt / paint / grass ops ship. BsTerrain* feel polish is on HOLD unless Adam lifts it. Do not edit feel code in this hive tick.
  • Persistence spine: Scripts → BsScriptStore (StreamingAssets seed → Documents Scripts). Scenes → BsId + booklet + BsSceneApply. Assets → sha catalog + importer plugins.
  • Soft probes only: Bedder may reflect Atlas / Unity AI; never hard-depend. Ask AI in the Editor IDE stays disabled-with-explanation when Assistant is missing.
  • Canonical base: artchie-RECONCILED-20260822-2107 (com.bedder.script ≈ cdc20ce). Full language + face reference: package MANUAL.md.
Kit When you want it
Suite Map Which ArTchie pile does what · Guides/Guide-Suite-Map.md
Scribe Comment / document banners on C# (optional polish after CsToBedder)
Charter Game plan + Genre Blueprints (templates under stubs~)
Atlas Index / search / graph of your project (Bedder may probe it)
Folio Read markdown in the Editor
Anvil / Rivet Project health audits · daily Editor chores
ArTchie AI Companion chat — uses Atlas when both present; never require a pasted key

Import + Converter stay in Bedder. Do not invent a third SKU for them.

Source in the box: Assets/ArTchie Studios/ArTchie-Bedder-Suite/com.bedder.script/Documentation/Guide-Bedder.md