s&box/field-guide
tag

#gameplay

14 items (2 guides · 12 fixes)

guides
fixes
26.07
"Double jump doesn't work with Jump() — set Velocity.z directly"

Jump() helpers clamp against rising velocity, eating the second impulse. Set Velocity.z directly for a reliable double jump.

26.07
"Foot-sliding on locomotion — pace clips by their authored stride, not the controller's top speed"

Foot-slide happens when PlaybackRate is tied to movement top speed instead of the clip's own authored stride distance.

26.07
"Heavy work without frame hitches"

GameTask.RunInThreadAsync for parse/math; main thread only for engine objects; Yield every N items for loading UI.

26.07
"Kinematic movement that doesn't get stuck"

Always handle tr.StartedSolid — ignore that frame so an overlapped body can walk free; slide-trace the wish onto the hit plane.

26.07
"My interface scan returns nothing at runtime"

OfType<IInteractable> on GetAllComponents<Component> returns nothing — enumerate concrete types and union them.

26.07
"Owner-simulated networking"

[Sync] owner→proxies, IsProxy early-out; FromHost for shared truth — don't NetworkSpawn scene-wide singletons.

26.07
"Runtime world-building helpers"

FlatBox/Prop/Deco/Wire helpers plus Obstacle records as plain data beat physics queries for build validity.

26.07
"s&box component lifecycle in practice"

OnAwake runs synchronously inside Components.Create — set singletons there; derive from [Property] in OnStart after spawn helpers assign.

26.07
"Save/load without drift"

DTOs + one spawn path + deterministic static world — guard restored defaults; keep enums append-only.

26.07
"Scene.GetAllComponents skips disabled components"

A component with Enabled = false is invisible to GetAllComponents — search returns null even though the component exists.

26.07
"The singleton pattern that removes reference-wiring"

static Instance set in OnAwake, cleared in OnDestroy — everything reads Foo.Instance with null-guards, no inspector wiring.

26.07
"Trace-based kinematic controllers don't fire triggers"

A hand-integrated trace mover has no collider component — ITriggerListener and OnTriggerEnter never fire. Use distance-polling instead.