กลับไปหน้าบทความ

อ่าน 6 นาที

เครื่องจักร Z

Z -machineคือเครื่องเสมือนที่พัฒนาโดย Joel Berez และMarc Blankในปี 1979 และถูกใช้โดยInfocomสำหรับเกมผจญภัยแบบข้อความ Infocom คอมไพล์โค้ดเกมเป็นไฟล์ที่มีคำสั่ง Z-machine...

เครื่องจักร 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 ]

ล่าม

ตัวอย่างการใช้งาน Frotz บนiPhoneโดยเล่นเกมZorkเวอร์ชันMIT

โปรแกรมแปลภาษาสำหรับไฟล์ 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 เดียวกัน แต่การบรรจุโครงสร้างไฟล์นั้นแตกต่างกัน

ดูเพิ่มเติม

  • SCUMM – พัฒนาโดยLucasArtsเป็นระบบกราฟิกที่คล้ายกับ Z-machine
  • TADS – สร้างขึ้นเพื่อแก้ไขข้อจำกัดบางประการของเครื่อง Z
  • เอกสารมาตรฐาน 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

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ เครื่องจักร Z

Z -machineคือเครื่องเสมือนที่พัฒนาโดย Joel Berez และMarc Blankในปี 1979 และถูกใช้โดยInfocomสำหรับเกมผจญภัยแบบข้อความ Infocom คอมไพล์โค้ดเกมเป็นไฟล์ที่มีคำสั่ง Z-machine...

การตั้งชื่อและธรรมเนียมปฏิบัติ

ตัวอักษร "Z" ใน Z-machine มาจาก Zork เกมผจญภัยเกมแรกของ Infocom Infocom ใช้ส่วนขยายไฟล์ .dat (Data) และ .zip (ZIP = Z-machine Interpreter Program) แต่ส่วนขยาย .zip นั้นขัดแย้งกับการใช้งาน .

ก่อนเครื่อง Z

ภาษา โปรแกรม MDL พัฒนามาจาก ภาษา Lisp ที่ สถาบันเทคโนโลยีแมสซาชูเซตส์ โดยกลุ่ม Dynamic Modeling ของ ห้องปฏิบัติการวิทยาศาสตร์คอมพิวเตอร์ (LCS) ในช่วงทศวรรษ 1970 โดยได้รับแรงบันดาลใจจาก เกม Colossal Cave Adventure (1977) สมาชิกของกลุ่มดังกล่าวจึงได้เขียน เกม...

ZIL และ ZIP, ZILCH และ ZAP

เพื่อเสริมการทำงานของเครื่อง Z อินโฟคอมได้พัฒนา ภาษาคอมพิวเตอร์ ระดับสูงZork Implementation Language (ZIL) โดยการปรับปรุง MDL ให้มีประสิทธิภาพยิ่งขึ้น [ 5 ] เครื่องมือพัฒนาของอินโฟคอมได้คอมไพล์ ZIL เป็นคำสั่งเครื่อง Z ในกระบวนการสองขั้นตอน...