Agar.io學習環境(Agarle)是流行的在線多玩家遊戲Agar.io的表現,以及適合在Python增強學習的OpenAI Gym界面。
克隆此存儲庫(帶有子模塊)
git clone --recursive https://github.com/jondeaton/AgarLE.git
運行隨附的安裝腳本
python setup.py install
安裝將安裝Python Module gym_agario
,當導入時,該模塊將註冊Agarle Gym環境。您只需要進口gym_agario
,然後以標準方式進行環境
import gym
import gym_agario
env = gym . make ( "agario-grid-v0" )
game_state = env . reset ()
print ( game_state . shape ) # (128, 128, 10) , (grid_size, grid_size, num_channels)
action = np . array ([ 0 , 0 ]), 0 # don't move, don't split
while True :
game_state , reward , done , info = env . step ( action )
if done : break
Agar.io遊戲和觀察空間高度可配置。您可以更改遊戲的參數和觀察屬性(如So)(默認配置)。
config = {
'ticks_per_step' : 4 , # Number of game ticks per step
'num_frames' : 2 , # Number of game ticks observed at each step
'arena_size' : 1000 , # Game arena size
'num_pellets' : 1000 ,
'num_viruses' : 25 ,
'num_bots' : 25 ,
'pellet_regen' : True , # Whether pellets regenerate randomly when eaten
'grid_size' : 128 , # Size of spatial dimensions of observations
'observe_cells' : True , # Include an observation channel with agent's cells
'observe_others' : True , # Include an observation channel with other players' cells
'observe_viruses' : True , # Include an observation channel with viruses
'observe_pellets' : True # Include an observation channel with pellets
}
env = gym . make ( "agario-grid-v0" , ** config )
該健身房在同一遊戲中為多個代理商提供支持。默認情況下,只有一個代理商,健身房將符合典型的健身房界面(請注意,環境中仍然可能有許多“機器人”)。但是,如果您傳遞"multi_agent": True
to to the Environment配置,則環境將同時在同一agar.io遊戲中進行多個代理。
env = gym.make("agario-grid-v0", **{
"multi_agent": True,
"num_agents": 5
})
通過這種配置,環境將不再符合以下方式符合典型的OpenAI健身房界面。
step()
將期望與代理數量相同的操作列表,該操作指定每個代理的動作。
step()
的返回值將是觀測值列表,獎勵列表和每個捐贈列表,每個捐贈列表的長度等於代理的數量。在整個情節中,每個列表的i
元素i
始終如一地對應。
reset()
將返回等於代理數量的長度觀察列表。
當代理“完成”代理時,該代理的觀察將無。至少有一個未“完成”的代理商時,環境可能仍會逐步踩踏。只有在所有代理完成後才必須重置環境。
請注意,如果您通過大於1的num_agents
,則將自動設置multi_agent
。
當前的編譯/安裝僅與Clang合作,因此,如果您在Linux上,則需要在安裝之前將C ++編譯器設置為在環境中的叮噹聲。
CXX=`which clang++`
儘管RAM環境agario-ram-v0
和屏幕環境agario-screen-v0
應該與某些哄騙一起使用,但唯一經過廣泛測試的環境是agario-grid-v0
。例如, agario-screen-v0
需要一個窗口管理器才能工作,因此無法在無頭Linux機器上使用。只有在構建可執行文件並遵循“高級設置指南)可以打開渲染的情況下,呼叫render
才能起作用。儘管環境將屏幕圖像用作環境的觀察,但渲染將無法與“屏幕”環境合作。
為了自己玩遊戲或在健身房環境中啟用渲染,您需要在安裝OpenGL的系統上自己構建遊戲客戶端。這最有可能在MacOS上取得成功,但可能會在Linux上使用。發出以下命令
git submodule update --init --recursive
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j 2 client agarle
這將在目錄agario
中輸出可執行的命名client
agario/client # play the game
如果您還構建了agarle
目標,則將生產一個名為agarle
的可python象徵動態庫(即*.so
file)。要使用它,請將其複製到您的Python解釋器中的“站點套餐”中:
cp environment/agarle* `python -m site --user-site`
可以匯總基礎健身環境,以便將render()
渲染到屏幕上。出於性能和可移植性原因,默認情況下關閉了此功能,但是可以在編譯過程中使用以下CMAKE命令而不是上面顯示的命令打開此功能。
cmake -DCMAKE_BUILD_TYPE=Release -DDEFINE_RENDERABLE=ON ..