the symptom, in your words

"Input.config and AnalogMove for a new game"

✓ verified on 26.07.08e
lane Getting set upposted

▸ SYMPTOM

  • Input.AnalogMove stays zero despite WASD.
  • New action in Input.config never fires Input.Pressed("MyAction") even though dotnet build is green.
  • Gamepad bumpers don't bind with LeftShoulder / RightShoulder names.

▸ CAUSE

ProjectSettings/Input.config is a JSON list of actions. WASD only feeds Input.AnalogMove when actions are named Forward / Backward / Left / Right.

New actions do not register until the editor restarts (or at least a full Play restart that reloads the action list): headless compile success does not reload bindings.

▸ FIX

Schema

Each entry: { Name, GroupName, Title, KeyboardCode, GamepadCode }.

  • Input.Pressed / Down / Released("name"): case-insensitive; underscores must match.
  • Input.MouseWheel is a Vector2; Mouse.Position is pixels; use Screen.Width / Height for math.

Project-standard set

Movement (Forward/Backward/Left/Right) + Run + Jump, Interact (F), Attack1/2 (mouse), Slot1–9, plus game-specific (Build, Admin, …).

Gamepad codes that work

Verified strings include: "A", "B", "X", "Y", "LeftTrigger", "RightTrigger", "LeftJoystickButton", "RightJoystickButton", "DpadNorth" / South / East / West, "None".

Bumpers: "SwitchLeftBumper" / "SwitchRightBumper", not LeftShoulder / RightShoulder. Menu: "SwitchLeftMenu" / "SwitchRightMenu".

Optional: Input.UsingController exists for pad-only feel gates. Prefer engine ConVars for user look sensitivity. Don't override ControllerLookPitchSpeed / ControllerLookYawSpeed from game code.

After editing Input.config

Restart the editor (or fully reload so the action list refreshes). Then Play-test the new binds.

Wish-dir pattern once AnalogMove works:

snippet
var wish = Rotation.FromYaw(cameraYaw)
    * new Vector3(Input.AnalogMove.x, Input.AnalogMove.y, 0);

▸ WHY IT WORKS

AnalogMove is a derived stick built from specifically named digital actions: rename them and the vector dies. The input action table is loaded with the editor session, not with every hotload, so new names need a restart to appear.

Verified on engine 26.07.08e: seen in a real project.
s&box moves fast; an undated fix is a liability. Spot a stale detail?

Want to know when new guides or fixes drop? Join the community to help build this out. Report gotchas, flag outdated fixes, or just lurk.

Join the Discord