O ambiente Agar.io Learning (Agarle) é uma implementação de desempenho do popular jogo de jogos multi-player online, juntamente com uma interface de ginástica Openai, adequada para o aprendizado de reforço no Python.
Clone este repositório (com submódulos)
git clone --recursive https://github.com/jondeaton/AgarLE.git
Execute o script de instalação incluído
python setup.py install
A instalação terá instalado o módulo Python gym_agario
, que quando importado registra os ambientes de ginástica Agarle. Você precisa apenas importar gym_agario
e depois fazer um ambiente da maneira padrão
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
O jogo Agar.io Game e Observation são altamente configuráveis. Você pode alterar os parâmetros das propriedades do jogo e de observação como SO (configuração padrão mostrada).
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 )
Esta academia suporta vários agentes no mesmo jogo. Por padrão, haverá apenas um único agente, e a academia estará em conformidade com a interface típica de ginástica (observe que ainda pode haver qualquer número de "bots" no ambiente). No entanto, se você passar "multi_agent": True
à configuração do ambiente, o ambiente terá vários agentes interagindo no mesmo jogo de ágar.io simultaneamente.
env = gym.make("agario-grid-v0", **{
"multi_agent": True,
"num_agents": 5
})
Com essa configuração, o ambiente não estará mais em conformidade com a interface típica de academia do OpenAI das seguintes maneiras.
step()
espera uma lista de ações do mesmo comprimento que o número de agentes, que especifica a ação para cada agente.
O valor de retorno da step()
será uma lista de observações, lista de recompensas e lista de dones, cada um com comprimento igual ao número de agentes. Os i
de cada listas correspondem ao agente i
TH de forma consistente ao longo do episódio.
reset()
retornará uma lista de observações de comprimento igual ao número de agentes.
Quando um agente é "feito", as observações desse agente serão nenhuma. O ambiente ainda pode ser pisado enquanto há pelo menos um agente que não está "feito". Somente quando todos os agentes são feitos, o ambiente deve ser redefinido.
Observe que, se você passar no num_agents
MAIOR que 1, multi_agent
será definido automaticamente.
Atualmente, a compilação/instalação está funcionando apenas com o CLANG; portanto, se você estiver no Linux, precisará definir seu compilador C ++ para Clang em seu ambiente antes de instalar.
CXX=`which clang++`
O único ambiente que foi testado extensivamente é agario-grid-v0
, embora o ambiente RAM ambiental agario-ram-v0
e o ambiente de tela agario-screen-v0
devam funcionar com alguma persuasão. O agario-screen-v0
exige que um gerenciador de janelas funcione para que não funcione em máquinas Linux sem cabeça, por exemplo. render
de chamadas só funcionará se o executável tiver sido construído com a renderização ativada, como pode ser feito seguindo o guia de configuração avançado. A renderização não funcionará com o ambiente "tela", apesar de esse ambiente usar a imagem da tela como observação do ambiente.
Para jogar o jogo ou ativar a renderização no ambiente da academia, você precisará criar o cliente de jogo em um sistema onde o OpenGL foi instalado. É mais provável que isso tenha sucesso no macOS, mas provavelmente funcionará no Linux. Emitir os seguintes comandos
git submodule update --init --recursive
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j 2 client agarle
Isso produzirá um client
executável nomeado no diretório agario
agario/client # play the game
Se você também construir o agarle
Target, uma biblioteca dinâmica de Python (arquivo isto é *.so
) chamada agarle
será produzida. Para usá -lo, copie -o nos "pacotes de sites" para o seu intérprete Python como assim:
cp environment/agarle* `python -m site --user-site`
Os ambientes de ginástica subjacentes podem ser compilados de modo que render()
renderize o jogo na tela. Esse recurso é desligado por padrão por motivos de desempenho e portabilidade, mas pode ser ativado durante a compilação usando o seguinte comando cmake em vez do mostrado acima.
cmake -DCMAKE_BUILD_TYPE=Release -DDEFINE_RENDERABLE=ON ..