THUSI-Lab / GameScaling
git clone https://github.com/THUSI-Lab/GameScaling.git
Scaling in Games: Continued Pre-Training for Embodied Agents in Diverse Virtual Worlds. Weights on Hugging Face.
+239
stars, 24h · #155
+~1.7k
stars, 7 days · #115
+266
stars, 30 days · #3,025
266
★ total · +1673% this week
9
forks · 1 open issues
Star history (as recorded here)
LanguagePython
LicenseApache-2.0
Created2026-10-10 (12d ago)
Last pushtoday
Watchers1
OwnerOrganization
GitHub topics
Links
- GitHub: github.com/THUSI-Lab/GameScaling
- Homepage: https://huggingface.co/THUSI-Lab/GameScaling
- Releases · Issues · Hacker News mentions
README excerpt
Continued Pre-Training for Embodied Agents in Diverse Virtual Worlds
Kuan Zhang 1,2,*,‡ , Yukun Chen 1,3,*,‡ , Zhihao Yang 1,3,*,‡ , Yue Su 4 , Xiangnan Wu 3 , Zirong Chen 2 , Run Luo 1,5,‡ , Jinkun Hou 6 , Tao Tan 1 , Yinhe Zheng 1,† , Yiming Li 2,†
1 miHoYo Honkai AI R&D Team 2 College AI, Tsinghua University 3 University of Chinese Academy of Sciences 4 MMLab, The University of Hong Kong 5 National University of Singapore 6 Peking University
* Equal contribution † Corresponding author ‡ Work done while interning at miHoYo
If you find GameScaling useful, please upvote our Daily Paper on Hugging Face.
Thank you for your support!
## Overview
GameScaling models are Qwen3.5 vision-language models with continued pre-training on
keyboard-and-mouse gameplay. Each call takes the current game frame (plus a short history of past
frames and actions) and returns the next **200 ms of keyboard and mouse actions**: 6 steps of
33 ms each, plus one mouse movement and scroll for the whole chunk. The model may think before it
acts.
This GitHub repository holds the inference client, the standard system-prompt template, the
example and the tests. Each of the eight checkpoints is its own Hugging Face repository (below,
and in the GameScaling collection). There is no training code. Paper results and analysis are on the project page.
## Checkpoints
| Model | Training steps | Weights | GPUs (bf16) |
|---|---:|---:|:---:|
| GameScaling-0.8B-S1 | 6,736 | 2.2 GB | 1 |
| GameScaling-0.8B-S3 | 6,760 | 2.2 GB | 1 |
| GameScaling-2B-S1 | 6,736 | 5.4 GB | 1 |
| GameScaling-2B-S3 | 6,760 | 5.4 GB | 1 |
| GameScaling-9B-S1 | 6,736 | 18.8 GB | 1 |
| GameScaling-9B-S3 | 6,760 | 18.8 GB | 1 |
| GameScaling-27B-S1 | 6,995 | 54.7 GB | 2 (tensor parallel) |
| GameScaling-27B-S3 | 7,020 | 54.7 GB | 2 (tensor parallel) |
- **S1** is trained on Minecraft gameplay only. **S3** is a balanced mixture: 27% Minecraft, the
rest from other games. All checkpoints use 1,600 h of gameplay.
- Weights are bfloat16, from the Qwen3.5-0.8B / 2B / 9B / 27B backbones.
## File tree
This GitHub repository holds the code; each checkpoint is a separate Hugging Face repository.
[code]
## 1. Download and serve
Clone the code:
[code]
Serve a checkpoint with vLLM (tested with 0.17.0); vLLM fetches the weights from its repository:
[code]
To keep the weights in a local folder instead, download the checkpoint repository and pass its path:
[code]
`serve_vllm.sh CKPT [PORT] [TP]` starts vLLM with `--served-model-name gamescaling`, bfloat16,
`--max-model-len 32768` (system prompt + 5 history frames + reasoning budget) and
`--limit-mm-per-prompt '{"image": 8}'` (5 history frames + the current one, with headroom). Set
`GPU_MEM_UTIL` to change the memory fraction (default 0.85).
Check that the server is up and the client can reach it:
[code]
Things to keep as shipped:
- **Chat template.** Use the `chat_template.jinja` in the checkpoint folder (vLLM loads it by
default). Do not replace