เกม text adventure ที่เพิ่งเปิดตัวซึ่งใช้เวลา 40 ปีในการพัฒนาให้เสร็จสมบูรณ์ ได้จุดประกายการสนทนาที่น่าสนใจในหมู่นักพัฒนาเกี่ยวกับบั๊กในการเขียนโปรแกรมที่แปลกประหลาดซึ่งเคยรบกวนเกม interactive fiction ในยุคแรกๆ ชุมชนนักพัฒนาได้แบ่งปันเรื่องราวที่น่าจดจำเกี่ยวกับความผิดพลาดในการเขียนโค้ดที่สร้างสถานการณ์ตลกขบขันโดยไม่ได้ตั้งใจหรือทำลายเกม
บริบททางประวัติศาสตร์:
- ยุคสมัย: คอมพิวเตอร์ส่วนบุคคลในทศวรรษ 1980
- แพลตฟอร์มที่นิยม: Atari 800 , Commodore 64 , IBM Jr
- ข้อจำกัดของหน่วยความจำ: RAM 64K เป็นมาตรฐาน
- การจัดเก็บข้อมูล: แผ่นฟลอปปี้ดิสก์ที่มีความจุจำกัด
- ภาษาโปรแกรม: BASIC ต่อมาใช้ Inform สำหรับเกมผจญภัยแบบข้อความ
ปัญหาคลาสสิกของการใส่กระเป๋าในกระเป๋า
บั๊กที่พบบ่อยที่สุดอย่างหนึ่งเกี่ยวข้องกับตรรกะของ container ที่ทำงานผิดพลาด นักพัฒนามักพบปัญหาเมื่อผู้เล่นพยายามใส่วัตถุเข้าไปในตัวมันเองหรือสร้างลูปการบรรจุที่เป็นไปไม่ได้ โปรแกรมเมอร์คนหนึ่งเล่าว่าเมื่อพิมพ์ put bag in bag แล้วเห็นกระเป๋าหายไปจากโลกของเกมอย่างสิ้นเชิง สิ่งนี้เกิดขึ้นเพราะตรรกะของเกมจะย้ายกระเป๋าเข้าไปในตัวมันเอง ทำให้เกิดการอ้างอิงที่ทำลายระบบติดตามวัตถุ
Container logic: กฎการเขียนโปรแกรมที่กำหนดว่าวัตถุสามารถวางไว้ในวัตถุอื่นๆ ในเกมได้อย่างไร
ข้อผิดพลาดทั่วไปในการเขียนโปรแกรมเกมผจญภัยแบบข้อความ:
- ข้อผิดพลาดในตรรกะของตัวบรรจุ (วัตถุหายไปเมื่อถูกใส่เข้าไปในตัวมันเอง)
- การเกิดศัตรูแบบไม่มีที่สิ้นสุดเนื่องจากขาดการตรวจสอบเงื่อนไข
- ตัววิเคราะห์คำสั่งยอมรับมากเกินไป (อนุญาตให้ทำการกระทำที่เป็นไปไม่ได้ เช่น ใส่คนเข้าไปในสินค้าคงคลัง)
- หน่วยความจำล้นเนื่องจากเกมขยายใหญ่เกินกว่า RAM ที่มีอยู่
- ไฟล์เซฟเสียหายเมื่อไฟล์เกินความจุพื้นที่เก็บข้อมูลระหว่างการเขียน
การเพิ่มจำนวนศัตรูแบบไม่มีที่สิ้นสุด
ระบบการต่อสู้ก็สร้างความล้มเหลวที่น่าทึ่งเช่นกัน นักพัฒนาคนหนึ่งสร้างศัตรูที่จะเรียกพันธมิตรสองตัวเมื่อใกล้ตาย แต่ลืมเพิ่มเงื่อนไขที่เหมาะสม เมื่อผู้เล่นโจมตี ศัตรูที่กำลังจะตายแต่ละตัวจะเรียกนักสู้อีกสองตัว ซึ่งก็จะถูกโจมตีและเรียกกำลังเสริมของตัวเองด้วย สิ่งนี้สร้างปัญหาการเติบโตแบบเลขชี้กำลังที่ทำให้เซิร์ฟเวอร์เกมทั้งหมดหยุดทำงานอย่างรวดเร็ว
ความสับสนของ Parser และการกระทำที่ไม่ได้ตั้งใจ
Text parser ที่แปลความหมายคำสั่งของผู้เล่นมักมีตรรกะที่กว้างเกินไป ผู้ทดสอบเบต้าคนหนึ่งค้นพบว่าพวกเขาสามารถพิมพ์ get Aldwin และยัดตัวละครมนุษย์ทั้งตัวเข้าไปในสินค้าคงคลังของตัวเองได้สำเร็จ เหมือนกับการหยิบดาบหรือกุญแจ ระบบวัตถุของเกมปฏิบัติต่อทุกสิ่งเหมือนกัน ทำให้เกิดสถานการณ์ไร้สาระที่คนกลายเป็นสิ่งของที่พกพาได้
ข้อจำกัดของหน่วยความจำและการจัดเก็บ
นอกจากบั๊กทางตรรกะแล้ว นักพัฒนา text adventure ในยุคแรกยังต้องต่อสู้กับข้อจำกัดของฮาร์ดแวร์อย่างต่อเนื่อง เกมจะใช้ RAM ทั้งหมดที่มีหรือมีขนาดใหญ่เกินไปสำหรับฟลอปปี้ดิสก์ระหว่างการบันทึก บางครั้งทำให้ไฟล์เสียหายเมื่อพื้นที่จัดเก็บหมดระหว่างการเขียน ข้อจำกัดทางเทคนิคเหล่านี้บังคับให้ต้องหาวิธีแก้ปัญหาอย่างสร้างสรรค์และสอนให้นักพัฒนาคิดอย่างรอบคอบเกี่ยวกับการจัดการทรัพยากร
การสนทนาเผยให้เห็นว่าความท้าทายในการเขียนโปรแกรมในยุคแรกเหล่านี้ช่วยสร้างแนวทางการเขียนโค้ดที่ดีขึ้น นักพัฒนาหลายคนได้เรียนรู้แนวคิดพื้นฐานเกี่ยวกับการเขียนโปรแกรมเชิงวัตถุ โครงสร้างข้อมูล และการจัดการข้อผิดพลาดผ่านการลองผิดลองถูกกับ text adventure ของพวกเขา แม้ว่าจะน่าหงุดหงิดในขณะนั้น แต่บั๊กเหล่านี้ได้สร้างประสบการณ์การเรียนรู้ที่มีค่าซึ่งมีอิทธิพลต่ออาชีพการเขียนโปรแกรมทั้งหมด
อ้างอิง: You can now play The Plot of the Phantom, the text adventure game that took me 40 years to finish