อายุของสงคราม-AI
Age of War AI ซึ่งเป็นโครงการที่ฉันใช้เวลาเป็นจำนวนมากที่กลายเป็นรหัสสปาเก็ตี้ขนาดใหญ่ มันเป็นโครงการใหญ่ครั้งแรกของฉันและมันแสดงให้ฉันเห็นว่าฉันต้องเรียนรู้มากแค่ไหนเพราะฉันขาด (และฉันยังคงทำมากที่สุด) ในทุกสาขา ในบริบทของโครงการนี้ฉันทำสิ่งต่อไปนี้:
วิธีการไม่ทำโครงการ
- รับเกม Vanilla Age of War สร้างโมดูลที่แยกข้อมูลผ่านห้องสมุด OpenCV เมื่อเกมดำเนินต่อไปและป้อนเข้าสู่อัลกอริทึมที่เรียบร้อย สิ่งที่ฉันไม่ได้ตระหนักคือการประเมินตัวแทน 30 ถึง 50 คนในเกมที่ไม่ได้เร่งความเร็วและเวลาเล่นเฉลี่ย 10 นาทีต่อเซสชันใช้เวลามากในการฝึกอบรมและไม่ได้ผลลัพธ์ที่สำคัญ
- รับเครื่องยนต์โกงตระหนักว่ามันไม่ได้ผลกับเกมนี้โดยเฉพาะสำหรับผู้ที่รู้ว่าเหตุผลอะไรจากนั้นหา decompiler สำหรับเกมแฟลชและฉีดสคริปต์ลงในเกมที่วางไข่ไฟล์ข้อความเพื่อหลีกเลี่ยงสิ่งที่ OpenCV ทั้งหมดเพื่อรับค่านิยม มีผลลัพธ์ที่ดีกว่าเล็กน้อยเนื่องจากฉันพยายามเร่งความเร็วให้กับเกม X2 ด้วยเครื่องยนต์โกง แต่ก็ยังขาดไปมาก
- รับความสามัคคีต่อไป เนื่องจากฉันได้พบวิธีการเข้าสู่รหัสเกมแล้วฉันก็กลับระบบกลไกด้านไอทีทั้งหมดและทำการจำลองที่น่าเชื่อถือในความสามัคคีซึ่งมีพารามิเตอร์เดียวกันกับเกมต้นฉบับ
- จำลองสภาพแวดล้อม 50 แห่งในความเป็นเอกภาพด้วยความเร็ว 10x และทำให้พวกเขาสื่อสารผ่าน TCP ด้วยสคริปต์ Python ของฉันซึ่งตอนนี้มีผู้จัดการที่เรียบร้อยสำหรับทุกสภาพแวดล้อมและการกระทำของพวกเขา ที่นี่จริง ๆ แล้วฉันเริ่มเห็นผลลัพธ์ที่สำคัญและกลยุทธ์การพัฒนาและการจัดการเพื่อชนะในโหมดปกติใช่ แต่ฉันต้องการโม
- เปลี่ยนตัวแทน Unity ML อย่างสมบูรณ์โดยการละทิ้งสคริปต์ Python, Train และ Agent ด้วย PPO และรับมันหลังจากเปลี่ยนพารามิเตอร์และฟังก์ชั่นของมันทำให้มันมีกลยุทธ์ที่ค่อนข้างดีที่ชนะเกมในโหมดยาก
- ทดสอบในเกมต้นฉบับและบันทึกการชนะและตระหนักว่าคุณแพ้ 2 เดือนในโครงการที่อาจเสร็จสิ้นภายใน 3 สัปดาห์
- ยังคงสร้างไลบรารีการสร้างภาพข้อมูลให้เรียบร้อยโดยใช้เครื่องยนต์คณิตศาสตร์ Manim เพราะฉันพบวิดีโอ YouTube ที่ยอดเยี่ยมในหัวข้อที่ไม่ได้เผยแพร่ที่เก็บของพวกเขา
คุณสามารถดูภาพรวมของความเจ็บปวดนี้ได้ที่นี่ - ฉันจะกลับมา 100% สำหรับช่องนี้เพื่อให้ได้อย่างน้อย 1 เมตร แต่ตอนนี้ฉันมีเป้าหมายอื่น ๆ ที่จะติดตาม
ทำงานบน Python 3.7.9
อินพุต:
- จำนวนกองทหารในการฝึกอบรม (1 อินพุต)
- ศัตรู HP - เปอร์เซ็นต์ของสุขภาพทั้งหมด (1 อินพุต)
- HP ของฉัน - เปอร์เซ็นต์ของสุขภาพทั้งหมด (1 อินพุต)
- เงิน - ปกติโดยค่าใช้จ่ายหน่วยพื้นฐาน (MONEY/COST_OF_BASIC_UNIT) (1 อินพุต)
- XP - สามารถอัพเกรดอายุหรือไม่ (1 อินพุต)
- สามารถเปิดใช้งานความสามารถ - 0 ถึง 1 คูลดาวน์ (1 อินพุต)
- กองกำลังของฉันบนพื้นดินประเภท 1, 2, 3, 4 (4 อินพุต)
- กองกำลังศัตรูบนพื้นดินประเภท 1, 2, 3, 4 (4 อินพุต)
- จำนวนสล็อตปืนใหญ่ที่มีอยู่ (1 อินพุต)
- อายุของผู้เล่น - หนึ่งที่เข้ารหัสร้อน (5 อินพุต)
- อายุศัตรู - หนึ่งที่เข้ารหัสร้อน (5 อินพุต)
- อาร์เรย์ที่มีป้อมปราการและป้อมปืนอายุ (สูงสุด 4) (1 อินพุตสำหรับประเภทเนื่องจากพวกเขาแข็งแกร่งขึ้นและ 1 อินพุตสำหรับการเสื่อมราคาอายุ) (2 สำหรับแต่ละสล็อต) (8 อินพุต)
- การต่อสู้ในปัจจุบันเกิดขึ้นที่ไหน (0-1 ฐานของคุณไปยังฐานศัตรู) (1 อินพุต)
เอาต์พุต:
- สร้างกองทหารระดับ 1, 2, 3 (3 การกระทำ)
- สร้างกองทหารระดับ 4 สำหรับอายุอวกาศ (1 แอ็คชั่น)
- ซื้อสล็อตปืนใหญ่ (1 การกระทำ)
- ซื้อ Cannon Tier 1, 2, 3, ช่องว่างแรก (3 การกระทำ)
- ขายปืนใหญ่ในช่องบางช่อง (4 การกระทำ)
- รอ (1 การกระทำ)
- ใช้ความสามารถ
การพึ่งพา:
- นม
- พาย OCR
- Open-CV
- คนขี้เกียจ
- ประณีต
pip install numpy paddlepaddle paddleocr opencv-python scipy neat-python
สินทรัพย์ทำงานเฉพาะสำหรับความละเอียดที่เฉพาะ
คุณสามารถดาวน์โหลดไฟล์เก็บถาวรที่ฉันใช้สำหรับเกมได้จากที่นี่