Visible Zorker เปิดดูการทำงานเกมยุค 80s
คนส่วนใหญ่คิดถึงเกมยุคปลาย 70s ต้น 80s ว่าเป็น Space Invaders หรือ Pac-Man ในตู้เกม แต่สำหรับนักเล่นคอมพิวเตอร์บ้านในยุคนั้น มักจะนั่งงงกับเกมแนวอื่นอย่าง Zork และภาคต่อๆ มา ร่วมกับต้นแบบ Colossal Cave Adventure มันเป็นผู้บุกเบิกแนว text adventure หรือเกม parser แบบไร้กราฟิกที่ตอนนี้เรียกใหม่ว่า “interactive fiction” อย่างหรูหรา
Zork ไม่ใช่แค่ฮิตแรกของ Infocom แต่ยังเป็นความสำเร็จทางเทคนิคด้วย ความนิยมมาจากการพกพาได้ง่าย รันได้ทั้ง Commodore 64, PC 8086 หรือ ZX Spectrum ในยุคที่เครื่องแต่ละตัวไม่เข้ากัน
ความยืดหยุ่นนี้มาจาก Z-Machine หรือ virtual machine ก่อนยุค แกะเกมเขียนด้วย Zork Implementation Language แล้วคอมไพล์เป็น Z-Code ที่ Z-Machine รัน แค่เขียน interpreter ใหม่สำหรับแต่ละเครื่องก็พอ (เอกสาร Z-Machine)
Visible Zorker เปิดดูการทำงานเกมยุค 80s
เกือบ 50 ปีหลัง Zork ออก มีเว็บ Visible Zorker โดย Andrew Plotkin (บล็อกเขา) ที่แสดงสถานะ Z-Machine แบบเรียลไทม์ เหมือนเปิดฝากระโปรงรถดูเครื่องยนต์ทำงานขณะขับ แต่ปลอดภัยกว่า!
Zork I และ II มีมานานแล้ว แต่ Zork III (1982) เพิ่งเพิ่ม 1 พ.ค. มันยากที่สุดในไตรภาค ผมเคยเล่นแต่แก้ไม่ผ่าน เลยอยากดูภายใน
ดู parser ภายใน Visible Zorker เปิดดูการทำงานเกมยุค 80s
ลองดู parser ของ Zork ที่ไม่เพอร์เฟกต์นัก เรามักเสียเวลาพิมพ์คำสั่งให้เข้าใจ เช่น พูดกับ thief มันงงกับคำว่า “gold”
แต่ parser Infocom เรียบง่าย สวยงาม ใช้ลิสต์ verb/noun มี synonym/abbrev เช่น “lamp”=lantern, “n”=north แม้พิมพ์ผิดยังได้ Verb แต่ละตัวเรียกฟังก์ชัน บางตัวต้องมี noun เช่น “look” แสดงห้อง, “look [noun]” ดูของ ถ้าไม่มีบอก “You can’t see any [noun] here!”
ตัวอย่างซับซ้อน: สเปรย์ Frobozz Magic Grue Repellent (grue กินคนในที่มืด)
- เช็คกระป๋องว่างไหม
- ถ้าพิมพ์ “burn can” ระเบิดตาย
- เช็คสเปรย์ที่ไหน ถ้าไม่ระบุ ถือว่าสเปรย์อากาศ เสียของ (เกมถาม “spray can on what?” ถ้าพิมพ์แค่ spray can)
- สเปรย์ตัวเอง ได้ป้องกัน grue 5 ตา เริ่ม timer I-SPRAY ตั้ง flag SPRAYED? SPRAY-USED?
เห็นไหม สเปรย์ผิดที่ แพ้เลย!
Zork III ดังเรื่อง Royal Puzzle หรือ sliding puzzle ขนาดใหญ่ (แบบ นี้) แก้ใน text game ยากมาก ต้องมี spatial awareness สูง
Visible Zorker แสดงว่าเกมใช้ array 36 ช่องสำหรับ grid 6×6 เก็บตำแหน่ง walls/objects ไม่ใช้ 36 ห้อง แต่ห้องเดียว สลับของเข้า-ออกตามตำแหน่งผู้เล่น เช่น วาง sword ที่ x:3 y:4 แล้ว east เกมอัพเดท pos เป็น x:4 y:4 ลบ sword ออก west กลับมา sword ปรากฏใหม่ ประหยัดหน่วยความจำ (ทั้งเกมมี ~60 ห้อง, source code 92 KB!)
คล้ายเกมสมัยใหม่: ทุกเกมคือ state variables – ไปห้องไหนแล้ว? ฆ่ามอนสเตอร์? inventory? health? Timer? โดนตี ลบ health ถ้า <0 เรียก JIGS-UP ตาย restore save
หลักการเดียวกับ Elden Ring แค่ implement ต่าง
และอย่าลืมพิมพ์ “Hello sailor” ใน Zork III ที่จุดหนึ่ง มันบอก “Nothing happens yet.” แล้วรอ มี ancient mariner มา!
Visible Zorker เปิดดูการทำงานเกมยุค 80s ทำให้เห็นว่าเทคนิคเก่าๆ ยังเป็นรากฐานเกมวันนี้ ลองไปเล่นดู แล้วคุณจะหลงรัก Zork ใหม่!
ที่มา – The Visible Zorker Lets You Peer Under the Hood to See How Games Worked in the 80s