Kenshira

De WikiCAAD, la enciclopedia aventurera.

Revisión a fecha de 19:07 28 dic 2008; Avilches (Discusión | contribuciones)
(dif) ←Revisión anterior | Examinar la revisión actual (dif) | Revisión siguiente→ (dif)

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

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

  • Permite el parseo de objetos y frases ambiguas. Objetos con varios nombres (sinónimos). Objetos con nombre común o propio, género (masculino o femenino) y número (singular y plural).
  • Conversaciones con personajes basadas en menús.
  • Objetos que se abren y cierran (con o sin llave), encienden y apagan. Objetos donde meter y dejar cosas encima, subirse y entrar. Puertas.
  • 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.
  • Acciones que invocan eventos que pueden ser capturados para modificar su comportamiento.
  • Guardar y cargar partidas en servidor y en local (descargables). Autosave.
  • Extensiable mediante librerías realizadas por terceros.
  • Daemons, personajes que se mueven solos y siguen rutas.
  • Gramatica completa con verbos compuesto, irregulares, 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 (ejemplo: 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"

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

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