Agar.io Learning Environment (Agarle) هي تنفيذ أداء للألعاب المتعددة اللاعبين الشهيرة عبر الإنترنت Agar.io إلى جانب واجهة Openai Gym مناسبة للتعلم التعزيز في Python.
استنساخ هذا المستودع (مع العارض الفرعي)
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 ومساحة المراقبة قابلة للتكوين بشكل كبير. يمكنك تغيير معلمات خواص اللعبة وخصائص المراقبة مثل (التكوين الافتراضي الموضح).
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()
قائمة بالملاحظات ، وقائمة المكافآت ، وقائمة كل من Dones بطول يساوي عدد الوكلاء. تتوافق العناصر i
بكل قوائم مع وكيل i
th باستمرار خلال الحلقة.
ستعيد reset()
قائمة ملاحظات الطول مساوية لعدد الوكلاء.
عندما يتم "الانتهاء من الوكيل" ، لن تكون الملاحظات لهذا الوكيل. قد لا تزال البيئة تخطو بينما يوجد وكيل واحد على الأقل لم يتم "القيام به". فقط عندما يتم الانتهاء من جميع الوكلاء ، يجب إعادة تعيين البيئة.
لاحظ أنه إذا قمت بتمرير num_agents
أكبر من 1 ، فسيتم تعيين multi_agent
صحيحًا تلقائيًا.
يعمل التجميع/التثبيت حاليًا فقط مع Clang ، لذلك إذا كنت على Linux ، فستحتاج إلى تعيين برنامج التحويل البرمجي C ++ الخاص بك على Clang في بيئتك قبل التثبيت.
CXX=`which clang++`
البيئة الوحيدة التي تم اختبارها على نطاق واسع هي agario-grid-v0
، على الرغم من أن بيئة RAM agario-ram-v0
وبيئة الشاشة يجب أن تعمل agario-screen-v0
مع بعض الإقناع. يتطلب agario-screen-v0
مدير نافذة للعمل ، لذا لن يعمل على آلات Linux مقطوعة الرأس ، على سبيل المثال. لن يعمل Calling 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
، فسيتم إنتاج مكتبة ديناميكية للبيثون (IE *.so
) المسمى agarle
. لاستخدامه ، نسخه إلى "حزم الموقع" لمترجم بيثون مثل ذلك:
cp environment/agarle* `python -m site --user-site`
قد يتم تجميع بيئات الصالة الرياضية الأساسية بحيث ستجعل Calling render()
اللعبة على الشاشة. يتم إيقاف هذه الميزة افتراضيًا لأسباب الأداء وقابلية النقل ، ولكن يمكن تشغيلها أثناء التجميع باستخدام أمر CMAKE التالي بدلاً من العرض الموضح أعلاه.
cmake -DCMAKE_BUILD_TYPE=Release -DDEFINE_RENDERABLE=ON ..