s&box/field-guide
 field-guide / tooling-environment
10/10
26.07
"Angles struct fields are lowercase"

Angles uses .pitch/.yaw/.roll (lowercase) and Vector3 uses .x/.y/.z — capitalized sightings in a codebase belong to unrelated component properties.

26.07
"Character facing derived from velocity flips 180 degrees on every pendulum reversal"

Deriving a visual's facing from horizontal velocity causes 180-degree snaps on any momentum reversal — lock facing to an attach-time azimuth for pendulums and oscillators.

26.07
"dotnet build verifies compile but NOT the whitelist"

Headless dotnet build is green while the in-editor compiler emits SB1000 — Environment/IO/Process/reflection are banned in game code.

26.07
"Editing .razor safely (shell/emoji mojibake)"

Razor HUD emoji and dashes die under Get-Content/Set-Content — edit with byte-safe UTF-8 APIs or a real editor.

26.07
"Engine ships built-in McpTool source as readable C# — read it before writing your own"

The engine ships its built-in [McpTool]s as full C# source, not compiled DLLs — check addons/tools/Code/Mcp/*.cs for canonical patterns before inventing your own.

26.07
"Everything broke at once — check for a stale assembly first"

Failed package compile leaves the editor running the last-good hotload — multi-symptom 'regressions' are often stale code.

26.07
"FacingYawOffset swaps which local axis is the flip axis vs the cartwheel axis"

A front-flip rotation uses _baseRot.Forward (not .Right) when FacingYawOffset is ±90° — the offset swaps which local axis is perpendicular to travel.

26.07
"Headless dotnet build misses Razor compile errors"

dotnet build reports 0 errors on .razor files the in-editor compiler rejects — the headless build doesn't surface the Razor errors the live editor's Roslyn compiler flags.

26.07
"Stalled Steam update half-deletes the s&box install"

If sbox-launcher.exe stays open during a Steam update, files vanish mid-install — validate via steam://validate/590830.

26.07
"Windows/PowerShell traps that corrupt s&box source"

Get-Content/Set-Content re-encodes BOM-less UTF-8 as ANSI; CRLF files break \n-only search-replace — use byte-safe APIs.