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

ค้นพบบั๊กอายุ 55 ปีในเกม Lunar Lander เกมแรก

ประวัติของเกม

  • ในปี 1969 Jim Storer นักเรียนมัธยมปลายได้พัฒนาเกม Lunar Landing เกมแรก
  • ภายในปี 1973 เกมนี้ได้กลายเป็นเกมคอมพิวเตอร์ที่ได้รับความนิยมมากที่สุด
  • เกมเป็นแบบข้อความล้วน ผู้เล่นต้องบังคับยานลงจอดบนดวงจันทร์ ใช้เชื้อเพลิงไปพร้อมกับพยายามลงจอดให้สำเร็จ

กลยุทธ์การใช้เชื้อเพลิงที่เหมาะสมที่สุด

  • หากต้องการลงจอดโดยใช้เชื้อเพลิงให้น้อยที่สุด ต้องลงจอดให้เร็วที่สุดเท่าที่จะทำได้
  • ในช่วงแรกให้ปิดเครื่องยนต์และปล่อยให้ยานร่วงลงด้วยความเร็วสูงสุด จากนั้นในวินาทีสุดท้ายค่อยเร่งกำลังเต็มที่เพื่อเผาเชื้อเพลิงและลดความเร็วให้เป็น 0
  • กลยุทธ์นี้เรียกว่า "suicide burn" และจับจังหวะได้ยาก

การจำลองฟิสิกส์

  • แม้ Jim Storer จะยังเป็นนักเรียนมัธยมปลาย แต่เขาใช้การจำลองฟิสิกส์ที่ละเอียดมาก
  • เขาใช้สมการจรวดของ Tsiolkovsky และอาศัยอนุกรมเทย์เลอร์ของฟังก์ชันลอการิทึมเพื่อเพิ่มความแม่นยำ
  • พ่อของเขาเป็นนักฟิสิกส์ และช่วยในการอนุมานสมการ

ปัญหาขณะลงจอด

  • สมการจรวดทำงานได้ดีจนกระทั่งก่อนแตะพื้น
  • ความยากอยู่ที่การคำนวณการชนอย่างแม่นยำในจังหวะที่ยานแตะพื้นพอดี
  • ในโค้ดของ Jim มีสมการที่ผิดพลาด โดยมีรากที่สองอยู่ในตัวส่วน

การพบบั๊ก

  • ในโค้ดของ Jim มีเลข 2 ที่ควรอยู่ในตัวส่วนหายไป
  • ด้วยเหตุนี้ เวลาที่ใช้คำนวณจุดลงจอดจึงผิด และระบบรับรู้ว่ายานยังไม่ได้แตะพื้น
  • เมื่อแก้บั๊กนี้แล้ว ความเร็วขณะลงจอดดีขึ้นอย่างมาก

บทสรุป

  • สำหรับเกมที่สร้างโดยนักเรียนมัธยมปลายในปี 1969 นี่ถือเป็นผลงานที่น่าประทับใจมาก
  • บั๊กนี้แทบไม่มีใครค้นพบเลยตลอดเกือบ 55 ปี
  • ถึงอย่างนั้น เกมก็ยังสนุกและมีคนจำนวนมากชื่นชอบมัน

ความเห็นของ GN⁺

  • คุณค่าทางประวัติศาสตร์: เกมนี้มีคุณค่าในฐานะส่วนหนึ่งของประวัติศาสตร์เกมคอมพิวเตอร์ยุคแรก และสะท้อนข้อจำกัดทางเทคนิคในเวลานั้น
  • คุณค่าด้านการศึกษา: แม้จะเป็นเกมที่สร้างโดยนักเรียนมัธยมปลาย แต่ก็มีแนวคิดด้านฟิสิกส์และคณิตศาสตร์ที่ซับซ้อน จึงมีคุณค่าทางการศึกษาสูง
  • ความสำคัญของบั๊ก: เรื่องนี้ตอกย้ำว่าความผิดพลาดเล็ก ๆ ในโค้ดสามารถส่งผลกระทบใหญ่ได้ และชี้ให้เห็นความสำคัญของการพัฒนาซอฟต์แวร์
  • การเปรียบเทียบกับเกมสมัยใหม่: เมื่อเทียบกับเกมสมัยใหม่ เรื่องนี้ช่วยให้เข้าใจทั้งข้อจำกัดทางเทคนิคและความคิดสร้างสรรค์ของยุคนั้นได้ดีขึ้น
  • ความก้าวหน้าทางเทคโนโลยี: เกมนี้เปิดโอกาสให้เปรียบเทียบพัฒนาการทางเทคโนโลยีในอดีตกับปัจจุบัน และสำรวจความเป็นไปได้ในอนาคต

1 ความคิดเห็น

 
GN⁺ 2024-06-15
ความคิดเห็นจาก Hacker News
  • พบว่า Jim Storer เป็นผู้เขียนเกม Lunar Lander เกมแรก และได้ทำการสัมภาษณ์เขา จากนั้นก็ได้รับซอร์สโค้ดมา ซึ่งน่าสนใจมาก
  • Storer ลืมเกมนี้ไปแล้วหลังเรียนจบมัธยมปลาย เพิ่งมารู้เมื่อไม่กี่เดือนก่อนหลังได้รับอีเมล ว่ายังมีเกม Lunar Lander อื่นนอกเหนือจากเกมที่เขาสร้างด้วย
  • น่าประทับใจที่นี่เป็นเกมซึ่งสร้างโดยนักเรียนมัธยมปลายในปี 1969 ดูเหมือนว่าจะส่งอิทธิพลอย่างมากต่อผู้คนที่เติบโตมาในยุคอวกาศและสนใจเทคโนโลยี
  • ในการสัมภาษณ์มีการกล่าวว่า Storer เชี่ยวชาญแคลคูลัส หากสนใจอวกาศและจรวด การเขียนโปรแกรมเกม Lunar Lander ก็ดูเป็นเรื่องธรรมชาติ
  • เคยเขียนเกม Moon Lander แบบกราฟิกเวกเตอร์ 2D ในช่วงกลางทศวรรษ 1970 ถ้าเชื้อเพลิงหมดหรือเร็วเกินไปก็จะชน ไม่เช่นนั้นจะเห็นธงชาติสหรัฐฯ
  • รู้สึกเสียดายที่ทิ้งซอร์สโค้ดไป มันเป็นเกมกราฟิกยุคแรกที่มีคุณค่าทางประวัติศาสตร์ และน่าจะนำกลับมารันได้ด้วยอีมูเลชันแบบง่าย
  • ภายในปี 1973 Lunar Lander กลายเป็นเกมคอมพิวเตอร์ที่ได้รับความนิยมมากที่สุด เคยลองทำเกมนี้จากหนังสือสอนเขียนโปรแกรมเล่มแรก แต่ไม่สำเร็จเพราะบั๊กมากมายและตรรกะที่ซับซ้อน
  • มีการเสนอแผนการลงจอดแบบประหยัดเชื้อเพลิง โดยอธิบายวิธีใช้แรงขับต่ำในช่วงเวลาหนึ่งเพื่อให้ลงจอดอย่างนุ่มนวล
  • เคยเล่นเกมนี้ครั้งแรกบนเครื่องคิดเลข HP-25 ในปี 1976 โดยใช้สูตรเดียวกัน
  • ในช่วงทศวรรษ 1960 เคยเล่น Spacewar บน PDP-1 แต่ยังไม่มีเกม Lunar Lander Storer คือคนแรก
  • มีการเสนอวิธีคำนวณมวลและความเร่งใหม่ทุกเฟรมโดยไม่ใช้สูตรพิเศษ ซึ่งอาจแม่นยำน้อยลงเมื่ออัตราเฟรมต่ำ
  • เคยเล่นเวอร์ชันที่พอร์ตไปยัง Wang 2200 BASIC ในช่วงกลางทศวรรษ 1970 และได้เรียนรู้เทคนิคการใช้แรงขับสูงสุด
  • ยังคงเก็บเทปเจาะรูสำหรับ PDP11 ไว้อยู่ แต่ไม่รู้จะมอบให้ใคร