Learning competitive Melee.
At Frisson Labs, we’re building AI companions that can play games with you. A natural starting point is teaching them to play well.
Faynt is a family of 10M- and 75M-parameter policies trained on approximately 840,000 human replays. Each checkpoint plays all 26 characters. We refine human imitation with winning demonstrations, distill the larger policy into the smaller one, then continue both with reinforcement learning.
The final 10M wins 240 of 244 supported-character mirror games against fourteen Slippi-AI releases. It also wins all 68 games in a separate zero-delay comparison.
compact policy
one checkpoint
zero-delay comparison
The 244-game panel preserves opponents’ 21- or 24-frame delays. The 68-game comparison uses one privately supplied zero-delay checkpoint under two conditioning settings. Faynt uses zero added delay in both.
One policy, 26 characters.
Both models read structured game state and predict the next controller command. Training uses 256-frame windows, about 4.3 seconds of play. Full Attention Residuals let each sublayer learn how to combine earlier representations.
Model configurations
| Configuration | 10M | 75M |
|---|---|---|
| Exact parameters | 10,163,629 | 75,305,709 |
| Transformer blocks | 5 | 11 |
| Hidden width | 384 | 768 |
| Query / KV heads | 6 / 2 | 12 / 3 |
| Feed-forward width | 768 | 1,920 |
Head dimension is 64 for both sizes. The paper does not isolate the individual gameplay contribution of each backbone component. Full architecture in §2.3 and Appendix B.
The training recipe.
The replay dataset provides 17.48 billion training targets. We split by whole game, keeping both players’ perspectives together. Pretraining predicts human button and stick inputs with behavioral cloning.
We measure prediction error with negative log-likelihood (NLL): the average penalty for assigning low probability to the recorded human command. Lower is better. The curves use held-out games, so they measure prediction on replays the model did not train on. W is the checkpoint-selection score: 90% Master-winning NLL plus 10% Diamond-winning NLL.
Validation loss during post-training
Selected checkpoints and exact losses
| Selected checkpoint | 10M weighted NLL | 75M weighted NLL |
|---|---|---|
| Pretrained | 0.81152 | 0.77502 |
| Winner curriculum | 0.77078 | 0.73591 |
| Winner mixture | 0.76443 | 0.72489 |
| Distillation, round 1 | 0.75983 | Not applied |
| Distillation, lower rate | 0.75746 | Not applied |
The larger policy’s winner-mixture checkpoint is the teacher and supervised endpoint. Its later continuation regresses and is stopped.
The winner curriculum moves through natural replay data, winners of any rank, Master and Diamond winners, then Master winners. Later filtering improves prediction on strong winning play even as overall validation loss starts to rise.
The next supervised stage samples approximately 90% Master-winning and 10% Diamond-winning replay visits. That same distribution continues through both 10M distillation rounds. The objective changes: the student combines human-action prediction with the 75M teacher’s action probabilities.
Data and objectives
Each distillation round covers 900 million targets; the second halves the held learning rate. Weighted validation loss falls from 0.76443 before distillation to 0.75746 afterward.
Optimizer choice. Optimizers turn loss gradients into weight updates. Faynt uses Muon for hidden backbone matrices and AdamW for the remaining parameters. In a single-seed calibration with a 20M-parameter model and 166 million targets, the selected Muon configuration gives 1.65% lower validation NLL than the selected AdamW configuration.
Gameplay after supervised post-training.
In the same 152-game suite, supervised post-training raises 10M wins from 49 to 106 and 75M wins from 69 to 123. The supervised 10M wins 37 more games than the pretrained 75M, despite slightly worse overall prediction loss.
Win rate and validation loss
Weighted winning-play loss orders these four checkpoints consistently with win rate. In the replays, both policies take less damage and build larger early stock leads. Their opponents receive more damage.
Damage and stock advantage
Reinforcement learning.
We continue both policies with proximal policy optimization (PPO), playing Fox against Fox across six stages. A stock taken earns +1 and a percentage point of damage dealt earns +0.01, with additional movement, offstage, and ledge rewards or penalties. Kullback–Leibler (KL) divergence measures how much the action probabilities change. Penalizing it keeps the policy close to its supervised starting point; the second 10M run also penalizes changes from the policy that collected the games.
Self-play and the reward horizon
96 emulators
Analytical reward discount
The 10M’s second run switches to full self-play and extends the reward half-life from four to eight seconds. A reward eight seconds away then retains half its weight. Several objective settings change together.
The PPO settings and reward horizon
| Setting | 75M | 10M, run 1 | 10M, run 2 |
|---|---|---|---|
| Learning rate | 4 × 10−5 | 10−4 | 10−4 |
| Policy-gradient weight | 1 | 1 | 3 |
| KL(policy ∥ reference) | 0.1 | 0.1 | 0.003 |
| KL(reference ∥ policy) | 0 | 0 | 0.003 |
| Behavior-policy KL | 0 | 0 | 0.3 |
| Reward half-life | 4 s | 4 s | 8 s |
The per-frame discount factor is γ = 2−1/(60h), where γ is the fraction of reward weight retained per frame, h is the half-life in seconds, and 60 is the frame rate. A reward arriving one half-life later receives half its weight. PPO clips the log probability ratio at ±0.01 in its policy-improvement term, limiting the incentive for large updates. Returns include a value-network estimate beyond each rollout; advantages retain their original reward scale. The frozen reference reuses the acting policy’s attention cache, so its KL penalty uses an approximate reference distribution. Training uses continuous Fox mirrors on six stages, without a stock limit or timer. Paper §4.4.
Supervised and RL checkpoints
The final 10M wins all 68 zero-delay games, including 61 four-stocks. The 75M improves from 25 to 58 wins.
One opponent checkpoint under Master Player and Cody conditioning. Each setting receives 16 Final Destination games and 18 games across six stages. The 10M has two RL runs; the 75M has one. Their different objectives and training histories prevent isolating a model-size effect.
Match recordings
These two games provide a closer look at the 10M policy in Fox mirror matches on Final Destination. Use them to inspect movement, attack timing, and recovery beyond the aggregate win rates. Each recording uses a different checkpoint, identified below.
The video could not load. Open the recording directly.
Across the roster.
Fox is the only character used during reinforcement learning. All 26 characters share the updated weights and are included in the expanded evaluation.
On opponents’ supported characters, the final 10M wins 240 of 244 mirror games, with a winning record against every release.
Supported-character mirror matches
Explore all 14 opponents
| Slippi-AI release | 10M | 75M |
|---|
Inside a 16.67 ms frame.
The standard PyTorch path misses 60 Hz on every tested GPU. Removing host synchronization, keeping cache bookkeeping on the GPU, and replaying operations through a CUDA graph brings mean processing time and p99 latency below one frame on recorded-game inputs.
Recorded-game inference latency
On T4, 10M averages 5.2 ms with 6.8 ms p99 latency. Trained-checkpoint parity checks reproduce the same sampled actions across 1,200 frames.
Paper and releases.
We release the model weights, benchmark suites, and tournament platform. The paper includes the training recipe, full results, and evaluation conditions.
Policies for Competitive MeleeRead this paper on arXiv
