Los juegos de computadora existen casi tanto como las computadoras mismas. Aunque es difícil de creer, la aventura de texto de Zork fue el Fortnite de su tiempo. Pero Zork también era algo más. En aras de la portabilidad y el ahorro de espacio, Zork se escribió en el Zork Implementation Language (ZIL), que utilizó activamente el concepto completamente nuevo en ese momento de programación orientada a objetos, y se ejecutó en una máquina virtual. Y todo esto sucedió en 1979. Los desarrolladores utilizaron todo tipo de trucos para adaptar la mayor parte del Imperio subterráneo posible a las computadoras que solo tenían 32 KB de RAM. Sin embargo, Zork no solo fue un avance tecnológico, sino también un hito importante en la historia de los juegos de computadora. Al mismo tiempo, no se levantó de la nada.
Módulo de chip de computadora Flip PDP-10 DECLa revolución de la computadora comenzó durante la Segunda Guerra Mundial, y en los años 50 y 60 no pensó en detenerse. Más y más sistemas informáticos accesibles para empresas y universidades aparecieron a la venta. El Laboratorio de Ciencias de la Computación (LCS) del Instituto Tecnológico de Massachusetts (MIT) tuvo la suerte de estar afiliado a
ARPA , que proporcionó a LCS y al Laboratorio de Inteligencia Artificial del MIT (anteriormente parte del
Proyecto MAC )
recursos informáticos significativos, principalmente proporcionados por
los sistemas
DEC PDP .
Como resultado, los estudiantes del Grupo de Modelado Dinámico MIT (partes de LCS) obtuvieron acceso al mainframe
PDP-10 KA10, la máquina más poderosa de la época. Aunque este PDP-10 en particular era el modelo original de 1968 con módulos de transistores
Flip Chip discretos y cableado envolvente, fue
muy modificado : agregó soporte para memoria virtual y páginas de memoria para expandir los 1.152 KB originales de memoria del núcleo.
La computadora que ejecutaba el SO del
sistema de tiempo compartido incompatible (ITS) desarrollado en MIT era un sistema multiusuario altamente funcional.
Naturalmente, se usaba principalmente para jugar.
¿Estás listo para la aventura?
En la primavera de 1977, apareció en el MIT un juego llamado
Colossal Cave Adventure (o "Adventure" para abreviar). Este juego fue el primer juego de computadora en el género de
ficción interactiva , lo que permitió al jugador realizar un viaje de texto a través de un gran sistema de cuevas, que, según los rumores, estaba lleno de tesoros. Casi como en los libros
"Elige tu aventura" , el jugador hace su elección, que lo mueve a través de las habitaciones de la cueva y, como resultado, descubre el tesoro y escapa, o se encuentra con su muerte prematura.
Inspirado por este juego, un grupo de estudiantes de LCS se dio cuenta de que podían superar este proyecto de Stanford. El principal punto débil de Adventure resultó ser que fue escrito en FORTRAN, un lenguaje que no era famoso por su buen trabajo con texto dinámico, especialmente por las necesidades de un juego del género de ficción interactiva. Esencialmente, Adventure estaba completamente cableado en el código, lo que limitaba la flexibilidad y complicaba la extensibilidad y el soporte del juego.
En Adventure, cada habitación tenía una identificación numérica, con la cual estaba asociada la descripción en la tabla. Otra mesa le pidió una breve descripción. En otra tabla, usando ID numéricos, se enumeró la ubicación de las habitaciones en relación con otras habitaciones. Esto significaba que para agregar una sala, tendría que editar manualmente todas estas tablas y tener cuidado para no causar problemas con estos cambios.
Competencia hacker
Utilizando la experiencia de trabajar con lenguajes naturales disponibles en los laboratorios de LCS e IA,
Dave Lebling primero escribió un analizador simple y sentó las bases para un motor de juego similar al motor Adventure. Para hacer esto, utilizó el lenguaje de programación derivado de
MDL LISP. Gracias a las poderosas capacidades de procesamiento del lenguaje natural,
Mark Blanc ,
Bruce Daniels y
Tip Anderson crearon, basado en el trabajo de Lebling,
crear , el primer juego prototipo, que con el tiempo se ha convertido en lo que hoy llamamos Zork.
La revolución de Zork fue que él, a diferencia de los simples comandos de Aventura (en los que LAMP GET y GET LAMP eran equivalentes), gracias a las excelentes capacidades de procesamiento del lenguaje natural de MDL, podía manejar oraciones completas. Podía procesar oraciones completas e incluso varias oraciones (equipos) combinadas en una sola oración. La presencia de un potente analizador combinado con la facilidad de modelar nuevas habitaciones en MDL en un estilo orientado a objetos significaba que después de escribir el analizador y el motor del juego, el mundo podría expandirse casi ilimitadamente.
Una habitación en Zork podría establecerse usando un código tan simple:
<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 establece la "casa blanca" desde el comienzo del juego, así como las salidas de esta sala, las propiedades especiales de las salidas (por ejemplo, una puerta cerrada) y los objetos en la sala. Esto garantiza que todas las propiedades de la habitación, incluida su descripción, descripción breve, propiedades y etiquetas, estarán en un solo lugar. El motor del juego podrá cambiar las etiquetas individuales (bits) de las habitaciones, almacenando una base de datos central de todas las habitaciones y su estado actual. Administre las conexiones de la sala durante la creación del diseño de un juego utilizando sus nombres, en lugar de las ID numéricas de la tabla.
Golpe fuerte
Baste decir que Zork fue absolutamente fantástico en mainframes. A pedido de otros jugadores interesados, se transfirió al sistema operativo mucho más común DEC
TOPS-20 para PDP-10. Aunque los desarrolladores de Zork fueron tan generosos que lo entregaron de forma gratuita, distribuyeron la versión cifrada de solo lectura. Incluso almacenaron el código fuente de Zork en una carpeta segura en el mainframe ITS, para lo cual tuvieron que parchear el sistema operativo ITS mainframe completamente abierto e inseguro.
En esta etapa de la historia de las computadoras en el mundo, todavía había bastantes. El concepto de una computadora hogareña apenas comenzaba a surgir: en 1977 aparecieron computadoras como la
TRS-80 y la
Apple II , pero incluso este sistema era increíblemente limitado en comparación con los mainframes en los que los estudiantes estadounidenses jugaban juegos de aventura de texto en ese momento. La idea de portar un juego como Zork, un archivo ejecutable de 1 MB, a las computadoras domésticas parecía muy prematuro.
Si bien las computadoras hogareñas todavía eran raras, el concepto de vender software a consumidores comunes también seguía siendo nuevo. Este fue el momento en que el
Atari 2600 acaba de aparecer en el comercio minorista, lanzando la segunda generación de consolas de juegos, en la que no solo se podía jugar un juego con la ayuda de cartuchos insertados. Este era un nuevo mercado, que planteaba
muchas preguntas a los estudiantes del MIT, Stanford y otras instituciones educativas sobre la oposición de la cultura hacker al mundo del software comercial. Algunos, como
Richard Stallman , no han cambiado sus creencias desde sus días de estudiante en el MIT.
Cuando los desarrolladores de Zork abandonaron el instituto,
se dieron cuenta de que el éxito del juego estaba en sus manos: tenían la oportunidad de comercializarlo, de dirigir su vida y carrera en una dirección completamente nueva en relación con sus objetivos originales. Entonces, casi sin el menor obstáculo, el 22 de junio de 1979 se fundó la empresa Infocom.
Ahora solo necesitamos portarlo
Solo hubo una pequeña advertencia al trasladar Zork de los sistemas mainframe PDP-10 a las computadoras domésticas pequeñas: en ese momento, Infocom no tenía nada que vender. A los desarrolladores se les ocurrieron varias ideas de juegos que podrían adaptarse para trabajar en computadoras domésticas, pero el valor principal era portar a Zork. Solo necesitaban resolver el problema de convertir 1 megabyte de código de juego MDL en microcomputadoras con 32 KB de RAM (o incluso menos) y pequeñas unidades.
Además, no querían portar el juego individualmente a TRS-80, Apple II y luego a nuevos sistemas. ¿Qué sucede si intenta usar un código MDL existente? Esto marcó el comienzo del desarrollo de lo que pronto se conocería como la
Z-Machine .
Por supuesto, al principio querían resolver el problema de compatibilidad de Zork con las microcomputadoras,
reduciendo el juego eliminando contenido. Cortando mucho, lograron acercarse al tamaño de Adventure. Luego hicieron algo similar con MDL, eliminando todas las características que Zork no necesitaba. Así es como surgió el
Lenguaje de Implementación de Zork (ZIL), en el que fácilmente podrían portar Zork con MDL. Después de eso, el compilador ZIL podría crear archivos ejecutables mucho más pequeños que el compilador MDL.
Mirando la descripción de la linterna de bronce de Zork en ZIL, podemos ver que es más fácil de leer que MDL:
<LINTERNA DE OBJETO
(SALA DE ESTAR LOCAL)
(LUZ DE LINTERNA DE LÁMPARA DE SINÓNIMO)
(LATÓN ADJECTIVO)
(DESC "linterna de latón")
(BANDERAS TAKEBIT LIGHTBIT)
(LINTERNA DE ACCIÓN-F)
(FDESC "Una linterna a batería está en el trofeo
caso ")
(LDESC "Hay una linterna de latón (alimentada por batería)
aquí ")
(TAMAÑO 15)>
Por supuesto, esto fue maravilloso, pero aún así no permitió lanzar Zork en el TRS-80. Por supuesto, en esta etapa podrían escribir un compilador ZIL para cada plataforma, así como un archivo ejecutable ZIL, para pasar mucho tiempo más adelante, configurando cada juego en cada plataforma objetivo. Pero en cambio, decidieron escribir una máquina virtual: Z-Machine. De hecho, era
una plataforma ideal para juegos de aventura basados en texto que soportaba directamente archivos binarios ZIL, y también implementaba muchas optimizaciones, la más importante de las cuales era el empaque de caracteres en 5 bits, que se parecía
al código Bodo .
Gracias a todas estas optimizaciones, una máquina virtual y su propio lenguaje de programación, lograron poner el mundo truncado de Zork I en un "archivo histórico" de 77 kilobytes junto con un intérprete (máquina virtual). Como todavía tenía más de 32 KB de memoria que las computadoras populares, se implementó un sistema de memoria virtual en la máquina virtual, en el que solo los datos dinámicos (variables) se cargaban en la RAM, y todos los datos estáticos (texto) se leían desde el disquete si era necesario.
Hacia el futuro
Los disquetes Apple II tenían un tamaño de 140 KB, y los discos TRS-80 tenían un tamaño de 180 KB, es decir, el problema de espacio se resolvió. Solo el intérprete tenía que ser optimizado para la plataforma de destino, y esto significaba que en el futuro el mismo intérprete podría usarse en todos los juegos lanzados por Infocom, sin la necesidad de portar a plataformas separadas. Todavía tenían mucho contenido cortado de la versión mainframe de Zork. Estaban listos para la secuela.
Tras el éxito comercial de Zork I, los desarrolladores continuaron produciendo piezas cortadas de la versión original de mainframe en forma de Zork II y Zork III. Año tras año, las ventas de Zork I continuaron creciendo, y se convirtió en un juego de compra obligada, a menudo incluido en nuevos sistemas. Se desarrollaron nuevas
versiones de Z-Machine , en las que se agregaron nuevas características para juegos aún más complejos. Hoy en día,
todavía podemos disfrutar de los juegos de Infocom sin preocuparnos por problemas de compatibilidad: se publicaron las
fuentes de Zork en MDL , así como el código fuente de
otros juegos clásicos de Infocom . Si nunca o alguna vez has jugado Zork en mucho tiempo, entonces intenta y mira lo que está sucediendo dentro del juego. Es posible decir sin la menor exageración que un grupo de piratas informáticos de universidades estadounidenses en la década de 1970 era muy probable que determinara el futuro del mundo de los videojuegos y la narración interactiva.