สภาพแวดล้อมการเรียนรู้ agar.io (AGARLE) เป็นการดำเนินการตามการแสดงของเกมผู้เล่นหลายคนที่ได้รับความนิยม agar.io พร้อมกับอินเทอร์เฟซ OpenAI Gym ที่เหมาะสำหรับการเรียนรู้เสริมแรงใน Python
โคลนที่เก็บนี้ (พร้อม submodules)
git clone --recursive https://github.com/jondeaton/AgarLE.git
เรียกใช้สคริปต์การติดตั้งที่รวมอยู่ด้วย
python setup.py install
การติดตั้งจะได้ติดตั้งโมดูล Python 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 Gym ทั่วไปในรูปแบบต่อไปนี้อีกต่อไป
step()
จะคาดหวังรายการการกระทำที่มีความยาวเท่ากับจำนวนตัวแทนซึ่งระบุการกระทำสำหรับแต่ละเอเจนต์
ค่าส่งคืนของ step()
จะเป็นรายการของการสังเกตรายการของรางวัลและรายการของการบริจาคแต่ละครั้งมีความยาวเท่ากับจำนวนตัวแทน องค์ประกอบ i
'th ของแต่ละรายการสอดคล้องกับตัวแทน i
th อย่างสม่ำเสมอตลอดทั้งตอน
reset()
จะส่งคืนรายการการสังเกตความยาวเท่ากับจำนวนตัวแทน
เมื่อตัวแทน "เสร็จสิ้น" การสังเกตสำหรับตัวแทนนั้นจะไม่มี สภาพแวดล้อมอาจยังคงก้าวไปข้างหน้าในขณะที่มีตัวแทนอย่างน้อยหนึ่งคนที่ไม่ได้ "เสร็จสิ้น" เฉพาะเมื่อตัวแทนทั้งหมดเสร็จสิ้นสภาพแวดล้อมจะถูกรีเซ็ต
โปรดทราบว่าหากคุณผ่าน num_agents
มากกว่า 1 multi_agent
จะถูกตั้งค่าจริงโดยอัตโนมัติ
การรวบรวม/การติดตั้งในปัจจุบันใช้งานได้เฉพาะกับเสียงดังก้องดังนั้นหากคุณอยู่ใน Linux คุณจะต้องตั้งค่าคอมไพเลอร์ C ++ ของคุณให้เป็นสัญญาณในสภาพแวดล้อมของคุณก่อนที่จะติดตั้ง
CXX=`which clang++`
สภาพแวดล้อมเดียวที่ได้รับการทดสอบอย่างกว้างขวางคือ agario-grid-v0
แม้ว่าสภาพแวดล้อม RAM agario-ram-v0
และสภาพแวดล้อมหน้าจอ agario-screen-v0
ควรทำงานกับการเกลี้ยกล่อม agario-screen-v0
ต้องการให้ตัวจัดการหน้าต่างทำงานได้ดังนั้นจะไม่ทำงานบนเครื่องจักร Linux ที่ไม่มีหัว การโทรหา render
จะใช้ได้เฉพาะในกรณีที่การดำเนินการได้ถูกสร้างขึ้นโดยเปิดใช้งานการเปิดใช้งานตามที่สามารถทำได้โดยทำตามคู่มือการตั้งค่าขั้นสูง การเรนเดอร์จะไม่ทำงานกับสภาพแวดล้อม "หน้าจอ" แม้ว่าสภาพแวดล้อมนั้นจะใช้ภาพหน้าจอเป็นข้อสังเกตของสภาพแวดล้อม
ในการเล่นเกมด้วยตัวเองหรือเปิดใช้งานการแสดงผลในสภาพแวดล้อมโรงยิมคุณจะต้องสร้างลูกค้าเกมด้วยตัวคุณเองในระบบที่ติดตั้ง 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
ด้วยเช่นกันไลบรารีไดนามิก Python-Importable (เช่นไฟล์ *.so
) ชื่อ agarle
จะถูกผลิตขึ้น หากต้องการใช้ให้คัดลอกลงใน "แพ็คเกจไซต์" สำหรับล่าม Python ของคุณเช่น SO:
cp environment/agarle* `python -m site --user-site`
สภาพแวดล้อมโรงยิมพื้นฐานอาจถูกรวบรวมเพื่อให้การเรียกใช้ render()
จะทำให้เกมบนหน้าจอ คุณลักษณะนี้ถูกปิดโดยค่าเริ่มต้นสำหรับเหตุผลด้านประสิทธิภาพและการพกพา แต่สามารถเปิดได้ในระหว่างการรวบรวมโดยใช้คำสั่ง cmake ต่อไปนี้แทนที่แสดงด้านบน
cmake -DCMAKE_BUILD_TYPE=Release -DDEFINE_RENDERABLE=ON ..