Agar.io Learning環境(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 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
、環境は複数のエージェントがすべて同じagar.ioゲーム内で同時に相互作用します。
env = gym.make("agario-grid-v0", **{
"multi_agent": True,
"num_agents": 5
})
この構成により、環境は次の方法で典型的なOpenaiジムインターフェイスに適合しなくなります。
step()
各エージェントのアクションを指定するエージェントの数と同じ長さのアクションのリストを期待します。
step()
の返品値は、観察のリスト、報酬のリスト、およびエージェントの数に等しい長さを持つドンのリストになります。各リストのi
の要素は、エピソード全体で一貫してi
エージェントに対応しています。
reset()
エージェントの数に等しい長さの観測値のリストを返します。
エージェントが「完了」されると、そのエージェントの観察はありません。 「完了」されていない少なくとも1つのエージェントがいる間、環境はまだステップされている可能性があります。すべてのエージェントが完了した場合にのみ、環境をリセットする必要があります。
num_agents
1を超える場合、 multi_agent
自動的にTrueに設定されることに注意してください。
現在、コンピレーション/インストールはClangのみで作業しているため、Linuxを使用している場合は、インストールする前にC ++コンパイラを環境でClangに設定する必要があります。
CXX=`which clang++`
RAM環境agario-ram-v0
とスクリーン環境agario-screen-v0
は、ある程度のコックスで動作するはずですが、広範囲にテストされた唯一の環境はagario-grid-v0
です。 agario-screen-v0
ウィンドウマネージャーが作業する必要があるため、たとえばヘッドレスLinuxマシンでは動作しません。呼び出しrender
Advanced Set Upガイドに従うことで実行できるように、レンダリングをオンにして実行可能に構築された場合にのみ機能します。レンダリングは、その環境が画面画像を環境の観察として使用しているという事実にもかかわらず、「画面」環境では機能しません。
自分でゲームをプレイしたり、ジム環境でレンダリングできるようにするには、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に不可欠な動的ライブラリ(IE *.so
ファイル)が生成されます。それを使用するには、Pythonインタープリターの「サイトパッケージ」にコピーしてください。
cp environment/agarle* `python -m site --user-site`
基礎となるジム環境をコンパイルして、 render()
呼び出すとゲームが画面に表示されるようになります。この機能は、パフォーマンスと移植性の理由でデフォルトでオフになりますが、上記のものではなく次のCmakeコマンドを使用して、コンピレーション中にオンにすることができます。
cmake -DCMAKE_BUILD_TYPE=Release -DDEFINE_RENDERABLE=ON ..