Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

A game controller

A controller plugged in works on the character whose play window has the keyboard. Its buttons do what a key does: send commands, fill the command input, or do one of Hydra’s own actions. One stick walks, the other scrolls, and a wheel of commands opens under a held button. The pad is read while it is connected, and the story says when one is connected or gone.

What a button does

Binds are written in controller.toml: one in the data folder for every character, and <game>_<name>.controller.toml beside a character’s layout for that one, whose binds are taken over everyone’s button by button. With no file at all Hydra’s own binds are used, and a file written for Vellum works as it is.

[controller]
start = "interact_mode"                  # Interact mode, begun or left
dpad_up = { macro_text = "up\r" }
south = { macro_text = "look\r" }
l2 = "controller_modifier"               # Held: chords another button
r2 = "controller_wheel"                  # Held: the command wheel
r3 = "controller_wheel:portals"          # Held: the room's ways out
select = "controller_overlay"            # The legend, shown or put away

"l2+south" = { macro_text = "stand\r" }  # a chord

The buttons are south, east, north, west, the four dpad_ directions, l1, r1, l2, r2, l3, r3, select, start and guide. A value is an action’s name, or { macro_text = "..." } for commands sent as typed. A macro naming <target_id> or <target_noun> acts on the thing interact mode has in focus, and is not sent with none.

A chord is a button pressed while modifiers are held. A button bound to controller_modifier does nothing on its own; held, it makes another button’s chord, l2+south. Only the bind with exactly the modifiers held is done, so holding l2 and pressing South never does South’s own bind.

The sticks

One stick walks, a step each time it is pushed a new way, in eight directions. The other scrolls the window in use, faster the further it is pushed. Which is which is set under Tuning. A push has to be firm and the return fair, so a stick wobbling at the edge of a direction does not step twice.

While a menu is open, the d-pad moves in it, South chooses and East closes, and no stick walks.

Interact mode

The interact_mode button begins it. The d-pad steps a focus through the things in the room and on you – up and down within a kind, left and right from kind to kind – and the scrolling stick does the same. South acts on the thing in focus, East leaves. The mode’s line shows at the window’s foot, and the thing in focus is marked wherever it is drawn.

The wheel

A button bound to controller_wheel holds a ring of commands open. Aim at a slice with the stick that does not walk, hold it there, and let go to fire. A slice with slices of its own is a folder: hold on it to open it, and on Back to come out. An analog trigger opens the wheel once pulled far enough and lets it go only when well released, so one resting near the point does not flicker it.

[[controller_wheel]]
label = "stance"

  [[controller_wheel.slices]]
  label = "offensive"
  command = "stance offensive"
  color = "#b03030"

A wheel of your own is controller_wheel:<name>. The portals wheel, controller_wheel:portals, is made from the room as it opens: every way out that is not a compass direction, and its doors and gates by their nouns; a crossing Hydra walks itself is fired as its go2.

Rumble and the legend

The pad rumbles when roundtime ends, when you are stunned, when you die, and for a highlight that asks for it. controller_overlay shows the legend down the play window’s right edge: the binds the file lists, a chord’s drawn strong while its modifiers are held.

The Controller page

Menu › Settings › Controller is tabs. Bindings lists every bind in effect, whose it is, what it does, and whether the legend lists it; a bind is added or changed in a form, its button picked from a list or captured by pressing it, up to two modifiers held with it, and what it does. Rumble picks the pattern for each moment, each tried on the pad with Test. Tuning is every field of [controller_tuning], written as it is let go. Wheels picks a wheel, the button that opens it, the stick that aims it and the angle of its first slice, and lays its slices out as a tree beside a drawing of the ring, where a slice is dragged, split with a right click or joined with its neighbour.

On Hydra’s own settings the page changes every character’s file; on a character’s, that character’s own.

On Windows a pad’s buttons reach a program only while one of its windows has the focus, so click the play window once after plugging in.

The web page on a phone has a wheel of its own, drawn for a thumb; it is kept with the phone’s buttons and copied to this computer and back on the page’s own terms.