commandcenter هو روبوت StarCraft AI يمكنه تشغيل كل من StarCraft: Broodwar وStarCraft 2.
تمت كتابة commandcenter بلغة C++ باستخدام BWAPI وBlizzard's StarCraft II AI API. يوفر العديد من وظائف التغليف حول كلا واجهات برمجة التطبيقات التي تسمح له بأداء نفس الوظيفة في كلتا اللعبتين عبر نفس كود المصدر. كتبه ديفيد تشرشل، الأستاذ المساعد لعلوم الكمبيوتر في جامعة ميموريال، ومنظم مسابقة AIIDE StarCraft AI.
يعتمد commandcenter على بنية UAlbertaBot، ويهدف إلى أن يكون بنية سهلة الاستخدام لتتمكن من تعديل الروبوت الخاص بك واللعب به وبناءه بسرعة. لا يحتوي الروبوت نفسه على الكثير من الاستراتيجيات أو التكتيكات المضمنة، ولكنه يوفر نقطة انطلاق جيدة لك لتنفيذ استراتيجياتك الخاصة لأي سباق.
يوفر commandcenter حاليا الميزات التالية:
يجب أن يتمتع commandcenter في النهاية بجميع وظائف UAlbertaBot، إلا أن الكثير من ميزاته لم تكتمل حاليًا. فيما يلي قائمة محدثة بالميزات المفقودة حاليًا من commandcenter والتي سيتم تنفيذها قريبًا:
StarCraft BW: يجب أن يكون لديك الإصدار 1.16.1 من StarCraft: Broodwar مثبتًا، بالإضافة إلى BWAPI.
StarCraft 2: يجب أن يكون لديك إصدار تجزئة محدث من StarCraft II مثبتًا لتشغيل الروبوت. يجب عليك أيضًا تنزيل وتثبيت بعض الخرائط لاستخدامها مع الروبوت، والتي يمكنك العثور عليها هنا: https://github.com/Blizzard/s2client-proto#downloads. يرجى ملاحظة أن هناك كلمة مرور متوفرة في تلك الصفحة لاستخراج الخرائط من الملفات المضغوطة.
يأتي الروبوت مزودًا بملف تكوين يسمى BotConfig.txt حيث يمكنك تعديل أوامر البناء وطباعة معلومات تصحيح الأخطاء المختلفة على الشاشة وتعيين بعض معلمات الروبوت. يمكنك تحديد أوامر إنشاءات متعددة في قسم "الاستراتيجيات" بالملف، واختيار الإستراتيجية المسماة التي سيتم تنفيذها عندما يلعب الروبوت سباقًا محددًا. أسماء الوحدات في أمر البناء حساسة لحالة الأحرف، ويجب أن تكون مطابقة تمامًا لما تظهر عليه في اللعبة بدون مسافات. بعض الخيارات الموجودة في ملف التكوين غير مطبقة حاليًا، مثل خيار KiteWithRangedUnits.
يرجى ملاحظة أن ملف التكوين هذا بتنسيق JSON، ولن يعمل الروبوت إلا إذا كان بتنسيق JSON جيدًا. يجب أن يكون ملف التكوين في نفس الدليل مثل commandcenter .exe حتى يعمل الروبوت بشكل صحيح. إذا ارتكبت خطأً في بناء جملة JSON ولم تتمكن من العثور عليه بنفسك، فيمكنك استخدام JSON Validator عبر الإنترنت للتحقق منك.
افتراضيًا، عند تشغيل commandcenter .exe، سيتم تشغيله كسباق عشوائي مقابل سباق عشوائي مدمج في SC2 Easy AI. يمكنك تعديل السباقات التي سيتم لعبها في ملف التكوين عبر خيارات "BotRace" و"EnemyRace". يمكنك أيضًا تعديل الخريطة التي سيتم تشغيلها عن طريق تحديد خيار "MapFile". يرجى ملاحظة أن خيار MapFile مرتبط بدليل خرائط StarCraft II الخاص بك، والذي يقع افتراضيًا في StarCraft_Install_Directory/maps/، ولن يعمل الروبوت دون تحديد ملف خريطة صالح.
إذا تعطل الروبوت أو قام بأشياء سيئة أخرى، فيرجى التحمل بينما أجعله أكثر استقرارًا :)
من خلال هذه الخطوات، من المفترض أن تكون قادرًا على إنشاء واجهة برمجة تطبيقات SC2 وتثبيتها وإدراجها في commandcenter . لقد تم اختباره بنجاح لـ aba2d3813571c344090f3de5b58a5c912cd5acb3، لذلك إذا لم تنجح تعليمات التثبيت أدناه، فاطلع على هذا الإصدار من SC2 API
$ git checkout aba2d3813571c344090f3de5b58a5c912cd5acb3 .
وكرر التعليمات.
$ git clone --recursive https://github.com/Blizzard/s2client-api && cd s2client-api
$ mkdir build && cd build
$ cmake ../
$ make
# Assuming that you are located in the 'build' directory
# after you finished the previous step
$ cd ../
# Install SC2 API headers
$ sudo mkdir -p /opt/local/include
$ sudo cp -R include/{sc2api,sc2renderer,sc2utils} /opt/local/include
$ sudo cp -R build/generated/s2clientprotocol /opt/local/include
# Install protobuf headers
$ sudo cp -R contrib/protobuf/src/google /opt/local/include/sc2api
# Install SC2 API libraries
$ sudo mkdir -p /opt/local/lib/sc2api
$ sudo cp build/bin/{libcivetweb,libprotobuf,libsc2api,libsc2lib,libsc2protocol,libsc2utils}.a /opt/local/lib/sc2api
$ git clone https://github.com/davechurchill/commandcenter.git && cd commandcenter
$ cmake .
$ make
إذا كنت معتادًا على بنية UAlbertaBot، فإن منطق commandcenter مشابه تمامًا. يتمثل الاختلاف الأكبر في أن المعلومات المتعلقة بالخريطة والموقع الأساسي وما إلى ذلك لم تعد متاحة عالميًا. توجد هذه البيانات الآن داخل فئة CCBot الرئيسية، ويجب الوصول إليها عبر مرجع إلى مثيل تلك الفئة. ولهذا السبب، تحمل معظم الفئات الموجودة في commandcenter إشارة إلى كائن CCBot الرئيسي للروبوت، والذي يمكن من خلاله إنشاء جميع المعلومات والملاحظات والاستعلامات المتعلقة باللعبة.
سيتم إصدار دليل تطوير متعمق قريبًا، ولكن يرجى الرجوع إلى UAlbertaBot wiki في الوقت الحالي نظرًا لأن البنية متشابهة جدًا (باستثناء مخطط أمر البناء ومحاكي القتال).