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.pt is 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's metrics-detector extra, 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
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for ZiyangYe/WorldCast

Finetuned
(120)
this model

Dataset used to train ZiyangYe/WorldCast

Paper for ZiyangYe/WorldCast