El Valle de la Visión

Eeeemmmmm - Cosas que escribir cuando me aburro en el trabajo para no tener que estar acarreando cuadernos :D esto tb se ve en casa ;)

Nombre:

28 julio 2006

Jhi#12::Tech#3

Aún tengo un problema que tengo que resolver: que haya varios objetos con el mismo nombre. ¿Debería ser permisivo? ¿Habría formas de eliminar la ambigüedad?

Lo suyo es que los objetos que compartan nombre vayan acompañados por un adjetivo. Así es como se ha hecho siempre, y funciona bien. Todo esto viene a raíz de intentar naturalizar el parser un poco más.

El lenguaje natural es, por desgracia, lo que conocemos como lenguaje dependiente del contexto. Cuando hablamos de una piedra sabemos cuál es porque esta información se sitúa en el contexto de la conversación. Intentar simular un contexto así en una aventura conversacional me parece demasiado complicado para lo que lo va a agradecer la gente, así que he pensado que algo más light podría hacer bien el trabajo.

Por ejemplo, si tenemos una llave amarilla y una llave oxidada, debería bastar al parser la palabra llave si no hay otra llave en el entorno visible del comando de usuario. Por ejemplo, si estamos en una habitación donde solo está la llave amarilla y no tenemos ninguna otra visible, entonces llave debería entenderse como llave amarilla. Asimismo, si la llave amarilla se encuentra dentro de una caja que no contiene otras llaves, debería poder escribirse 'saca la llave de la caja' aunque haya otras llaves fuera de la caja - al mencionar caja ya estamos definiendo un ámbito que trae consigo un contexto.

Coño, si al final no va a parecer que soy de ciencias puras :D

24 julio 2006

Jhi#11.Tech#2

Estructura "objeto" para contemplar todos estos cambios y adiciones.

Banderas:

B_CONTENEDOR - el objeto puede contener otros objetos.
B_ABIERTO - 1 si el objeto contenedor está abierto.
B_ILUMINADOR - el objeto puede iluminar.
B_ENCENDIDO - 1 si el objeto iluminador está encendido.
B_GASTABLE - el objeto se gasta con el tiempo (linterna, antorcha... en principio para objetos del tipo B_ILUMINADOR, pero esto puede que cambie en el futuro.
B_PRENDA_VESTIR - el objeto se puede vestir.
B_ATABLE - el objeto puede ser atado con un B_ATADOR.
B_ATADOR - el objeto se puede atar en un B_ATABLE
B_ARMA_ATAQUE - el objeto puede usarse para infringir daño.
B_ARMA_DEFENSA - el objeto puede usarse para protegerse de un ataque.

Campos:

loc - localización del objeto.
cont - dónde contiene el objeto si es contenedor. (B_CONTENEDOR).
life - vida que le queda al objeto si se consume con el tiempo (B_GASTABLE).
cubre - a 1 si B_PRENDA_VESTIR y podemos quitarnos lo de debajo sin quitarnos esa prenda.
nivel - indica el nivel en el que tenemos puesta la prenda si B_PRENDA_VESTIR
cabo1 - primer cabo de un objeto B_ATADOR. Referencia un ID objeto B_ATABLE si está atado a uno, 0 en caso contrario.
cabo2 - idem.
ofensiva - fuerza de ataque si B_ARMA_ATAQUE
defensiva - fuerza de ataque si B_ARMA_DEFENSA
peso - lo que pesa el objeto.
size - lo que ocupa el objeto.
cabida - lo que cabe en el objeto si B_CONTENEDOR

21 julio 2006

Jhi#10::Tech#1

Se me ha ocurrido una buena forma para implementar las cuerdas. Lo primero es definir dos nuevas propiedades: atador y atable. Un objeto atador podrá atarse a uno atable. Por lo general, un objeto atador será también atable: una cuerda, por ejemplo. Todo es tan sencillo como definir DOS campos enteros en el objeto atador que contendrán "0" si el cabo correspondiente no está atado a nada o el id del objeto atable al que esté atado.

Además, voy a crear un sistema complejo de vestidos, para que puedas ponerte muchas prendas y luego todo actúe perfectamente: si te pones unas bragas y encima un pantalón, para quitarte las bragas tendrás que quitarte antes el pantalón. Para ello usamos un "nivel" actual de ropa y cada prenda almacena en qué nivel está, para que no puedas quitarte las bragas (nivel 1) si te las has puesto antes que un pantalón (nivel 2). El problema que tengo que resolver es el de prendas como una falda, ya que te podrías quitar lo de debajo sin quitarte esta prenda.

De entrada se me ocurre:
  1. Bandera que indica si se puede (1) o no (0) quitar la prenda que esté inmediatamente debajo.
  2. Bandera que indica si la prenda es superior, inferior, o de cuerpo entero.
Por ejemplo, una túnica tendría la bandera 1 a 1 y la bandera 2 indicando "cuerpo entero".

A la hora de interpretar "> quitate las bragas", por ejemplo, habrá que:
  1. Ver si la prenda citada es inferior o superior
  2. Empezar a recorrer todas las prendas afectadas (inferiores, superiores, enterizas) desde arriba (nivel actual) hacia abajo (nivel de la prenda mencionda) comprobando que TODAS las que estén ENCIMA de la citada tengan el primer flag a 1, o que la prenda citada esté en el nivel superior.
JOJOJOJ - esto suena como DIVERTIDO de programar ;)

17 julio 2006

Jhi#9

Vamos a intentar refinar un poco el punto 6 del otro día: un gimnasio puede dar mucho juego para puzzles más o menos complejos. Lo que se me ocurre así, a bote pronto, es que la puerta de las duchas y vestuarios esté cerrada y haya que armar algún lío para abrirlas. Eso explicaría también qué hace Vertha en las duchas tan tarde.

Por tanto empecemos a refinar: Llegamos al gimnasio y vemos que la puerta que conduce a las duchas y vestuarios se encuentra cerrada. Examinando por las máquinas vemos toda clase de cachivaches para entrenarse.

A ver, podemos poner cosas típicas:
  • Cinta andadora
  • Banco de abdominales
  • Banco de pesas del que podemos coger unas pesas.
  • Armario de material el cual contiene una comba, una cuerda, topes de la máquina para pesas, aceite lubricante, pesa de 5 kg, pesa de 10 kg, pesa de 1 kg, y muchas más cosas de relleno, para despistar.
Básicamente, lo que hay que hacer para abrir la puerta quedaría perfectamente descrito con la siguiente secuencia de comandos:

>abre armario de material
+ abierto. Dentro hay: ...
>coge comba
+ coges la comba
>ata comba a la máquina de pesas
+ la comba está atada a la máquina de pesas
>ata comba a la puerta del vestuario
+ la comba no es lo suficientemente larga
>coge cuerda
+ coges la cuerda
>ata cuerda a la máquina de pesas
+ la comba está atada a la máquina de pesas
>ata cuerda a la puerta del vestuario
+ la cuerda no es lo suficientemente larga
>ata cuerda a comba
+ la cuerda está atada a la comba
>ata comba a la puerta del vestuario
+ ¡la comba está atada a la cuerda y a la máquina de pesas y no tiene más extremos!
>desata comba de máquina de pesas
+ vale
>ata comba a puerta del vestuario
+ la comba está atada a la puerta del vestuario
>usa máquina de pesas
+ no tiene pesas
>coge pesas
+ no puedes con todas a la vez
(solo se puede coger como máximo 10 kg)
>coge pesa de 1 kg
+ coges la pesa de 1 kg
> coge pesa de 5 kg
+ coges la pesa de 5 kg
> pon pesas en la máquina de pesas
+ vale
> coge la pesa de 10 kg
+ coges la pesa de 10 kg
> pon pesas en la máquina de pesas
+ vale
> usa máquina de pesas
+ vale
+ la cuerda se tensa con el peso de la máquina y la puerta se abre.


El tema de atar las cuerdas y los distintos objetos del mismo tipo es algo que voy a tener que añadir al motor. Lo de atar las cuerdas está mamao, sería otro tipo de cualidad de objeto: atable. Cada cosa atable puede atarse a otros dos objetos.

Ya refinaré en próximos mensajes.

11 julio 2006

Jhi#8

Bueno, empecemos a concretar.

PRIMERA PARTE: Charlitze acaba de terminar las clases por hoy - solo desea poder llegar a casa para relajarse y descansar. Como ha salido tarde no hay demasiada gente por el campus. Aún queda una media hora para que salga el tren que la traslade a su Complejo. Al llegar te das cuenta de que no tienes pase, probablemente lo hayas dejado olvidado en el Gimnasio donde te tuviste que cambiar de ropa. No hay tiempo que perder... ¡Tienes que recuperar ese pase!

Eso nos vale como "descripción rápida". Hay que concretar. Tengo que crear un mapa medianamente grande que cubra un enorme patio principal, varios edificios (a los que no tenemos acceso), el edificio de tu facultad donde puedes pasar al sótano, que es donde está el gimnasio, y a algunas aulas. El gimnasio está cerrado, y la única persona que puede abrirte la puerta (por control remoto, claro, estamos en el futuro) es el sucio celador, un tío guarro. Dentro del gimnasio tenemos una sala principal con las máquinas, demás de un vestuario y unas duchas. El pase está en tu taquilla, que se encuentra en el vestuario, y que estará cerrada con tu ID personal que siempre llevas encima (solo que tenemos que usarlo, vamos, un problema trivial de magnitud 0.2 :P). En las duchas aparece una misteriosa chica, Vertha, que te hará proposiciones deshonestas (pero muy atractivas) y si le sigues el juego pos... je je, ya sabes, pierdes el tren y GAME OVER de tapadillo.

Todo esto parece demasiado sencillo, va a haber que complicarlo todo un poco. Veamos, establezcamos los PASOS PRINCIPALES para buscar puzzles:

1.- Intentamos entrar a la dársena del tren, pero NO PODEMOS porque nos falta el pase.
2.- Nos dirigimos hacia el gimnasio a través del patio principal del campus. Encontramos la puerta cerrada, ya que a la hora que es el sistema centralizado del edificio ha cerrado todas las areas comunes y despachos.
3.- Nos dirigimos hacia la conserjería que se encuentra en el primer piso de tu facultad.
4.- El conserje babea mientras nos insinúa que para que abra la puerta vamos a tener que darle algo a cambio.
5.- Basta con quitarse el top. El conserje activa el sistema y abre la puerta del gimnasio. Luego hay que ponérselo, porque si nos ve algún segurata por ahí fuera sin top nos detendrá por escándalo público.
6.- En el gimnasio hay un par de máquinas que podemos usar... (insertar puzzle aquí).
7.- Pasamos al vestuario. Buscamos nuestra taquilla, que abrimos usando el ID Personal. Obtenemos, al fin, el pase.
7x.- Todo el rato oímos gemidos desde la habitación contigua (las duchas), si vamos para allá nos encontramos a Vertha y ya sabemos lo que ocurre entonces.
8.- Usamos el pase en la entrada de la dársena y hemos terminado la primera parte.

El OBJETIVO PRIMERO de desarrollo es codificar esta primera parte. Esto me sirve para elaborar el motor, porque esta parte tiene básicamente de todo (objetos, objetos fijos, PSIs, puertas, etc...).

Esto se puede elaborar más. En 6 podemos meter algún puzzle tipo aventura gráfica. Total, como programo en fB no hay problemas en meter cosas raras.

10 julio 2006

Jhi#7

He leído sobre el nuevo Inform 7 en el que se puede crear una aventura sin programar, símplemente describiéndola en lenguaje natural (en inglés). La cosa es que para que tu aventura sea en español hay que hacer unos cuantos malabares, y luego está la cosa de que solo compila para la máquina Z, con lo que todas mis paranoias gráfico-sonoras no tendrían cabida. Creo que no hay discusión posible: lo haré todo usando fB puro y duro y al carajo.

Luego sigo con el planning de cosas, que seguramente encuentre ratos muertos y aburridos.

07 julio 2006

Jhi#6

VOY A PASAR DE SCRIPTS - Sí, coño, que prefiero programar directamente en fB que para eso lo tengo, así tengo todo el control para hacer formidables excepciones y manejar del tirón a los PSI.

NECESITO - Lo primero el mapa. Luego las escenas. Estaría bien que si varias localidades van a compartir "gráfico" éste tenga partes móviles. Animación por planos, dibujos duros en plan "is this boy still alive?" (o este otro), música ambient oscurilla... HMMM :D

Jhi#5

Empezamos a elaborar.

ESCENA I. Salida del campus y estación/parada del tren. Se debe poder visitar una parte del campus (a la que después volveremos más adelante en la historia - esto está muy bien porque le da fuerza al relato). Podemos empezar con un sencillo puzzle controlado por el tiempo:
"Llegamos a la parada con tiempo de sobra - pero no tenemos los bonos para el tren, seguramente los hayamos dejado olvidados en algún sitio".

Por supuesto los bonos están en el vestuario del gimnasio, el cual se encuentra cerrado. La llave no es difícil de conseguir si sabemos seducir al conserje. El tiempo pasa y no podemos perder tiempo, así que si meto un "engaño" al jugador dentro del vestuario me saldré con la mía... A ver...

Jo jo jo - un pivón bollero. Si te entretienes con ella (lo que a más de uno le resultará "aparente") pues pierdes el tren... Así de fácil. Y si pierdes el tren no vuelves a tu casa a tiempo (¡pero el GAME OVER no es inmediato, cuidao con esto!). Lo único que ocurre es que encuentras un mensaje de fax comentándote que como no habían podido hablar contigo le han asignado la vacante de la compañera de piso a otro habitante del complejo... Y luego no pasa nada :D Ni game over ni pollas. Simplemente no hay historia y no puedes hacer nada. Frustrante.
Hmmm - si refino bien esto tengo algo perfecto para empezar...

Jhi#4

Veamos... Creo que voy a tirar de Charlitze, la protagonista de Jhi, una chica tímida e introvertida, con un pasado un poco misterioso, que no tiene demasiados amigos y que va a clase de algo en un campus alienante y que no le gusta demasiado. En Jhi le ofrecían la posibilida de dejar su apartamento individual y empezar a compartir, con lo que Charlitze conoce a Mia ... Podemos empezar el tema aquí.

"Ficción Interactiva" ... Creo que, sin más, podría empezar el juego sin ningún tipo de objetivo, tal y como empieza la mininovela. Eres Charlitze, estás en la parada del tren... Lo primero que hay que hacer es coger el tren y llegar a casa, allí hay que darse una ducha y entonces suena el comunicador...

Yo creo que si empiezo con esto tan sencillo me puede servir para ir montando bien el motor y definir en condiciones una estética de juego tanto en gráficos como en sonido... Sí, es buena idea. La cosa es aprovechar este fin de semana para hacerlo, aunque aún no sé si me iré para SB o preferiré quedarme en Sevilla... Todo depende de muchas cosas. Por lo pronto hoy no puedo (primero broda, luego excompisdetrabajo) y mañana tampoco (super quedada de Scumm). Quizá todo esto sirva para que, de una vez por todas, planifique bien las putas cosas en vez de lanzarme a lo loco... Porque ya tengo yo ganas de empezar a tirar lineas de código, y eso no puede ser.

Jhi#3

Me gusta mucho el tema de futuro alternativo no demasiado ci-fi. Me gusta mezclar lo cotidiano o incluso lo vintage con las ideas futuristas. La visión del futuro de los años 50 no tiene precio. Creo que si empiezo a elaborar a partir de ahí, todo quedará genial.

Por ejemplo podría tomar como punto de partida el relato "Jhi" que comencé a escribir en el wordperfect del P120Pocho que tengo en casa de mis padres - que a lo mejor estén en un complejo enorme con mil cosas "modernas" casi mágicas pero que al mismo se llegue en un tren pocho y sucio - ese tipo de mezclas es el que puede ser muy atractivo.

También me gusta mucho que no sea "ir a lo fácil", como en el argumento del 90% de las aventuras conversacionales, esto es: "eres , hijo de , y tienes que ir a la cueva de a recoger el para que ".

Tengo, por tanto, que ir elaborando un buen argumento, no demasiado intrincado pero sí atractivo. Lo malo es que soy el torpe del mundo cuando se refiere a inventarme puzzles... En fin, esperemos que esto vaya bien.

Jhi#2

Me gusta mucho el tema de futuro alternativo no demasiado ci-fi. Me gusta mezclar lo cotidiano o incluso lo vintage con las ideas futuristas. La visión del futuro de los años 50 no tiene precio. Creo que si empiezo a elaborar a partir de ahí, todo quedará genial.

Por ejemplo podría tomar como punto de partida el relato "Jhi" que comencé a escribir en el wordperfect del P120Pocho que tengo en casa de mis padres - que a lo mejor estén en un complejo enorme con mil cosas "modernas" casi mágicas pero que al mismo se llegue en un tren pocho y sucio - ese tipo de mezclas es el que puede ser muy atractivo.

También me gusta mucho que no sea "ir a lo fácil", como en el argumento del 90% de las aventuras conversacionales, esto es: "eres , hijo de , y tienes que ir a la cueva de a recoger el para que ".

Tengo, por tanto, que ir elaborando un buen argumento, no demasiado intrincado pero sí atractivo. Lo malo es que soy el torpe del mundo cuando se refiere a inventarme puzzles... En fin, esperemos que esto vaya bien.

Jhi#1

Llevo una jartá de tiempo queriendo hacer una aventura conversacional, pero nunca me pongo porque nunca tengo una historia que me apetezca llevar a la práctica, y paso ya de ponerme a dar palos de ciego como siempre porque así seguro que no termino.

Tengo un parser bestial (a falta de PSIs, pero eso ya me lo curraré 'in situ') y tengo muchas ganas de utilizarlo. Me encantaría poder montarlo bien en freebasic con fuentes truetype, dibujos guapos de estilo moesno a toda pantalla y música envolvente de fondo (¡que viva el OGG!).

La cosa es que necesito encontrar una historia.