ambar-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Miner-dev] Re: Sucesos y Requisitos


From: Turing Test
Subject: [Miner-dev] Re: Sucesos y Requisitos
Date: Mon, 23 Dec 2002 08:29:21 -0500

----- Original Message -----
>    Date: Sat, 21 Dec 2002 19:50:58 -0000
>    From: Andrés Moya <address@hidden> <address@hidden>
> Subject: Sucesos y Requisitos
> 
> Minëros y minëras:
> 
> Acabo de crear un documento en el wiki con la próxima característica 
> que podemos incluir en el juego: sucesos y requisitos.
> 
> Ver en: 
> 
>   http://elenya.net/wikimine/SucesosComandosYRequisitos
> 

Andrés, te envío el documento que escribí hace tiempo con el análisis de las 
distintas clases de requisitos y sucesos que se podrían crear. A lo mejor sirve 
de punto de partida para decidir qué parámetros puede admitir el motor de 
requisitos.

Yo tenía además la idea de permitir que los tags <suceso> puedan llamar 
directamente a métodos Python, es decir, convertir los ficheros XML en una 
forma encubierta (y limitada) de scripting. Así, si se quiere añadir algún 
suceso más complejo de los que están preprogramados, se podría añadir 
escribiendo un nuevo objeto Python. 


Utilizando la sintaxis que tú defines, una invocación a un método podría quedar 
algo así:


<suceso tipo="Personaje" seleccionar="$usuario" accion="decir" texto="¡No 
entiendo nada!"/>

Esto haría una invocación de estos métodos de la clase ScriptPersonaje:

def decir(self, seleccionar="$unoMismo", texto="", idioma="oestron"):
    personaje = self.parse_macro(seleccionar)
    personaje.decir(texto, idioma)
    ...


Y lo mismo para comprobar requisitos (en este caso, el método siempre devuelve 
un booleano):

<requisito tipo="Sala" seleccionar="$local" atributo="aura" cumple="mayor" 
valor="15"/>

def atributo(self, atributo, seleccionar="$unoMismo", cumple="igual", 
valor="existencia"):
    personaje = self.parse_macro(seleccionar)
    return self.chequear(personaje, cumple, valor)



Fíjate cómo los atributos del tag XML se asignan a parámetros con nombre para 
la llamada, y cómo esos parámetros pueden traer valores por defecto. La 
invocación del método se puede generar automáticamente en Python en tiempo de 
ejecución.

(Esto supone un pequeño cambio de enfoque respecto a lo que tu propones. En vez 
de centrar los tags <suceso> y <requisito> en el procedimiento a realizar, se 
centran en el objeto que debe realizarlos.)


Otra opción sintáctica sería tener distintos tags: <sucesoPersonaje/>, 
<sucesoSala/>... y eliminar el atributo tipo="" (que sólo sirve para 
seleccionar la clase que contiene al método que se quiere invocar). Eso haría 
más fácil para la gente distinguir qué métodos y parámetros están disponibles 
en cada caso.


> Atención, porque si lo completamos puede ser un hito muy gordo en la 
> historia del juego, ya que permitirá, nada menos, que empezar a hacer 
> Minë *jugable* :)   Es decir, que se puedan programar aventuras, 
> objetos que funcionan, misiones o "quests", etc. !!!!!!!!

Ole y ole, ya tenía ganas de que nos metiéramos con esto! 8)


-- 
__________________________________________________________
Sign-up for your own FREE Personalized E-mail at Mail.com
http://www.mail.com/?sr=signup

Meet Singles
http://corp.mail.com/lavalife

Attachment: sistema-requisitos-efectos.txt
Description: Text document


reply via email to

[Prev in Thread] Current Thread [Next in Thread]