Player-1 is an open VLM post-training framework for generalist game-playing agents, following:
SFT on Player-1-Data → RL in Player-1-Gym → Evaluation on held-out gameplay benchmarks.
Core components of the Player-1 framework:
- Player-1-Data: 6,044 curated trajectories from 172 games, complete with screenshots, chain-of-thought reasoning, and normalized keyboard/mouse actions.
- Player-1-Gym: 16 synthetic 2D/3D environments for aiming, combat, driving, navigation, and UI crafting with verifiable rewards.
- Training Engine: VeRL integration supporting PPO, GRPO, and GSPO. Base models: Qwen3.5-9B / Qwen3.5-35B-A3B.
- Gameplay Evaluation Suite: Evaluation across Player-1-Gym, MineDojo (300 tasks), ViZDoom (10 maps), and GameWorld (170 tasks).
player1-introduction.mp4
- [2026.11] Released Player-1 models, Player-1-Data, and the complete Player-1 codebase: Player-1-Gym, training recipes (SFT & RL), and benchmark evaluators.
- [2026.10] Released the paper (arXiv 2610.20584) and project page.
Play the 16 Gym environments directly in your browser. Use Python 3.11+ and run from the repository root:
python -m pip install -r requirements/gym.txt
python -m playwright install chromium
PYTHONPATH=. python examples/gym/play.pyOpen the printed URL in your browser to play manually.
For Python programmatic stepping, run examples/gym/step.py:
import asyncio
from player1.gym import GymEnv
async def main():
async with GymEnv("base_3d_aim") as env:
obs = await env.reset(seed=42)
# Relative mouse movement [-1000, 1000] and click
obs = await env.step({
"type": "game_step_action", "id": "control", "duration_ms": 200,
"mouse": {"mode": "relative", "dx": 50, "dy": -20},
"mouse_click": {"button": "left"},
})
print(f"Reward: {obs.reward}, Terminated: {obs.terminated}")
asyncio.run(main())| Workflow | Guide / Entry Points | Description |
|---|---|---|
| Gym | Setup and Python API | 16 environments, continuous initialization, and action specs |
| Data | Reading and format · Production and Viewer | Parquet schema, multi-turn history reader, and VLM annotation |
| Inference | Model server and examples | vLLM serving, prompt templates, and single-frame/interactive agent |
| Training | SFT → RL guide · SFT launcher · RL launcher | veRL integration, PPO/GRPO/GSPO, and checkpoint export |
| Evaluation | Benchmark setup and trajectory viewer | MineDojo-300, ViZDoom-10, GameWorld, and web-based viewer |
| Sources | Component sources and licenses | Upstream projects and asset notices |
Player-1 training and evaluation pipeline: Computer-use model → SFT on Player-1-Data → RL in Player-1-Gym → Evaluation in external games
We curate 6,044 gameplay trajectories from 172 games, with recorded keyboard and mouse actions mapped to a shared game-control action space. Each training example includes task instructions, screenshot observations, reasoning, and actions for supervised learning.
Sixteen synthetic 2D and 3D environments cover aiming, combat, driving, navigation, and UI interaction. All use screenshot observations and keyboard and mouse controls, with verifiable rewards computed directly from game state. Randomizing appearance, camera, scene, and control broadens the agent's training experience.
We evaluate transfer to games outside the RL training suite:
| Minecraft | ViZDoom | GameWorld |
|---|---|---|
![]() |
![]() |
![]() |
- MineDojo (MineDojo-300, 300 tasks, 1000 turns per step): Goal-directed control in Minecraft's open-ended world.
- ViZDoom (ViZDoom-10, 10 maps, 150–2,100 turns per step): First-person navigation, aiming, and combat in ViZDoom.
- GameWorld (170 tasks, 400 turns per step): Game control across 34 browser games with diverse mechanics.
- Launch: Paper & Project Page
- Demonstration SFT Dataset: Hugging Face.
- Model Checkpoints: Player-1-9B and Player-1-35B-A3B.
- Player-1-Gym: 16 synthetic 2D/3D environments with Python Playwright bindings.
- Player-1-Data Pipeline: Ingestion, action standardization, and VLM annotation.
- Training Framework: VeRL-based SFT and RL (PPO / GRPO / GSPO) recipes for Qwen3.5-9B / Qwen3.5-35B-A3B.
- Evaluation & Benchmark: Player-1-Gym, MineDojo-300, ViZDoom-10, and GameWorld.
If you find our work or dataset useful, please consider citing:
@misc{ouyang2026player1learningplaysynthetic,
title={Player-1: Learning to Play from Synthetic Experience},
author={Mingyu Ouyang and Yiran Wang and Siyuan Hu and Xingyilang Yin and Huiqiang Sun and Guangzhi Wang and Junfu Pu and Cheng Cheng and Honghao Chen and Ying Shan and Mike Zheng Shou and Hwee Tou Ng},
year={2026},
eprint={2610.20584},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2610.20584}
}


















