AoE เขียนด้วยแอสเซมบลีหรือไม่? - เรื่องนี้จริงไหม?!
- การเขียนโค้ดแอสเซมบลีใน AoE และ AoK: มีการเขียนโค้ดแอสเซมบลี x86 32 บิตประมาณ 13,000 บรรทัด โดยส่วนใหญ่ราว 11,500 บรรทัดเป็นส่วนของ "แกนการวาด" ที่ใช้วาดสไปรต์ SLP ในรูปแบบต่างๆ
- การคอมไพล์โค้ดแอสเซมบลี: ใช้ Microsoft Macro Assembler 6.1 เพื่อ "คอมไพล์" ไฟล์ .asm ให้เป็นไฟล์ .obj
- อินไลน์แอสเซมบลีภายในโค้ด C++: คอมไพเลอร์รองรับ "อินไลน์แอสเซมบลี" ทำให้สามารถเพิ่มบล็อกโค้ดแอสเซมบลีภายในฟังก์ชันได้ด้วยคีย์เวิร์ด __asm { }
- การเพิ่มประสิทธิภาพของแกนการวาด: แกนการวาดที่ใช้แอสเซมบลีให้ความเร็วในการวาดสไปรต์มากกว่าชุดอ้างอิง C++ ประมาณ 10 เท่า
- การออกแบบทางเทคนิคของโค้ดแอสเซมบลี: ออกแบบโดยคำนึงถึงสถาปัตยกรรมแคชและ UV pipe เพื่อใช้ประโยชน์จากคุณลักษณะของโปรเซสเซอร์ Pentium
- โค้ดแอสเซมบลีใน AoK:HD Edition: ใน AoK:HD Edition (เกม 32 บิต) ก็ยังมีการใช้โค้ดแอสเซมบลีอยู่
- การเขียนใหม่เป็น C++ ใน Definitive Editions: ใน Definitive Editions ซึ่งเป็นโปรแกรม 64 บิต ได้มีการเขียนฟังก์ชันแอสเซมบลีใหม่เป็น C++
ชุมชนและทรัพยากรของ AoE
- ไลฟ์สตรีม: รายการไลฟ์สตรีมเกี่ยวกับ AoE ที่ถ่ายทอดบน Twitch และ Facebook ในหลากหลายภาษา
- การเล่นออนไลน์: สามารถเล่นเกมได้หลายเวอร์ชันรวมถึง AoE2 Definitive Edition ผ่าน Steam และ Microsoft Store
- แพตช์ปัจจุบัน: มีข้อมูลแพตช์ที่อัปเดตเมื่อวันที่ 26 กรกฎาคม 2023
- ทัวร์นาเมนต์และอีเวนต์: มีข้อมูลการแข่งขันผ่าน AoEZone, AoE2 Liquipedia และปฏิทินอีเวนต์
- เว็บไซต์ชุมชน: มีลิงก์ไปยังเว็บไซต์ชุมชนหลายแห่ง เช่น หน้าอย่างเป็นทางการของ Age of Empires, ฟอรัม, Discord และ AoK Heaven
- สถิติยูนิตและสิ่งปลูกสร้าง: มีลิงก์ไปยังวิกิและแหล่งข้อมูลที่ให้ข้อมูลเกี่ยวกับยูนิต ตัวแก้ทาง การแก้บั๊ก เคล็ดลับการเล่น และข้อมูลแพตช์
- ช่อง YouTube: รายชื่อช่องทางการและ YouTubers ชื่อดังของ AoE2
ความเห็นของ GN⁺
- ความสำคัญของโค้ดแอสเซมบลี: ใน Age of Empires ซีรีส์ช่วงแรก โค้ดแอสเซมบลีมีผลอย่างมากต่อประสิทธิภาพของเกม โดยเฉพาะด้านการประมวลผลกราฟิก ซึ่งสามารถทำการปรับแต่งประสิทธิภาพได้ในระดับที่ภาษาระดับสูงสมัยใหม่ทำได้ยาก
- ผลกระทบของความก้าวหน้าทางเทคโนโลยี: เมื่อเวลาผ่านไป การพัฒนาของคอมไพเลอร์ 64 บิตและการมาของการประมวลผลแบบมัลติคอร์ ทำให้ความจำเป็นในการใช้โค้ดแอสเซมบลีลดลง สิ่งนี้แสดงให้เห็นว่าพัฒนาการของภาษาโปรแกรมและฮาร์ดแวร์ส่งผลต่อการพัฒนาซอฟต์แวร์อย่างไร
- บทบาทของชุมชน: ชุมชน AoE มีบทบาทสำคัญต่อความนิยมและการพัฒนาอย่างต่อเนื่องของเกม โดยเป็นพื้นที่ให้แฟนๆ ได้แบ่งปันความหลงใหลและแลกเปลี่ยนความรู้ผ่านทรัพยากรและการพูดคุยที่หลากหลาย
1 ความคิดเห็น
ความเห็นจาก Hacker News
ผู้ใช้ Hacker News คนหนึ่งแชร์ประสบการณ์การพอร์ตเกมของ Konami จาก PSX มายัง PC ในช่วงปี 1999-2000 โดยระบุว่าโค้ดที่เขียนด้วยภาษา C มี
#ifdefจำนวนมากที่แทรก inline assembly ไว้ และยังคงเก็บโค้ด C ต้นฉบับเอาไว้ ซึ่งโค้ด C ต้นฉบับนี้ช่วยงานพอร์ตได้มาก นอกจากนี้ยังกล่าวถึงประสบการณ์ทำซอฟต์แวร์สำหรับโปรเซสเซอร์ Intel Katmai โดยใช้คำสั่ง SIMD และการทำ optimization ด้วย assembly ซึ่ง Intel VTune ช่วยได้มากในกระบวนการนี้ อย่างไรก็ตาม เขาย้อนความว่าบางครั้งโค้ดที่เขียนด้วย assembly กลับช้ากว่าโค้ดที่คอมไพเลอร์สร้างขึ้นผู้ใช้อีกรายกล่าวถึง NAC5 ซึ่งเป็นทัวร์นาเมนต์ขนาดใหญ่ของเกม 'Age of Empires 2' (AoE2) ที่กำลังจัดขึ้นในเบอร์ลิน พร้อมแชร์ลิงก์ที่เกี่ยวข้อง
มีการอ้างถึงบทสัมภาษณ์ของนักพัฒนารายหนึ่ง โดยแสดงความเห็นว่าถ้ารู้อยู่แล้วว่าเกมต้องต้องมีแพตช์ก่อนวางขาย ก็ไม่ควรปล่อยเกมออกมา
มีการกล่าวถึงข้อเท็จจริงที่ว่า หนึ่งในเทคนิคเร่งความเร็วของ 'Age of Empires' ถูกพูดคุยกันระหว่างมื้อกลางวันกับ Michael Abrash โปรแกรมเมอร์ของ id Software และผู้เชี่ยวชาญด้าน optimization พร้อมแสดงความเสียดายต่อปฏิสัมพันธ์แบบเป็นธรรมชาติที่สูญหายไปเพราะอินเทอร์เน็ต
มีการแชร์ข้อเท็จจริงที่น่าทึ่งว่า ในกรณีของกราฟิกคอร์ที่ใช้ assembly นั้น สามารถวาดสไปรต์ได้เร็วกว่า C++ ประมาณ 10 เท่า
มีความเห็นว่า Michael Abrash ดูเหมือนจะปรากฏตัวอยู่ทุกที่ที่มีนวัตกรรมด้านกราฟิกเกิดขึ้น
ผู้ใช้คนหนึ่งบอกว่านี่อาจเป็นโอกาสให้เข้าใจได้ว่าทำไม 'Age of Empires 2: Definitive Edition' จึงมีประสิทธิภาพไม่ดีบน Wine
มีการระบุว่า 'Age of Empires 2: Definitive Edition' แม้จะไม่ใช่ตัวเกมโค้ดเองโดยตรง แต่ไฟล์ executable ยังคงมี handwritten assembly ที่ใช้คลายแพ็กโค้ดเกมระหว่างรันไทม์อยู่ ส่งผลให้โค้ดทั้งหมดคงอยู่ในสถานะที่อ่าน เขียน และรันได้ (RWX) ซึ่งถูกชี้ว่าเปราะบางด้านความปลอดภัยอย่างมาก
ผู้ใช้ที่กำลังอ่านประวัติของ Borland คนหนึ่งกล่าวว่า คอมไพเลอร์ Turbo Pascal ถูกเขียนขึ้นด้วย assembly เป็นส่วนใหญ่ และยังถูกใช้ต่อใน Delphi 1.0 อีกด้วย แต่เพราะไม่มีใครใน Borland สามารถแก้ไขโค้ดครั้งใหญ่ได้ สุดท้ายจึงต้องเขียนโค้ดใหม่สำหรับ Delphi 2.0 เขายังบอกด้วยว่าคิดว่าโปรแกรมเมอร์ที่เขียนซอฟต์แวร์สำหรับ CPU ที่ซับซ้อนด้วยภาษา assembly นั้นมีลักษณะเฉพาะตัว