Log inGet started
World

Fencing with Fences

Branchmain
Branchesmain
Commitc0197a6317

README.md

fencing_controls

The piste scheme for a 2.5D fence duel: footwork along one axis plus four mutually-exclusive commitments and a call for the next bout. Extends default, so everything the built-in scheme binds stays bound.

Footwork rides the canonical move axis rather than a new one, which is what makes advance and retreat work on keyboard, gamepad and touch without a second binding: only the axis's X component is read.

Actions this map adds

Actionkbmtouch
lungeKeyI, middle mousebutton, right-lower, group duel, priority 13
thrustKeyJ, left mousebutton, right-lower, group duel, priority 10
sweepKeyK, right mousebutton, right-lower, group duel, priority 11
parryKeyL, Spacebutton, right-lower, group duel, priority 12
restartKeyR, Enterbutton, right-upper, group duel, priority 20

The four commitments sit under the right hand in the order they cost you: I lunges the furthest and recovers the slowest, J thrusts, K sweeps, L or Space holds the guard. They share the duel group so the touch overlay lays them out adjacently as one cluster. restart sits apart, in right-upper, because it is only live once the assize is decided.

Axes

None of its own — move comes from default.

Activation

Activated from the scene entrypoint on load:

local map = asset.resolve("fencing_controls", "inputMap")
if map ~= nil then map:activate() end

The four commitments and the move axis are read by the Fencer component on a role = "player" fencer; restart is read by DuelMatch while the match is over.