Ali Janati.

ArticlesOctober 2026

Faynt

Learning competitive Melee.

Human replays. A shared policy. Learning through play.

Explore the research at Frisson Labs

Ali Janati & Nikita Kuzmin

Advisory contributions: Rohit Swamy & Charles Niu

Explore the study 26 characters. One checkpoint.

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.

10M / 75MTwo policy sizes
840kHuman replays
26Characters per 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.

Compact policy

10M

5 blocks width 384

Query / KV heads6 / 2
Larger policy

75M

11 blocks width 768

Query / KV heads12 / 3

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

Weighted lossOverall loss
10M weighted validation loss
CheckpointLoss
Pretrained0.81152
Winner mixture0.76443
Final distillation0.75746
Final 10M weighted loss: 0.75746
Held-out replay prediction. Lower is better. Weighted loss follows Master and Diamond winners; the horizontal axis follows processed targets along the selected checkpoint's training history.

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

10M pretrained
32.2%
10M supervised
69.7%
75M pretrained
45.4%
75M supervised
80.9%
Four checkpoints on an identical 152-game schedule: Final Destination, four stocks, eight-minute timer. Weighted winning-play loss orders these checkpoints consistently with win rate.

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.

Supported-character mirrors240 / 244

10M wins against fourteen releases

Separate zero-delay comparison68 / 68

10M wins under two conditioning settings

The 244-game panel preserves opponents' 21- or 24-frame delays. The 68-game panel uses one privately supplied zero-delay Slippi-AI checkpoint. Faynt has zero added delay in both.

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

10M mean
5.2 ms
10M p99
6.8 ms
75M mean
8.7 ms
75M p99
12.1 ms
Recorded-game inputs at 60 Hz; timing uses random weights and includes feature conversion, inference, sampling, and decoding. Emulator and communication time are excluded. T4/75M misses 0.6% of frame deadlines. Trained-checkpoint checks reproduce identical sampled actions across 1,200 frames.

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.

← All articles