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
- Open a scene that has Bedder wired (demo scene, or run Set Up Bedder Editor in Scene + Add BsIds To Open Scene, then save).
- Click
Tools / BedderScript / Play In-Game IDE(or press Play yourself). - 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. |
- 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).
- 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 IDEor 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 runTools / BedderScript / Regenerate API Reference. - Headless:
-executeMethod BedderScript.EditorTools.BsApiReferenceTool.Run.
5. Common stuck
- 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.
- WASD walks the player instead of flying — open F3. Scene view owns WASD while F3 is up; gameplay
on updatepauses. - Save as… refuses — staged ops are not in the booklet yet. Click ▶ LOAD, then Save as….
- Edits vanish after stop/restart —
autoLoadis off by default. Open your named save from Open ▾, or turn autoLoad on if you want resume-every-boot. - Import says unsupported — read the one-line supported list in the status. Export to an allow-listed type.
.csuses Convert → Scripts, not Imports. - MANUAL API looks wrong / incomplete — regenerate. Do not patch the BSAPI block by hand.
- 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.Destroyis end-of-frame. Same-frame destroy → lookup/rebuild (tree, inspector, booklet replay) mustDestroyImmediatecomponents or track a dying set.BsSceneApply.KillDestroyImmediates 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: packageMANUAL.md.
7. Related kits
| 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