Two Jevs fight in a pit, and you coach one of them. Jev is a decision model: it reads a description of the fight and picks one move from a list. You decide what your Jev believes, and you try to make the other Jev believe something false.
The engine plays the fight. Four times a second, the engine stops, writes each fighter a prompt, and asks that fighter's model one question: which of 12 moves? The model scores all 12 moves, and the fighter plays the move with the top score. Both fighters decide at once, so neither fighter sees the other's answer before it moves.
Engineplays the fight and writes the board as text
→Promptthe board, plus what both players wrote
→Modelscores all 12 moves
→Movethe top score is played, and the engine moves on
Both fighters decide every 250 ms, for up to 240 moves a round.
This section rebuilds one real moment from a fight, one block at a time. The board comes from the game's engine, and every prompt comes from the game's own code. Each prompt went to the model , and the bars show the model's answer: a probability for each of the 12 moves.
loading…
The last prompt above appears here in full. This block is everything your fighter's model reads: four blocks joined by blank lines, with no labels and no hint of who wrote which block. The model sees no boundary between your words and your opponent's words.
loading…
The request below carries that prompt to the model. JSON writes the prompt's line breaks as \n, so the prompt is cut here to its first line. Every other field appears exactly as the game sends it:
loading…
Every move, both fighters read their own prompt, and each prompt carries the other side's fake move. Your fake move is your attack, and your strategy and last word are your defence. Both halves are tested four times a second, in the same fight.
The board
Your strategy
Their fake move
Your last word
The board
Their strategy
Your fake move
Their last word
The table shows the damage the defender takes. No guard stops every attack, so your opponent has to guess what is coming. Your fake move makes the opponent guess wrong.
| Attack | Clean hit | They block | They duck | They jump |
|---|---|---|---|---|
| Light punch | 4 | 2 | 0 | 4 |
| Heavy punch | 10 | 4 | 0 | 10 |
| Kick | 7 | 3 | 7 | 7 |
| Sweep | 8 | 8 | 3 | 0 |
| Jump kick | 8 | 3 | 8 | 8 |
| Fireball | 9 | 3 | 0 | 0 |
A sweep goes through a block for full damage, but a duck takes only 3 and a jump avoids it. A kick beats a duck. Blocking still costs a little health, so a fighter that only blocks loses slowly. A fireball needs 2.5 seconds to recharge, and jumping backwards is the only way out of a corner.
Everyone starts with 1,000, and your balance is your score. The loser pays the winner 10% of the loser's own balance, whether the loser attacked or defended. In the example below, the stakes are uneven: a win against a richer fighter pays more than a loss costs.
| You 1,000 attack them 1,200 | You | Them |
|---|---|---|
| You win: they pay 10% of 1,200 | 1,120 | 1,080 |
| You lose: you pay 10% of 1,000 | 900 | 1,300 |
Three tiers set who can fight whom. You can attack your own tier or higher, so anyone at your tier or below can attack you. A Legend, in other words, cannot farm Rookies.
Rookieup to 1,500
→Veteran1,501 to 5,000
→Legendabove 5,000
A lost defence takes your fighter out of the game for 60 minutes, in both directions. Nobody can attack you during that hour, and you cannot attack anyone. You can come back early at any time, for free.
You lose a defencethey take 10%
→60 minutes sitting outnobody attacks you, you attack nobody
→Back inor earlier: come back at any time, for free
| Who sees it | What |
|---|---|
| Everyone | Fighter names, balances, tiers, records and every replay |
| Only fighters it beats | Your fake move |
| Only you | Your strategy, your last word and your email address |
Every fighter runs on Jev, Typesafe's decision model. The fighter page offers two versions: jev-latest, and jev-preview, the next release before it is promoted. Both read the same prompt.