your only weapon is f(x)
01THE GOAL
Each player commands a team of soldiers on a Cartesian plane. On your turn, one of your soldiers fires a mathematical curve: you write a function f(x), and the shot travels exactly along its graph. Any soldier the curve touches dies, enemy or ally. The last alliance with a soldier standing wins, and each player picks their team (2v2, 1v3, free-for-all…).
02THE TURN
- The red ringmarks whose soldier is up. Each team cycles through its soldiers in a fixed order, and deaths don't change who's next.
- You have a time limit per turn (30s by default, configurable when creating the match). Run out, and the turn passes without a shot.
- You can type your function at any time, even during your opponent's turn; only the Fire button waits for your turn.
- The shot history sits beside the field, visible to everyone. Hovering over a line highlights the soldier who fired it. Clicking a function in the history copies it into your box, great for tweaking a shot that almost landed.
03HOW THE SHOT WORKS
- The x in your function is the distance ahead of your soldier: x=0 is the soldier itself. The shot always starts exactly where they stand: the curve is shifted to begin at the soldier, so adding a constant (
x^2 + 5) changes nothing. - Each soldier fires toward the side with more field ahead: anyone left of the y-axis fires right, and vice versa. The character's eye shows the direction.
- f(0) must exist:
log(x)and1/xare rejected, so uselog(x+1),1/(x+1). - The shot dies when it leaves the field, explodes on a rock or hits a sudden jump in the function (asymptotes of
tan(x)or1/(x-5), for example). Small jumps (up to ~30 in height) get through:x % 4makes a nice sawtooth. - It kills any soldier within 0.7 of the curve. Friendly fire is configurable under ⚙ Settings: on (the default), the curve kills allies caught in its path; off, allies (including your own soldiers) are immune. The shooter is always immune to their own shot. The shot doesn't stop on a kill: it passes through and can score a double kill.
04ROCKS, CRATERS AND TUNNELS
The black circles block shots: a shot explodes at the first point of solid rock and digs a real crater there (radius 1.2). The rock never disappears, but later shots pass freely through the cratersalready dug. Keep hammering the same spot (~4 to 6 shots on a big rock) and you'll open a tunnel straight to the target on the other side.
05BUILDING FUNCTIONS
You can use pretty much any math expression: numbers, + - * / ^, parentheses, implicit multiplication (3x, 2(x-1)), pi and e. The main tools:
| Tool | Example | What for |
|---|---|---|
| Line | -0.5x | straight diagonal shot |
| Parabola | 0.1x^2 - 2x | dips and comes back up: the classic ballistic arc |
| Knee | max(0, x-10) | a line that changes slope at x=10; add it to your shot to "bend" the trajectory at an exact point |
| V | abs(x-12) | goes down and back up with a spike at x=12 |
| Bell | 12exp(-((x-10)/4)^2) | rises, hops over a rock centered 10 ahead and returns to its original height |
| Wave | 5sin(x/3) | weaves between obstacles (amplitude 5, period ~19) |
| Smooth step | 8tanh(x-15) | changes height without a spike at x=15 |
| Stairs / sawtooth | floor(x), x % 4 | small jumps are allowed, and the vertical part of the jump kills too |
| Conditional | x > 20 ? -2(x-20) : 0 | piecewise curves: straight until x=20, then dives |
| Clamp | max(min(x,3),-3) | locks the curve between a ceiling and a floor |
Also work: cos, tan, atan, sqrt, cbrt, log2, log10, sinh/cosh, sign, round, hypot, comparisons inside math ((x>5)*2)… Don't work: root/log of a negative number (the shot stops there) and a bare comparison (x == 5 on its own).
06RECIPES TO STEAL
-0.5xsimple diagonal to a target down and ahead0.05x^2 - 1.5xlong dive that climbs back up at the end-0.5x + 3.4*max(0, x-24)goes straight down and breaks upward at x=24, two targets in one shot12exp(-((x-10)/4)^2)hops over the rock between you and the target5sin(x/3)snakes through the middle corridorx > 15 ? 10sin(x-15) : 0straight, then turns into a wave: slips under and rises weaving
Tip: the field grid has lines every 5 units, and you can turn on mouse coordinates in the match settings, so measure the distance to the target before writing the function. Remember: the x in the function is the distance from your soldier, not the map coordinate.
07PLAYING ONLINE
- Create a room and share the link. The lobbyshows who's joined; besides picking a seat, each player chooses a team and marks Ready. The game (and the timer) only start once everyone confirms.
- Anyone joining a full room becomes a spectator: they see everything, history included.
- Lost your connection? Reload the same page: your seat stays reserved and the game pauses (timer included) until you're back.
- The match settings are set by whoever creates the room and apply to everyone: number of players (up to 4), soldiers per team, rock count, map size (up to 2x), turn time and positions (sides, quadrants or random).