WorldCast: Distributed Multiplayer World Models
Ziyang Ye1, Junchao Huang1,2, Evelyn Zhang2, Zhihao Xie1, Ruicheng Zhang3, Boyao Han1, Litao Ban4, Ziye Wang4, Xinting Hu5, Shaoshuai Shi4, Zhuotao Tian2, Li Jiang1,2†
1CUHK-Shenzhen 2SLAI 3Tsinghua SIGS 4Voyager Research, Didi Chuxing 5USTC †Corresponding author
Project page | Code | Paper
WorldCast is a distributed multiplayer world model. Each player runs a local client, a video generator fine-tuned from Wan2.2-TI2V-5B, on its own GPU. Clients exchange only player states, which each client projects into a camera-aligned player state field, and a shared scene state of generated blocks. This repository holds the weights of the release: the final 4-step model first, with everything the inference code loads beside it, then the checkpoints training starts from and the player detector of the paper's metrics.
Files
| file | what | dtype | size | sha256 |
|---|---|---|---|---|
worldcast_4step_bf16.safetensors |
the final model: the 4-step student (stage 4, distribution matching distillation, 600 steps), EMA weights; the generator the inference code runs (paper Table 3) | bf16 | 10.2 GB | 7cfd85b59de04968814a5d560cf6258c91ede0d3a850bd759fe5cc91c5c35b31 |
state_model.safetensors |
the state model: encoder, trunk, action encoder, motion head and place head (paper Sec. 3.4); a client's estimate of its own position from the latents it generates (player_state.source: predicted) |
fp32 | 1.4 GB | 86fbf7e11418c568c2a33c8163774b52d1392dde9619e0dc5d9b277251547b23 |
depth_head.safetensors |
picture depth head of the scene state (depth of each generated block) | fp32 | 176.8 MB | ab599fcd68115142cf3b946e147f3cb89465d0b389371cc3501e1eb3101f6e76 |
depth_readout.safetensors |
read-out of the depth head | fp32 | 833.4 kB | 6994480d726b7e958f519e835fa306b7045cfb19171ade4aebcb594a67ccd873 |
fixed_prompt_umt5xxl_bf16.safetensors |
umT5-XXL embedding of the fixed prompt (the client then skips the 11 GB text encoder) | bf16 | 4.2 MB | a4157803a2c381835b219c079b7d811b7950c3fb2c47741d4552b7bba37cbd0a |
worldcast_stage3_ar_fp32.safetensors |
stage 3: block-causal with scene state, EMA, step 5,000 (initialises stage 4) | fp32 | 20.4 GB | a8d39e8b88a0a9e8bd0d65ac804755778ece76839993667055e02eddf878e2c0 |
worldcast_stage2s_bidirectional_fp32.safetensors |
stage 2s: bidirectional with the player state field and scene state, EMA, 20,000 + 5,000 steps (initialises stage 3) | fp32 | 20.4 GB | 83704993f1f6024ce9a4f65987d2dd69dc6172a39a038a3668b2c28dd26fa77b |
worldcast_stage2_bidirectional_fp32.safetensors |
stage 2: bidirectional with the player state field, EMA, step 25,000; the WorldCast of paper Table 1 (teacher and critic of stage 4) | fp32 | 20.4 GB | 3af10355a31e19069dad8a810d38b31cd041c4d5af4460d4d4eb6966af09445e |
detector/yolo11x_cs2_player.pt |
the player detector of the paper's Rendered and Unmatched metrics: Ultralytics YOLO11x fine-tuned on OpenCS2 frames; AGPL-3.0 (Player detector) | - | 114.4 MB | ac2bba62f3a1192c4d465409204014f3168c1b0bd90fafae6a9d34d708197d94 |
config.json |
the release's description: the weight files by the paths key of the inference code, and the base model with its pinned revision |
- | 0.5 kB | |
examples/ |
inputs and expected videos of six recorded rounds (examples/run.sh of the code); listed in examples/manifest.json of the code |
- | 201.6 MB |
The generator file holds EMA weights under the parameter names of the release model (WorldCastGenerator), so a
strict load_state_dict works. The inference code needs the first five weight files of the table and nothing
else of this repository. The three fp32 checkpoints are where training continues from
(tools/download_weights.py --with-training-checkpoints); inference does not read them.
Quick start
git clone https://github.com/Ziyang-Ye/WorldCast && cd WorldCast
pip install -e .
python tools/download_weights.py --out-dir weights
This fetches the inference files above, plus the Wan2.2 VAE, tokenizer and config.json from
Wan-AI/Wan2.2-TI2V-5B, and writes weights/paths.yaml. Running a session, the examples, and the
options of the download: see the code repository.
Player detector
detector/yolo11x_cs2_player.pt is the detector behind the paper's entity criterion (Rendered and
Unmatched): Ultralytics YOLO11x fine-tuned to find players in first-person Counter-Strike 2 frames.
python tools/download_weights.py --out-dir weights --with-metrics fetches it with the other weights of the paper's
metrics, and tools/evaluate_paper.py scores with it.
from ultralytics import YOLO
model = YOLO("yolo11x_cs2_player.pt")
results = model.predict(frames_bgr, conf=0.05, imgsz=1280, classes=[0])
The paper's scores run it with confidence 0.05, image size 1280 and its one class (0: player), on BGR frames, with
ultralytics 8.4.110. The evaluation code applies it to 672 x 384 frames, generated or decoded from the recording.
- Base:
yolo11x.pt(COCO), Ultralytics. - Data: 11,591 training and 407 validation frames of de_dust2 recordings of the OpenCS2 dataset, at 1280 x 720. The labels were made automatically, without hand labelling. A box of the stock YOLO11x person class (confidence 0.25) became a label when it matched a player's position projected from the recording's tick tables (IoU at least 0.3). A player that the GT visibility labels mark visible and that no box matched got its projected box, when a patch classifier scored that box at least 0.8; otherwise the frame was left out. The recording player's own hands and weapon are background.
- Schedule: 12 epochs, image size 1280, batch 8 on two GPUs, AdamW (lr 0.002), seed 20260729, ultralytics' defaults otherwise.
- Validation: mAP50 0.888, mAP50-95 0.699 on the 407 validation frames, from 5 matches outside the training frames; precision 0.87 and recall 0.90 at the F1-optimal threshold.
License and attribution
- The WorldCast weights are released under the Apache License 2.0, except the player detector.
detector/yolo11x_cs2_player.ptis licensed under AGPL-3.0, as the Ultralytics YOLO11 model it is fine-tuned from. The WorldCast code does not include ultralytics; install it separately (the code'smetrics-detectorextra,ultralytics==8.4.110) to run the detector.- They are fine-tuned from Wan2.2-TI2V-5B (Apache License 2.0).
- Training data: the OpenCS2 dataset by Julien Blanchon
(CC BY 4.0). The files under
examples/and the detector's training frames are derived from it. - The model renders Counter-Strike 2 game content and is intended for research. Counter-Strike 2 is a trademark of Valve Corporation; this work is not affiliated with or endorsed by Valve.
Citation
@article{ye2026worldcast,
title = {WorldCast: Distributed Multiplayer World Models},
author = {Ye, Ziyang and Huang, Junchao and Zhang, Evelyn and Xie, Zhihao and Zhang, Ruicheng and Han, Boyao and Ban, Litao and Wang, Ziye and Hu, Xinting and Shi, Shaoshuai and Tian, Zhuotao and Jiang, Li},
journal = {arXiv preprint arXiv:2610.12412},
year = {2026}
}
- Downloads last month
- 97
Model tree for ZiyangYe/WorldCast
Base model
Wan-AI/Wan2.2-TI2V-5B