Agar.io Learning Environment (Agarle)는 Python의 강화 학습에 적합한 OpenAi 체육관 인터페이스와 함께 인기있는 온라인 멀티 플레이어 게임 Agar.io의 성능있는 구현입니다.
이 저장소 복제 (하위 모듈 포함)
git clone --recursive https://github.com/jondeaton/AgarLE.git
포함 된 설치 스크립트를 실행하십시오
python setup.py install
설치는 Python Module gym_agario
설치했으며, 수입시 Agarle Gym 환경을 등록합니다. gym_agario
import 만 필요하고 표준 방식으로 환경을 조성하면됩니다.
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
환경에 여러 에이전트가 동시에 동시에 상호 작용할 수 있습니다.
env = gym.make("agario-grid-v0", **{
"multi_agent": True,
"num_agents": 5
})
이 구성을 통해 환경은 더 이상 다음 방법으로 일반적인 OpenAi 체육관 인터페이스를 준수하지 않습니다.
step()
각 에이전트의 조치를 지정하는 에이전트 수와 동일한 길이의 동작 목록을 기대합니다.
step()
의 반환 값은 관측 목록, 보상 목록 및 기증 목록이 에이전트 수와 동일한 길이를 갖습니다. 각 목록의 i
'요소는 에피소드 전체에서 일관되게 i
에이전트에 해당합니다.
reset()
에이전트 수와 동일한 길이의 관측 목록을 반환합니다.
에이전트가 "완료"되면 해당 에이전트에 대한 관찰은 없을 것입니다. "완료되지 않은"에이전트가 하나 이상있는 동안 환경은 여전히 밟을 수 있습니다. 모든 에이전트가 완료된 경우에만 환경을 재설정해야합니다.
1보다 큰 num_agents
통과하면 multi_agent
자동으로 True를 설정합니다.
현재 컴파일/설치는 Clang과 만 작동하고 있으므로 Linux에있는 경우 설치하기 전에 C ++ 컴파일러를 환경에서 Clang으로 설정해야합니다.
CXX=`which clang++`
RAM Environment agario-ram-v0
및 Screen Environment agario-screen-v0
이 일부 동축과 함께 작동해야하지만 광범위하게 테스트 된 유일한 환경은 agario-grid-v0
입니다. agario-screen-v0
Window Manager가 작동해야하므로 예를 들어 헤드리스 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
Target을 구축하면 agarle
이라는 이름의 Python-Importable Dynamic Library (예 : *.so
파일)가 제작되었습니다. 이를 사용하려면 Python 통역사의 "사이트 패키지"로 복사하십시오.
cp environment/agarle* `python -m site --user-site`
기본 체육관 환경은 호출 render()
게임을 화면에 렌더링 할 수 있도록 컴파일 될 수 있습니다. 이 기능은 성능 및 이식성 이유에 대해 기본적으로 꺼져 있지만 위에 표시된 것 대신 다음 CMAKE 명령을 사용하여 컴파일 중에 켜질 수 있습니다.
cmake -DCMAKE_BUILD_TYPE=Release -DDEFINE_RENDERABLE=ON ..