เครื่องจักร Z
Z -machineคือเครื่องเสมือนที่พัฒนาโดย Joel Berez และMarc Blankในปี 1979 และถูกใช้โดยInfocomสำหรับเกมผจญภัยแบบข้อความ Infocom คอมไพล์โค้ดเกมเป็นไฟล์ที่มีคำสั่ง Z-machine (เรียกว่าไฟล์เรื่องราวหรือไฟล์ Z-code) ดังนั้นจึงสามารถพอร์ตเกมผจญภัยแบบข้อความไปยังแพลตฟอร์มใหม่ได้ง่ายๆ โดยการเขียนการใช้งาน Z-machine สำหรับแพลตฟอร์มนั้นๆ ด้วยระบบคอมพิวเตอร์ส่วนบุคคลจำนวนมากที่ไม่เข้ากันในขณะนั้น นี่จึงเป็นข้อได้เปรียบที่สำคัญเหนือกว่าการใช้โค้ดดั้งเดิมหรือการพัฒนาคอมไพเลอร์สำหรับแต่ละระบบ
ประวัติศาสตร์และการออกแบบ
การตั้งชื่อและธรรมเนียมปฏิบัติ
ตัวอักษร "Z" ใน Z-machine มาจากZorkเกมผจญภัยเกมแรกของ Infocom Infocom ใช้ส่วนขยายไฟล์ .dat (Data) และ .zip (ZIP = Z-machine Interpreter Program) แต่ส่วนขยาย .zip นั้นขัดแย้งกับการใช้งาน .zip อย่างแพร่หลายสำหรับไฟล์เก็บถาวรที่เข้ากันได้กับ PKZIPซึ่งเริ่มใช้กันในทศวรรษ 1990 หลังจากที่Activisionปิด Infocom ไป แล้ว
บริษัท Infocom ผลิตเครื่อง Z-machine ออกมาทั้งหมดหกเวอร์ชัน เวอร์ชัน 1 และ 2 นั้นหายากมาก โดยมีไฟล์ที่ Infocom เผยแพร่เพียงสองไฟล์เท่านั้นสำหรับแต่ละเวอร์ชัน เวอร์ชัน 3 ครอบคลุมเกมส่วนใหญ่ที่ Infocom เผยแพร่ เวอร์ชันต่อมามีความสามารถมากขึ้น โดยเวอร์ชัน 6 มีการรองรับกราฟิกบางส่วนด้วย
รูปแบบการตั้งชื่อไฟล์ Z-code สมัยใหม่มักมีชื่อลงท้ายด้วย .z1, .z2, .z3, .z4, .z5, .z6, .z7 หรือ .z8 โดยตัวเลขดังกล่าวคือหมายเลขเวอร์ชันของเครื่อง Z-machine ที่ไฟล์นั้นตั้งใจจะใช้งาน โดยอ้างอิงจากไบต์ แรก ของไฟล์เนื้อเรื่อง[ 1 ]ดังที่กล่าวไว้ก่อนหน้านี้ เกมของ Infocom ใช้รูปแบบที่เทียบเท่ากับ .z1 ถึง .z6 ส่วน .z7 และ .z8 นั้นได้รับการเสนอและนำมาใช้หลังจากที่ Infocom ปิดตัวลง
ก่อนเครื่อง Z
ภาษา โปรแกรม MDLพัฒนามาจากภาษา Lispที่สถาบันเทคโนโลยีแมสซาชูเซตส์โดยกลุ่ม Dynamic Modeling ของห้องปฏิบัติการวิทยาศาสตร์คอมพิวเตอร์ (LCS)ในช่วงทศวรรษ 1970 โดยได้รับแรงบันดาลใจจากเกม Colossal Cave Adventure (1977) สมาชิกของกลุ่มดังกล่าวจึงได้เขียนเกม Zorkด้วยภาษา MDL และเสร็จสิ้นเวอร์ชันเริ่มต้นในอีกสองสัปดาห์ต่อมา[ 2 ] [ 3 ] : 5–6เช่นเดียวกับAdventureเกมZorkถูกเขียนโปรแกรมสำหรับDEC PDP-10เวอร์ชันที่เสร็จสมบูรณ์ใช้ โค้ด MDL ขนาด 1 MB และต้องการ RAM 512 KB ในการทำงาน เนื่องจากคอมพิวเตอร์บ้านในยุคนั้นไม่มีทรัพยากรเหล่านี้ จึงต้องใช้ความพยายามอย่างมากในการพอร์ตเกม[ 3 ] : 11ในที่สุด นักพัฒนาได้แบ่งZorkออกเป็นสองเกมสำหรับคอมพิวเตอร์ส่วนบุคคล[ 4 ]
การบีบอัดที่จำเป็นในการเรียกใช้Zorkจากฟลอปปี้ดิสก์ ที่มี พื้นที่จัดเก็บประมาณ 80 KB ดูเหมือนจะเป็นอุปสรรคที่ยากเกินกว่าที่ Blank จะเอาชนะได้ Berez ตระหนักว่า UCSD Pascalใช้ โมเดล เครื่องเสมือน (VM) เพื่อสร้างไฟล์ปฏิบัติการที่สามารถพอร์ตข้ามแพลตฟอร์มได้อย่างง่ายดาย และร่วมกับ Blank พวกเขาได้คิดค้นข้อกำหนดสำหรับ VM น้ำหนักเบาที่ได้รับการปรับให้เหมาะสมสำหรับเกมผจญภัยแบบข้อความ ซึ่งจะดึงข้อมูลและดำเนินการคำสั่งตามความจำเป็นจากหน่วยจัดเก็บข้อมูลเพื่อชดเชยขนาด RAM ที่ค่อนข้างเล็กในไมโครคอมพิวเตอร์ทั่วไป[ 3 ] : 11เครื่อง Z ที่ได้นั้นใช้โครงสร้างต้นไม้ของวัตถุสำหรับไอเท็ม สถานที่ ตัวละคร และอาวุธในเกม[ 3 ] : 11สำหรับการเปรียบเทียบ ตัวแยกวิเคราะห์เครื่อง Z ใช้พื้นที่จัดเก็บ 3 kBในขณะที่ตัวแยกวิเคราะห์ PDP-10 ดั้งเดิมใช้พื้นที่ 44 kB (10,000 คำ36 บิต ) [ 5 ]
ZIL และ ZIP, ZILCH และ ZAP
เพื่อเสริมการทำงานของเครื่อง Z อินโฟคอมได้พัฒนา ภาษาคอมพิวเตอร์ระดับสูงZork Implementation Language (ZIL) โดยการปรับปรุง MDL ให้มีประสิทธิภาพยิ่งขึ้น[ 5 ]เครื่องมือพัฒนาของอินโฟคอมได้คอมไพล์ ZIL เป็นคำสั่งเครื่อง Z ในกระบวนการสองขั้นตอน ซึ่งทำให้การพัฒนาเกมผจญภัยแบบข้อความไม่ขึ้นอยู่กับแพลตฟอร์ม และทำให้สามารถพอร์ตไปยังระบบต่างๆ ได้ง่ายๆ โดยการเขียนตัวแปลภาษาเครื่อง Z ที่เหมาะสม[ 3 ] : 12–13เครื่องมือเหล่านั้นประกอบด้วยคอมไพเลอร์ (ZILCH ซึ่งย่อมาจาก ZIL Compiler Hack) และแอสเซมเบลอร์ (ZAP ซึ่งเป็นโปรแกรมแอสเซมเบลอร์เครื่อง Z) [ 6 ]
แม้ว่า ZILCH จะไม่เคยถูกปล่อยออกมา แต่เอกสารของ ZIL ยังคงมีอยู่ และ มีการเขียนโปรแกรมทดแทนแบบโอเพนซอร์สที่เรียกว่า "ZILF" [ 7 ] หลังจากที่ Mediagenicย้าย Infocom ไปยังแคลิฟอร์เนียในปี 1989 Computer Gaming Worldระบุว่า "ZIL ... ใช้งานไม่ได้แล้ว" และรายงานข่าวลือเกี่ยวกับ "ตัวแยกวิเคราะห์ใหม่ทั้งหมดที่อาจไม่เคยถูกนำมาใช้" [ 8 ]
เกรแฮม เนลสัน และอินฟอร์ม
ในเดือนพฤษภาคม ปี 1993 แกรแฮม เนลสันได้ปล่อยเวอร์ชันแรกของ คอมไพเลอร์ Informซึ่งสร้างไฟล์เรื่องราว Z-machine เป็นเอาต์พุต แม้ว่าภาษาต้นฉบับของ Inform จะแตกต่างจาก ZIL มากก็ตาม
Inform ได้รับความนิยมใน ชุมชน นิยายเชิงโต้ตอบ (Interactive Fiction ) นิยายเชิงโต้ตอบส่วนใหญ่มีรูปแบบเป็นไฟล์เรื่องราว Z-machine ความต้องการในการสร้างไฟล์เกมขนาดใหญ่ขึ้นทำให้ Nelson กำหนดเวอร์ชัน 7 และ 8 ของ Z-machine ขึ้นมา แม้ว่าเวอร์ชัน 7 จะไม่ค่อยได้ใช้ก็ตาม เนื่องจากวิธีการจัดการแอดเดรส ไฟล์เรื่องราวเวอร์ชัน 3 สามารถมีความยาวได้ถึง 128K ไฟล์เรื่องราวเวอร์ชัน 5 สามารถมีความยาวได้ถึง 256K และไฟล์เรื่องราวเวอร์ชัน 8 สามารถมีความยาวได้ถึง 512K แม้ว่าขนาดเหล่านี้อาจดูเล็กเมื่อเทียบกับมาตรฐานการประมวลผลในปัจจุบัน แต่สำหรับเกมผจญภัยแบบข้อความล้วน ขนาดเหล่านี้ก็ใหญ่พอสำหรับเกมที่ซับซ้อนแล้ว
ในช่วงทศวรรษ 1990 แกรแฮม เนลสัน ได้ร่างมาตรฐาน Z-Machine โดยอิงจากการศึกษาอย่างละเอียดเกี่ยวกับไฟล์ Infocom ที่มีอยู่ มาตรฐานนี้ยังรวมถึงส่วนขยายที่ใช้โดยเวอร์ชันใหม่กว่าของเขา ตลอดจนลิงก์ไปยังรูปแบบทรัพยากร " Blorb " และรูปแบบไฟล์บันทึก " Quetzal " [ 9 ] ในปี 2006 เนลสันได้ขยาย Z-machine ไปยังรูปแบบ Glulx 32 บิตสำหรับ Inform 7 มูลนิธิ Interactive Fiction Technology Foundationซึ่งก่อตั้งขึ้นในปี 2016 ทำหน้าที่จัดการมาตรฐานทั้งหมดเหล่านี้[ 10 ]
ZIL (ภาษาการใช้งาน Zork)
ZIL อิงตามMDLจาก MIT นี่คือคำจำกัดความของโคมไฟทองเหลืองของ Zork I ใน ZIL พร้อมคำอธิบายเพิ่มเติมเพื่อแสดงความหมายของแต่ละบรรทัด: [ 11 ]
<OBJECT LANTERN ;"กำหนดวัตถุ LANTERN" ( LOC LIVING-ROOM ) ;"กำหนดตำแหน่งเริ่มต้นของวัตถุ" ( SYNONYM LAMP LANTERN LIGHT ) ;"กำหนดคำพ้องความหมายที่สามารถใช้แทน LANTERN ได้" ( ADJECTIVE BRASS ) ;"คำคุณศัพท์เสริมเพื่อแยกแยะโคมไฟนี้จากโคมไฟอื่นๆ" ( DESC "โคมไฟทองเหลือง" ) ;"คำอธิบายสั้นๆ ในรายการสินค้าคงคลัง" ( FLAGS TAKEBIT LIGHTBIT ) ;"วัตถุนี้ทำอะไรได้บ้าง? สามารถหยิบไปได้ มันให้แสงสว่าง" ( ACTION LANTERN-F ) ;"ซับรูทีนที่กำหนดการกระทำพิเศษกับวัตถุนี้" ( FDESC "มีโคมไฟที่ใช้แบตเตอรี่อยู่ในตู้โชว์ถ้วยรางวัล" ) ;"คำอธิบายระหว่างการพบครั้งแรก" ( LDESC "มีโคมไฟทองเหลือง (ใช้แบตเตอรี่) อยู่ที่นี่" ) ;"คำอธิบายเพิ่มเติมในสถานที่อื่นๆ" ( SIZE 15 ) > ;"กำหนดน้ำหนักเพื่อจำกัดความจุของช่องเก็บของ"วัตถุที่เทียบเท่าใน MDL ถูกกำหนดไว้ดังนี้:
<OBJECT [ "LAMP" "LANTE" "LIGHT" ] [ "BRASS" ] "lamp" <+ , OVISON , TAKEBIT , LIGHTBIT> LANTERN () ( ODESC0 "โคมไฟทองเหลืองที่ใช้แบตเตอรี่วางอยู่บนตู้โชว์ถ้วยรางวัล" ODESC1 "มีโคมไฟทองเหลือง (ใช้แบตเตอรี่) อยู่ที่นี่" OSIZE 15 OLINT [0 >] ) >ตัวอย่างที่ซับซ้อนกว่าซึ่งเกี่ยวข้องกับการต่อสู้ พร้อมด้วย MDL Zork ที่เทียบเท่ากัน ได้ถูกนำเสนอในบทความบล็อกปี 2019 โดย Andrew Plotkin ที่น่าสังเกตคือ Z-machine ไม่รองรับการเก็บขยะและ ZIL ไม่มีแนวคิดเกี่ยวกับระบบรายการของ Lisp [ 12 ]
ล่าม

โปรแกรมแปลภาษาสำหรับไฟล์ Z-code มีให้บริการบนแพลตฟอร์มที่หลากหลาย Infocom สามารถพอร์ตเกมไปยังคอมพิวเตอร์เครื่องใหม่ได้อย่างรวดเร็ว เนื่องจากต้องเขียนโปรแกรมแปลภาษาเท่านั้น[ 13 ]ณ เดือนกรกฎาคมพ.ศ. 2527 บริษัทได้เผยแพร่เกมสำหรับคอมพิวเตอร์ 15 เครื่องที่แตกต่างกัน รวมถึงCP/MและMS-DOSทั่วไป[ 14 ]เว็บไซต์ Inform แสดงรายการลิงก์ไปยังตัวแปลภาษาที่ใช้งานได้ฟรีสำหรับระบบปฏิบัติการเดสก์ท็อป 15 ระบบ (รวมถึงไมโครคอมพิวเตอร์ 8 บิตจากยุค 1980 เช่นApple II , TRS-80และZX Spectrumและจัดกลุ่ม "Unix" และ "Windows" เป็นหนึ่งเดียว) ระบบปฏิบัติการมือถือ 10 ระบบ (รวมถึงPalm OSและGame Boy ) และแพลตฟอร์มตัวแปลภาษา 4 แพลตฟอร์ม ( Emacs , Java, JavaScriptและ Scratch) ตามที่เนลสันกล่าวไว้ว่า "อาจเป็นเครื่องเสมือนแบบพกพาที่สุดเท่าที่เคยสร้างมา" [ 15 ]
โปรแกรมแปลภาษาที่เป็นที่นิยม ได้แก่NitfolและFrotz Nitfol ใช้API ของ Glk และรองรับ Z-machine เวอร์ชัน 1 ถึง 8 รวมถึง Z-machine แบบกราฟิกเวอร์ชัน 6 ไฟล์บันทึกจะถูกจัดเก็บในรูปแบบบันทึกมาตรฐานของ Quetzal ไฟล์ไบนารี มีให้ใช้งานสำหรับ ระบบปฏิบัติการต่างๆรวมถึงMac OS แบบคลาสสิกระบบที่คล้าย Unix และ Windows [ 16 ]
Frotz ถูกเขียนด้วยภาษา Cโดย Stefan Jokisch ในปี 1995 สำหรับ DOS ต่อมาได้มีการพอร์ตไปยังแพลตฟอร์มอื่นๆ เช่นระบบที่คล้าย Unix [ 17 ] RISC OS [ 18 ] และ iOS [ 19 ] มี การรองรับเอฟเฟ กต์เสียงและกราฟิกในระดับต่างๆ กัน ในปี 2002 การพัฒนาหยุดชะงักลง และ David Griffith ได้นำโปรแกรมนี้ไปพัฒนาต่อ โค้ดเบสถูกแบ่งออกเป็นส่วนของเครื่องเสมือนและ ส่วน ติดต่อผู้ใช้ในลักษณะที่เครื่องเสมือนเป็นอิสระจากส่วนติดต่อผู้ใช้ ซึ่งทำให้การพอร์ต Frotz มีความหลากหลายมากขึ้น หนึ่งในเวอร์ชันที่แปลกที่สุดก็คือเวอร์ชันที่ง่ายที่สุด: บอทส่งข้อความโต้ตอบแบบทันที ถูกห่อหุ้มด้วย Frotz เวอร์ชันที่มีฟังก์ชัน I/Oขั้นต่ำทำให้เกิดบอทที่สามารถเล่นเกม Z-machine ส่วนใหญ่ได้โดยใช้ไคลเอนต์ส่งข้อความโต้ตอบแบบทันที[ 20 ]
ไคลเอนต์ยอดนิยมอีกตัวสำหรับmacOSและระบบที่คล้าย Unix อื่นๆ คือZoom [ 21 ] รองรับรูป แบบการบันทึก Quetzal เดียวกัน แต่การบรรจุโครงสร้างไฟล์นั้นแตกต่างกัน
ดูเพิ่มเติม
ลิงก์ภายนอก
- เอกสารมาตรฐาน Z-Machine
- เอกสาร "Learning ZIL at the Wayback Machine (archived August 7, 2010) (PDF)" คือคู่มือ ZIL ของ Infocom จากปี 1989
- คำอธิบายเกี่ยวกับไฟล์ ZIP ในWayback Machine (เก็บถาวรเมื่อวันที่ 9 มีนาคม 2012) (PDF) โปรแกรมแปลภาษา Z (เอกสารภายในของ Infocom) จากปี 1989
- ล่าม
- บทความ "วิธีปรับใช้โปรแกรมขนาดใหญ่กับเครื่องขนาดเล็ก"อธิบายถึงการสร้างและการออกแบบเครื่อง Z