L'Agar.io Learning Environment (Agarle) est une implémentation performante de la populaire jeu multi-joueurs en ligne Agar.io ainsi qu'une interface de gym Openai adaptée à l'apprentissage par renforcement à Python.
Clone ce référentiel (avec sous-modules)
git clone --recursive https://github.com/jondeaton/AgarLE.git
Exécutez le script d'installation inclus
python setup.py install
L'installation aura installé le module Python gym_agario
, qui, lorsqu'il est importé, enregistre les environnements Agarle Gym. Vous n'avez qu'à importer gym_agario
, puis de créer un environnement de la manière standard
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
Le jeu Agar.io et l'espace d'observation sont très configurables. Vous pouvez modifier les paramètres du jeu et les propriétés d'observation comme ainsi (configuration par défaut indiquée).
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 )
Ce gymnase soutient plusieurs agents dans le même jeu. Par défaut, il n'y aura qu'un seul agent, et le gymnase sera conforme à l'interface de gym typique (notez qu'il peut encore y avoir n'importe quel nombre de "robots" dans l'environnement). Cependant, si vous passez "multi_agent": True
à la configuration de l'environnement, l'environnement aura plusieurs agents interagissant tous dans le même jeu Agar.io simultanément.
env = gym.make("agario-grid-v0", **{
"multi_agent": True,
"num_agents": 5
})
Avec cette configuration, l'environnement ne sera plus conforme à l'interface typique de gymnase Openai de la manière suivante.
step()
s'attendra à une liste d'actions de la même longueur que le nombre d'agents, qui spécifie l'action pour chaque agent.
La valeur de retour de step()
sera une liste d'observations, de liste de récompenses et de liste de dons chacun avec une longueur égale au nombre d'agents. Les éléments i
'th de chaque liste correspondent de manière cohérente à l'agent i
th tout au long de l'épisode.
reset()
renverra une liste d'observations de longueur égale au nombre d'agents.
Lorsqu'un agent est «fait», les observations de cet agent n'en seront pas. L'environnement peut encore être étonné pendant qu'il y a au moins un agent qui n'est pas "fait". Ce n'est que lorsque tous les agents sont effectués que l'environnement doit être réinitialisé.
Notez que si vous passez num_agents
supérieur à 1, multi_agent
sera défini automatiquement.
Actuellement, la compilation / l'installation ne fonctionne qu'avec Clang, donc si vous êtes sur Linux, vous devrez définir votre compilateur C ++ sur Clang dans votre environnement avant l'installation.
CXX=`which clang++`
Le seul environnement qui a été très testé est agario-grid-v0
, bien que l'environnement RAM agario-ram-v0
et l'environnement d'écran agario-screen-v0
devraient fonctionner avec un peu de conduite. L' agario-screen-v0
nécessite un gestionnaire de fenêtres pour fonctionner et ne fonctionnera pas sur des machines Linux sans tête, par exemple. L'appel de render
ne fonctionnera que si l'exécutable a été construit avec le rendu activé comme peut être fait en suivant le guide de configuration avancé. Le rendu ne fonctionnera pas avec l'environnement "écran", malgré le fait que cet environnement utilise l'image de l'écran comme observation de l'environnement.
Afin de jouer au jeu vous-même ou d'activer le rendu dans l'environnement du gymnase, vous devrez construire le client de jeu vous-même sur un système où OpenGL a été installé. Cela est plus susceptible de réussir sur MacOS, mais fonctionnera probablement sur Linux. Émettre les commandes suivantes
git submodule update --init --recursive
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j 2 client agarle
Cela sortira un exécutable nommé client
dans le répertoire agario
agario/client # play the game
Si vous construisez également la cible agarle
, une bibliothèque dynamique imporable de Python (IE *.so
Fichier) nommée agarle
aura été produite. Pour l'utiliser, copiez-le dans les "packages de site" pour votre interprète Python comme ainsi:
cp environment/agarle* `python -m site --user-site`
Les environnements de gym sous-jacents peuvent être compilés de telle sorte que Calling render()
rendra le jeu sur l'écran. Cette fonctionnalité est désactivée par défaut pour des raisons de performances et de portabilité, mais peut être activée pendant la compilation en utilisant la commande CMake suivante au lieu de celle indiquée ci-dessus.
cmake -DCMAKE_BUILD_TYPE=Release -DDEFINE_RENDERABLE=ON ..