Player 1: Player 2 move / crouch / jump: W A S D arrow keys left punch: F I right punch: G O plane shift (dodge): H P left kick: V K right kick: B L block: hold away from the opponent same training overlay: T
A 2D fighting game where one button per limb and what a button does depends on what you are already doing. Four-hit memorised strings with a branch point, a mid/low guess at the end of them, wall combos, and a dodge instead of a sidestep. Two original fighters: AXLE (112 HP, a piston boxer) and TALON (104 HP, a long-legged kicker with an overhead heel drop). Best of three, 60-second rounds, two players at one keyboard or versus the AI. THE STRINGS There is no light/medium/heavy. A hit's weight is decided by which limb throws it and where you are in a string. | input | string | |---|---| | LP RP LK LK | JAB → HOOK → KNEE → HEEL SWEEP (low, knocks down) | | LP RP LK RK | JAB → HOOK → KNEE → AXE KICK (overhead, −6 on block) | | RP LP RP | STRAIGHT → ELBOW → LIFT (launcher, into a wall combo) | | LK RK LK | LOW → BODY → SPIN (knocks down) | | LK RK RP | LOW → BODY → LIFT (the launcher, off the kick string) | The third hit is where the game is. After LP RP LK connects, left kick gives a low you must crouch-block and right kick gives an overhead you must not. Same three hits in front of both. The defender has to guess, and both enders hurt. Specials are on back-forward plus a punch or a kick, depending on your character; the super is HCF + right punch and costs a full meter. HOW THE STRINGS ARE IMPLEMENTED Nothing in the engine knows what a string is. A command row is (button, motion, stance, move, link, character). The link field names a move this row may only follow. Rows are scanned in order and the first legal match wins, so listing the link rows above the standalone rows for the same button is what turns "press right punch" into "continue the string". canstart allows a link from the first active frame of the named move through the end of its recovery, connect or not. That is five lines in lib/fight_input.gs. Everything above is a text file generated by tools/mkgame.py. The same five lines are what AURA's auto-combo is built out of, pointed at the opposite goal — there, four link rows on one button mean a beginner mashing light gets a real combo. WALL COMBOS cfg_wallb = 1. A launched opponent — airborne, in hitstun — carried into the wall with enough horizontal speed bounces off it once: velocity reverses at 55%, they pop 3.2 up, and they get 12 extra frames of hitstun. That is enough to continue the combo. Two other numbers make it reachable. The launcher (RP LP RP) has 4.6 pushback rather than the 1.2 a launcher normally gets, and IRON's pushback decay is 0.42 — the lowest of the four games — so momentum carries. And because the camera does not scroll, the walls are always on screen: a 412 px arena is a liability in STREET and an asset here. THE PLANE SHIFT The genre's evasive option is a sidestep into the third dimension. This game is strictly 2D, so there is no sideways to step into. The substitute is a dedicated dodge button with real commitment: **2 frames of startup, 10 invulnerable frames, 15 frames of recovery you cannot cancel.** It goes straight through a string. It loses badly to anyone who simply waits for it — 24 frames of disadvantage if you use it on nothing. MOVEMENT The slowest walk of the four games (1.35 px/frame forward for AXLE against AURA's 2.15), the heaviest gravity (0.68), a five-frame jump squat, and **no dashes at all**. All original - code, art and sound. See Inside is open.