Zork y la máquina Z: llevar la computadora a las computadoras domésticas de 8 bits

Los juegos de computadora han existido durante tanto tiempo como las computadoras. Y aunque puede ser difícil de creer, Zork, un juego de aventuras basado en texto, fue el Fortnite de la época. Pero Zork es más que eso. Por razones de portabilidad y tamaño, Zork está escrito en Zork Implementation Language (ZIL), hace un uso extensivo del nuevo concepto de programación orientada a objetos y funciona con una máquina virtual. Todo esto en 1979. Usaron todos los trucos del libro para empaquetar gran parte del Imperio subterráneo en computadoras que tenían solo 32 kB de RAM. Pero incluso más que una fuerza tecnológica, Zork es un hito imprescindible en la historia de los juegos de ordenador. Pero no salió de la nada.

Módulo Flip Chip DEC PDP-10

La revolución informática acababa de dar un giro vertiginoso durante la Segunda Guerra Mundial y no dio señales de calmarse durante las décadas de 1950 y 1960. Se podían adquirir sistemas informáticos más asequibles en empresas y universidades. El Laboratorio de Computación del MIT (LCS) tuvo la suerte de tener enlaces a ARPA, que le dio a los laboratorios LCS e IA del MIT (anteriormente parte del Proyecto MAC) acceso a considerables recursos informáticos, principalmente en forma de sistemas DEC PDP.

El resultado: los estudiantes del Grupo de Modelado Dinámico del MIT (parte de LCS) tienen acceso a un modelo de computadora PDP-10 KA10, un hierro pesado en ese momento. Aunque este PDP-10 era el modelo original de 1968 con módulos Flip Chip de transistores discretos y vaina de cable, fue muy modificado, agregando memoria virtual y soporte de paginación para expandir los 1,152 kB originales de memoria central. Al ejecutar el sistema operativo Incompatible Timesharing System (ITS) desarrollado por el MIT, era un sistema multiusuario de gran capacidad.

Naturalmente, se usaba principalmente para jugar.

¿Estás listo para una aventura?

En la primavera de 1977, llegó un juego al MIT llamado Colossal Cave Adventure (o “Adventure” para abreviar). Este juego fue el primer juego de computadora de ficción interactivo que le dio al jugador una aventura de texto con un gran sistema de cuevas que se dice que está lleno de tesoros. Con reminiscencias de los libros de “elige tu propia aventura”, el jugador tomaría decisiones que lo llevarían a través de las habitaciones de la cueva, ya sea logrando recuperar el tesoro y escapar con vida, o encontrando una desaparición prematura.

Inspirado por este juego, un grupo de estudiantes de LCS asumió que podrían hacerlo mejor que este proyecto desarrollado por Stanford. La principal debilidad que detectaron fue que Adventure se llevó a cabo en FORTRAN, un lenguaje que no es exactamente conocido por sus fuertes características dinámicas de procesamiento de texto, y mucho menos por las necesidades de un juego de ficción interactivo. Debido a esto, Adventure básicamente codificó todo el juego, limitando la flexibilidad y complicando la extensión y el mantenimiento del juego.

En Adventure, cada habitación tiene un identificador numérico, con una descripción relacionada en una matriz. Otra tabla define su breve descripción. Otra tabla enumera las habitaciones que se encuentran en relación con otras habitaciones por sus identificadores numéricos. Esto significa que para agregar una habitación, uno tiene que modificar todas estas tablas, teniendo cuidado de no causar problemas con esos cambios.

Rivalidad pirateada

Utilizando la experiencia del lenguaje natural que existía en LCS y los departamentos de IA en ese momento, fue Dave Lebling quien primero armó un analizador simple y un iniciador de máquina de juego similar al de Adventure, utilizando el lenguaje de programación MDL derivado de LISP. Utilizando la sólida capacidad de procesamiento natural de MDL, Marc Blank, Bruce Daniels y Tim Anderson se basaron en los esfuerzos de Lebling para crear el primer juego prototipo que finalmente se convertiría en el juego que hoy llamamos “Zork”.

La revolución de Zork fue que pudo captar oraciones completas debido a las fuertes características del lenguaje natural de MDL, a diferencia de los comandos simples de Adventure, donde “LAMP GET” y “GET LAMP” eran equivalentes. Podría capturar oraciones completas, e incluso varias oraciones (comandos) juntas en una sola oración. El potente analizador, junto con la facilidad de modelar nuevas salas en un estilo de objeto utilizando MDL, significó que después de la escritura del analizador y la máquina de juego, el mundo podría expandirse prácticamente a voluntad.

Una habitación en Zork podría definirse mediante un código simple como este:

<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)>

Esto define la “casa blanca” desde el inicio del juego, junto con las salidas de esta sala, las características especiales de las salidas (por ejemplo, una puerta cerrada) y los objetos en la sala. Esto asegura que todas las características de una habitación, incluida su descripción, descripción breve, características y etiquetas, estén ubicadas en un solo lugar. La máquina de juego puede activar etiquetas individuales (piezas) en las cámaras, manteniendo una base de datos central de todas las cámaras y su estado actual. La gestión de las salas que están conectadas mientras que el diseño del juego se realiza mediante nombres propios, no mediante identificadores numéricos en una tabla.

Un éxito rotundo

Baste decir que Zork fue absolutamente increíble en supercomputadoras. Fue portado al sistema operativo DEC TOPS-20, mucho más extendido, para el PDP-10 por demanda popular de otros jugadores interesados. Aunque los desarrolladores de Zork fueron lo suficientemente generosos como para regalar el juego de forma gratuita, lo distribuyeron como una versión cifrada de solo lectura. Incluso almacenaron el código fuente de Zork en un directorio seguro en el sistema operativo de la computadora ITS, para lo cual tuvieron que parchear el sistema operativo de la computadora ITS que de otro modo estaría completamente abierto y no seguro.

En este momento de la historia de la informática, todavía había relativamente pocas computadoras en el mundo. El concepto de una computadora doméstica solo se afianzó con la introducción de computadoras como la TRS-80 y la Apple II en 1977, aunque incluso ese sistema era increíblemente limitado en comparación con las supercomputadoras utilizadas para las aventuras de texto en ese momento. de estudiantes en los Estados Unidos. La idea de llevar un juego como Zork, un ejecutable de 1 MB, a los ordenadores domésticos parecía un poco imprudente.

Si bien las computadoras domésticas todavía escaseaban, el concepto de vender programas a consumidores habituales también era nuevo. Este fue el momento en que el Atari 2600 se vendió recientemente, comenzando con las consolas de juegos de segunda generación, que se podían expandir para jugar más de un juego con la ayuda de cartuchos adicionales. Era un mercado nuevo, con muchas preguntas entre el MIT, Stanford y otros estudiantes sobre la cultura de la piratería abierta contra el mundo del software comercial. Algunos, como Richard Stallman, no han cambiado mucho su actitud al respecto desde sus días de estudiantes en el MIT.

Mientras los desarrolladores de Zork se graduaban, se dieron cuenta de que con el éxito de Zork en sus manos, tenían la oportunidad de comercializarlo, llevando sus vidas y carreras en una dirección completamente diferente a sus objetivos originales. Con pocos obstáculos, Infocom se fundó el 22 de junio de 1979.

Ahora solo tenemos que usarlo

Esto dejó solo el pequeño detalle que Zork obtendría de los sistemas informáticos PDP-10 en esas delgadas computadoras domésticas; En ese momento, Infocom aún no tenía nada que vender. Se les ocurrió una variedad de ideas de juegos que podrían adaptarse para trabajar en computadoras domésticas, pero llevar Zork simplemente tenía demasiado sentido. Solo tenían que resolver el problema de obtener 1 MB de código de juego basado en MDL en microcomputadoras con 32 kB de RAM (o menos) y existencias relativamente anémicas.

Tampoco querían tener que llevar el juego por separado al TRS-80, Apple II o algunos sistemas nuevos. ¿Y si se pudiera utilizar el código fuente de MDL existente? Este fue el comienzo del diseño de la Z-Machine, como se la conoció.

Por supuesto, el enfoque inicial para que Zork fuera compatible con una microcomputadora fue restarle importancia al juego eliminando contenido. Después de muchos cortes tenían algo parecido al tamaño de Adventure. Luego hicieron algo similar con MDL, eliminando todas las funciones que no eran necesarias para Zork. Esto creó el lenguaje de implementación de Zork (ZIL), al que pudieron limpiar Zork de MDL. El compilador ZIL pudo producir digitalizaciones mucho más pequeñas que el compilador MDL.

Al observar la descripción de la linterna de latón de Zork en ZIL, podemos ver que es más fácil de leer que MDL:

<OBJECT LANTERN
(LOC LIVING-ROOM)
(SYNONYM LAMP LANTERN LIGHT)
(ADJECTIVE BRASS)
(DESC "brass lantern")
(FLAGS TAKEBIT LIGHTBIT)
(ACTION LANTERN-F)
(FDESC "A battery-powered lantern is on the trophy
case.")
(LDESC "There is a brass lantern (battery-powered)
here.")
(SIZE 15)>

Esto fue genial, por supuesto, pero esto todavía no hizo que Zork funcionara con TRS-80. Por supuesto, podrían escribir un compilador ZIL para cada plataforma, junto con el tiempo de ejecución de ZIL, para luego pasar mucho tiempo adaptando cada juego en cada plataforma de destino. En su lugar, optaron por escribir esta máquina virtual: la máquina Z. Esencialmente una plataforma ideal para juegos de aventuras de texto, que soporta directamente los binarios de ZIL y también implementa algunas optimizaciones, lo más importante fue el empaquetado de caracteres en 5 bits, que recuerda al código Baudot.

Con todas estas optimizaciones, una máquina virtual y un lenguaje de programación personalizado, lograron exprimir el mundo recortado de Zork I en un simple “archivo de historia” de 77 kB, junto con el intérprete (la VM). Debido a que esto todavía estaba demasiado en línea con los 32 kB de la microcomputadora principal de entonces, la VM implementa un sistema de memoria virtual, con solo los datos dinámicos (variables) cargados en la RAM y todos los datos estáticos (texto) de solo lectura del disquete cuando necesario.

Al futuro

El Apple II tenía disquetes con 140 kB de capacidad y el TRS-80 tenía 180 kB, lo que significaba que el problema de espacio estaba resuelto. Solo el intérprete tenía que ser optimizado para la plataforma de destino, lo que significaba que para todos los futuros juegos de Infocom se podía usar el mismo intérprete para cada juego lanzado, sin tener que portarlo a plataformas individuales. Tenían más contenido esperando en las alas de la versión para computadora de Zork. Fueron arreglados para una secuela.

Después del éxito comercial de Zork I, continuarían lanzando las partes cortadas de la versión original para computadora en forma de Zork II, así como Zork III. Año tras año, las ventas de Zork I continuaron creciendo y se convirtió en un juego esencial que a menudo se proporciona con nuevos sistemas. Se han desarrollado nuevas versiones de Z-Machine que han agregado funciones adicionales para juegos aún más avanzados. Hoy en día todavía podemos disfrutar de los juegos de Infocom sin tener que preocuparnos por problemas de compatibilidad: se han lanzado la fuente MDL para Zork y la fuente para otros juegos clásicos de Infocom. . Si no has jugado a Zork en mucho tiempo, o nunca, dale una vuelta y luego mira debajo del capó. No es poca cosa decir que un grupo de piratas informáticos en las universidades estadounidenses durante la década de 1970 probablemente definió el mundo de los juegos y la narración interactiva.

  • Ren dice:

    Nunca jugué a Zork, ¡pero esta es una historia interesante!

    • Erik camarada dice:

      aquí está: http://iplayif.com/?story=http://www.xs4all.nl/~pot/infocom/zork1.z3

  • Fred Thompson dice:

    enlaces if-archive a excelentes artículos sobre esto: http://www.ifarchive.org/indexes/if-archive/infocom/articles/
    Algunos de los mejores, desde el punto de vista del proyecto, son de los autores originales de Infocom: http://www.ifarchive.org/if-archive/infocom/articles/articles.zip (archivos de texto)

  • joelfinkle dice:

    Nota interesante: La aventura original se basó en el sistema Mammoth Cave en (principalmente) Kentucky. Los nombres de las habitaciones son los nombres que los espeleólogos dieron a las distintas habitaciones de la cueva.

    • Tim Green dice:

      Colossal Adventure se basa en Bedquilt Cave en Mammoth Cave Nat’l Park. Bedquilt Cave es básicamente la puerta trasera de Colossal Cave. Room Pry bar, Hall of the Mountain King, sala Y2 y otros son puntos de referencia en la cueva. Y2 es un signo de encuesta. El autor original William Crowthers fue miembro de la Cave Research Foundation, que es la organización que investiga y mapea el Mammoth Cave System.

  • Eric Cooper dice:

    Coloso * Cueva * Aventura.

    Escrito originalmente por Will Crowther en BBN, también en Cambridge.

    • Luz reactiva dice:

      Vine aquí para decir eso también, y veo que aún no se ha solucionado en el artículo. tsk, tsk

    • Andrew Green dice:

      ¡Oye Eric!

    • Eduardo dice:

      Cambridge, Massachusetts, Estados Unidos

  • Ostraco dice:

    Con todas estas optimizaciones, una máquina virtual y un lenguaje de programación personalizado, lograron exprimir el mundo cortado de Zork I en solo un “archivo de historia” de 77 kB, junto con el intérprete (la VM). Debido a que esto todavía era demasiado para los 32 kB del entonces microordenador principal, la VM ejecuta un sistema de memoria virtual, con solo los datos dinámicos (variables) cargados en la RAM y todos los datos estáticos (texto) de solo lectura del disquete cuando es necesario. . “

    Técnicas para tomar prestadas para las máquinas de hoy. Ahora solo tenemos que devolver el disquete.

    • mi dice:

      Con todas estas optimizaciones, una máquina virtual y un lenguaje de programación personalizado, lograron comprimir el programa web recortado en solo un “archivo de historia” de 77 GB, junto con el intérprete (la VM). Debido a que esto todavía era demasiado para la microcomputadora de 32 GB de la época, la VM implementa un sistema de memoria virtual, con solo los datos dinámicos (variables) cargados en la RAM y todos los datos estáticos (texto) de solo lectura del SSD cuando es necesario. “

      Allí lo actualicé para implementaciones modernas de JavaScript.

      • Foo dice:

        Ah, eso duele. Muy similar a la realidad por comodidad.

      • Rollyn01 dice:

        Realmente no necesitaba el combustible de pesadilla, pero afortunadamente. / s

  • Tentoes dice:

    Anteriormente jugaba aventuras el viernes por la noche con una máquina de computadora, luego mi propia computadora CP / M. Zork parecía un poco superficial en comparación: resolviste un rompecabezas, ingresaste, obtuviste un tesoro y continuaste, mientras que en la aventura, después de resolver un rompecabezas, había mucho más por explorar. Encontré una aventura para Windows, ¡y mis hijos la disfrutaron en los 90!

  • Simona dice:

    Jugué a Zork cuando era joven en Commodore 64, luego, unos años más tarde, alrededor de 1992, tuve el placer de conocer a Patrick Volkerding en Moorhead State University, quien me presentó a Slackware. Honestamente, no recuerdo si fue esa distracción u otra, pero pronto descubrí una copia de Adventure en una de mis instalaciones de Linux. Yo * tal vez * incluso lo tengo flotando en algún lugar. Tengo montones de discos duros viejos … y sí, disquetes, aunque sospecho que la mayoría de ellos ahora están dañados.

  • Fred dice:

    En el ’83 tuve Zork para mi (papá) TRS-80, y pensé que era muy bueno. Luego, durante un viaje escolar, comencé a jugar Zork en una computadora, ¡y la diferencia me conmovió absolutamente! El análisis lingüístico fue superior en casi todo. Perdí mucho entusiasmo desde que jugué al TRS-80 Zork ese día.
    Últimamente he vuelto a estar interesado en Zork, pero una vez he visto copias que se ejecutan en emuladores de microcomputadoras de los 80. ¿La versión “Mainframe” de Zork se “llevó” alguna vez a la computadora?

    • Torbjörn Andersson dice:

      > ¿La versión “Mainframe” de Zork alguna vez se ha “portado” a la computadora?

      He visto varios intentos de llevarlo, aunque muchos parecen estar basados ​​en versiones anteriores del juego y / o la versión de Fortran. Y algunos están hechos con otros lenguajes de creación de juegos de aventuras, lo que probablemente significa que el analizador y el modelo del mundo son sutilmente diferentes del original.

      Algo de esto se puede encontrar en https://ifdb.tads.org/viewgame?id=4gxk83ja4twckm6j

      Otro intento que vi fue implementar suficiente MDL para lanzar el juego desde una versión de parche de la fuente original. Aunque lo que vi al respecto parecía incómodo de usar y tenía su propia porción de errores nuevos.

      Esto se puede encontrar en http://www.ifarchive.org/indexes/if-archive/programming/mdl/interpreters/confusion/

      Después de todo, ¿y quizás lo más prometedor? – hay otro proyecto para llevar el código fuente MDL original a C ++, haciendo solo cambios menores en el camino. No trabajé lo suficiente para jugarlo más que al principio, pero el autor dijo que debería poder jugarse hasta el final (con la advertencia de que las cosas podrían haberse estropeado desde la última vez que lo probó). Envié algunos informes de errores pequeños y él respondió con bastante rapidez.

      Este proyecto se puede encontrar en https://bitbucket.org/jclaar3/zork/src/master/ y la sección de Descargas debe tener versiones para Windows, Mac y Linux.

      • Fred dice:

        Gracias por esos enlaces !!!

    • James J. McKenzie dice:

      Infocom News ha lanzado un conjunto de discos muti con mapas para la computadora. Estaba en 3 1/2 micro disquetes

  • Graham Tanner dice:

    Recuerdo haber jugado esto (Colossal Cave) en una computadora Honeywell Level-66 en 1982. Era una versión puramente basada en texto. Recuerdo la primera vez que jugué, perdí muchísimo (!) Y un colega me explicó la necesidad de dibujar un mapa de dónde estabas, qué podías ver y qué había en cada lugar. Entonces, la próxima vez que jugué, progresé mucho más, pero aún así morí. Pero muy graciosos por igual.
    Después de algunas semanas de jugar (¡y morir!), Me mostró el mapa que había creado y me di cuenta de que había cubierto aproximadamente el 20% de todo.
    No estoy seguro de la implementación original del juego, pero el nuestro te dio una puntuación al final cuando moriste. Creo recordar que la nuestra era una puntuación de un máximo de 360 ​​puntos posibles. Algún tiempo después, después de una actualización de O / S, cambió a un máximo de 366 puntos, y pasamos años tratando de encontrar una habitación nueva u oculta.

    ¡Plugh!

    • Elliot Williams dice:

      xyzzy.

      Yo era solo un niño en ese momento, pero 300 baudios y la cuenta de mi padre de “centervax” me llevaron a una aventura (Colossal Cave) en algún momento muy tarde en los 70 o principios de los 80. Sé que uno de los médicos de mi padre tenía un supuesto mapa del laberinto de pasadizos retorcidos en su oficina. Puede navegar a través de los pequeños cambios en la forma en que se forma la descripción, IIRC.

      Tiempos divertidos. Casi me reí tontamente después de “¿Seguramente no planeas luchar contra el dragón con tus propias manos?”

      • Roberto dice:

        ¡Engañar!

    • Tentoes dice:

      Tenía un mapa enorme de una cueva colosal dibujado con un piloto rojo en hojas de papel robadas por un tractor pegadas. Una vez me dispuse a trazar un mapa del laberinto de pasadizos retorcidos de todos modos, dejando caer cosas (el cojín ANTES del jarrón) en las habitaciones, pero no terminé.

  • MattyD dice:

    Puerto FPGA de la máquina Z alrededor de 2016 https://www.youtube.com/watch?v=2fNBkUCjhcE

  • Garolo dice:

    Lea el mensaje de error creado si falta el archivo ‘dindx.dat’.

  • puntilla dice:

    Los nerds informáticos del instituto y yo estábamos jugando al zork en el ordenador pdp 1170.Creo que era un sistema final de pantalla verde multiusos, divertido en 1980 …
    En los 90, la tienda de software Dos tenía un descuento y saqué 3 o 4 de estos juegos basados ​​en texto como zork y los hice astutos con un archivo DOS para introducir la entrada del usuario y la salida del juego redirigiendo a los 1200 baudios -bbs que ejecuté. La línea telefónica podría elegir uno de los juegos y jugarlo. Incluso guardar y restaurar entre llamadas …
    Los desarrolladores retiran bbs.

  • rubypanther dice:

    A mediados de los 80, en sexto grado de Programación Inicial, impartido por Apple][nosdesanimarondejugarZorkyluegointentamosconstruirunaaventuraautopropulsada[nosanimaronajugarZorkyluegointentamosconstruirnuestranuevaaventura[niestiskuraĝigitajludiZorkkajposteprovikonstruinianproprantekstanaventuron[wewereencouragedtoplayZorkandthentrytobuildourowntextadventure

    Comencé en una aventura de texto, pero cuando terminé, escribí un editor de mapas sobre AD&D. Pero el DM prefería el papel gráfico, así que rápidamente cambié a escribir generadores de caracteres.

  • dodddummy dice:

    Alrededor del 2000, vi una GRAN pila de cajas grises en el contenedor de una tienda de segunda mano. No sabía cuáles eran, pero me preguntaba si estaban descartados. Entonces me preguntaron si podía tenerlos. Un cajero dijo que puedo, así que los llevé a casa. La pila tenía aproximadamente 5 pies de alto de los juegos de Infocom. La mayoría tenían todas las cosas buenas y estaban en excelentes condiciones para varias plataformas.

    Copié y vendí los juegos. Ganó más de $ 1000.

    Las delicias eran realmente geniales.

  • Dan dice:

    Vea el artículo de la-tecnologia sobre mi puerto Zork al microcontrolador Adafruit ItsyBitsy M4 Express. https://la-tecnologia.com/2018/11/08/put-an-itsybitsy-zork-in-your-pocket/

Alejandro Vargas
Alejandro Vargas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *