2 คะแนน โดย GN⁺ 2024-01-08 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

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 ความคิดเห็น

 
GN⁺ 2024-01-08
ความเห็นจาก 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 นั้นมีลักษณะเฉพาะตัว