SPAC http://spac.caad.es/2/ es SPAC http://spac.caad.es/2/ http://spac.caad.es/2/ Estación acuario (1) http://spac.caad.es/2/spip.php%3Farticle257#forum913 Mon, 02 May 2011 18:05:49 +0100 2011-05-02T16:05:49Z Mon, 02 May 2011 18:05:49 +0100 Jenesis <u><a href="http://spac.caad.es/2/spip.php%3Farticle257">Estación acuario</a></u><br /> <div style='background-color: #80c8be; border-style: dotted;'> <b><a href="http://spac.caad.es/2/spip.php%3Farticle257#forum913">Estación acuario</a></b>, Jenesis (2 de mayo de 2011, 18:05) <p /> Gracias por la aportación Baltasar. <br />Un gran artículo con la calidad a la que nos tienes acostumbrados. </div> f913 SPAC 2.0 Marzo-2011 nº 11 (1) http://spac.caad.es/2/spip.php%3Farticle256#forum912 Thu, 14 Apr 2011 06:37:47 +0100 2011-04-14T04:37:47Z Thu, 14 Apr 2011 06:37:47 +0100 Pipo98 <u><a href="http://spac.caad.es/2/spip.php%3Farticle256">SPAC 2.0 Marzo-2011 nº 11</a></u><br /> <div style='background-color: #80c8be; border-style: dotted;'> <b><a href="http://spac.caad.es/2/spip.php%3Farticle256#forum912">SPAC 2.0 Marzo-2011 nº 11</a></b>, Pipo98 (14 de abril de 2011, 06:37) <p /> Buen trabajo, os habéis pegado una buena currada. Saludos a todos. </div> f912 SPAC 2.0 Marzo-2011 nº 11 (2) http://spac.caad.es/2/spip.php%3Farticle256#forum910 Mon, 04 Apr 2011 14:39:03 +0100 2011-04-04T13:49:11Z Mon, 04 Apr 2011 15:49:11 +0100 Incanus <u><a href="http://spac.caad.es/2/spip.php%3Farticle256">SPAC 2.0 Marzo-2011 nº 11</a></u><br /> <div style='background-color: #80c8be; border-style: inset;'><small> <b><a href="http://spac.caad.es/2/spip.php%3Farticle256#forum911">SPAC 2.0 Marzo-2011 nº 11</a></b>, Incanus (4 de abril de 2011, 15:49) <p /> Rápidamente corregido ¡Gracias, Joruiru! </small></div> <div style='background-color: #80c8be; border-style: dotted;'> <b><a href="http://spac.caad.es/2/spip.php%3Farticle256#forum910">SPAC 2.0 Marzo-2011 nº 11</a></b>, Incanus (4 de abril de 2011, 14:39) <p /> <p class="spip">Ojo: en la tabla de contenidos que aparece en el texto de esta página, aparece erróneamente mi tutorial para publicar aventuras en facebook, después del "<strong class="spip">IV MiniComp</strong>, por Joruiru": este error no ocurre en la tabla de contenidos ni en el contenido del PDF propiamente tal ;-)</p> <p class="spip">Por lo demás, como siempre, una edición impecable y artículos de gran interés.</p> <p class="spip">Saludos,</p> <p class="spip">[INCANUS]</p> </div> f910 SPAC 2.0 Marzo-2011 nº 11 (1) http://spac.caad.es/2/spip.php%3Farticle256#forum909 Mon, 04 Apr 2011 11:06:47 +0100 2011-04-04T09:06:47Z Mon, 04 Apr 2011 11:06:47 +0100 Jenesis <u><a href="http://spac.caad.es/2/spip.php%3Farticle256">SPAC 2.0 Marzo-2011 nº 11</a></u><br /> <div style='background-color: #80c8be; border-style: dotted;'> <b><a href="http://spac.caad.es/2/spip.php%3Farticle256#forum909">SPAC 2.0 Marzo-2011 nº 11</a></b>, Jenesis (4 de abril de 2011, 11:06) <p /> Una gran maquetación Joruiru, felicidades ! </div> f909 Verbos-gramática VS objeto-acción (1) http://spac.caad.es/2/spip.php%3Farticle253#forum907 Fri, 28 Jan 2011 20:27:38 +0100 2011-01-28T19:27:38Z Fri, 28 Jan 2011 20:27:38 +0100 jarel <u><a href="http://spac.caad.es/2/spip.php%3Farticle253">Verbos-gramática VS objeto-acción</a></u><br /> <div style='background-color: #80c8be; border-style: dotted;'> <b><a href="http://spac.caad.es/2/spip.php%3Farticle253#forum907">Verbos-gramática VS objeto-acción</a></b>, jarel (28 de enero de 2011, 20:27) <p /> <p class="spip">Me parece muy interesante esta filosofía de gramáticas orientadas a objetos concretos, y si a esto le sumamos una enorme librería de objetos tipo concienzuda y detalladamente programados con las acciones que pueden recibir y generar... Me estoy imaginando un IDE con una pestaña de diccionario en la que buscas el tipo de objeto que tienes pensado crear, por ejemplo un "tablón", y te aparece el objeto más parecido posible de la librería, en este caso una tabla. Entonces creas tu objeto como: clase_tabla tablon "tablon"; con lo que heredaríamos todas las acciones y características de la tabla, así sin más. En el mismo IDE consultamos el código de la tabla, y reemplazamos o ampliamos en nuestro código los detalles que necesitemos.</p> <p class="spip">Si este es el modelo mundo de AGE, ya digo que me parece una gran idea. Aunque más trabajosa que las gramáticas orientadas a acciones de Inform.</p> </div> f907 Verbos-gramática VS objeto-acción (13) http://spac.caad.es/2/spip.php%3Farticle253#forum876 Mon, 17 Jan 2011 13:56:41 +0100 2011-01-19T15:34:42Z Wed, 19 Jan 2011 16:34:42 +0100 dddddd <u><a href="http://spac.caad.es/2/spip.php%3Farticle253">Verbos-gramática VS objeto-acción</a></u><br /> <div style='background-color: #80c8be; border-style: inset;'><small> <b><a href="http://spac.caad.es/2/spip.php%3Farticle253#forum906">Verbos-gramática VS objeto-acción</a></b>, dddddd (19 de enero de 2011, 16:34) <p /> <blockquote class="spip"> <p class="spip">Sin embargo sí hay una cosa que no me convence de la denominación acción de Inform y es que como se ha dicho en este artículo y sus comentarios, la traslación entrada -> acción -> código varía en función de los objetos e incluso del contexto, y eso no lo puedes saber hasta que no se ha ejecutado toda la cadena de responsabilidad (o cómo se le llame en cada sistema),</p> </blockquote> <p class="spip">¿Quieres decir que I6 no tiene equivalente a esa "cadena"? (En I7 parece que los Kinds contextualizan la regla).</p> <blockquote class="spip"> <p class="spip">¿o quizá no hay que darle tantas vueltas y acción es un ente genérico quizá más cercano al verbo como palabra, por ejemplo en coger teléfono y coger palanca son la misma acción coger a pesar de que el concepto sea distinto?</p> </blockquote> <p class="spip">La acción es un ente genérico, que puede tener representación verbal directa en un determinado lenguaje humano y necesitar algo compuesto en otro. Pero para determinar que accion es desencadenada por una frase creo que necesitamos todo el contexto (objetos, estructura gramatical, etc...) que nos sea posible.</p> <p class="spip">Pienso que obtener ese contexto es en lo que es bueno nuestro cerebro y malas nuestras máquinas.</p> </small></div> <div style='background-color: #80c8be; border-style: inset;'><small> <b><a href="http://spac.caad.es/2/spip.php%3Farticle253#forum893">Verbos-gramática VS objeto-acción</a></b>, Al-Khwarizmi (17 de enero de 2011, 21:30) <p /> <p class="spip">Si realmente lo que te importa es escribir</p> <p class="spip">if ( equals(verb,"mirar") )</p> <p class="spip">en lugar de</p> <p class="spip">mirar:</p> <p class="spip">te invito a que escribas un preprocesador que convierta lo segundo en lo primero, y estaré encantado de integrarlo en AGE, que como sabes es software libre.</p> <p class="spip">A mí es que, sinceramente, no me importan tanto esas cuestiones puramente estéticas como para darme el trabajo, sobre todo mientras haya mejoras que hacer que afectan al funcionamiento real del sistema. Es una cuestión de prioridades. Ocultar al programador que existen esos ifs y ahorrarle unas pulsaciones de teclas sería bonito; pero no es prioritario.</p> </small></div> <div style='background-color: #80c8be; border-style: inset;'><small> <b><a href="http://spac.caad.es/2/spip.php%3Farticle253#forum892">Verbos-gramática VS objeto-acción</a></b>, Al-Khwarizmi (17 de enero de 2011, 21:23) <p /> <p class="spip">Sí, en AGE por un lado puedes mandar que un personaje ejecute una orden, y por otro lado puedes decirle algo.</p> <p class="spip">Si le mandas que ejecute una orden, se analiza exactamente igual que se hace con las órdenes del jugador (y ahí es donde entra el concepto de verbo).</p> <p class="spip">Si le dices algo, no hay un comportamiento predefinido, de momento lo que se hace es que el programador tiene acceso al String que has dicho, y que con eso se apañe para programar la respuesta del PSI. A la hora de "apañarse" puede usar la API de Strings de Java, que incluye también expresiones regulares, etc.</p> <p class="spip">Por supuesto, se puede definir una solución de más alto nivel por encima de ese "que se apañe"; pero el problema es un poco lo que has dicho tú, que hay cien mil maneras distintas en las que se pueden querer implementar conversaciones con PSI's. Mi idea es definir alguna librería para facilitar alguna de esas maneras, en versiones posteriores de AGE; pero como de momento a nadie le ha hecho falta no me he dado mucha prisa.</p> </small></div> ... 9 r&eacute;ponse(s) omise(s) ... <div style='background-color: #80c8be; border-style: dotted;'> <b><a href="http://spac.caad.es/2/spip.php%3Farticle253#forum876">Verbos-gramática VS objeto-acción</a></b>, mastodon (17 de enero de 2011, 13:56) <p /> <p class="spip">Creo que esto viene de un hilo del foro que lamentablemente no he mirado mucho porque he estado algo descolgado últimamente, así que igual me repito o digo algo que ya se ha superado :)</p> <p class="spip">Para mí hay tres conceptos diferentes que el buen parser debe ser capaz de interrelacionar con el mínimo trabajo para el programador (recalco esto último porque las herramientas deben ser eso: herramientas). Hasta ahora ninguno de los que conozco lo ha hecho de forma óptima.</p> <p class="spip">(no son definiciones académicas, ¿ok? )</p> <p class="spip">Verbos: palabras que denotan una acción y cuyo significado varía con el contexto de la conversación (como bien has explicado).</p> <p class="spip">Sintaxis: elaboraciones más o menos complejas donde la acción del verbo se aplica sobre un objeto, persona o escenario (ma o meno) y que nos sirven para expresar el resultado concreto que queremos conseguir. Es la herramienta que nos da el parser para interactuar con el mundo de juego.</p> <p class="spip">Acciones: las intenciones del jugador, en concepto.</p> <p class="spip">La acción no depende del contexto ni de los objetos. La acción NO se explica sobre la base de un objeto, ya que es un concepto general que justifica su existencia sin necesidad de lenguaje. Así que antes de definir ni una sola palabra del diccionario en un parser podemos saber que,por ejemplo, hay una acción que se explica de la siguiente manera:</p> <p class="spip">"Desplazar un objeto del entorno cercano a nuestras manos (o al bolsillo)."</p> <p class="spip">o siguiendo los ejemplos de tu artículo:</p> <p class="spip">"Desplazar el propio cuerpo desde una posición inferior hasta una a una altura superior, ya sea caminando o encaramándose a otro objeto"</p> <p class="spip">"Alzar un objeto o persona por encima de mi cabeza"</p> <p class="spip">Insisto, no hemos empezado a definir cómo decirle al parser que queremos coger algo, sólo el concepto de coger (o ascender o alzar). Es evidente que asociado a esa acción están las comprobaciones como que el objeto sea visible (y que exista!), que no esté, qué se yo, pegado a la pared, o sea muy pesado. Implicaciones de cortesía como que lo tenga otro personaje, etc. Entonces ¿para qué necesito asociar ese "concepto-acción" a cada objeto individual o clase de objetos? ¿No son aplicables estas comprobaciones y la ejecución misma de la acción a todos los objetos del mundo?</p> <p class="spip">Luego viene el punto delicado, la sintaxis. Transformar ese concepto-idea en palabras. Aquí es donde el creador del parser debería facilitar lo mejor posible al programador el establecer esta relación. Vale que ahí el lenguaje empieza a hacer de las suyas, pero podemos quitarnos la mayor parte del curro definiendo las formas más comunes de sintaxis de cada acción y luego (y aquí sí estaría justificado), asociar las excepciones al objeto. Claro, hay excepciones bastante tochas pero para ello existen las clases (en Java-AGE, I6), los Kinds (I7), las propiedades (I6, I7), etc.</p> <p class="spip">El modelo de I6 e I7 se basa en esta filosofía, que me parece bastante válida dentro de la complejidad que supone transformar palabras en ideas para un ordenador, y además sinceramente, creo que es la que menos código necesita, que de eso se trata.</p> <p class="spip">Por cierto también puede haber ambigüedad dentro de la misma relación verbo-objeto: "coger un autobús" dependerá de si vamos al trabajo o estamos en la grúa de un desguace. :P</p> </div> f876 Verbos-gramática VS objeto-acción (Acciones Universales) (7) http://spac.caad.es/2/spip.php%3Farticle253#forum899 Wed, 19 Jan 2011 07:53:12 +0100 2011-01-19T14:25:45Z Wed, 19 Jan 2011 15:25:45 +0100 dddddd <u><a href="http://spac.caad.es/2/spip.php%3Farticle253">Verbos-gramática VS objeto-acción</a></u><br /> <div style='background-color: #80c8be; border-style: inset;'><small> <b><a href="http://spac.caad.es/2/spip.php%3Farticle253#forum905">Verbos-gramática VS objeto-acción (Acciones Universales)</a></b>, dddddd (19 de enero de 2011, 15:25) <p /> <blockquote class="spip"> <p class="spip">¿O cuál es la mejora cualitativa que se pretende sobre los sistemas actuales?</p> </blockquote> <p class="spip">Independencia del parser (analizador gramatical).</p> <blockquote class="spip"> <blockquote class="spip"> <p class="spip">Pones en el método de actualización de Zacarías que mire si ahora el jockey está en estado montado, y si lo está, haces cosas.</p> </blockquote> <p class="spip">Sí, si quieres permitir que se monte.</p> </blockquote> <p class="spip">En el ejemplo Zacarías no queria montarse, queria reaccionar cuando alguien se monte en el caballo.</p> </small></div> <div style='background-color: #80c8be; border-style: inset;'><small> <b><a href="http://spac.caad.es/2/spip.php%3Farticle253#forum904">Verbos-gramática VS objeto-acción (Acciones Universales)</a></b>, dddddd (19 de enero de 2011, 14:52) <p /> <blockquote class="spip"> <p class="spip">por favor, por favor, por favor, leeros detalladamente las referencias</p> </blockquote> <p class="spip">En ello estamos, y estas conversaciones ayudan a comprenderlo todo mejor.</p> </small></div> <div style='background-color: #80c8be; border-style: inset;'><small> <b><a href="http://spac.caad.es/2/spip.php%3Farticle253#forum903">Verbos-gramática VS objeto-acción (Acciones Universales)</a></b>, dddddd (19 de enero de 2011, 14:47) <p /> <blockquote class="spip"> <p class="spip">Pones en el método de actualización de Zacarías que mire si ahora el jockey está en estado montado</p> </blockquote> <p class="spip">Ahá! Ahí aparece por fin la consecuencia de la acción. Entiendo. El estado indicado por la propiedad.</p> <blockquote class="spip"> <p class="spip">Alternativamente, también se pueden "escuchar" mensajes que suceden en la sala, es una manera sencilla de mirar si pasa algo utilizando una expresión regular.</p> </blockquote> <p class="spip">Esto es a lo que me refieron con tener que volver a parsear, posiblemente sin el contexto suficiente.</p> </small></div> ... 3 r&eacute;ponse(s) omise(s) ... <div style='background-color: #80c8be; border-style: dotted;'> <b><a href="http://spac.caad.es/2/spip.php%3Farticle253#forum899">Verbos-gramática VS objeto-acción (Acciones Universales)</a></b>, dddddd (19 de enero de 2011, 07:53) <p /> <p class="spip">Entre azúcares y otras cosas nos hemos diluido un poco... Voy a centrar de nuevo el tema en la "acción".</p> <p class="spip">Al-Khwarizmi dijo:</p> <blockquote class="spip"> <p class="spip">Una acción, por otra parte, para mí es algo que sucede en el mundo, o en términos de programación, un código que se invoca (en patrones de diseño, una acción es eso, un código que se invoca).</p> </blockquote> <p class="spip">Mel Hython dijo:</p> <blockquote class="spip"> <p class="spip">en AGE no veo las 'acciones' por ninguna parte, solo veo 'if' con los 'verbos'.</p> </blockquote> <p class="spip">Yo (que no lo conozco a fondo) no he visto más acciones en AGE que las ligadas al modelo de mundo mínimo que tiene... en forma de eventos onGet, onPut y poco más. Creo que esto deberia abstraerse/generalizarse más, pero no incluyendo mas onXXX, sino eliminandolos todos para posteriormente incluir el concepto de acción y eventos asociados. Puede que esté totalmente equivocado y que AGE tenga un mecanismo para ésto, pero permitidme seguir.</p> <p class="spip">Me parece entender que para Al-Khwarizmi, las acciones están dentro de los if() si las definimos como "código que se invoca". Creo que eso no las convierte en "acción". Y lo digo porque el resto de los objetos del mundo no "ven" que ha sucedido una acción... pueden ver unas consecuencias, pero no tienen una "etiqueta" que les defina lo que acaba de pasar.</p> <p class="spip">Ahora voy a exponer unas ideas condensadas (me corregis, por favor) tras charlar por IRC con presi y Eliuk.</p> <p class="spip">Considero que esa platónica "etiqueta de la acción" (que llamaré "accion universal" [AU] y que mastodon ha definido como independiente del lenguaje) es sumamente importante.</p> <p class="spip">Hay una cierta recursión conceptual, ya que para definir una AU normalmente utilizamos verbos, pero hay que verlo como cosas distintas. Una vez determinada, la AU es no-ambigua. Esto viene a ser lo que expone jenesis en el artículo.</p> <p class="spip">Las AAUU existirán para que:</p> <p class="spip">— Los objetos del mundo puedan reaccionar consecuentemente con su entorno, sin tener que hacer parseado adicional (¡para eso está el parser!). Un personaje no jugador (PNJ), Zacarias, puede presenciar un "montar", pero solo el caballo o el puzle puede informar de lo que puede pasar o ha pasado. Zacarias puede querer darle la fusta al jockey que acaba de subirse al caballo. En el caso del puzle puede querer acercarse a ayudar. Programar en Zacarias estas reacciones en base a strings parece complejo. Es mucho más directo si puede saber directamente la AU. Si los eventos de AGE permiten esto genial.</p> <p class="spip">— El autor que maneja objetos creados (reutilización+personalización) pueda manejar conceptos más concretos que ambiguos verbos.</p> <p class="spip">El programador de un objeto diferenciará acepciones de un mismo verbo. En un caballo (como objeto directo) "montar" puede ser "AU_poner_encima" o "AU_acto_sexual".</p> <p class="spip"><a href="http://foro.caad.es/viewtopic.php?p=53504#p53504" class="spip_out">Ejemplo</a> en el foro, aqui no lo sé formatear.</p> <p class="spip">El parser ha de obtener información [asociar_accion()] de los objetos, utilizar esa información y, posiblemente, volver a consultar a los objetos, dándoles más contexto para que puedan ofrecer información más precisa a su vez... hasta que por fin haya una AU que se pueda ejecutar (via acc_*) y provocar cambios directos en el mundo y reacciones indirectas en el entorno.</p> <p class="spip">¿Este proceso puede ser a lo que se referia Mel Hython con "asignador de acciones"?</p> <p class="spip">¿Os parece que tiene sentido ésto que salio del IRC?</p> </div> f899 Verbos-gramática VS objeto-acción (2) http://spac.caad.es/2/spip.php%3Farticle253#forum897 Tue, 18 Jan 2011 14:27:52 +0100 2011-01-18T15:21:16Z Tue, 18 Jan 2011 16:21:16 +0100 Al-Khwarizmi <u><a href="http://spac.caad.es/2/spip.php%3Farticle253">Verbos-gramática VS objeto-acción</a></u><br /> <div style='background-color: #80c8be; border-style: inset;'><small> <b><a href="http://spac.caad.es/2/spip.php%3Farticle253#forum898">Verbos-gramática VS objeto-acción</a></b>, Al-Khwarizmi (18 de enero de 2011, 16:21) <p /> <p class="spip">El soporte de internacionalización de AGE no está hecho, pero está pensado desde hace tiempo. Es compatible con la comparación de cadenas. Sencillamente, igual que ahora mismo hay una lista de verbos que te permite pasar por ejemplo de imperativo a infinitivo, se usaría una lista así para traducir los verbos a un idioma. O sea, por así decirlo, los verbos en el idioma de la aventura serían considerados como "formas verbales" del verbo en el idioma del programador.</p> <p class="spip">En realidad creo que es más fácil que con el sistema de gramáticas, porque una vez hecho ese soporte de internacionalización el autor no necesitará traducir ningún verbo, ni siquiera una vez. Con que esté definido ese fichero de equivalencias verbales, ya estará.</p> <p class="spip">En un estado más avanzado, se podrían introducir descripciones de los objetos asociadas a distintos idiomas, de forma que por ejemplo si un alemán y un inglés se conectaran a un MUD hecho con AGE, el alemán vería las descripciones en alemán y el inglés en inglés. Pero a eso no sé si llegaré algún día :D</p> </small></div> <div style='background-color: #80c8be; border-style: dotted;'> <b><a href="http://spac.caad.es/2/spip.php%3Farticle253#forum897">Verbos-gramática VS objeto-acción</a></b>, dddddd (18 de enero de 2011, 14:27) <p /> <p class="spip">Una cuestión importante, que no ha salido a relucir es...</p> <p class="spip">¿Alguna de las alternativa que se proponen dificultan o facilitan la internacionalización/traducción de las obras? Un buen sistema debe proporcionar esa flexibilidad. Mi primera <strong class="spip">intuición</strong> es:</p> <p class="spip">Parece que la existencia de unas "acciones universales" crea una capa intermedia entre la gramática (o giros propios de una lengua) y lo que acaba ocurriendo en la ficción, facilitando la traducción.</p> <p class="spip">Por otra parte, utilizar cadenas de texto en los objetos, para comparar con verbos, provocaria tener que rehacer la lógica del objeto durante la traducción, ya que determinados sinónimos en una lengua no tendrian el mismo sentido en otra. Esto provoca dificultades de reutilización.</p> <p class="spip">Creo que sí debe existir, de alguna manera, el concepto de verbo/acción, separado de las cadenas de texto. El sistema de AGE, pero con comparaciones desligadas de la pura cadena de texto podria ser una alternativa viable.</p> </div> f897 Verbos-gramática VS objeto-acción (3) http://spac.caad.es/2/spip.php%3Farticle253#forum894 Tue, 18 Jan 2011 09:52:13 +0100 2011-01-18T12:45:32Z Tue, 18 Jan 2011 13:45:32 +0100 Al-Khwarizmi <u><a href="http://spac.caad.es/2/spip.php%3Farticle253">Verbos-gramática VS objeto-acción</a></u><br /> <div style='background-color: #80c8be; border-style: inset;'><small> <b><a href="http://spac.caad.es/2/spip.php%3Farticle253#forum896">Verbos-gramática VS objeto-acción</a></b>, Al-Khwarizmi (18 de enero de 2011, 13:45) <p /> <p class="spip">No digo que la herencia como concepto abstracto sea superflua. Digo que la herencia en el caso particular de AGE es superflua, porque las propiedades te hacen todo lo que hace la herencia, y de forma más flexible. Esto es por la forma en que está planteado AGE en particular.</p> <p class="spip">Sobre mover objetos contra mover gramáticas, creo que no llegaremos a un acuerdo sobre qué es lo más importante porque hay varias maneras diferentes de diseñar y plantear aventuras, y según qué manera aplique uno, le vendrá mejor un sistema u otro. AGE está planteado desde el principio de forma orientada a objetos pura, y puramente bottom-up (ir agregando pequeñas partes hasta formar el todo), porque es la forma en que me gusta diseñar a mí. A ti y a Mel, por los planteamientos que hacéis, me parece que os gusta más diseñar top-down, así que seguramente se os ajuste más un enfoque menos centrado en los objetos. No discutiré cuál es mejor, porque tal vez no haya uno "mejor". A mí personalmente mi enfoque me gusta más y me hace más fácil el desarrollo de aventuras.</p> <p class="spip">Sí que me gustaría detallar una cosa, y es que... dices que "los objetos están íntimamente relacionados con la historia y el mundo de juego". Bueno, para mí la aventura ideal siempre ha sido una en la que la gran mayoría de los objetos son irrelevantes, como en la vida real, así que no deberían estar relacionados con la historia. Y creo que en muchas aventuras no se modela más que lo estrictamente necesario entre otras cosas porque los sistemas tampoco facilitan hacer otra cosa. Si para que en la casa donde investigo un asesinato haya un piano que se pueda tocar (pero que no ayude a avanzar la historia) tengo que andar yendo a la gramática a definir un verbo, pues no lo pongo. Si voy a una librería "objetos de la época actual" y digo, anda, un piano, lo copio y lo pego en mi aventura y pongo una flechita con el PUCK para indicar dónde está, y el piano funciona sin más, a lo mejor lo pongo, y de paso añado un cuadro y unas cortinas :D</p> <p class="spip">Los hitos fundamentales de la historia al final los vas a tener que programar igual, y no te va a salvar ni copiar objetos ni copiar gramáticas. Pero a la hora de dotar de detalle al mundo, copiar objetos tiene muchas ventajas.</p> </small></div> <div style='background-color: #80c8be; border-style: inset;'><small> <b><a href="http://spac.caad.es/2/spip.php%3Farticle253#forum895">Verbos-gramática VS objeto-acción</a></b>, dddddd (18 de enero de 2011, 13:37) <p /> <blockquote class="spip"> <blockquote class="spip"> <p class="spip">Y para otras ambientaciones, como la ciencia-ficción, nada impide que exista también una librería de objetos reutilizables de ciencia-ficción. Esto iría en la línea de las "épocas" de pyphiverses :)</p> </blockquote> <p class="spip">Nuevamente, más interesante es reutilizar el modelo de mundo dentro de una coherencia, y este incluye las gramáticas.</p> </blockquote> <p class="spip">Creo que aquí hablais practicamente de lo mismo. Mastodon, puedes echarle un ojo a la <a href="http://foro.caad.es/viewtopic.php?f=10&t=4531" class="spip_out">propuesta de pyphiverses</a>, si no lo has hecho ya, y verás que la jerarquia propuesta encaja con lo de mantener la coherencia, utilizando las "capas" correctamente.</p> </small></div> <div style='background-color: #80c8be; border-style: dotted;'> <b><a href="http://spac.caad.es/2/spip.php%3Farticle253#forum894">Verbos-gramática VS objeto-acción</a></b>, mastodon (18 de enero de 2011, 09:52) <p /> <p class="spip">La discusión sobre el azúcar sintáctico daría para otro artículo.</p> <p class="spip">Respecto al tema de este:</p> <blockquote class="spip"> <p class="spip">Para mí, los inconvenientes que has dado son más bien ventajas. Sí, hay que ser cuidadosos para traspasar una gramática, pero ¿para qué quieres traspasar una gramática? ¡Lo que interesa traspasar de una aventura a otra son los objetos!</p> </blockquote> <p class="spip">Esto ya lo ha ilustrado Mel. Lo que interesa es traspasar el modelo de mundo, incluyendo la gramática y algunos de los objetos. Entiendo que es lógico que el anillo de poder pase de la "Comunidad" a las "Dos torres", y de esta al "Retorno del Rey", pero no el anillo del nibelungo que para empezar habría que dotar con el poder de la invisibilidad. Lo que quiero decir es que los objetos está íntimamente relacionados con la historia y el mundo de juego, y este se traspasa como un todo. Si se programa con un mínimo orden esto es posible en cualquier lenguaje.</p> <blockquote class="spip"> <p class="spip">Y para otras ambientaciones, como la ciencia-ficción, nada impide que exista también una librería de objetos reutilizables de ciencia-ficción. Esto iría en la línea de las "épocas" de pyphiverses :)</p> </blockquote> <p class="spip">Nuevamente, más interesante es reutilizar el modelo de mundo dentro de una coherencia, y este incluye las gramáticas. No le veo sentido traspasar el ansible del "Mundo de Rocannon" a "Cita con Rama" (a riesgo de despertar la ira de Clarke desde su tumba)</p> <blockquote class="spip"> <p class="spip">En su momento la metí, porque bueno, "tenía" que haber herencia; pero en realidad el diseño del sistema la hace superflua.</p> </blockquote> <p class="spip">Tu mismo estás proponiendo una solución mejor, y desde luego nada superflua, al dar a entender que se podría asociar la interpretación de la gramática a algún tipo de clase base, incluso a un conjunto de métodos estáticos de clase, ya que esta aplica sobre todos los objetos del mundo menos las excepciones. Pero es fundamental separar el parseado de la sintaxis de la ejecución de la acción. Eso sí, yo veo el "action-dispatcher" más como una estructura aparte de la jerarquía de objetos de juego.</p> </div> f894 Verbos-gramática VS objeto-acción (6) http://spac.caad.es/2/spip.php%3Farticle253#forum875 Mon, 17 Jan 2011 11:59:21 +0100 2011-01-17T20:11:20Z Mon, 17 Jan 2011 21:11:20 +0100 Al-Khwarizmi <u><a href="http://spac.caad.es/2/spip.php%3Farticle253">Verbos-gramática VS objeto-acción</a></u><br /> <div style='background-color: #80c8be; border-style: inset;'><small> <b><a href="http://spac.caad.es/2/spip.php%3Farticle253#forum891">Verbos-gramática VS objeto-acción</a></b>, Al-Khwarizmi (17 de enero de 2011, 21:11) <p /> <p class="spip">Bueno, respecto al tema de las variantes del teléfono, yo nunca he dicho que copiar y pegar objetos sea una panacea y lo resuelva todo. Por supuesto, siempre habrá muchas cosas que hay que personalizar para una nueva aventura (¡si no, qué aventuras tan aburridas tendríamos!). Pero si fijamos una ambientación particular, por ejemplo, época actual... hay un montón de aventuras que tienen puertas, sillas, etc. que funcionan exactamente igual. Y otras cosas (como neveras, lavadoras y demás) no se suelen modelar porque dan trabajo; pero si hubiera una librería de objetos reutilizables, también se haría.</p> <p class="spip">Y para otras ambientaciones, como la ciencia-ficción, nada impide que exista también una librería de objetos reutilizables de ciencia-ficción. Esto iría en la línea de las "épocas" de pyphiverses :)</p> <p class="spip">Sobre el ejemplo que pones de golpear con el teléfono, en realidad en AGE existe herencia (es herencia directa de objeto a objeto, o sea, un objeto puede verse como una clase si se quiere) pero no suele hacer falta usarla para nada. De hecho, imagínate hasta qué punto no hace falta, que creo que todavía nadie la ha usado nunca en la práctica :D En su momento la metí, porque bueno, "tenía" que haber herencia; pero en realidad el diseño del sistema la hace superflua.</p> <p class="spip">Me explico, tú le pones al teléfono una propiedad "teléfono" que lo marca como un teléfono, defines un código para "llamar", "coger" o "colgar" que se aplique a los objetos que tienen esa propiedad, y no necesitas crear una clase ni tener herencia explícita.</p> <p class="spip">Después, el ejemplo que tú dices no podría ser más sencillo. Defines un código que determina qué sucede cuando golpeas a alguien con un objeto con la propiedad "contundente". Esto podrías definirlo en el mundo, si estás implementando un esquema general de combate, o tal vez en cada posible criatura golpeada si quieres que reaccionen de distintas maneras. Después, clickeas el teléfono en el IDE, vas a propiedades, le pones la propiedad "contundente" a true, y está hecho.</p> </small></div> <div style='background-color: #80c8be; border-style: inset;'><small> <b><a href="http://spac.caad.es/2/spip.php%3Farticle253#forum888">Verbos-gramática VS objeto-acción</a></b>, dddddd (17 de enero de 2011, 20:12) <p /> <p class="spip">El problema del ejemplo, el reutilizar el teléfono entre "mundos", es un problema de modelado y jerarquia de clases. Ambos teléfonos deberian tener una clase madre común, con las características propias de todos los teléfonos, y a partir de ella crear los particulares.</p> <p class="spip">De esta forma hay que retocar, pero siempre se hará sobre "mínimos" y es más dificil que se escape algo incoherente por el camino.</p> <p class="spip">Dicho de otra manera, no reutilizarias el telefono retro, sino su clase madre.</p> </small></div> <div style='background-color: #80c8be; border-style: inset;'><small> <b><a href="http://spac.caad.es/2/spip.php%3Farticle253#forum882">Verbos-gramática VS objeto-acción</a></b>, Mel Hython (17 de enero de 2011, 16:16) <p /> <blockquote class="spip"> <p class="spip">Sí, hay que ser cuidadosos para traspasar una gramática, pero ¿para qué quieres traspasar una gramática? ¡Lo que interesa traspasar de una aventura a otra son los objetos! Si un teléfono cuando lo coges te da tono, ¿por qué para llevarme el teléfono a otra aventura tengo que copiar el propio teléfono (con el código que dice que si lo descuelgas, da tono) y además parte de la gramática global (que dice que coger un teléfono es descolgarlo)?</p> </blockquote> <p class="spip">No estoy de acuerdo Al-K, lo que quieres traspasar de una obra a otra no son los objetos, sino como muchos las clases. El 'telefono rojo que suena en la luna' en una aventura espacial retro, no se va a parecer mucho en su comportamiento al 'teléfono móvil ultramoderno de una fantasía tipo matrix'. Tal vez un core de 'teléfono' sea común entre ambas obras, pero casi todas las respuestas serán diferentes del uno al otro.</p> <p class="spip">Así 'golpear a XX con el teléfono' en el primer caso puede llevar a un ataque contundente muy relevante, mientras que sería ridículo en el segundo caso. Si no hemos sido cuidadosos en separar el código 'correcto' entre el core 'teléfono' de la jerarquía y el objeo final tendremos problemas. Por ejemplo, si hemos hecho primero la obra de la luna tendremos:</p> <p class="spip">Telefono Rojo:</p> <p class="spip">parseCommand:</p> <p class="spip">if... cosas no relacionadas con golpear y sí con el core de teléfono...</p> <p class="spip">if verbo.equals("golpear")... tratamiento del golpear....</p> <p class="spip">if... otras cosas no relacionadas con golpear...</p> <p class="spip">Todo ello mezclado. Si queremos hacer ahora el teléfono ultramoderno tendremos que empezar de 'cero' o ser muy muy cuidadosos en lo que nos llevamos y lo que no.</p> </small></div> ... 2 r&eacute;ponse(s) omise(s) ... <div style='background-color: #80c8be; border-style: dotted;'> <b><a href="http://spac.caad.es/2/spip.php%3Farticle253#forum875">Verbos-gramática VS objeto-acción</a></b>, Al-Khwarizmi (17 de enero de 2011, 11:59) <p /> Una muy buena y muy clara explicación. Precisamente por esos motivos que expones, entre otros, diseñé el sistema de asignación de acciones de AGE tal como lo hice. Digo lo de "entre otros" porque aparte de todo lo que mencionas, otra ventaja adicional que le veo a este enfoque orientado a objetos es que facilita la reutilización de objetos entre unas aventuras y otras. </div> f875