DirCast: Live Esports Directing and Commentary
with a Single Streaming Video-Language Model

1Alaya Lab2The University of Tokyo3Georgia Institute of Technology
4Peking University5Institute of Science Tokyo
†Corresponding author

TL;DR. We propose DirCast, a single streaming video-language model that receives the raw camera of every player in a live Dota 2 match and, every second, both chooses which camera goes on air and commentates over its own choice.

Teaser
DirCast directs and commentates a live Dota 2 match. Top: the ten hero cameras over 13 seconds, with the on-air camera framed. Bottom: the program that goes on air and the words DirCast speaks over it.

Video

DirCast running on two held-out professional matches. Every cut and every word is the model's own output; nothing is edited. The panel on the right shows the ten hero cameras, and the bars show the hold-or-switch gate and the speak probability against their rate-controlled thresholds.

Control room

Step through a held-out match second by second. On the left is what DirCast puts on air and says; next to it is what the human crew aired and what the casters said. Below them, the ten hero cameras: DirCast's choice is lit in orange and the human director's is outlined in dashed blue. The gauges show the hold-or-switch gate and the speak probability, each against its rate-controlled threshold. Click any second on the timeline or any camera to look at it.

❚❚ MATCH 1MATCH 2 0:00
DIRCAST ·
HUMAN CREW ·
GATE gt  τ
SPEAK pt  τ
DIRCAST
HUMAN
KILLS

Abstract

A live esports broadcast needs a director who chooses which camera goes on air and a caster who talks over that choice, every second and without knowing what comes next. Streaming video language models have learned to commentate, but only over a broadcast that a human director has already produced. We study live broadcast production, in which a model receives the raw camera of every player and must both direct and commentate from the past alone. We present DirCast, a single streaming video language model that does both. Every second it scans all cameras at low resolution, decides with a hold-or-switch director whether and where to cut, and reads the chosen camera at high resolution before it speaks. Its context keeps what went on air and what was said and lets the other views expire, which bounds the cost of a stream of any length. We build a dataset of 27 professional Dota 2 matches with a camera for every hero, the human director's choices and the casters' commentary. DirCast directs better than rule-based and zero-shot directors including GPT-5, and its commentary wins 29.2 percent of comparisons against GPT-4o under the Proact-VL protocol, against 19.4 percent for the strongest of eleven streaming commentators that watch the human broadcast.

Method

Framework
Every second the model reads the clock and events and the ten cameras at low resolution, each with a hero-state token. At the director token \(\langle\mathrm{D}\rangle\) it holds the shot or cuts, the chosen camera is read again at high resolution, and at the commentary token \(\langle\mathrm{C}\rangle\) it decides whether to speak and generates the words. After \(W\) seconds the low-resolution views leave the context.

Results

All numbers are on the full test split of four unseen matches. Every model runs freely and only sees its own past decisions. Best results are in bold, second best underlined.

Directing

Feed agreementCutsCoverage
DirectorTop-1 ↑Tol. ↑Any-vis. ↑P ↑F1 ↑/minKill ↑Fight ↑
Rules
Random (human rate)10.612.920.16.45.86.920.919.1
Static17.120.423.00.00.00.020.919.2
Action rule25.430.336.113.911.55.878.562.4
Zero-shot VLMs
Qwen3-VL-8B17.621.428.68.912.720.674.632.6
Qwen3-VL-32B11.213.921.78.67.46.367.830.6
InternVL3.5-8B19.122.928.96.210.856.372.924.1
InternVL3.5-38B19.022.827.76.610.025.381.928.1
LLaVA-OV-7B9.212.018.66.59.220.541.218.8
Mistral-Small-3.2-24B13.617.024.26.19.326.759.323.3
Kimi-K2.616.720.428.48.213.742.481.430.1
GPT-513.516.724.86.711.651.785.333.0
DirCast (ours)27.032.041.815.814.16.789.141.1
Human director1001001001001007.950.337.4

A cut is correct if it falls within two seconds of a human cut and goes to the same feed. The human crew cuts 7.9 times per minute. DirCast is the mean of three seeds.

Commentary

LiveUFinalQ
MethodVenueCC ↑F1 ↑TimeDiff ↓TimeRateTextUFidelityContin.Subst.PAUC ↑
Zero-shot, human program
LiveCC-7B-BaseCVPR'2519.3864.618.325.114.994.534.563.172.360.008
LiveCC-7B-InstructCVPR'2517.7379.951.845.756.155.694.013.192.590.015
DispiderCVPR'256.700.6930.641.361.941.644.601.341.150.000
MMDuetEMNLP'253.8116.999.793.131.872.995.742.251.520.001
LiveStar-8BNeurIPS'251.8616.693.032.523.125.913.892.441.960.001
StreamingVLMICLR'2614.6465.471.165.976.434.734.013.102.430.008
MMDuet2ICLR'263.7126.185.033.873.405.194.102.331.890.001
Proact-VLLiveCCICML'2616.3983.200.345.755.545.544.153.182.380.008
Proact-VLQwen3ICML'2617.7383.210.345.795.495.634.543.382.480.012
Trained on our data, human program
LiveCC-7B-FT†CVPR'2514.8513.4116.222.543.323.265.392.591.530.007
Proact-VLQwen3-FT†ICML'2618.2583.080.345.394.204.525.043.102.110.014
Trained on our data, self-directed program
DirCast (ours)29.2178.220.306.576.505.924.974.002.950.024

Proact-VL protocol, judged by GPT-5. CC is the win rate against GPT-4o. † Fine-tuned on our training split. The baselines comment on the finished human broadcast, while DirCast comments on the program it directs itself.

Examples

Kills from the test matches that happen away from the shot on air. The human broadcast shows a hero who is not involved, while DirCast cuts to the fight within a second.

Qualitative examples
Each panel shows DirCast's program and commentary (top), its cut gate against the threshold (middle), and the human program with the casters' words (bottom). Framed shots are cuts and the shaded column marks the kill.
More examples 1-10
More examples (1–10 of 20). Commentary is shown as generated.
More examples 11-20
More examples (11–20 of 20).

Citation

@article{gao2026dircast,
  title   = {DirCast: Live Esports Directing and Commentary with a Single Streaming Video-Language Model},
  author  = {Gao, Zixian and Xiu, Lixin and Luo, Penghao and Cao, Xiangcheng and Cai, Ziqi and Li, Zhen and Wu, Erwin and Zhang, Kaipeng},
  journal = {arXiv preprint arXiv:2610.31734},
  year    = {2026}
}