Zork dan Z-Machine: bagaimana pengembang mentransfer game dari mainframe ke komputer rumahan 8-bit


Game komputer ada hampir sebanyak komputer itu sendiri. Meskipun sulit dipercaya, petualangan teks Zork adalah Fortnite pada masanya. Tapi Zork juga sesuatu yang lebih. Demi portabilitas dan penghematan ruang, Zork sendiri ditulis dalam Bahasa Implement Zork (ZIL), yang secara aktif menggunakan konsep pemrograman berorientasi objek yang sepenuhnya baru, dan dieksekusi dalam mesin virtual. Dan semua ini terjadi pada 1979. Para pengembang menggunakan segala macam trik agar sesuai dengan sebanyak mungkin Empire Empire ke dalam komputer yang hanya memiliki 32 KB RAM. Namun, Zork bukan hanya terobosan teknologi, tetapi juga tonggak utama dalam sejarah game komputer. Pada saat yang sama, dia bangkit bukan dari awal.


Modul PDIP Flip Komputer DEC

Revolusi komputer dimulai selama Perang Dunia II, dan pada tahun 50-an dan 60-an tidak berpikir untuk berhenti. Semakin banyak sistem komputer yang dapat diakses untuk perusahaan dan universitas mulai dijual. Laboratorium Institut Ilmu Komputer (MIT) Massachusetts Institute of Computer (LCS) cukup beruntung untuk berafiliasi dengan ARPA , yang memberikan LCS dan Laboratorium Kecerdasan Buatan MIT (sebelumnya bagian dari Proyek MAC ) dengan sumber daya komputasi yang signifikan, terutama disediakan oleh sistem DEC PDP .

Akibatnya, siswa dari MIT Dynamic Modeling Group (bagian LCS) mendapatkan akses ke mainframe PDP-10 KA10, mesin paling kuat saat itu. Walaupun PDP-10 khusus ini adalah model 1968 asli dengan modul transistor Flip Chip diskrit dan kabel pembungkus, sangat dimodifikasi : ia menambahkan dukungan untuk memori virtual dan halaman memori untuk memperluas memori kernel 1.152 KB yang asli.

Komputer yang menjalankan OS Incompatible Timesharing System (ITS) yang dikembangkan di MIT adalah sistem multi-pengguna yang sangat fungsional.

Tentu, itu terutama digunakan untuk bermain game.

Apakah Anda siap untuk petualangan?


Pada musim semi 1977, sebuah game bernama Colossal Cave Adventure (atau "Petualangan" singkatnya) muncul di MIT. Game ini adalah game komputer pertama dalam genre fiksi interaktif , yang memungkinkan pemain melakukan perjalanan teks melalui sistem gua besar, yang, menurut rumor, dikemas dengan harta karun. Hampir seperti di buku-buku "Pilih petualangan Anda" , pemain membuat pilihannya, yang menggerakkannya melalui kamar-kamar gua, dan sebagai hasilnya, entah menemukan harta dan melarikan diri, atau memenuhi kematiannya sebelum waktunya.

Terinspirasi oleh permainan ini, sekelompok siswa LCS menyadari bahwa mereka dapat melampaui proyek Stanford ini. Kelemahan utama dari Petualangan ternyata adalah bahwa ia ditulis dalam FORTRAN - bahasa yang tidak terkenal karena karya baiknya dengan teks yang dinamis, terutama untuk kebutuhan permainan genre fiksi interaktif. Pada dasarnya, Petualangan benar-benar tertanam dalam kode, yang membatasi fleksibilitas dan mempersulit ekstensibilitas dan dukungan permainan.

Dalam Petualangan, setiap kamar memiliki ID numerik, yang dengannya deskripsi dalam tabel dikaitkan. Meja lain memintanya deskripsi singkat. Di tabel lain, menggunakan ID numerik, lokasi kamar relatif terhadap kamar lain terdaftar. Ini berarti bahwa untuk menambah ruangan, Anda harus mengedit secara manual semua tabel ini dan berhati-hati agar tidak menyebabkan masalah dengan perubahan ini.

Persaingan peretas



Menggunakan pengalaman bekerja dengan bahasa alami yang tersedia di laboratorium LCS dan AI, Dave Lebling pertama kali menulis parser sederhana dan meletakkan dasar untuk mesin permainan yang mirip dengan mesin Petualangan. Untuk melakukan ini, ia menggunakan LISP bahasa pemrograman yang diturunkan MDL. Berkat kemampuan pemrosesan bahasa alami yang kuat, Mark Blanc , Bruce Daniels, dan Tip Anderson menciptakan, berdasarkan karya Lebling, create - game prototipe pertama, yang dari waktu ke waktu telah menjadi apa yang sekarang kita sebut Zork.

Revolusi Zork adalah dia, tidak seperti perintah Adventure yang sederhana (di mana LAMP GET dan GET LAMP setara), berkat kemampuan pemrosesan bahasa alami MDL yang sangat baik, dapat mengatasi seluruh kalimat. Dia dapat memproses kalimat lengkap dan bahkan beberapa kalimat (tim) digabungkan menjadi satu kalimat. Kehadiran parser yang kuat dikombinasikan dengan kemudahan pemodelan kamar baru di MDL dalam gaya berorientasi objek berarti bahwa setelah menulis parser dan mesin game, dunia dapat diperluas hampir tanpa batas.

Sebuah ruangan di Zork dapat diatur menggunakan potongan kode sederhana:

 <ROOM "WHOUS" "This is an open field west of a white house, with a boarded front door." "West of House" <EXIT "NORTH" "NHOUS" "SOUTH" "SHOUS" "WEST" "FORE1" "EAST" #NEXIT "The door is locked, and there is evidently no key."> (<GET-OBJ "FDOOR"> <GET-OBJ "MAILB"> <GET-OBJ "MAT">) <> <+ ,RLANDBIT ,RLIGHTBIT ,RNWALLBIT ,RSACREDBIT> (RGLOBAL ,HOUSEBIT)> 

Ini menetapkan "rumah putih" dari awal permainan, serta keluar dari ruangan ini, properti khusus keluar (misalnya, pintu yang terkunci) dan benda-benda di dalam ruangan. Ini memastikan bahwa semua properti ruangan, termasuk deskripsi, deskripsi pendek, properti, dan label, akan berada di satu tempat. Mesin permainan kemudian akan dapat mengganti masing-masing label (bit) kamar, menyimpan database pusat semua kamar dan status mereka saat ini. Kelola koneksi ruang selama pembuatan desain game dengan menggunakan nama mereka, bukan ID numerik dalam tabel.

Pukulan keras


Cukuplah untuk mengatakan bahwa Zork benar-benar fantastis di mainframe. Atas permintaan gamer lain yang tertarik, porting ini dikirim ke OS DEC TOPS-20 yang lebih umum untuk PDP-10. Meskipun pengembang Zork sangat murah hati sehingga mereka membagikannya secara gratis, mereka mendistribusikan versi read-only yang dienkripsi. Mereka bahkan menyimpan kode sumber Zork dalam folder aman di mainframe ITS, untuk itu mereka harus menambal OS mainframe ITS yang sepenuhnya terbuka dan tidak aman.


Pada tahap ini dalam sejarah komputer di dunia, masih ada beberapa di antaranya. Konsep komputer di rumah baru saja mulai muncul: pada tahun 1977, komputer seperti TRS-80 dan Apple II muncul , tetapi bahkan sistem ini sangat terbatas dibandingkan dengan mainframe di mana siswa AS bermain game petualangan teks pada waktu itu. Gagasan untuk memindahkan game seperti Zork - file yang dapat dieksekusi sebesar 1 MB - ke komputer rumahan tampak sangat dini.

Sementara komputer rumahan masih jarang, konsep penjualan perangkat lunak ke konsumen biasa juga tetap baru. Ini adalah waktu ketika Atari 2600 baru saja muncul di ritel, meluncurkan generasi kedua konsol game, di mana tidak hanya satu permainan yang dapat dimainkan dengan bantuan kartrid yang dimasukkan. Ini adalah pasar baru, yang mengajukan banyak pertanyaan kepada siswa MIT, Stanford dan lembaga pendidikan lainnya tentang oposisi budaya peretas terhadap dunia perangkat lunak komersial. Beberapa, seperti Richard Stallman , tidak mengubah kepercayaan mereka sejak masa mahasiswa di MIT.

Ketika pengembang Zork meninggalkan institut, mereka menyadari bahwa keberhasilan permainan ada di tangan mereka: mereka memiliki kesempatan untuk mengkomersialkannya, untuk mengarahkan hidup dan karier mereka ke arah yang benar-benar baru relatif terhadap tujuan awal mereka. Jadi, hampir tanpa hambatan sedikitpun, pada 22 Juni 1979 perusahaan Infocom didirikan.

Sekarang kita hanya perlu port itu


Hanya ada satu peringatan kecil dalam memindahkan Zork dari sistem mainframe PDP-10 ke komputer rumah kecil: pada waktu itu, Infocom tidak memiliki apa pun untuk dijual. Para pengembang datang dengan berbagai ide permainan yang dapat diadaptasi untuk bekerja pada komputer rumahan, tetapi nilai utamanya adalah memindahkan Zork. Mereka hanya perlu menyelesaikan masalah mengkonversi 1 megabyte kode game MDL menjadi mikrokomputer dengan 32 KB RAM (atau bahkan kurang) dan drive kecil.

Selain itu, mereka tidak ingin port game secara individual ke TRS-80, Apple II, dan kemudian ke sistem baru. Bagaimana jika Anda mencoba menggunakan kode MDL yang ada? Ini menandai awal pengembangan apa yang akan segera dikenal sebagai Z-Machine .

Tentu saja, pada awalnya mereka ingin menyelesaikan masalah kompatibilitas Zork dengan mikrokomputer, mengurangi gim dengan menghapus konten. Memotong banyak, mereka berhasil mendekati ukuran Petualangan. Kemudian mereka melakukan sesuatu yang mirip dengan MDL, menghapus semua fitur yang tidak dibutuhkan Zork. Ini adalah bagaimana Bahasa Implementasi Zork (ZIL) keluar, ke mana mereka dapat dengan mudah memportasikan Zork dengan MDL. Setelah itu, kompiler ZIL dapat membuat file yang dapat dieksekusi jauh lebih kecil daripada kompiler MDL.

Melihat deskripsi lentera kuningan Zork di ZIL, kita dapat melihat bahwa lebih mudah dibaca daripada MDL:

  <LANTERN OBYEK
 (LOC LIVING-ROOM)
 (SINNIM LAMPU LANTERN TERANG)
 (KUNINGAN KUNCI)
 (DESC "kuningan lentera")
 (BENDERA TAKEBIT LIGHTBIT)
 (ACTION LANTERN-F)
 (FDESC "Lentera bertenaga baterai ada di piala
 kasing. ")
 (LDESC "Ada lentera kuningan (bertenaga baterai)
 di sini. ")
 (UKURAN 15)> 


Ini tentu saja luar biasa, tetapi tetap saja tidak memungkinkan untuk meluncurkan Zork di TRS-80. Tentu saja, pada tahap ini mereka dapat menulis kompiler ZIL untuk setiap platform, serta file yang dapat dieksekusi ZIL, untuk menghabiskan banyak waktu kemudian, mengatur setiap game pada setiap platform target. Tetapi sebaliknya, mereka memutuskan untuk menulis mesin virtual: Z-Machine. Bahkan, itu adalah platform ideal untuk game petualangan berbasis teks yang secara langsung mendukung file biner ZIL, dan juga menerapkan banyak optimasi, yang paling penting adalah pengemasan karakter dalam 5 bit, yang menyerupai kode Bodo .

Berkat semua optimisasi ini, mesin virtual dan bahasa pemrograman mereka sendiri, mereka berhasil menempatkan dunia terpotong Zork I ke dalam 77-kilobyte "file sejarah" bersama dengan seorang juru bahasa (mesin virtual). Karena masih lebih dari 32 KB memori daripada komputer populer, sistem memori virtual diimplementasikan dalam mesin virtual, di mana hanya data dinamis (variabel) dimuat ke dalam RAM, dan semua data statis (teks) dibaca dari floppy disk jika perlu.

Maju ke masa depan



Floppy disk Apple II memiliki ukuran 140 KB, dan disk TRS-80 memiliki ukuran 180 KB, yaitu, masalah dengan ruang diselesaikan. Hanya juru bahasa yang harus dioptimalkan untuk platform target, dan ini berarti bahwa di masa depan juru bahasa yang sama dapat digunakan di semua game yang diproduksi oleh Infocom, tanpa perlu porting ke platform yang terpisah. Mereka masih memiliki banyak konten yang dipotong dari versi mainframe Zork. Mereka siap untuk sekuelnya.

Menyusul keberhasilan komersial Zork I, pengembang terus memproduksi potongan dari versi mainframe asli dalam bentuk Zork II dan Zork III. Tahun demi tahun, penjualan Zork I terus tumbuh, dan itu menjadi permainan yang harus dibeli, sering kali digabungkan dengan sistem baru. Versi baru Z-Machine dikembangkan, di mana fitur baru ditambahkan untuk game yang bahkan lebih kompleks. Hari ini, kita masih dapat menikmati game Infocom tanpa khawatir tentang masalah kompatibilitas: sumber Zork di MDL diterbitkan, serta kode sumber untuk game Infocom klasik lainnya . Jika Anda belum pernah bermain Zork dalam waktu yang lama, coba dan lihat apa yang terjadi di dalam gim. Sangat mungkin untuk mengatakan tanpa sedikit pun bahwa sekelompok peretas dari universitas AS pada tahun 1970-an sangat mungkin menentukan masa depan dunia video game dan dongeng interaktif.

Source: https://habr.com/ru/post/id479690/


All Articles