stringtranslate.com

Informar

Inform es un lenguaje de programación y un sistema de diseño para ficción interactiva creado originalmente en 1993 por Graham Nelson . Inform puede generar programas diseñados para las máquinas virtuales Z-code o Glulx . Las versiones 1 a 5 se lanzaron entre 1993 y 1996. Alrededor de 1996, Nelson reescribió Inform desde los primeros principios para crear la versión 6 (o Inform 6 ). [3] Durante la década siguiente, la versión 6 se volvió razonablemente estable y un lenguaje popular para escribir ficción interactiva. En 2006, Nelson lanzó Inform 7 (brevemente conocido como Natural Inform ), un lenguaje completamente nuevo basado en principios del lenguaje natural y un nuevo conjunto de herramientas basadas en una metáfora de publicación de libros.

Z-Machine y Glulx

Los compiladores de Inform traducen el código de Inform a archivos de historias para Glulx o Z-code , dos máquinas virtuales diseñadas específicamente para ficción interactiva. Glulx, que puede admitir juegos más grandes, es la opción predeterminada.

La máquina Z fue desarrollada originalmente por Infocom en 1979 para sus títulos de ficción interactiva. Como existe al menos un intérprete de este tipo para casi todas las plataformas principales y secundarias, esto significa que el mismo archivo de código Z se puede ejecutar en una multitud de plataformas sin modificaciones. Originalmente, Inform solo estaba destinado a la máquina Z.

Andrew Plotkin creó una versión no oficial de Inform 6 que también era capaz de generar archivos para Glulx , una máquina virtual que había diseñado para superar muchas de las limitaciones de la máquina Z, que ya tenía varias décadas de antigüedad. A partir de Inform 6.3, publicada el 29 de febrero de 2004, Inform 6 ha incluido soporte oficial para ambas máquinas virtuales, basándose en el trabajo de Andrew Plotkin. Las primeras versiones de Inform 7 no eran compatibles con Glulx, pero en agosto de 2006 se lanzó el soporte para Glulx.

Informar 6

Inform fue creado originalmente por Graham Nelson en 1993. En 1996, Nelson reescribió Inform desde sus principios básicos para crear la versión 6 (o Inform 6). Durante la década siguiente, la versión 6 se volvió razonablemente estable y se convirtió en un lenguaje popular para escribir ficción interactiva.

El sistema Inform 6 consta de dos componentes principales: el compilador Inform , que genera archivos de historias a partir del código fuente de Inform, y la biblioteca Inform , un conjunto de software que se encarga de la mayor parte del difícil trabajo de analizar la entrada de texto del jugador y realizar un seguimiento del modelo del mundo. El nombre Inform también hace referencia al lenguaje de programación Inform que entiende el compilador.

Aunque Inform 6 y Z-Machine fueron diseñados originalmente con la ficción interactiva en mente, se han desarrollado muchos otros programas, incluido un intérprete de BASIC , un tutorial de LISP (completo con intérprete), un juego de Tetris y una versión del juego Snake .

El compilador Inform 6

El compilador Inform genera archivos para Z-machine o Glulx (también llamados archivos de historia) a partir del código fuente de Inform 6 .

El lenguaje de programación Inform 6

El lenguaje de programación Inform está orientado a objetos y es procedimental . Un elemento clave del lenguaje son los objetos. Los objetos se mantienen en un árbol de objetos que enumera las relaciones padre-hijo entre los objetos. Dado que la relación padre-hijo se utiliza a menudo para representar la ubicación, a menudo se dice que un objeto que es el padre de otro objeto lo "contiene". Los objetos se pueden mover por todo el árbol. Normalmente, los objetos de nivel superior representan habitaciones y otras ubicaciones dentro del juego, que pueden contener objetos que representan el contenido de la habitación, ya sean elementos físicos, personajes no jugadores, el personaje del jugador o efectos de fondo. Todos los objetos pueden contener otros objetos, por lo que un livingroomobjeto puede contener un insurancesalemanobjeto que contiene un briefcaseobjeto que contiene el insurancepaperworkobjeto.

En las primeras versiones de Inform, los objetos eran diferentes de la noción de objetos de la programación orientada a objetos, en el sentido de que no existían las clases. Las versiones posteriores añadieron compatibilidad con las definiciones de clases y permitieron que los objetos fueran miembros de las clases. Los objetos y las clases pueden heredar de varias clases. Los juegos de ficción interactiva suelen contener muchos objetos únicos. Por este motivo, muchos objetos de Inform no heredan de ninguna clase, salvo de la "metaclase" Object. Sin embargo, los objetos suelen tener atributos (propiedades booleanas, como sceneryo edible) que son reconocidos por la biblioteca de Inform. En otros lenguajes, esto normalmente se implementaría mediante herencia.

A continuación se muestra un ejemplo sencillo del código fuente de Inform 6.

! Los corchetes definen una rutina. Esta es la rutina principal, que no acepta argumentos. [  Main ;  print  "Hola, mundo! ^ " ; ];

Las partes procedimentales, declaraciones y operadores, se han tomado prestado en gran medida de C, con la notable excepción de que -->xen lugar de [x]se utiliza para tomar subíndices de matriz. Las rutinas se definen entre corchetes, como en la Mainrutina anterior, [5] pero se invocan entre corchetes como en C. El carácter @se utiliza para escapar caracteres y para invocar códigos de operación de máquina Z sin procesar. [6]

Informar a la biblioteca 6

El sistema Inform también contiene la biblioteca Inform, que automatiza casi todo el trabajo más difícil involucrado en la programación de ficción interactiva ; específicamente, incluye un analizador de texto que da sentido a la entrada del jugador y un modelo mundial que realiza un seguimiento de cosas como objetos (y sus propiedades), habitaciones, puertas, el inventario del jugador, etc.

El compilador Inform no requiere el uso de la biblioteca Inform. Hay varias bibliotecas de reemplazo disponibles, como Platypus [7] e InformATE, una biblioteca que codifica Inform en español. Algunos juegos pueden no usar ninguna biblioteca, como un puerto directo de Zork a Inform 6. [5]

Ejemplo de juego

A continuación se muestra un ejemplo de código fuente de Inform 6 que utiliza la biblioteca Inform. El código de Inform 6 que se muestra a continuación se puede utilizar en Inform 7, pero no sin una demarcación especial que indica que se trata de código heredado integrado.

 Historia  constante "Hola deducible" ; Título constante  " ^ Un ejemplo interactivo ^ " ; Incluir  "Parser" ; Incluir  "VerbLib" ;[  Inicializar ;  ubicación  =  Sala_de_estar ;  "Hola Mundo" ; ];Objeto  Cocina  "Cocina" ; Objeto  Front_Door  "Puerta de entrada" ;Objeto  Living_Room  "Sala de estar"  con  descripción  "Una sala de estar cómodamente amueblada". ,  n_to  Cocina ,  s_to  Puerta de entrada ,  tiene  luz ;Objeto  ->  Vendedor  "vendedor de seguros"  con  el nombre  'seguro'  'vendedor'  'hombre' ,  descripción  "Un vendedor de seguros con un  traje de poliéster de mal gusto. Parece ansioso por hablar contigo." ,  antes de  [;  Escuchar :  mover  Insurance_Paperwork  al  jugador ;  "El vendedor te aburre con una discusión  sobre pólizas de seguro de vida. De su  maletín saca algunos papeles que  te entrega." ;  ],  tiene  animación ;Objeto  ->  ->  Maletín  "maletín"  con  nombre  'maletín'  'estuche' ,  descripción  "Un maletín negro, ligeramente desgastado." ,  tiene  contenedor ;Objeto  ->  ->  ->  Trámites_de_seguros  "trámites de seguros"  con  nombre  'trámites'  'papeles'  'seguro'  'documentos'  'formularios' ,  descripción  "Página tras página de pequeños documentos legales." ;Incluir  "Gramática" ;

Juegos destacados desarrollados en Inform 6 o versiones anteriores

Informar 7

El 30 de abril de 2006, Graham Nelson anunció el lanzamiento de la versión beta de Inform 7 en el grupo de noticias rec.arts.int-fiction. [13] Inform 7 consta de tres partes principales: el IDE de Inform 7 con herramientas de desarrollo especializadas para probar ficción interactiva, el compilador de Inform 7 para el nuevo lenguaje y " Las reglas estándar ", que forman la biblioteca central de Inform 7. Inform 7 también se basa en la biblioteca Inform y el compilador Inform de Inform 6. El compilador compila el código fuente de Inform 7 en código fuente de Inform 6, que luego es compilado por separado por Inform 6 para generar un archivo de historia Glulx o Z-code . Inform 7 también escribe de forma predeterminada archivos Blorb , archivos que incluyen el código Z junto con "carátulas" opcionales y metadatos destinados a fines de indexación. El conjunto completo de herramientas de Inform 7 está actualmente disponible para Mac OS X , Microsoft Windows y Linux (desde 2007).

A partir de 2023 , Inform 7 y sus herramientas continúan en desarrollo. [14] Desde abril de 2022, Inform 7 es de código abierto y se desarrolla en GitHub . [15]

Inform 7 se llamó Natural Inform por un breve período de tiempo, pero luego se le cambió el nombre a Inform 7. Este antiguo nombre es la razón por la que el compilador Inform 7 se llama "NI". [16]

Informar 7 IDE

El IDE de Inform 7 en Mac OS X que muestra el código fuente y la madeja
El IDE de Inform 7 en Mac OS X que muestra el mapa de índice y la transcripción

Inform 7 incluye un entorno de desarrollo integrado (IDE) para Mac OS X, Microsoft Windows y Linux. El IDE de Mac OS X fue desarrollado por Andrew Hunter. El IDE de Microsoft Windows fue desarrollado por David Kinder. El IDE de Linux (conocido como GNOME Inform) fue desarrollado por Philip Chimento. [17]

El IDE de Inform 7 incluye un editor de texto para editar el código fuente de Inform 7. Al igual que muchos otros editores de programación, cuenta con resaltado de sintaxis. Marca las cadenas citadas en un color. Los encabezados de las secciones organizativas (volúmenes, libros, capítulos, partes y secciones) están en negrita y se hacen más grandes. Los comentarios se establecen en un color diferente y se hacen ligeramente más pequeños.

El IDE incluye un intérprete de código Z integrado . El intérprete del IDE de Mac OS X se basa en el intérprete de Zoom de Andrew Hunter, con contribuciones de Jesse McGrew [ cita requerida ] . El intérprete del IDE de Microsoft Windows se basa en WinFrotz .

A medida que un desarrollador prueba el juego en el intérprete integrado, el progreso se sigue en las vistas "skein" y "transcript" del IDE. El skein sigue los comandos del jugador como un árbol de posibilidades de ramificación. Cualquier rama del árbol se puede volver a seguir rápidamente, lo que hace posible volver a intentar diferentes caminos en un juego en desarrollo sin tener que volver a jugar las mismas partes del juego. Los caminos también se pueden anotar con notas y marcar como soluciones, que se pueden exportar como tutoriales de texto. La transcripción, por otro lado, sigue tanto los comandos del jugador como las respuestas del juego. Las respuestas correctas del juego se pueden marcar como "bendecidas". Al volver a jugar una transcripción o una rama del skein, se resaltarán las variaciones de la versión bendecida, lo que puede ayudar al desarrollador a encontrar errores.

El IDE también proporciona varios índices del programa en desarrollo. El código se muestra como una jerarquía de clases, un mapa IF tradicional, una tabla de contenidos similar a un libro y en otras formas. Al hacer clic en los elementos del índice, se accede al código fuente correspondiente.

El IDE presenta dos paneles uno al lado del otro para trabajar en ellos. Cada panel puede contener el código fuente en el que se está trabajando, el estado actual de la compilación, el skein, la transcripción, los índices del código fuente, una versión en ejecución del juego, documentación para Inform 7 o cualquier extensión instalada en él, o configuraciones. El concepto es imitar el manuscrito de un autor presentando dos "páginas enfrentadas" en lugar de una multitud de ventanas separadas. [13]

Lenguaje de programación Inform 7

Entre las características más destacables se incluyen una marcada tendencia hacia un estilo de programación basado en reglas declarativas y la capacidad de inferir tipos y propiedades de objetos a partir de la forma en que se utilizan. Por ejemplo, la declaración "Juan lleva un sombrero" crea una "persona" llamada "Juan" (ya que solo las personas pueden llevar cosas), crea una "cosa" con la propiedad "vestible" (ya que solo los objetos marcados como "vestibles" pueden llevarse puestos) y establece que Juan lleva el sombrero.

Otro aspecto destacable del lenguaje es el soporte directo para relaciones que rastrean asociaciones entre objetos. Esto incluye relaciones proporcionadas automáticamente, como un objeto que contiene a otro o un objeto que se usa, pero el desarrollador puede agregar sus propias relaciones. Un desarrollador puede agregar relaciones que indiquen amor u odio entre seres, o para rastrear qué personajes de un juego se han conocido.

Inform 7 es un lenguaje de programación altamente específico de dominio , que proporciona al escritor/programador un nivel de abstracción mucho mayor que Inform 6 y un código fuente resultante muy legible. Las declaraciones lógicas y aritméticas de propósito general se escriben en lenguaje natural (véase, por ejemplo, el ejemplo "Física" en The Inform Recipe Book ). [18]

En las primeras versiones de Inform 7, el compilador traduce el código a Inform 6, de forma muy similar a lo que CFront hizo con C++ y C. [16] El compilador actual (a partir de la versión 10 de 2022) también puede traducir el código directamente a C para un ejecutable nativo, [ dudosodiscutir ] y generar un "minisitio web de índice" que describe la historia. [19]

Ejemplo de juego

Las declaraciones en Inform 7 toman la forma de oraciones completas. Las líneas en blanco y las sangrías son estructuralmente significativas en algunos lugares. La forma básica de un programa Inform 7 es la siguiente:

"¡Hola, mundo!", de "IF Author"El mundo es una habitación.Cuando comience el juego, diga "¡Hola, mundo!"

Lo siguiente es una reimplementación del ejemplo "Hello Deductible" anterior escrito en Inform 7. Se basa en la biblioteca conocida como "The Standard Rules", que se incluye automáticamente en todas las compilaciones de Inform 7.

"Hola Deducible" de "IF Author"El título de la historia es "Un ejemplo interactivo" .La sala de estar es una habitación. "Una sala de estar cómodamente amueblada".La cocina está al norte de la sala de estar.La puerta de entrada está al sur de la sala de estar.La puerta principal es una puerta. La puerta principal está cerrada y bloqueada.El vendedor de seguros es un hombre en la sala de estar. La descripción es "Un vendedor de seguros con un traje de poliéster de mal gusto. Parece ansioso por hablar contigo". Entiende "hombre" como el vendedor de seguros.El vendedor de seguros lleva un maletín. La descripción es "Un maletín negro, ligeramente desgastado". Entiéndase por "maletín" el maletín.Los documentos del seguro están en el maletín. La descripción es "Página tras página de pequeños términos legales". Entienda " papeles" , "documentos" o "formularios" como los documentos.En lugar de escuchar al vendedor de seguros:" El vendedor te aburre con una discusión sobre pólizas de seguro de vida. De su maletín saca unos papeles que te entrega." ;trasladar la documentación del seguro al jugador.

Juegos notables escritos en Inform 7

Mystery House Possessed (2005), de Emily Short , [20] fue el primer juego de Inform 7 que se lanzó al público. Fue lanzado como parte del proyecto "Mystery House Taken Over".

El 1 de marzo de 2006, Short anunció el lanzamiento de tres juegos más: [21] Bronze [22] (un ejemplo de un juego tradicional de rompecabezas intensivo) y Damnatio Memoriae [23] (una continuación de su galardonado juego de Inform 6 Savoir-Faire ) a los que se unió The Reliques of Tolti-Aph [24] (2006) de Graham Nelson . Cuando se anunció la versión beta pública de Inform 7 el 30 de abril de 2006, se pusieron a disposición seis "ejemplos trabajados" de obras de escala media a grande junto con su código fuente, incluidos los tres juegos lanzados previamente el 1 de marzo. [25] [26] [27]

Floatpoint de Emily Short fue el primer juego de Inform 7 en obtener el primer lugar en la Competencia de Ficción Interactiva . [28] También ganó los Premios XYZZY 2006 a Mejor Escenario y Mejores NPC. [29] Rendition , de Nespresso (2007), es un experimento de arte político en forma de juego de aventuras de texto. Su enfoque de la tragedia ha sido discutido académicamente tanto por la Association for Computing Machinery [30] como por la Universidad de Cambridge . [31]

Véase también

Lectura adicional

Informar 6
Informar 7

Referencias

  1. ^ "Notas de la versión de Inform v10.1.0 y v10.1.1". github.com . Consultado el 26 de agosto de 2022 .
  2. ^ "Inform 7 v10.1.0 ahora es de código abierto". 28 de abril de 2022 . Consultado el 28 de abril de 2022 .
  3. ^ ab "La entrevista de SPAG: Graham Nelson y Emily Short sobre Inform 7". SPAG #44 . The Society for the Promotion of Adventure Games. 30 de abril de 2006 . Consultado el 7 de noviembre de 2015 .
  4. ^ "Versión v6.33". GitHub . Consultado el 26 de febrero de 2015 .
  5. ^ abc Plotkin, Andrew (17 de abril de 2019). "¿Qué es ZIL de todos modos?". Zarf . I6 sigue muy de cerca a C en este ejemplo.
  6. ^ "Manual del diseñador de Inform, v4, contenido". www.inform-fiction.org .
  7. Turner, Anson (14 de marzo de 2002). «Inform Platypus release 4» (en inglés) . Consultado el 4 de enero de 2007 .
  8. ^ Alan De Smet (14 de marzo de 2006). «Curses (Interactive Fiction Reviews)» (Maldiciones (Reseñas de ficción interactiva)) . Consultado el 1 de noviembre de 2006 .
  9. ^ De los 1219 juegos calificados en "Interactive Fiction Ratings", Anchorhead fue el juego mejor calificado al 4 de enero de 2007. ( "IF Rating Stats". Archivado desde el original el 11 de mayo de 2008 . Consultado el 4 de enero de 2007 .)
  10. ^ Montfort, Nick; Stuart Moulthrop (agosto de 2003). "Acéptalo, Tiger, acabas de ganar el premio gordo: lectura y juego de Cadre's Varicella" (PDF) . Archivado desde el original (PDF) el 6 de noviembre de 2009. Consultado el 6 de noviembre de 2009 .Publicado como Montfort, Nick; Moulthrop, Stuart (agosto de 2003). "Acéptalo, Tiger, acabas de ganar el premio gordo: leyendo y jugando a la varicela de Cadre". Fine Art Online . 17 (8). Universidad Estatal de Mississippi . Archivado desde el original el 13 de octubre de 2007.
  11. ^ "Photopia es un cuento, Varicela es un mundo". La aventura es la aventura . Enero de 2002 . Consultado el 4 de enero de 2007 .
  12. ^ "Descargar". Informar 7. Archivado desde el original el 27 de febrero de 2015 . Consultado el 15 de marzo de 2016 .
  13. ^ por Graham Nelson (30 de abril de 2006). "Inform 7: Public Beta". Grupo de noticias : rec.arts.int-fiction. Usenet:  [email protected] . Consultado el 4 de enero de 2007 .
  14. ^ Emily Short (18 de febrero de 2007). "Inform 7: Posibles desarrollos futuros". Grupo de noticias : rec.arts.int-fiction. Usenet:  [email protected] . Consultado el 30 de marzo de 2007 .Archivado también en Short, Emily ; Graham Nelson (enero de 2007). "Inform 7: Posibles desarrollos futuros". Archivado desde el original el 5 de septiembre de 2008 . Consultado el 31 de marzo de 2007 .
  15. ^ Nelson, Graham (13 de enero de 2023). "Historial de versiones de Inform 7". GitHub .
  16. ^ por Graham Nelson (30 de marzo de 2007). "Re: "Inform 7" es el nombre equivocado". Grupo de noticias : rec.arts.int-fiction. Usenet:  [email protected] . Consultado el 30 de marzo de 2007 .
  17. ^ "Página del proyecto SourceForge de GNOME Inform 7". Febrero de 2008.– Ahora trasladado a GitHub en Chimento, Philip (27 de diciembre de 2022). "tomate/inform7-ide". GitHub .
  18. ^ "10.1. Gases". ganelson.github.io .
  19. ^ "Estructura del compilador Inform 7". ganelson.github.io .
  20. ^ "La Casa Misteriosa Tomada". Archivado desde el original el 4 de mayo de 2006. Consultado el 4 de enero de 2007 .
  21. ^ Emily Short (a petición de Graham Nelson) (1 de marzo de 2006). "Tres juegos en Inform 7". Grupo de noticias : rec.games.int-fiction. Usenet:  [email protected] . Consultado el 4 de enero de 2007 .
  22. ^ Short, Emily (2006). «Bronce» . Consultado el 4 de enero de 2007 .
  23. ^ Short, Emily (2006). "Damnatio Memoriae" . Consultado el 4 de enero de 2007 .
  24. ^ Nelson, Graham (2005). "Las reliquias de Tolti-Aph" . Consultado el 4 de enero de 2007 .
  25. ^ Short, Emily (2006). «Bronce». Archivado desde el original el 10 de febrero de 2007. Consultado el 4 de enero de 2007 .
  26. ^ Short, Emily (2006). «Damnatio Memoriae». Archivado desde el original el 12 de diciembre de 2006. Consultado el 4 de enero de 2007 .
  27. ^ Nelson, Graham (2005). «Las reliquias de Tolti-Aph». Archivado desde el original el 6 de febrero de 2007. Consultado el 4 de enero de 2007 .
  28. ^ "12º Concurso Anual de Ficción Interactiva". 2006. Consultado el 12 de mayo de 2007 .
  29. ^ "Premios XYZZY: Juegos ganadores de 2006". Archivado desde el original el 15 de mayo de 2007. Consultado el 12 de mayo de 2007 .
  30. ^ "Diapositivas de la conferencia ACM Hypertext 2007 (PDF)" (PDF) .
  31. ^ "Diapositivas de la conferencia de la Universidad de Cambridge".
  32. ^ "Descargar el manual del diseñador de Inform". 1 de abril de 2006. Consultado el 4 de enero de 2007 .
  33. ^ "Acerca del manual del diseñador de Inform". 1 de abril de 2006. Consultado el 4 de enero de 2007 .
  34. ^ "Descargar la Guía para principiantes de Inform". 1 de abril de 2006. Consultado el 4 de enero de 2007 .Firth, Roger; Sonja Kesserich (agosto de 2004). "The Inform Beginner's Guide: Third Edition" (PDF) . Consultado el 4 de enero de 2007 .
  35. ^ Graham Nelson (10 de abril de 2006). «Lenguaje natural, análisis semántico y ficción interactiva» (PDF) . Archivado desde el original (PDF) el 14 de marzo de 2018. Consultado el 4 de enero de 2007 . {{cite journal}}: Requiere citar revista |journal=( ayuda )

Enlaces externos