Kenshira

De WikiCAAD, la enciclopedia aventurera.

Kenshira es un un sistema de creación de aventuras conversacionales desarrollado por Alberto Vilches. El desarrollo se comenzó en septiembre de 2006 y todavía está en fase beta, aunque actualmente se continúa desarrollando. Kenshira es también un portal, kenshira.com, que sirve de comunidad donde cualquier usuario puede libremente crear y jugar aventuras sin necesidad de descargarse nada, solo utilizando un navegador.

Está alojado en Sourceforge y se distribuye bajo la licencia de software libre ISC, por lo que es posible descargar y usar su código al completo sin ninguna restricción. También es posible unirse al equipo de desarrollo como comitter para participar activamente en la programación del proyecto.

Contenido

Características

Pantallazo IDE

La principal característica de Kenshira es que es un sistema cliente-servidor basado en los protocolos Http y Json, lo que significa que puede usarse desde internet con un cliente ligero como un navegador Web. Al ejecutarse a través de un navegador Web, es posible usar cualquier componente HTML disponible para enriquecer la presentación de las aventuras: desde colores y tablas, CSS, javascript hasta componentes multimedia basados en flash o applets. Es posible introducir enlaces en las aventuras, de manera que podemos jugar introduciendo comandos, o haciendo clicks en enlaces para enviar ordenes. Está desarrollado integramente en Java y el lenguaje de programación que ofrece para crear las aventuras esta basado en InformATE, por lo que una persona que conozca InformATE o Inform_6 puede aprender Kenshira con mucha rapidez, debido a que se comparte la misma filosofía.

Es posible descargarse Kenshira para instalarlo en un ordenador o en un servidor de internet. Las posibilidades en este caso son varias:

  • Es posible tener un portal con una comunidad de usuarios abierta (como kenshira.com) donde no hay restricciones a la hora de entrar, y cualquiera puede jugar y crear aventuras
  • Es posible crear una página de juegos donde la gente puede jugar a ciertas aventuras, pero esta cortado el acceso a autores. Por ejemplo, una persona que haya creado una o varias aventuras y desea que la gente las juegue, pero que no desea que se utilice su página para que nuevos autores creen nuevas aventuras.
  • Es posible instalarlo en un ordenador sin internet, donde una persona puede instalar juegos, crearlos y jugarlos de una manera rápida, ya que la velocidad de conexión es inmediata al estar todo (cliente y servidor) en el mismo ordenador.

Componentes

Kenshira posee un modelo de mundo, un entorno propio de desarrollo Web (IDE) y un parser castellano.

Parser

  • Objetos con varios nombres (sinónimos). Objetos con nombre común o propio, género (masculino o femenino) y número (singular y plural). Permite el parseo de objetos y frases ambiguas.
  • Pronombres. El parser recuerda el último objeto utilizado. Ejemplo: "cogela" o "miralos" con verbos admitidos.
  • Palabra "todo" admitida. Ejemplo: "coger todo", "ponerte todo".
  • Gramatica completa con verbos compuestos, irregulares y reflexivos.
  • Desambiguación de objetos en función del contexto. Ejemplo: hay dos objetos con el mismo nombre "luna", uno es un personaje y otro es una puerta con espejo. Si se lanza la acción "abrir luna", el parser elige antes el objeto, que es abrible, antes que al personaje, que no lo es.
  • Desambiguación de verbos en función del contexto. Eejemplo: si hay un objeto "radio" que se puede encender, la frase "encender radio" provoca un resultado correcto y enciende la radio, ya que es un objeto "conmutable". Si la radio no fuese conmutable, el verbo "encender" provocaría una reacción hostil, ya que es un sinónimo del verbo "quemar".

Modelo del mundo

  • Objetos que se abren y cierran (con o sin llave), encienden y apagan. Puertas.
  • Objetos donde meter y dejar cosas encima, subirse y entrar. Estas cualidades no son excluyentes: un mismo objeto puede guardar cosas dentro y encima.
  • Personajes que realizan acciones. El propio jugador es un personaje más, y durante una partida se puede cambiar de personaje con el que jugar.
  • Conversaciones con personajes basadas en menús.
  • Acciones que invocan eventos que pueden ser capturados para modificar su comportamiento.
  • Extensible mediante librerías realizadas por terceros.
  • Daemons, personajes que se mueven solos y siguen rutas.

Entorno de desarrollo

  • Ver y editar el código fuente desde el navegador.
  • Recompilar y ejecutar las aventuras en caliente. Se puede modificar el código fuente y probarlo sin reiniciar una aventura.
  • Evaluación de expresiones en tiempo de ejecución. Permite modificar el entorno de la aventura, ejecutar métodos y consultar variables durante una partida.
  • Subir y utilizar recursos añadidos, como imágenes, html, css, etc.
  • Sintaxis iluminada para el código fuente y para el html, javascript y css.
  • Creación de scripts que permiten ejecutar una secuencia de acciones. Estos scripts sirven para probar las aventuras.

Lo que Kenshira no tiene

  • Deshacer la acción anterior (undo).
  • Parseo libre de texto, como por ejemplo: decir que buen dia hace a manolo. Alguno parsers admiten correctamente esta frase, aceptando la parte "que buen dia hace" como una entrada de texto libre. Actualmente Kenshira no admite este tipo de acciones.
  • Multijugador. Solo se permite un jugador por partida (aunque el mismo jugador puede encarnar distintos personajes).
  • Parseo de objetos agrupados. Ejemplo: "coger toda la fruta" o "coge la pera y la manzana" no son frases admitidas.
  • Empaquetado de aventuras. Todavía no es posible empaquetar una aventura con kenshira-desktop para poderla distribuir sin necesidad de haberse descargardo kenshira-desktop previamente.

Versiones

Existen dos versiones de Kenshira:

  • Kenshira web. Es una versión adaptada para desplegarse directamente en un contenedor de Servlets/JSP como Tomcat, Jetty, etc. ideal para personas que desean instalar Kenshira en internet o una red local como un portal o página de juegos. Requiere ciertos conocimientos para su instalación.
  • Kenshira desktop. Es una versión autocontenida con un servidor ligero (Winstone) que contiene todo lo necesario para ejecutar Kenshira en un ordenador. No requiere instalación, solo un JDK 1.5.

Lenguaje

El lenguaje usado para crear aventuras es OgnlScript, un lenguaje diseñado específicamente para Kenshira basado en una versión modificada de Ognl. OgnlScript añade bucles, estructuras condicionales y orientación a objetos.

Posee las siguientes características:

  • Basado en Ognl. Cada expresión es una expresión en Ognl.
  • Lenguaje compilado-interpretado. Cuando se realiza una compilación del código fuente, se crea una estructura propia de objetos en memoria, los cuales son interpretados rápidamente en tiempo de ejecución.
  • Reflexión. El lenguaje conoce sus propias funciones y variables.
  • Dinámico: Puede compilar y ejecutar nuevas expresiones en tiempo de ejecución.
  • Tipado débil. Las variables no necesitan especificar el tipo de dato que almacenan.
  • Orientado a objetos. Permite herencia entre clases con sobreescritura de métodos.
  • Sintaxis parecida a Java y Basic.

Ejemplo

Se muestra un ejemplo muy sencillo de aventura con dos objetos, un personaje y dos localidades:

include system/default

object Main:MainBase
    def start
        Estado.jugador = McAventura
        #jugador.accion(Mirar)
    end
endobject

/**
* El objeto jugador
*/
object McAventura:Personaje dentro:Habitacion
    nombre MS:Mc Aventura
    def alMirar: "Eres Mc Aventura, el protagonista de esta historia."
endobject

/**
* Localidades
*/
object Habitacion:Localidad
    var al_n=Cocina
    nombre MS:Habitación
    def alMirar: "Estás en tu habitación, cálida y soleada, de donde parten tus primeros recuerdos."
endobject

object Cocina:Localidad
    var al_s=Habitacion
    nombre MS:Habitación
    def alMirar: "Estás en tu cocina."
endobject

/**
* Objetos que se pueden manipular
*/
object Radio dentro:Cocina
    nombre FS:radio
    flags conmutable
    def alMirar: "Una radio para oir música."
endobject

object Paraguas dentro:Habitacion
    nombre MS:paraguas
    flags abrible, !abierto
    def alMirar: "Es un paraguas negro viejo, sirve para protegerte de la lluvia."
endobject

Aventuras

Debido al estado prematuro y la poca documentación de Kenshira, todavía no se han realizado aventuras por personas distintas al autor. Actualmente en kenshira.com es posible jugar a dos aventuras realizadas por Alberto Vilches:

  • Vampiro, versión en Kenshira de la aventura Vampiro original de Jaume Alcazo
  • Retorno al Castillo, versión ampliada de Vampiro presentada a la XComp 2 con el fin de demostrar las capacidades de Kenshira (premio a la mejor obra experimental, a la más popular y a la de técnica más innovadora).

Enlaces

Herramientas personales