Player-1-9B

Project Page Paper Code Dataset

Player-1-9B is an open-weights vision-language-action model trained for generalist game control. Built on top of Qwen3.5-9B, Player-1-9B learns to perceive gameplay through screenshots, generate step-by-step reasoning, and execute keyboard and mouse actions.

The model is part of Player-1: Learning to Play from Synthetic Experience; see the paper and the GitHub repository for complete training, evaluation, and environment code.


๐ŸŽฎ Model Overview

  • Base Architecture: Qwen/Qwen3.5-9B (Dense Vision-Language Model)
  • Parameters: 9.6B
  • Post-Training Pipeline:
    1. Supervised Fine-Tuning (SFT) on Player-1-Data (6,044 trajectories from 172 games) with action-balanced sampling.
    2. Reinforcement Learning (RL) with PPO in Player-1-Gym across 16 synthetic 2D/3D environments with verifiable game-state rewards.
  • Action Space: Normalized canonical game actions:
    • Relative mouse movement: dx, dy in [-1000, 1000]
    • Absolute mouse position: x, y in [0, 1000]
    • Mouse clicks: left, right, middle
    • Keyboard keys: KeyW, Space, ShiftLeft, etc.
    • Duration: 200ms per step

โšก Quick Start: Serving with vLLM

We recommend serving Player-1-9B via vLLM with auto tool choice and reasoning parser enabled:

vllm serve yyyang/Player-1-9B \
  --served-model-name Player-1-9B \
  --port 8000 \
  --chat-template https://raw.githubusercontent.com/TencentARC/Player-1/main/player1/agents/chat_template/qwen3_5_player1_full_history.jinja \
  --enable-auto-tool-choice \
  --tool-call-parser qwen3_coder \
  --reasoning-parser qwen3 \
  --max-model-len 16384 \
  --limit-mm-per-prompt image=5

๐Ÿ•น๏ธ Python Inference Example

Interact with Player-1-9B using standard OpenAI-compatible client libraries:

import base64
from io import BytesIO
from openai import OpenAI
from PIL import Image

client = OpenAI(base_url="http://127.0.0.1:8000/v1", api_key="EMPTY")

# Encode observation screenshot
def encode_image(image: Image.Image) -> str:
    buffered = BytesIO()
    image.save(buffered, format="JPEG", quality=85)
    return base64.b64encode(buffered.getvalue()).decode("utf-8")

# Sample inference
screenshot = Image.open("screenshot.png").resize((640, 360))
b64_image = encode_image(screenshot)

response = client.chat.completions.create(
    model="Player-1-9B",
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{b64_image}"}},
                {"type": "text", "text": "Task: Aim at the target and shoot."}
            ]
        }
    ],
    temperature=0.0,
    max_tokens=512,
)

# The model outputs reasoning thought and function/tool call actions
message = response.choices[0].message
if hasattr(message, "reasoning_content") and message.reasoning_content:
    print("Reasoning:", message.reasoning_content)
if message.tool_calls:
    for tool_call in message.tool_calls:
        print("Action:", tool_call.function.name, tool_call.function.arguments)

See examples/inference/play_game.py in the code repository to run the policy in interactive Gym environments.


๐Ÿ“Š Evaluation Benchmarks

We evaluate generalist game-playing capabilities across four diverse benchmarks spanning synthetic environments and out-of-domain games:

  • Player-1-Gym (16 environments): Evaluates core 2D and 3D gameplay primitives, including aiming, combat, driving, and navigation, under procedural variations.
  • MineDojo-300 (300 tasks): Evaluates open-ended, goal-directed survival and crafting tasks in Minecraft 1.16.5.
  • ViZDoom-10 (10 maps): Evaluates first-person 3D navigation, aiming, and combat in classic shooter environments.
  • GameWorld (170 tasks across 34 games): Evaluates zero-shot transfer across diverse 2D browser and arcade games with varied mechanics.

๐Ÿ“‘ Citation

@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}
}
Downloads last month
-
Safetensors
Model size
9B params
Tensor type
BF16
ยท
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for yyyang/Player-1-9B

Finetuned
Qwen/Qwen3.5-9B
Finetuned
(1,308)
this model

Paper for yyyang/Player-1-9B