The Agar.io Learning Environment (Agarle) adalah implementasi performant dari game multi-pemain online yang populer, Agar.io bersama dengan antarmuka gym openai yang cocok untuk pembelajaran penguatan di Python.
Kloning repositori ini (dengan submodules)
git clone --recursive https://github.com/jondeaton/AgarLE.git
Jalankan skrip instalasi yang disertakan
python setup.py install
Instalasi akan menginstal Modul Python gym_agario
, yang ketika diimpor mendaftarkan lingkungan gym Agarle. Anda hanya perlu impor gym_agario
dan kemudian membuat lingkungan dengan cara standar
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
Game Agar.io dan ruang pengamatan sangat dapat dikonfigurasi. Anda dapat mengubah parameter game dan properti observasi seperti SO (konfigurasi default yang ditampilkan).
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 )
Gym ini mendukung banyak agen dalam game yang sama. Secara default, hanya akan ada agen tunggal, dan gym akan sesuai dengan antarmuka gym yang khas (perhatikan bahwa masih ada sejumlah "bot" di lingkungan). Namun, jika Anda melewati "multi_agent": True
dengan konfigurasi lingkungan maka lingkungan akan memiliki banyak agen yang semuanya berinteraksi dalam game Agar.io yang sama secara bersamaan.
env = gym.make("agario-grid-v0", **{
"multi_agent": True,
"num_agents": 5
})
Dengan konfigurasi ini, lingkungan tidak akan lagi sesuai dengan antarmuka gym openai khas dengan cara berikut.
step()
akan mengharapkan daftar tindakan dengan panjang yang sama dengan jumlah agen, yang menentukan tindakan untuk masing -masing agen.
Nilai pengembalian step()
akan menjadi daftar pengamatan, daftar hadiah, dan daftar dones masing -masing dengan panjang sama dengan jumlah agen. Elemen -elemen i
dari setiap daftar sesuai dengan agen i
secara konsisten di seluruh episode.
reset()
akan mengembalikan daftar pengamatan panjang yang sama dengan jumlah agen.
Ketika agen "selesai", pengamatan untuk agen itu tidak akan ada. Lingkungan mungkin masih diinjak sementara setidaknya ada satu agen yang belum "dilakukan". Hanya ketika semua agen dilakukan, lingkungan harus diatur ulang.
Perhatikan bahwa jika Anda melewati num_agents
lebih dari 1, multi_agent
akan ditetapkan benar secara otomatis.
Saat ini kompilasi/instalasi hanya bekerja dengan dentang, jadi jika Anda berada di Linux maka Anda harus mengatur kompiler C ++ Anda untuk dentang di lingkungan Anda sebelum menginstal.
CXX=`which clang++`
Satu-satunya lingkungan yang telah diuji secara luas adalah agario-grid-v0
, meskipun lingkungan RAM agario-ram-v0
dan lingkungan layar agario-screen-v0
harus bekerja dengan beberapa coaxing. agario-screen-v0
membutuhkan manajer jendela untuk bekerja sehingga tidak akan bekerja pada mesin Linux tanpa kepala, misalnya. Panggilan render
hanya akan bekerja jika yang dapat dieksekusi telah dibangun dengan rendering dihidupkan seperti yang dapat dilakukan dengan mengikuti panduan pengaturan lanjutan. Rendering tidak akan bekerja dengan lingkungan "layar", terlepas dari kenyataan bahwa lingkungan itu menggunakan gambar layar sebagai pengamatan lingkungan.
Untuk memainkan permainan sendiri atau mengaktifkan rendering di lingkungan gym, Anda perlu membangun klien game sendiri di sistem tempat OpenGL telah diinstal. Ini kemungkinan besar berhasil pada macOS, tetapi mungkin akan bekerja di Linux. Mengeluarkan perintah berikut
git submodule update --init --recursive
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j 2 client agarle
Ini akan menghasilkan client
bernama yang dapat dieksekusi di Direktori agario
agario/client # play the game
Jika Anda juga membangun target agarle
, maka perpustakaan dinamis yang dapat dipengaruhi oleh Python (yaitu file *.so
) bernama agarle
akan diproduksi. Untuk menggunakannya, salin ke "paket situs" untuk penerjemah ularin Anda seperti itu seperti:
cp environment/agarle* `python -m site --user-site`
Lingkungan gym yang mendasarinya dapat dikompilasi sedemikian rupa sehingga panggilan render()
akan membuat permainan ke layar. Fitur ini dimatikan secara default untuk alasan kinerja dan portabilitas, tetapi dapat dihidupkan selama kompilasi dengan menggunakan perintah cmake berikut alih -alih yang ditunjukkan di atas.
cmake -DCMAKE_BUILD_TYPE=Release -DDEFINE_RENDERABLE=ON ..