Учебная среда Agar.io (Agarle)-это исполнительная реализация популярной онлайн-многопользовательской игры Agar.io, а также интерфейс Openai Gym, подходящий для обучения подкреплению на Python.
Клонировать этот репозиторий (с подмодулями)
git clone --recursive https://github.com/jondeaton/AgarLE.git
Запустите прилагаемый сценарий установки
python setup.py install
Установка установит модуль Python gym_agario
, который при импорте регистрируется в спортзале Agarle. Вам нужен только импорт 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
})
С помощью этой конфигурации среда больше не будет соответствовать типичному интерфейсу Gym Gym следующим образом.
step()
ожидает список действий той же длины, что и количество агентов, которые определяют действие для каждого агента.
Возвращаемое значение step()
будет списком наблюдений, списка вознаграждений и списка донов, каждый из которых имеет длину, равную количеству агентов. У i
есть элементы каждого списка последовательно соответствуют i
на протяжении всего эпизода.
reset()
вернет список наблюдений за длиной, равной количеством агентов.
Когда агент «сделан», наблюдения за этим агентом не будут. Окружающая среда все еще может быть ступененью, в то время как есть хотя бы один агент, который не «сделан». Только когда все агенты сделаны, должна быть сброшена среда.
Обратите внимание, что если вы передаете num_agents
больше 1, multi_agent
будет установлена автоматически.
В настоящее время компиляция/установка работает только с Clang, поэтому, если вы находитесь на Linux, вам нужно установить компилятор C ++, чтобы задержать в вашей среде перед установкой.
CXX=`which clang++`
Единственная среда, которая была тщательно протестирована,-это agario-grid-v0
, хотя RAM Environment agario-ram-v0
и экрана среды agario-screen-v0
должны работать с некоторыми уговорами. agario-screen-v0
требует, чтобы менеджер Window работал, например, не будет работать на безголовых машинах 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
Это выведет исполняемый файл с именем client
в каталоге agario
agario/client # play the game
Если вы также построите цель agarle
, то будет создана динамическая библиотека с импортом питона (то есть *.so
file) с именем agarle
. Чтобы использовать его, скопируйте его в «Пакеты сайтов» для вашего интерпретатора Python, как SO:
cp environment/agarle* `python -m site --user-site`
Основные среды спортзала могут быть составлены таким образом, что вызов render()
приведет игру на экран. Эта функция отключается по умолчанию по причинам производительности и портативности, но может быть включена во время компиляции, используя следующую команду Cmake вместо той, которая показана выше.
cmake -DCMAKE_BUILD_TYPE=Release -DDEFINE_RENDERABLE=ON ..