El entorno de aprendizaje de Agar.io (Agarle) es una implementación de rendimiento del popular juego de juego múltiple en línea Agar.io junto con una interfaz de gimnasio Operai adecuada para el aprendizaje de refuerzo en Python.
Clon este repositorio (con submódulos)
git clone --recursive https://github.com/jondeaton/AgarLE.git
Ejecute el script de instalación incluido
python setup.py install
La instalación habrá instalado el módulo Python gym_agario
, que cuando se importó registra los entornos de Agarle Gym. Solo necesita importar gym_agario
y luego hacer un entorno de la manera estándar
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
El juego Agar.io y el espacio de observación son altamente configurables. Puede cambiar los parámetros del juego y las propiedades de observación como SO (configuración predeterminada que se muestra).
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 )
Este gimnasio admite múltiples agentes en el mismo juego. Por defecto, solo habrá un solo agente, y el gimnasio se ajustará a la interfaz típica del gimnasio (tenga en cuenta que todavía puede haber cualquier cantidad de "bots" en el entorno). Sin embargo, si pasa "multi_agent": True
a la configuración del entorno, entonces el entorno tendrá múltiples agentes que interactúan dentro del mismo juego de agar.io simultáneamente.
env = gym.make("agario-grid-v0", **{
"multi_agent": True,
"num_agents": 5
})
Con esta configuración, el entorno ya no se ajustará a la interfaz típica del gimnasio Operai de las siguientes maneras.
step()
esperará una lista de acciones de la misma longitud que el número de agentes, lo que especifica la acción para cada agente.
El valor de retorno de step()
será una lista de observaciones, lista de recompensas y lista de dones cada uno con una longitud igual al número de agentes. Los i
de cada listas corresponden al agente i
th de manera consistente durante todo el episodio.
reset()
devolverá una lista de observaciones de longitud igual al número de agentes.
Cuando un agente está "hecho", las observaciones para ese agente no serán ninguna. El entorno aún puede pasar mientras hay al menos un agente que no está "hecho". Solo cuando se realicen todos los agentes se debe restablecer el entorno.
Tenga en cuenta que si pasa num_agents
superiores a 1, multi_agent
se establecerá verdadero automáticamente.
Actualmente, la compilación/instalación solo funciona con Clang, por lo que si está en Linux, entonces deberá configurar su compilador C ++ en su entorno antes de instalar.
CXX=`which clang++`
El único entorno que se ha probado ampliamente es agario-grid-v0
, aunque el entorno RAM agario-ram-v0
y el entorno de pantalla agario-screen-v0
deberían funcionar con algunos coaxantes. El agario-screen-v0
requiere que funcione un administrador de ventanas, por lo que no funcionará en máquinas Linux sin cabeza, por ejemplo. Llamar render
solo funcionará si el ejecutable se ha construido con la representación activada como se puede hacer siguiendo la guía de configuración avanzada. La representación no funcionará con el entorno de "pantalla", a pesar del hecho de que ese entorno utiliza la imagen de la pantalla como observación del entorno.
Para jugar el juego usted mismo o habilitar la representación en el entorno del gimnasio, necesitará construir el cliente de juego usted mismo en un sistema donde se ha instalado OpenGL. Es más probable que esto tenga éxito en MacOS, pero probablemente funcionará en Linux. Emitir los siguientes comandos
git submodule update --init --recursive
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j 2 client agarle
Esto sacará a un client
ejecutable con nombre de cliente en el directorio agario
agario/client # play the game
Si también construye el objetivo agarle
, se habrá producido una biblioteca dinámica de Python Importable (es decir, *.so
) llamado agarle
. Para usarlo, cópielo en los "paquetes del sitio" para su intérprete de Python como así:
cp environment/agarle* `python -m site --user-site`
Los entornos de gimnasio subyacentes pueden ser compilados de tal manera que llamar render()
convertirá el juego en la pantalla. Esta característica se desactiva de forma predeterminada por razones de rendimiento y portabilidad, pero se puede activar durante la compilación utilizando el siguiente comando CMake en lugar del que se muestra arriba.
cmake -DCMAKE_BUILD_TYPE=Release -DDEFINE_RENDERABLE=ON ..