<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Yo, programador &#187; Aventuras</title>
	<atom:link href="http://albertovilches.com/category/aventuras/feed" rel="self" type="application/rss+xml" />
	<link>http://albertovilches.com</link>
	<description>El pequeño Weblog de Alberto Vilches</description>
	<lastBuildDate>Mon, 30 Aug 2010 08:47:24 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Leisure Suit Larry y todos los juegos de Sierra con canvas HTML</title>
		<link>http://albertovilches.com/leisure-suit-larry-y-todos-los-juegos-de-sierra-con-canvas-html</link>
		<comments>http://albertovilches.com/leisure-suit-larry-y-todos-los-juegos-de-sierra-con-canvas-html#comments</comments>
		<pubDate>Sun, 18 Oct 2009 20:34:27 +0000</pubDate>
		<dc:creator>Alberto Vilches</dc:creator>
				<category><![CDATA[Aventuras]]></category>
		<category><![CDATA[Juegos]]></category>
		<category><![CDATA[Noticias]]></category>
		<category><![CDATA[aventuras graficas]]></category>
		<category><![CDATA[larry]]></category>
		<category><![CDATA[retro]]></category>
		<category><![CDATA[sierra]]></category>

		<guid isPermaLink="false">http://albertovilches.com/?p=486</guid>
		<description><![CDATA[			.gallery-1 {
				margin: auto;
			}
			.gallery-1 .gallery-item {
				float: left;
				margin-top: 10px;
				text-align: center;
				width: 50%;			}
			.gallery-1 img {
				border: 2px solid #cfcfcf;
			}
			.gallery-1 .gallery-caption {
				margin-left: 0;
			}

¿Te imaginas jugar y disfrutar de Leisure Suit Larry (1987, 16 colores) y de todos los juegos antiguos de Sierra desde tu navegador, sin flash, ni applets, ni runtimes, simplemente HTML y Javascript? Pues ahora ya es posible en [...]]]></description>
			<content:encoded><![CDATA[<style type='text/css'>
			.gallery-1 {
				margin: auto;
			}
			.gallery-1 .gallery-item {
				float: left;
				margin-top: 10px;
				text-align: center;
				width: 50%;			}
			.gallery-1 img {
				border: 2px solid #cfcfcf;
			}
			.gallery-1 .gallery-caption {
				margin-left: 0;
			}
</style>
<p>¿Te imaginas jugar y disfrutar de <a href="http://en.wikipedia.org/wiki/Leisure_Suit_Larry_in_the_Land_of_the_Lounge_Lizards">Leisure Suit Larry</a> (1987, 16 colores) y de todos los juegos antiguos de <a href="http://wiki.scummvm.org/index.php/Sierra">Sierra</a> desde tu navegador, sin flash, ni applets, ni runtimes, simplemente HTML y Javascript? Pues ahora ya es posible en <a href="http://sarien.net/">Sarien</a>.</p>
<p>Para empezar, su autor, <a href="http://martinkool.com">Martin Kool</a>, ha desarrollado un sistema de <a href="http://sarien.net/source">código abierto</a> para crear aventuras gráficas directamente en el navegador, utilizando la etiqueta <a href="http://www.w3schools.com/tags/html5_canvas.asp">canvas de HTML5</a>. Y además de crear este motor ha portado los siguientes juegos:</p>
<ul>
<li>Leisure Suit Larry in the Land of the Lounge Lizards</li>
<li>Gold Rush!</li>
<li>King&#8217;s Quest: Quest for the Crown</li>
<li>King&#8217;s Quest II: Romancing the Throne</li>
<li>King&#8217;s Quest III: To Heir is Human</li>
<li>Police Quest: In Pursuit of the Death Angel</li>
<li>Space Quest I: The Sarien Encounter</li>
<li>Space Quest II: Vohaul&#8217;s Revenge</li>
<li>The Black Cauldron</li>
</ul>
<div class="gallery-1">
<dl class='gallery-item'>
<dt class='gallery-icon'>
				<a href='http://albertovilches.com/?attachment_id=498' title='Leisure Suit Larry - Blonde scene'><img width="150" height="150" src="http://albertovilches.com/wp-content/uploads/lsl-blonde-150x150.png" class="attachment-thumbnail" alt="" title="Leisure Suit Larry - Blonde scene" /></a>
			</dt>
</dl>
<dl class='gallery-item'>
<dt class='gallery-icon'>
				<a href='http://albertovilches.com/?attachment_id=499' title='Leisure Suit Larry - Disco scene'><img width="150" height="150" src="http://albertovilches.com/wp-content/uploads/lsl-disco-150x150.png" class="attachment-thumbnail" alt="" title="Leisure Suit Larry - Disco scene" /></a>
			</dt>
</dl>
<p><br style="clear: both" />
</div>
<p>Personalmente lo he probado y me parece una pasada. El tiempo de respuesta es inmediato y la jugabilidad ha mejorado al no necesitar teclear las órdenes. Hay que recordar que en estas aventuras gráficas tan antiguas de Sierra, los personajes se movían con los cursores (ahora se puede usar el ratón también, aunque al algoritmo para resolver la ruta entre dos puntos no sea perfecto) y las acciones se escribían en inglés (take flower, talk to girl, order a drink) con el teclado. Sin embargo, con el nuevo sistema de Martin Kool, es posible abrir un menú contextual con el botón derecho del ratón y navegar por todas las acciones disponibles y todos los objetos visibles en la escena actual, lo que lo hace mucho más sencillo. Incluso podemos descubrir objetos nuevos (la mayoría parte del decorado) que podemos examinar para ver su descripción original y que en su momento no pudimos ver. Por ejemplo, nunca se me habría ocurrido examinar el arce &#8220;moose&#8221; o el ventilador &#8220;fan&#8221; en el primer Larry cuando lo jugué hace más de 15 años.</p>
<p>Estas son las características técnicas del motor para crear aventuras (y jugarlas). </p>
<ul>
<li>Compatible con Firefox 2+, IE 6+, Opera, Safari y Chrome</li>
<li>Funciona en iPhone y Wii (aunque todavía necesita algunos arreglos)</li>
<li>Se puede jugar con el ratón o con el teclado. Si te quedas atascado en algún punto (el algoritmo no es perfecto), puedes hacer doble click y el personaje se &#8220;teletransportará&#8221; a dicha posición.</li>
<li>Multijugador: varias personas pueden jugar la misma aventura, ¡a la vez! sin necesidad de crear rooms o establecer conexiones. Tu vas jugando y simplemente aparecen más jugadores en la escena. Les verás moverse, coger cosas (tranquilo, cogen las suyas, no las tuyas, así que nadie te estropeará nada) y podrás hablar con ellos (chat multiplayer). Simplemente genial (se puede deshabilitar)</li>
<li>Todas las áreas del juego son directamente accesibles a través de la barra de direcciones y es posible crear un bookmark con ellas.</li>
<li>Se pueden salvar y cargar partidas simplemente a través de una url. Es decir, al salvar una partida se genera una dirección (que puedes guardar como bookmark) con tu estado actual (posición, objetos, puntuación, etc). Al acceder de nuevo a esa dirección, se recupera el estado anterior y puedes seguir jugando.</li>
</ul>
<p>Si jugaste a las aventuras de Sierra antiguas, este es un buen momento para rendirles un homenaje y volverlas a jugar de nuevo de una manera mucho más comoda. Puedes navegar entre escenas, teletransportación del personaje con doble click, jugar y chatear con otros jugadores. Y gracias a su menú contextual, puedes explotar todos esos detalles del juego que en su momento no viste (acciones que no se te habrían ocurrido hacer u objetos que se te pasaron por alto).</p>
<h1>Como se hizo</h1>
<p>Todas estas aventuras antiguas de Sierra fueron desarrolladas con <a href="http://en.wikipedia.org/wiki/Adventure_Game_Interpreter">AGI</a>, un intérprete propietario desarrollado por la compañía específicamente para estos juegos. Cuenta Martin Kool en su página que, allá por el 2003, estuvo trabajando en un proyecto que consistía en extraer todas las imágenes de los juegos de Sierra, utilizando para ella la herramienta <a href="http://www.winagi.com/graphics/winagi.jpg">WinAGI</a>, un moderno editor de aventuras AGI. Cuatro años después, desarrolló una herramienta en .NET que convertía estas aventuras AGI en Javascript, extrayendo el código y los gráficos internos que faltaban, listos para ser mostrados en la web. Pero hubo un gran y enorme problea: Sierra usaba instrucciones <a href="http://en.wikipedia.org/wiki/Goto">GOTO</a> por todo su código, incluso dentro de bloques ifs anidados, y esto hacía imposible de transformar en código Javascript, ya que carece de esta instrucción y no es fácilmente simularla. Martin Kool y <a href="http://www.w3future.com/">Sjoerd Visscher</a>, un colega suyo, dieron con la solución: modificaron el decompilador para que extrajera los secciones internas de las estructuras if y las pusieron todas juntas en un gran switch/case, el cual podía imitar los números de línea de las instrucciones GOTO, manteniendo el rendimiento.</p>
<p>
<center><img src="http://sarien.net/img/code.png"><br/>Menuda locura&#8230;<br/><br/></center>
</p>
<p>Finalmente, con el código en Javascript &#8220;tuenado&#8221; para aceptar todos los GOTOs que tenían las aventuras de Sierra, los gráficos y un poco de programación, creó <a href="http://sarien.net">sarien.net</a> con todas las aventuras. Una labor realmente dura, pero que ha tenido un resultado muy satisfactorio. La historia completa en <a href="http://sarien.net/about">su página</a>.</p>
<div class="gallery-1">
<dl class='gallery-item'>
<dt class='gallery-icon'>
				<a href='http://albertovilches.com/?attachment_id=500' title='Leisure Suit Larry - Casino scene'><img width="150" height="150" src="http://albertovilches.com/wp-content/uploads/lsl-casino-150x150.png" class="attachment-thumbnail" alt="" title="Leisure Suit Larry - Casino scene" /></a>
			</dt>
</dl>
<dl class='gallery-item'>
<dt class='gallery-icon'>
<p>				<a href='http://albertovilches.com/?attachment_id=501' title='Leisure Suit Larry - Bed scene'><img width="150" height="150" src="http://albertovilches.com/wp-content/uploads/lsl-bed-150x150.png" class="attachment-thumbnail" alt="" title="Leisure Suit Larry - Bed scene" /></a>
			</dt>
</dl>
<p><br style="clear: both" />
</div>
<h1>Bola extra: Leisure Suit Larry in the Land of the Lounge Lizards (descarga juego original)</h1>
<p>Si quieres jugar a este juego completo, aquí puedes descargarlo junto con sus manuales originales, donde se explica como jugar y algunos detalles interesantes más. También se incluyen algunos enlaces con la solución, una guía a las preguntas de la edad y a DOSBox, el emulador necesario para hacerlo funcionar en cualquier plataforma:</p>
<ul>
<li><a class="res" href='http://albertovilches.com/wp-content/uploads/leisure-suit-larry.zip'>Juego completo &#8211; Leisure Suit Larry in the land of the lounge lizards</a>, formato ZIP.</li>
<li><a class="res" href="http://www.dosbox.com/download.php?main=1">Enlace a la página de descarga de DOS Box</a>, un emulador de un PCx86 con MSDos, con soporte para gráficos, sonido, ratón, joystick, etc necesario para jugar a todos estos juegos antiguos. Versión Windows, MacOS y Linux.</li>
<li><a class="res" href="http://www.allowe.com/Larry/1questions.htm">Lista de respuestas a las preguntas que verifican que tienes más de 18 años</a>, necesario para empezar a jugar (como es un juego de adultos, te hará 5 preguntas para verificar tu edad antes de empezar a jugar. Las preguntas son sobre temas americanos y jerga inglesa, por lo que pueden ser complicadas para los no americanos)
<li><a class="res" href='http://albertovilches.com/wp-content/uploads/Leisure_Suit_Larry_1_reference.pdf'>Leisure Suit Larry 1 &#8211; Reference</a> en PDF.</li>
<li><a class="res" href='http://albertovilches.com/wp-content/uploads/Leisure_Suit_Larry_1_manual.pdf'>Leisure Suit Larry 1 &#8211; Manual</a> en PDF.</li>
<li>Una <a class="res" href="http://www.ctv.es/USERS/jhc/faqhtml/larry1.htm">guía para acabarse el juego</a> y <a href="http://www.juegosantiguos.com.ar/solucion-larry.htm" class="res-link">otra guía distinta</a> más, por si acaso.
</ul>
<p>Vía: <a href="http://ajaxian.com/archives/sarien-multiplayer-game-engine-goes-open-source">Sarien: Multiplayer Game Engine goes Open Source</a> y <a href="http://ajaxian.com/archives/play-kings-quest-space-quest-and-more-using-canvas-tag">Play Kings Quest, Space Quest, and More… Using Canvas Tag</a></p>
<p>Qué lo disfrutéis. :-)</p>
<img src="http://albertovilches.com/?ak_action=api_record_view&id=486&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://albertovilches.com/leisure-suit-larry-y-todos-los-juegos-de-sierra-con-canvas-html/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Programadores de parsers anónimos</title>
		<link>http://albertovilches.com/programadores-de-parsers-anonimos</link>
		<comments>http://albertovilches.com/programadores-de-parsers-anonimos#comments</comments>
		<pubDate>Thu, 24 Jan 2008 22:49:06 +0000</pubDate>
		<dc:creator>Alberto Vilches</dc:creator>
				<category><![CDATA[Aventuras]]></category>

		<guid isPermaLink="false">http://albertovilches.com/programadores-de-parsers-anonimos</guid>
		<description><![CDATA[Pues sí, amigos, cada vez somos más los que hacemos un parser, ¿y por qué? He aquí la respuesta:

Bueno, no puedo quedarme más, tengo una cita con unos amigos&#8230;
(minutos más tarde..)
- Hola, me llamo Alberto Vilches y yo también estoy desarrollando un parser.
- Hola Alberto -dicen todos al unísono-, no estás solo, te apoyamos!
]]></description>
			<content:encoded><![CDATA[<p>Pues sí, amigos, cada vez somos más los que hacemos un parser, ¿y por qué? He aquí la respuesta:</p>
<p><center><a href="http://spac.caad.es/spip.php?article34" title="vineta1-3-6e0c1.jpg"><img id="image379" src="http://albertovilches.com/wp-content/uploads/vineta1-3-6e0c1.jpg" alt="vineta1-3-6e0c1.jpg" /></a></center></p>
<p>Bueno, no puedo quedarme más, tengo una cita con unos amigos&#8230;</p>
<p>(minutos más tarde..)</p>
<p>- Hola, me llamo Alberto Vilches y yo también estoy desarrollando un parser.<br />
- Hola Alberto -dicen todos al unísono-, no estás solo, te apoyamos!<!--4fd7bcd9e1d045dc3d5205e6f87fd26c--></p>
<img src="http://albertovilches.com/?ak_action=api_record_view&id=380&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://albertovilches.com/programadores-de-parsers-anonimos/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Vive una aventura</title>
		<link>http://albertovilches.com/vive-una-aventura</link>
		<comments>http://albertovilches.com/vive-una-aventura#comments</comments>
		<pubDate>Wed, 14 Mar 2007 14:34:46 +0000</pubDate>
		<dc:creator>Alberto Vilches</dc:creator>
				<category><![CDATA[Aventuras]]></category>
		<category><![CDATA[Internet/Geek]]></category>
		<category><![CDATA[Juegos]]></category>

		<guid isPermaLink="false">http://albertovilches.com/vive-una-aventura</guid>
		<description><![CDATA[¿Quieres saber qué es una aventura conversacional?

Más información, en el Club de Aventuras AD
]]></description>
			<content:encoded><![CDATA[<p>¿Quieres saber qué es una aventura conversacional?</p>
<p><center><object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/wh-LZ64HRNs"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/wh-LZ64HRNs" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object></center></p>
<p>Más información, en el <a href="http://www.caad.es">Club de Aventuras AD</a><!--a96cc4cb1f6d3c8413d8331c93ed6a31--></p>
<img src="http://albertovilches.com/?ak_action=api_record_view&id=340&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://albertovilches.com/vive-una-aventura/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Diccionarios de objetos</title>
		<link>http://albertovilches.com/diccionarios-de-objetos</link>
		<comments>http://albertovilches.com/diccionarios-de-objetos#comments</comments>
		<pubDate>Mon, 29 Jan 2007 22:18:19 +0000</pubDate>
		<dc:creator>Alberto Vilches</dc:creator>
				<category><![CDATA[Aventuras]]></category>

		<guid isPermaLink="false">http://albertovilches.com/diccionarios-de-objetos</guid>
		<description><![CDATA[Una de las partes más importantes de un aventura conversacional pura (de las que hay que teclear las ordenes) es la gramática que acepta el juego. Por un lado están los verbos, preposiciones, determinantes, que son los que forman las estructuras de las frases y por otro lado están los nombres de los objetos (ya [...]]]></description>
			<content:encoded><![CDATA[<p>Una de las partes más importantes de un aventura conversacional pura (de las que hay que teclear las ordenes) es la gramática que acepta el juego. Por un lado están los verbos, preposiciones, determinantes, que son los que forman las estructuras de las frases y por otro lado están los nombres de los objetos (ya sean personajes animados, decorado u objetos manipulables por el jugador).<br />
Ya desde los primeros parsers se utilizan sinónimos para los objetos, de manera que el jugador pueda referirse a un objeto concreto usando varios nombres.<br />
Por ejemplo Inform/Informate utiliza varios nombres para un mismo objeto que pueden utilizarse a la vez. De manera que el jugador puede utilizar cualquiera de ellos e incluso varios a la vez para referirse a un objeto. Por ejemplo, un objeto definido en Inform como</p>
<pre>
nombre 'tomate' 'verde' 'frito'
</pre>
<p>Podrá ser referido como &#8220;tomate verde&#8221;, &#8220;verde frito&#8221; y &#8220;frito tomate&#8221;.<br />
El parser que estoy desarrollando esta basado plenamente en Inform, de manera que cualquier programador que conozca este lenguaje tan solo tenga que aprenderse las correspondencias de un lenguaje al otro. Sin embargo, hay algunas cosas que he cambiado, como el tratamiento de nombres y sinónimos.<br />
Quería que el jugador pudiera referirse a los objetos con muchos nombres y combinaciones, pero no quería que pudiese teclear cosas que pueden ser absurdas. Así que utilicé la siguiente nomenclatura.</p>
<ul>
<li>Si una palabra aparece aislada, es obligatoria.</li>
<li>Si una palabra aparece con una interrogación al final &#8220;?&#8221;, es opcional.</li>
<li>Si varias palabras aparecen separadas por una barra, es obligatorio utilizar una de ellas.</li>
<li>Si varias palabras aparecen separadas por una barra y con una interrogación al final, es opcional utilizar solo una de ellas.</li>
</ul>
<p>Así, un ejemplo básico sería:</p>
<pre>
palabra1 palabra2? palabra21|palabra21 palabra3|palabra4?
</pre>
<p>De manera que la palabras 1 es obligatoria; la palabra2 es opcional; con las palabra21 y 22 es obligatorio utilizar una de ellas; y las palabras 3 y 4 son opcionales, pero sólo se puede utilizar una a la vez.<br />
Así, se pueden crear nombres compuestos de una manera fácil:</p>
<pre>
nombre tomate verde? frito?
</pre>
<p>Nos dará como resultado todos los siguientes nombres válidos: &#8220;tomate&#8221;, &#8220;tomate verde&#8221;, &#8220;tomate frito&#8221; y &#8220;tomate verde frito&#8221;, pero no aceptará &#8220;verde&#8221; o &#8220;frito tomate&#8221; como nombre válido.<br />
Podemos ir más allá, y utilizar nombres más complejos:</p>
<pre>
nombre estatua|estatuilla|figura de? color? azul|azulado?
nombre zapato|zapatos? deportivo|deportivos para correr
</pre>
<p>Si este sistema te parece interesante, te diré que en Java es muy fácil de programar. Más que nada porque el código que te trata una definición de nombre de este estilo y te devuelve un conjunto (Set) con todos los posibles nombres que coinciden con el objeto de la definición te lo adjunto aquí.<br />
Si alguien lo consigue mejorar u optimizar, que me lo envíe y lo publico.</p>
<pre>
private static Set multiply(String wordName) throws AdvParserException {
    Set oldSet = new LinkedHashSet();
    boolean first = true;
    boolean allOptional = true;
    for (StringTokenizer stringTokenizer = new StringTokenizer(wordName); stringTokenizer.hasMoreTokens();) {
        String v = stringTokenizer.nextToken();
        boolean optional = false;
        if (v.endsWith("?")) {
            optional = true;
            v = v.substring(0, v.length() - 1);
            if (first) {
                oldSet.add("");
            }
        } else {
            allOptional = false;
        }
        if (!first) {
            oldSet.remove("");
        }

        Set newSet = new LinkedHashSet();
        for (StringTokenizer stv = new StringTokenizer(v, "|"); stv.hasMoreTokens();) {
            String part = stv.nextToken();
            // Si tenemos conjunto anterior, le añadimos a cada una de las partes el token actual
            if (!oldSet.isEmpty()) {
                for (Iterator i = oldSet.iterator(); i.hasNext();) {
                    String oldPhrase = (String) i.next();
                    newSet.add((oldPhrase + " " + part).trim());
                }
            } else {
                newSet.add(part);
            }
        }
        if (optional) {
            newSet.addAll(oldSet);
        }
        oldSet = newSet;
        first = false;
    }
    if (allOptional) {
        throw new AdvParserException("Todas las palabras no pueden ser opcionales [" + wordName + "]");
    }
    return oldSet;
}
</pre>
<p>Espero que a alguien le sirva de utilidad para el desarrollo de una aventura o para cualquier otra cosa.</p>
<img src="http://albertovilches.com/?ak_action=api_record_view&id=319&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://albertovilches.com/diccionarios-de-objetos/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Aventuras online</title>
		<link>http://albertovilches.com/aventuras-online</link>
		<comments>http://albertovilches.com/aventuras-online#comments</comments>
		<pubDate>Fri, 26 Jan 2007 16:17:22 +0000</pubDate>
		<dc:creator>Alberto Vilches</dc:creator>
				<category><![CDATA[Aventuras]]></category>

		<guid isPermaLink="false">http://albertovilches.com/aventuras-online</guid>
		<description><![CDATA[En un post anterior, comento que en Septiembre de 2006 inicio un nuevo proyecto de parser online para realizar aventuras conversacionales. Sin embargo, se me olvidó mencionar que la inspiración (o la idea inicial) vino al ver esta aventura online: Yasmina&#8217;s quest. Pese a que se creó en el 2005, yo no la conocí hasta [...]]]></description>
			<content:encoded><![CDATA[<p>En un post anterior, comento que en Septiembre de 2006 inicio un nuevo proyecto de parser online para realizar aventuras conversacionales. Sin embargo, se me olvidó mencionar que la inspiración (o la idea inicial) vino al ver esta aventura online: <a href="http://www.granvino.com/jam/stuff/juegos/yq/">Yasmina&#8217;s quest</a>. Pese a que se creó en el 2005, yo no la conocí hasta Septiembre de 2006, cuando apareció en <a href="http://www.vidaextra.com/2006/09/01-8-juegos-gratis-sin-flash-ni-java">Vida extra</a>, de ahí que comenzara este desarrollo. Desde aquí quiero agradecer al autor Juan Alba Maldonado por haber sido inspiración en este proyecto mio que tengo entre manos.<br />
Sin embargo, no mencioné esta aventura porque no la consideraba un parser, sino un juego desarrollado en php. El propio autor me comenta que en su segunda versión de este motor (con el que se hizo <a href="http://www.granvino.com/jam/stuff/juegos/lavilladel6">La Villa del Seis</a>) si que se pueden desarrollar nuevas aventuras. Sin embargo, requiere codificación en php para definir objetos, localidades y, supongo (dado que no tiene documentación) los puzzles también. Por esta razón no mencioné ni a Yasmina&#8217;s Quest ni a la Villa del seis como parsers del tipo Paws, Inform, TADs o Hugo. Sin embargo, no deja de ser una herramienta con la que crear juegos ¿qué más da que no acepte una gramática configurable de frases de entrada (parser) o que para desarrollar requiera conocer php? ¿por eso va a ser menos? al fin y al cabo cumple estupendamente su función: crear aventuras online. Y por eso se merece una mención especial siempre que hable de mi proyecto: porque Yasmina&#8217;s Quest fue la primera aventura conversacional online y porque si no lo hubiera visto en septiembre de 2006, ahora mismo no estaría hablando de esto, sino de cualquier otra cosa. De nuevo: gracias Juan. :-)<br />
(Creo que no hay más juegos desarrollados con este motor salvo los que el propio autor ha creado. Si alguien conoce alguno o desarrolla algo que me lo envíe. Ahora amiguitos, ¡a jugar!)<!--05235e259e1a16bc1828559683b5b729--></p>
<img src="http://albertovilches.com/?ak_action=api_record_view&id=317&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://albertovilches.com/aventuras-online/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cómo hacer un parser de aventuras conversacionales (I)</title>
		<link>http://albertovilches.com/como-hacer-un-parser-de-aventuras-conversacionales-i</link>
		<comments>http://albertovilches.com/como-hacer-un-parser-de-aventuras-conversacionales-i#comments</comments>
		<pubDate>Wed, 24 Jan 2007 11:03:02 +0000</pubDate>
		<dc:creator>Alberto Vilches</dc:creator>
				<category><![CDATA[Aventuras]]></category>
		<category><![CDATA[Noticias]]></category>

		<guid isPermaLink="false">http://albertovilches.com/como-hacer-un-parser-de-aventuras-conversacionales-i</guid>
		<description><![CDATA[Introducción
Desde hace ya algunos meses llevo metido en un proyecto personal creo que bastante interesante. Se trata de un parser de aventuras conversacionales. Si, esos juegos que solo tienen texto y que para jugar, es necesario introducir órdenes del tipo &#8220;examinar caja, este, coger linterna, oeste, abrir puerta, norte, bajar escalera, encender linterna, comer manzana&#8221;. [...]]]></description>
			<content:encoded><![CDATA[<p><b>Introducción</b><br />
Desde hace ya algunos meses llevo metido en un proyecto personal creo que bastante interesante. Se trata de un parser de <a href="http://www.caad.es/baltasarq/explicaac.htm">aventuras conversacionales</a>. Si, esos juegos que solo tienen texto y que para jugar, es necesario introducir órdenes del tipo &#8220;examinar caja, este, coger linterna, oeste, abrir puerta, norte, bajar escalera, encender linterna, comer manzana&#8221;. Si todavía no sabes lo que es, puedes ver una reseña sobre &#8220;La aventura Original&#8221; <a href="http://retrojuegos.wordpress.com/2006/12/17/aventura-original/">aquí</a>. Y ya para rematar sobre cómo se juega, la guia paso a paso y solución completa al Don Quijote <a href="http://www.terra.es/personal2/amstradweb/aventura/quijote/quijote.htm">aquí</a>.</p>
<p>Y es que estos tipo de juegos son muy entrañables. Al no poseer gráficos (al menos, no como parte fundamental del juego, sino a modo anecdótico como decoración), su potencial se basa en la parte narrativa. </p>
<p><center><img id="image314" src="http://albertovilches.com/wp-content/uploads/aven-ad1.gif" alt="aven-ad1.gif" /></center></p>
<p>Al igual que un libro crea personajes y situaciones en nuestra imaginación, la literatura de la aventura conversacional nos transporta más allá de las letras para meternos en el papel del protagonista que interpretamos.</p>
<p><b>El género de la aventura conversacional</b><br />
Jugar a una aventura conversacional no te deja indiferente: o las odias (no tienen gráficos, hay que teclear y te aburres) o las amas (en el sentido en el que alguien puede amar algún tipo de juegos).<br />
Hubo un tiempo hace años, muchos años, en el que los ordenadores de 8 bits reinaban. Estos ordenadores tenían muy pocos recursos (en comparación con los de ahora) y las compañías de videojuegos creaban este tipo de aventuras. Pero hoy en día, ya no es negocio. Nadie paga por una aventura conversacional, ni nadie cobra. Los jugadores de antes son los autores de ahora, que con los nuevos parsers pueden crear más y mejores aventuras que las de <a href="http://www.pagina.de/proyecto_base">entonces</a>.<br />
No es un genero muerto, pero si en peligro (al menos en el mundo de habla hispana, ya que la aventura de habla inglesa es realmente potente). No de extinción, ya que los que ya pertenecen a <a href="http://www.caad.es">algún tipo de club</a> de amantes de la aventura no van a dejar de serlo, pero es necesario que la gente conozca y juegue estas aventuras para asegurarnos que <a href="http://usuarios.lycos.es/SPAC/">siempre permanezcan</a>. Pero, ¿cómo hacerlo si las grandes compañías hace tiempo que ya no desarrollan estos juegos? ¿tiene el genero suficiente potencial como para subsistir por sí mismo sin necesidad de grandes producciones? Yo creo que sí, pero ¿cómo? pues jugando aventuras, creando aventuras, creando <a href="http://www.caad.es/premioshispanos/">competiciones</a> de aventuras y, claro está, creando parsers.</p>
<p><b>Parsers</b><br />
Muchos parsers han nacido desde entonces y otros muchos han muerto también. Algunos todavía duran en su versión de 8 bits, que algunos autores utilizan en emuladores de Spectrum, como <a href="http://es.wikipedia.org/wiki/PAWS">Paws</a>. Otros, como <a href="http://www.inform-fiction.org">Inform</a>, <a href="http://www.adrift.org.uk/">Adrift</a>, <a href="http://www.tads.org/">TADS</a>, presentan nuevas formas de crear aventuras más modernas. Aunque todas en ingles, por suerte tenemos dos buenas traducciones de Inform (el parser a mi entender más potente y más extendido) al castellano llamadas <a href="http://www.caad.es/informate/">InformATE</a> e <a href="http://www.caad.es/informate/infsp/">INFSP</a></p>
<p>Entonces, crear un nuevo parser para realizar este tipo de aventuras ¿va a ayudar a la aventura conversacional hispana? No lo sé con exactitud, pero el enfoque de parser que estoy desarrollando así lo pretende. Llevo desde septiembre del 2006 programándolo y puedo decir que está bastante avanzado. No he querido hablar de ello antes por miedo a abandonarlo antes de acabarlo, como ha ocurrido con otros (por ejemplo, la programación de un juego de estrategia online basado en turnos, que en la actualidad está abandonado).<br />
¿Y cual es este enfoque? <k>La divulgación masiva de la aventura conversacional.</k> Hasta ahora, las aventuras se crean en un ordenador, se compilan, se distribuyen y se juegan en el ordenador de cada jugador. Si son autónomas, se ejecutarán directamente, sino, deben utilizar una máquina virtual, intérprete, kit de jugador o similar para arrancarlas. Demasiados pasos para una persona que nunca ha jugado una aventura.<br />
Sin embargo, ¿qué pasaría si con hacer click en una dirección te llevara a una página donde pudieras jugar a una aventura? No lo sé, pero voy a intentar comprobarlo.</p>
<p><b>Parte técnica</b><br />
El parser que estoy desarrollando (lo siento, todavía no le he puesto un nombre ¿alguna sugerencia?) es completamente online: tanto para crear como para jugar las aventuras, tan sólo hace falta un navegador con Javascript.<br />
Sí, ya sé lo que estáis pensando: existen intérpretes de <a href="http://zmpp.sourceforge.net/">máquina Z en formato Applet Java</a>, lo que permite jugar aventuras hechas con Inform en una página web. Pero no es lo mismo, yo pretendo ir más allá: el interfaz es html puro con todo lo que ello conlleva: css, texto, imágenes, javascript, flash, lo que sea. La actualización se hace directamente en el DOM de la página con Ajax por detrás (en concreto, usando <a href="http://prototypejs.org/">Prototype</a>). El servidor guarda las aventuras y las partidas. Ejecuta cada juego, recibiendo las ordenes enviada por todos los jugadores a la vez y enviandole a cada uno el resultado de su acción. Con la creación de aventuras sucede lo mismo: no hay compilador, el código se edita directamente en una página y lo compila el servidor. Como veis, un enfoque bastante distinto al del applet de la máquina Z.<br />
Esta desarrollado en Java (servlets y JSP) y por ahora no utiliza base de datos, pero creo que será necesario utilizar una para guardar los usuarios (hasta ahora todo se guarda en ficheros en disco). Dado que el parser esta realmente avanzado, en sucesivos posts iré comentando como lo he desarrollado, que problemas he tenido y como he enfocado todo el desarrollo. </p>
<p>Espero que a los amantes de la aventura les guste y les motive incluso a crear sus propios parsers. Y si no te gusta la aventura, pero te gusta programar, también te gustará. Hablaré de parseo de frases, diccionarios de palabras, ejecución de eventos, mundos virtuales con objetos contenedores donde meter o poner encima otros objetos, conversación con personajess, desarrollo de puzzles, interacción Ajax con Json para el envío de peticiones sin refrescar el navegador, software de Wikis para acometer la monolítica tarea de documentar el parser y, como no, sobre los problemas al crear tu propio lenguaje.<br />
Espero que os guste mi aventura sobre cómo crear un parser de aventuras. Dentro de muy poco, mucho más.</p>
<p>Más información:</p>
<ul>
<li><a href="http://ifarchive.flavorplex.com/if-archive/info/playgame.FAQ_spanish">FAQ de aventuras</a></li>
<li><a href="http://axxon.com.ar/rev/129/c-129Ensayo.htm">Aventuras conversacionales: El inicio del camino hacia la ficción interactiva por Marcelo Huerta</a></li>
<li><a href="http://es.wikipedia.org/wiki/Categor%C3%ADa:Aventura_conversacional">Categoría Aventuras conversacional en la Wikipedia</a></li>
<li>Algunos páginas personales dedicadas a las aventuras: <a href="http://ifgrendel.blogspot.com/">Literactiva</a>, <a href="http://usuarios.lycos.es/Urbatain/">Clérigo Urbatain</a>, <a href="http://www.caad.es/baltasarq/">Baltasar, el arquero</a> y <a href="http://lineadura.wordpress.com/">La línea dura</a> (muy técnico) y <a href="http://micronosis.com">agnas</a> (muy técnico también).</li>
<img src="http://albertovilches.com/?ak_action=api_record_view&id=313&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://albertovilches.com/como-hacer-un-parser-de-aventuras-conversacionales-i/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
