commandcenter เป็นบอท StarCraft AI ที่สามารถเล่นได้ทั้ง StarCraft: Broodwar และ StarCraft 2
commandcenter เขียนด้วยภาษา C ++ โดยใช้ BWAPI และ StarCraft II AI API ของ Blizzard มีฟังก์ชัน Wrapper มากมายสำหรับ API ทั้งสองที่ช่วยให้สามารถทำงานได้เหมือนกันในทั้งสองเกมผ่านซอร์สโค้ดเดียวกัน เขียนโดย David Churchill ผู้ช่วยศาสตราจารย์ด้านวิทยาการคอมพิวเตอร์ที่ Memorial University และผู้จัดงาน AIIDE StarCraft AI Competition
commandcenter ขึ้นอยู่กับสถาปัตยกรรมของ UAlbertaBot และตั้งใจให้เป็นสถาปัตยกรรมที่ใช้งานง่ายเพื่อให้คุณแก้ไข เล่น และสร้างบอทของคุณเองได้อย่างรวดเร็ว ตัวบอทเองไม่ได้มีกลยุทธ์แบบฮาร์ดโค้ดมากนัก แต่ก็เป็นจุดเริ่มต้นที่ดีสำหรับคุณในการนำกลยุทธ์ของคุณเองไปใช้ในทุกเชื้อชาติ
ปัจจุบัน commandcenter มีคุณสมบัติดังต่อไปนี้:
commandcenter ควรมีฟังก์ชันการทำงานของ UAlbertaBot ทั้งหมดในที่สุด อย่างไรก็ตาม คุณลักษณะส่วนใหญ่ยังไม่เสร็จสมบูรณ์ในขณะนี้ นี่คือรายการคุณลักษณะล่าสุดที่ขาดหายไปจาก commandcenter ที่จะนำมาใช้เร็วๆ นี้:
StarCraft BW: คุณต้องติดตั้ง StarCraft: Broodwar เวอร์ชัน 1.16.1 รวมถึง BWAPI ด้วย
StarCraft 2: คุณต้องติดตั้ง StarCraft II เวอร์ชันขายปลีกที่ทันสมัยเพื่อรันบอท คุณต้องดาวน์โหลดและติดตั้งแผนที่บางส่วนเพื่อใช้กับบอท ซึ่งคุณสามารถพบได้ที่นี่: https://github.com/Blizzard/s2client-proto#downloads โปรดทราบว่าในหน้านั้นจะมีรหัสผ่านให้ไว้เพื่อแยกแผนที่ออกจากไฟล์ zip
บอทมาพร้อมกับไฟล์การกำหนดค่าชื่อ BotConfig.txt ซึ่งคุณสามารถแก้ไขคำสั่งบิลด์ พิมพ์ข้อมูลการดีบักต่างๆ ลงบนหน้าจอ และตั้งค่าพารามิเตอร์บอทบางตัวได้ คุณสามารถกำหนดคำสั่งบิลด์หลายรายการได้ในส่วน 'กลยุทธ์' ของไฟล์ และเลือกกลยุทธ์ที่กำหนดชื่อที่จะใช้เมื่อบอทเล่นการแข่งขันที่เฉพาะเจาะจง ชื่อยูนิตในลำดับการสร้างจะต้องตรงตามตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ และจะต้องตรงตามลักษณะที่ปรากฏในเกมโดยไม่มีช่องว่าง ตัวเลือกบางอย่างในไฟล์การกำหนดค่ายังไม่ได้ถูกนำมาใช้ เช่น ตัวเลือก KiteWithRangedUnits
โปรดทราบว่าไฟล์กำหนดค่านี้อยู่ในรูปแบบ JSON และบอทจะไม่ทำงานเว้นแต่จะมีรูปแบบ JSON ที่ดี ไฟล์การกำหนดค่าจะต้องอยู่ในไดเร็กทอรีเดียวกันกับ commandcenter .exe เพื่อให้บอททำงานได้อย่างถูกต้อง หากคุณสร้างข้อผิดพลาดในไวยากรณ์ JSON และไม่พบข้อผิดพลาดดังกล่าวด้วยตนเอง คุณสามารถใช้เครื่องมือตรวจสอบ JSON ออนไลน์เพื่อตรวจสอบคุณได้
ตามค่าเริ่มต้น เมื่อคุณเรียกใช้ commandcenter .exe มันจะเล่นเป็นการแข่งแบบสุ่มเทียบกับการแข่งสุ่มในตัว SC2 Easy AI คุณสามารถแก้ไขการแข่งขันที่จะเล่นในไฟล์กำหนดค่าได้ผ่านตัวเลือก "BotRace" และ "EnemyRace" คุณยังสามารถแก้ไขแผนที่ที่จะเล่นได้โดยระบุตัวเลือก "MapFile" โปรดทราบว่าตัวเลือก MapFile จะสัมพันธ์กับไดเร็กทอรีแผนที่ StarCraft II ของคุณ ซึ่งโดยค่าเริ่มต้นจะอยู่ใน StarCraft_Install_Directory/maps/ ของคุณ และบอทจะไม่ทำงานโดยไม่ระบุไฟล์แผนที่ที่ถูกต้อง
หากบอทขัดข้องหรือทำสิ่งที่น่ารังเกียจอื่น ๆ โปรดอดทนกับฉันในขณะที่ฉันทำให้มันมีเสถียรภาพมากขึ้น :)
ด้วยขั้นตอนเหล่านี้ คุณควรจะสามารถสร้างและติดตั้ง SC2 API และรวมไว้ใน 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 ในตอนนี้ เนื่องจากสถาปัตยกรรมคล้ายกันมาก (ลบตัววางแผนลำดับการสร้างและตัวจำลองการต่อสู้)