We trained Faynt to play all 26 characters in competitive Melee.
The training recipe starts with human replays. We train two Transformer policies, refine their imitation of strong players, and continue learning through gameplay. Each model controls the whole roster with one checkpoint.
01 / Architecture
One policy, 26 characters.
Both models read structured game state and recent controller inputs, then predict the next command. A 256-frame context captures about 4.3 seconds of play. Grouped-query attention keeps the attention cache compact; Full Attention Residuals let each sublayer learn how to combine earlier representations.
We study model size, optimization, and training exposure together. Scaling fits and measured throughput guide the pretraining budgets. Muon updates hidden backbone matrices; AdamW handles the remaining parameters.
10M
5 blocks width 384
75M
11 blocks width 768
02 / Training
From human play to a stronger policy.
Pretraining learns from approximately 840,000 replays, with complete games assigned to separate training, validation, and test splits. Post-training progressively emphasizes winning demonstrations from stronger players. The smaller policy then learns from the larger model's action probabilities.
Learn human play
Predict the next controller input.
Behavioral cloning turns 17.48 billion training targets into a policy. Each target asks the model to predict the command chosen by a human player.
Checkpoint selection follows a weighted loss: 90% Master-winning prediction loss and 10% Diamond-winning loss. The same winner mixture continues through distillation, where the 10M combines human-action prediction with the 75M teacher's distribution. Two rounds bring its weighted loss from 0.76443 to 0.75746.
Figure 01
Learning curves
| Checkpoint | Loss |
|---|---|
| Pretrained | 0.81152 |
| Winner mixture | 0.76443 |
| Final distillation | 0.75746 |
03 / Gameplay
Better demonstrations change the game.
In the same 152-game suite, supervised post-training raises the 10M from 49 wins to 106, and the 75M from 69 to 123. Both policies take less damage and build larger early leads. The supervised 10M wins more often than the pretrained 75M, even with higher overall prediction loss.
Figure 02
From loss to playing strength
04 / Reinforcement learning
Learn from the next exchange.
Both models continue with PPO, playing Fox against Fox across six stages. Taking stocks and dealing damage earn rewards. Penalties on changes in action probabilities keep learning connected to the supervised starting policy.
The 10M's second run uses full self-play and extends the reward half-life from four to eight seconds, giving later consequences more weight. Fox supplies the reinforcement-learning experience; the updated weights remain shared across the roster.
10M wins against fourteen releases
10M wins under two conditioning settings
05 / Real-time inference
Inside a 16.67 ms frame.
A decision has to arrive while it can still affect the game. Keeping cache bookkeeping on the GPU removes repeated host synchronization. CUDA graph replay cuts the overhead of launching many small operations. On a T4, the optimized 10M averages 5.2 ms per decision and the 75M averages 8.7 ms.
Figure 03
Time to make a move
06 / Open research
Paper and releases.
We release six checkpoints across Base, Expert, and Arena: pretraining, supervised post-training, and reinforcement learning at both sizes. Benchmark suites and tournament tools accompany the weights.
Read the original Frisson Labs article for the complete interactive study.
Paper: Faynt: Scaling and Optimizing Policies for Competitive Melee
Ali Janati, Nikita Kuzmin, Rohit Swamy, Charles Niu.