🎥 Here you can see our AI gaming agents in action, demonstrating their gameplay strategies across different games!
The goal of this repo is to provide an easy solution of deploying computer use agents (CUAs) that run on your PC and laptops. As part of LMGames, our current focus is on building local gaming agents.
Current features:
- Gaming agents for Platformer and Atari games.
- Clone this repository:
git clone https://github.com/lmgame-org/GamingAgent.git
cd GamingAgent
- Install dependency:
conda create -n game_cua python==3.10 -y
pip install -r requirements.txt
Currently we support gaming agents based on the following models:
- OpenAI:
- gpt-4o
- gpt-4o-mini
- o1
- Anthropic:
- claude-3-5-sonnet-20241022
- claude-3-7-sonnet-20250219
- Gemini:
- gemini-1.5-pro
Set your API keys with:
export OPENAI_API_KEY={YOUR_OPENAI_API_KEY}
export ANTHROPIC_API_KEY={YOUR_ANTHROPIC_API_KEY}
export GEMINI_API_KEY={your_GEMINI_API_KEY}
Install your Super Mario Bros game. In our demo, we adopt SuperMarioBros-C.
Navigate to the repo and follow the installation instructions.
- Once the game is built, download and move the ROM file:
mv path-to-your-ROM-file/"Super Mario Bros. (JU) (PRG0) [!].nes" $YOUR_WORKPLACE/SuperMarioBros-C/build/
- Launch the game with
cd $YOUR_WORKPLACE/SuperMarioBros-C/build
./smbc
- Full screen the game by pressing
F
. You should be able to see:
- Open another screen, launch your agent in terminal with
cd $YOUR_WORKPLACE/GamingAgent
python games/superMario/mario_agent.py --api_provider {your_favorite_api_provider} --model_name {official_model_codename}
- Due to concurrency issue, sometimes the agent will temporarily pause your game by pressing
Enter
. To avoid the issue, you can launch the agent only after entering the game upon seeing:
--concurrency_interval: Interval in seconds between starting workers.
--api_response_latency_estimate: Estimated API response latency in seconds.
--policy: 'long', 'short', 'alternate' or 'mixed'. In 'long' or 'short' modes only those workers are enabled.
You can implement your own policy in mario_agent.py
! Deploying high-concurrency strategy with short-term planning streaming workers vs. low-concurrency strategy with long-term planning workers, or a mix of both.
In our early experiments, 'alternate' policy performs well. Try it yourself and find out which one works better!
2048 is a sliding tile puzzle game where players merge numbered tiles to reach the highest possible value. In our demo, we adopt and modify 2048-Pygame
Run the 2048 game with a defined window size:
python games/game_2048/game_logic.py -wd 600 -ht 600
Use Ctrl to restart the game and the arrow keys to move tiles strategically.
Start the AI agent to play automatically:
python games/game_2048/2048_agent.py
--api_provider: API provider to use.
--model_name: Model name (has to come with vision capability).
Install your Tetris game. In our demo, we adopt Python-Tetris-Game-Pygame.
- Launch the game with
cd $YOUR_WORKPLACE/Python-Tetris-Game-Pygame
python main.py
main.py
, line 23: change event time to 500~600ms.
You should be able to see:
-
Adjust Agent's Field of Vision. Either full screen your game or adjust screen region in
/games/tetris/workers.py
, line 67 to capture only the gameplay window. For example, inPython-Tetris-Game-Pygame
with MacBook Pro, change the line toregion = (0, 0, screen_width // 32 * 9, screen_height // 32 * 20)
. -
Open another screen, launch your agent in terminal with
cd $YOUR_WORKPLACE/GamingAgent
python games/tetris/tetris_agent.py
--api_provider: API provider to use.
--model_name: Model name (has to come with vision capability).
--concurrency_interval: Interval in seconds between consecutive workers.
--api_response_latency_estimate: Estimated API response latency in seconds.
--policy: 'fixed', only one policy is supported for now.
Currently we find single-worker agent is able to make meaningful progress in the Tetris game. If the gaming agent spawns multiple independent workers, they don't coordinate well. We will work on improving the agent and gaming policies. We also welcome your thoughts and contributions.