We test whether giving vision-language models explicit object coordinates improves their gameplay across Atari, VizDoom, and AI2-THOR. We find that symbolic grounding helps — but only when the model can accurately extract those symbols itself. Claude-4-Sonnet benefits consistently. GPT-4o and Gemini degrade.
Preprint: https://arxiv.org/abs/2603.11601
advanced_zero_shot_pipeline.py— Frame + Self-Extracted Symbols pipelinedirect_frame_runner.py— Frame-only baseline pipelineocatari_symbolic_runner.py— Frame + Ground-Truth Symbols pipelinesymbol_only_pipeline.py— Symbols-only pipeline (no visual frame)ocatari_ground_truth.py— Ground truth extraction from Atari RAM via OCAtarivizdoom_symbolic_runner.py— All four pipelines for VizDoomvizdoom_ground_truth.py— VizDoom ground truth extractionai2thor_symbolic_runner.py— All four pipelines for AI2-THORai2thor_ground_truth.py— AI2-THOR ground truth extractionaws_model.py— Unified model client (AWS Bedrock, OpenRouter, OpenAI)models_for_symbol_only.py— Text-only model wrappers for the symbols-only pipelinerun_benchmark.py— Runs the full evaluation benchmarkrun_ablation_study.py— Runs the noise and dropout ablation studynoise_applier.py— Injects coordinate noise and object dropout into symbol datacoordinate_accuracy_evaluator.py— Measures object detection quality against OCAtari ground truthgameplay_metrics.py— Game performance metricsautomatic_benchmark/— Benchmarking framework with rule-based, semantic, and LLM-judge scoringablation_config.yaml— Ablation study configuration
pip install -r requirements.txtModels are accessed via AWS Bedrock or OpenRouter. Set the relevant environment variable before running:
export OPENROUTER_API_KEY=...python direct_frame_runner.py \
--env_name "ALE/Pong-v5" \
--provider openrouter \
--model_id anthropic/claude-sonnet-4 \
--api_key YOUR_OPENROUTER_KEY \
--game_type pong \
--num_frames 600 \
--seed 42 \
--output_dir ./experiments/python advance_game_runner.py \
--env_name "ALE/Pong-v5" \
--provider openrouter \
--model_id anthropic/claude-sonnet-4 \
--openrouter_key_file OPENROUTER_API_KEY.txt \
--detection_model anthropic/claude-sonnet-4 \
--game_type pong \
--num_frames 600 \
--seed 42 \
--output_dir ./experiments/