Mostrando entradas con la etiqueta Ficción interactiva. Mostrar todas las entradas
Mostrando entradas con la etiqueta Ficción interactiva. Mostrar todas las entradas

martes, 1 de diciembre de 2020

Prosinecki Life Simulator

Prosinecki Life Simulator surgió como una manera como cualquier otra de seguir avanzando en mi dominio de Twine 2. Este es un proyecto más ambicioso que el anterior, Roll the dice, en el que he trabajado con variables anidadas y profusión de elementos aleatorios para que tenga un aliciente el rejugarlo.

El objetivo de esta historia interactiva, en el que encarnamos el papel del jugador croata Robert Prosinecki, es tener el menor número de lesiones posibles, lo cual vendrá indicado por las decisiones que tomemos durante su desarrollo. Se trata de un juego cortito sin muchas pretensiones más que practicar con Harlowe, mi formato de historia preferido.

Tras el prólogo, el juego se divide en jornadas, 11 en total. Ni siquiera están todos los equipos de la liga 91-92, pero no quería que se hiciera excesivamente repetitivo. Cada jornada, a su vez, consta de dos partes, el previo al partido, en el que está la interacción en sí, y los partidos, donde veremos diversos mensajes que "narrarán"el acontecer de los mismos. Tras el derby con el Barça, el juego acabará y podremos ver qué lesiones hemos sufrido y si nuestro equipo ha ganado la liga.

En el aspecto técnico, no he encontrado muchos problemas. Si acaso el mayor quebradero de cabeza, si es que se le puede llamar así, fue ajustar las imágenes para que en dispositivos móviles se vieran por completo. Esto lo conseguí con el código: 

img{

max-width: 100%

}

Se puede hacer mejor y de forma más completa pero me sirvió para salir del paso y, total, este juego tiene un recorrido cercano a cero así que no me molesté en buscar soluciones más elegantes. 

Para el aspecto de 8 bits de las imágenes, usé la app para móviles: 8 bit photo lab, la cual tiene distintos filtros gratuitos, tan completos, que hace innecesaria la compra de la versión de pago para desbloquear los demás, si no buscas un look de 8 bits en concreto. Usé filtros a discreción sin tener una línea fija: desde Apple II hasta EGA, pues a según qué foto le sentaba mejor una u otra. Las imágenes, de más está decir, las saqué de Google.

Cabía la posibilidad de incluir música o efectos de sonido como los gritos de un grupo de aficionados durante los partidos, pero lo desestimé pues podría hacerse muy pesado. El código para ello era el siguiente:

<script>

var audio= document.createElement('audio');

audio.src=

'animando.mp3';  //animando.mp3 será el audio que queramos. 

audio.loop = true;       

audio.play();

</script>

Teniendo en cuenta que teníamos que pegarlo en el pasaje donde quisiéramos que se reprodujera y que el archivo mp3 debería estar en el mismo directorio que el archivo HTML del juego.

Otra de las nuevas características implementadas en este juego, es la aparición automática, con un efecto de máquina de escribir, de un texto determinado, teniendo en cuenta que después de 6 segundos saltaríamos a otro pasaje, lo cual se conseguía escribiendo lo siguiente en el pasaje en cuestión:

(set: $timer to 6)    //tiempo que queramos que dure la animación. 

<!-- Asigna el texto que se mostrará -->

(set: $typewriterText to "Texto que queramos!")

<!-- Muestra (call) el pasaje Typewriter  -->

(display: "Typewriter")

{

    (live: 1s)[

        (if: $timer is 0)[

            (stop:)

            (goto: "Comienzo")

        ]

        (else: )[

            (set: $timer to it - 1)

        ]

    ]

}

Para que funcione, tendremos que haber creado un pasaje con el nombre Typewriter y el siguiente código:

{
    <!-- Crea una variable para rastrear la posición dentro de la cadena $typewriter -->
    (set: $typewriterPos to 1)

    <!-- Crea un gancho para mantener el texto escrito -->
    |typewriterOutput>[]

    <!-- Asigna un retraso de 20ms por bucle -->
    (live: 20ms)[

        <!-- Añade el siguiente caracter al gancho -->
        (append: ?typewriterOutput)[(print: $typewriterText's $typewriterPos)]

        <!-- Actualiza la posición -->
        (set: $typewriterPos to it + 1)

        <!-- Si ha llegado al final, para -->
        (if: $typewriterPos is $typewriterText's length + 1)[
            (stop:)
        ]
    ]
}

Para los escudos de los equipos contra los que se enfrenta el Real Madrid, busqué por Internet, aunque no estoy seguro de que todos correspondan a los de la temporada 91-92 en la que se desarrolla el juego. El tamaño de las imágenes era de 53x53.

Pantalla de inicio alternativa


Y poco más que contar en el aspecto del desarrollo. Los elementos aleatorios los incluí con la instrucción: 
(either: "Chendo", "Sanchis", "Buitre")
mediante la cual se elige uno de los tres nombres en cada ejecución de la instrucción.

Para grabar el pequeño gameplay que puedes ver más abajo, usé OBS, grabando la ventana del navegador a pantalla completa. Para cortar determinadas partes tuve que usar Avidemux, toda vez que VirtualDub, el programa que usaba en mi época de tester, no acepta el formato MP4.

El próximo proyecto, antes de dar el salto al desarrollo de un juego arcade, será terminar Misterio en la luna, una aventura conversacional, pero mientras tanto podéis disfrutar de Prosinecki Life Simulator en la siguiente dirección

Créditos

Imagen de Pexels en Pixabay 
Imagen de Free-Photos en Pixabay 
Imagen de annca en Pixabay 

viernes, 5 de julio de 2019

Roll the dice

Quizá el de los dados sea uno de los juegos más sencillos de la historia. Aun con sus muchas variantes, consiste básicamente en lanzar un dado y sacar un número mayor que el de tu contrincante. Es por eso que decidí que en mi periplo por el aprendizaje de Twine, implementaría un sencillo juego de dados en el que el jugador tendría que enfrentarse a distintos oponentes, en su lucha por representar a la raza humana en un posterior Torneo Intergaláctico en el que la Tierra se jugaba su existencia. Una historia simplona como la de cualquier otro Tomb Raider. 

Antes de pensar siquiera en cómo iba a hacerlo, y repasando mi libro sobre Twine (Twine. Una aproximación al desarrollo de literatura interactiva) me llamó la atención la plantilla "La historia interactiva de la Tierra", que divide la pantalla en dos recuadros, en uno de los cuales, se pueden ir cambiando las imágenes a mostrar. Esto me venía de perlas a la hora de mostrar la cara de los distintos contrincantes, por lo que al elegirla, me tuve que ceñir al Formato de historia Sugarcane. Sí que podría haberla adaptado a Sugarcube, por ejemplo, pero no quería perder tiempo en otra cosa que no fuera desarrollar el minijuego (me da vergüenza llamar a esto "juego").

Decidí usar Twine 1.4 en lugar de su versión avanzada, porque iba a utilizar muchas imágenes, y me era más sencillo importarlas al programa que subirlas a una web y luego enlazarlas.

Dio la casualidad de que al poco de ponerme manos a la obra, descubrí la existencia de la web https://thispersondoesnotexist.com/ en la que una inteligencia artificial crea imágenes de rostros humanos de personas que no han pisado jamás la Tierra. O eso se supone. Imágenes perfectas para librarme de denuncias por usar la cara de cualquier fulano sin permiso.  Por aquello de evitar el valle inquietante, usé el programa PixaTool para modificarlas y convertirlas a la paleta verdiblanca de GameBoy, lo cual le confería un aspecto más "jugable". Hice lo mismo para el resto de imágenes que usaría.



Una de ellas la usaría en la pantalla de inicio. Decidí crear una para poner el logo del juego y en la caja de texto, un simple enlace que instara al jugador a hacer click para empezar. Para ello, definí el pasaje Start de la siguiente forma, siendo representados el nombre de un pasaje por los símbolos ::

:: Start
Label Textura

<center>[[Pulsa para comenzar|INICIO]]</center>

Siendo "Textura" un pasaje CSS con el siguiente contenido:

.passage .header {
  background-image: [img[texture838]];  //Texture838 es el nombre de la imagen que importé
  width:70%;
  height:320px;
  min-height: 320px;
}

De tal forma, se creaba un nuevo pasaje "inicio" en el que comenzar la aventura. Tras escribir una historia más o menos funcional para salir del paso, surgieron varios desafíos:

. La idea original consistía en tener un plantel de 9 personajes contra los que jugar, de los que solo veríamos 3 en cada partida, para hacerlas algo más aleatorias y rejugables.
. Tenía que hallar la forma de simular las tiradas sin tener que estar escribiendo código para cada rival y tirada. Sugarcube me hubiera venido bien pero, como dije, por el tema de la plantilla CSS no era una opción.

Para lo primero haríamos uso de la función "either", de tal forma que a la variable $con  (de contrincante) le asignaríamos cualquier valor de entre la lista que definamos; en este caso, los nombres de los pasajes correspondientes a cada jugador. 

<<set $con to either("jugManolo", "jugAde", "jugsuckie", "jugSonrisas", "jugPablito", "jugTuercas", "jugPurito", "jugsvetlana", "jugramiro")>>

. Ir a [[Prueba|$con]]
Así, cuando pulsemos en el texto "Prueba", nos llevará a un pasaje aleatorio de entre la lista lista de "either".

Desde el pasaje de cada enemigo se llamará al pasaje responsable de las tiradas de dados, que se reutilizará con todos los demás. El pasaje encargado de las tiradas quedaría de la siguiente forma:

<<set $tirada = random(1,6)>>  //se simula la tirada eligiendo un número aleatorio entre 1 y 6
Has sacado un <<print $tirada>> //Se muestra en pantalla el resultado

<<set $tiradamalo = random(1,6)>>  //lo mismo para el oponente
Tu contrincante ha sacado un <<print $tiradamalo>>

//aquí se comprueba quién ha sacado una mayor puntuación y se actualizan las variables de los asaltos pues el que gane 2 de 3 ganará la partida.
<<if $tirada > $tiradamalo>>
¡Has ganado el asalto!
<<set $puntos+=1>>
<<if $puntos == 2>>
<<set $contrincante +=1>>
¡Has ganado, maldito suertudo! Ahora vuelve a la [[arena]]
<<else>>
[[Es hora de tirar de nuevo|tiradatu]]
<<endif>>
<<endif>>

<<if $tirada < $tiradamalo>>
¡Has perdido el asalto!
<<set $puntosmalo+=1>> //se actualizan los puntos del rival
<<if $puntosmalo == 2>> //se comprueba si hemos perdido el juego
¡Has perdido, desgraciado! No mereces seguir viviendo pero qué demonios, tampoco vamos a manchar esto de sangre. Firma [[aquí|gameover]] para terminar.
<<else>>
[[Es hora de tirar de nuevo|tiradatu]] //si aun no se ha conseguido los puntos necesarios para ganar, se sigue tirando.
<<endif>>
<<endif>>

<<if $tirada == $tiradamalo>>
¡Habéis empatado!
[[Tendréis que tirar de nuevo|tiradatu]]
<<endif>>


El resto es sencillo y no se trata más que de escribir la pantalla de Game Over y de victoria en el juego. Un apunte más, para cambiar las imágenes de cada rival, importaremos sus fotos, crearemos una hoja de estilo para cada una de la siguiente forma:

::susan
tag stylesheet suckiesusan

.passage .header {
  background-image: [img[suckiesusan]];
}


y en el pasaje en que queramos que aparezca dicha imagen, en el campo "tag" tendremos que poner el nombre de la hoja de estilo, en este caso "suckiesusan", que aparece junto a stylesheet, en el campo "tag".

Habría muchas mejoras por hacer, comenzando por la posibilidad de eliminar de la lista los rivales contra los que nos hemos enfrentado, pero en este nivel de aprendizaje, prefería centrarme en terminar el juego y seguir con otra cosa.

Puedes jugar a Roll the dice en la siguiente dirección:


 

jueves, 31 de marzo de 2016

Lonely Bot

Siempre hay una primera vez, y en el caso del desarrollo de videojuegos, suele ser casi siempre desastrosa. Lonely bot no podía ser diferente. Es mi primer título desarrollado con la herramienta de creación de ficción interactiva Twine 2.

Se trata de una especie de simulador de inteligencia artificial (desde aquí escucho las risas del procesador de mi PC y las del operario de la NSA que me está espiando en este turno) en el que podremos tener una charla (muy corta) con nuestro navegador web. Y digo que muy corta porque lo que parecía en principio un proyecto muy sencillo, se fue expandiendo como las ramas de un abedul hasta el punto de hacer que dejara aparcado su programación durante un tiempo, hastiado por el mismo. Lo he terminado de la manera más rápida y satisfactoria posible pues para tratarse de mi primer trabajo no voy a perder más tiempo con él. El objetivo era habituarme a la herramienta y su sintaxis, objetivos ambos plenamente conseguidos.

La mayor dificultad a la hora de escribir este "experimento" la encontré a la hora de hacer enlaces que apuntaran a otras páginas web, por lo que el versado en Twine 2 podrá hacerse una idea de la complejidad del mismo.

Lonely Bot se puede "jugar" online, a modo de curiosidad, en la siguiente dirección: 

 

 

lunes, 18 de mayo de 2015

Twine. Una aproximación.

Hace tiempo que descubrí Twine, una herramienta sencilla con la que crear historias interactivas del estilo de Elige tu propia aventura. Como quiera que soy muy desmemoriado y mi cabeza ya no acepta un solo comando más, siempre que quería escribir una historia con dicho programa, me veía acudiendo a la web del mismo en busca de información sobre cómo hacer tal o cual cosa.

Puesto que tengo previsto hacer uso de la herramienta de forma intensiva, me dije que por qué no compilaba toda la información disponible sobre ella, o al menos la más importante y común, la traducía al español para hacerla más asequible y la imprimía en papel en un cómodo libro que consultar durante el desarrollo de mis aventuras.

Y dicho y hecho. Tras unas semanas recopilando información de aquí y allá, foros oficiales y canales de Youtube principalmente, he aquí este ejemplar de: Twine. Una aproximación al desarrollo de literatura interactiva. En sus páginas, encontrarás todas las herramientas básicas con las que poder crear una aventura de forma sencilla y rápida, preocupándote únicamente por el desarrollo de la historia. Esta es una primera versión, que se irá completando a medida que se vaya actualizando la nueva versión de Twine: Twine 2 (original no es, desde luego. Si quieres, puedes descargarlo desde la siguiente dirección:


Existe también una versión en papel que podréis encontrar en Lulú, aunque para comprarla necesitaréis estar registrados en la página. Podéis comprarlo aquí:



jueves, 28 de noviembre de 2013

Asura´s Wrath

Asura´s wrath es una historia de venganza y rabia que sigue el esquema clásico de los grandes éxitos del manga y el anime; un protagonista carismático traicionado por los suyos que va aumentando de nivel a medida que combate, una lista de enemigos a cual más poderoso, un enemigo que al final se convierte en aliado contra un mal mayor, la aparición del héroe cuando todo parece perdido... Y es que el titulo de Capcom está más cerca de ser un anime interactivo con toques de Beat´m´up, Shoot´m´up y quick time events, que un videojuego clásico, entrando dentro de la categoría de ficción interactiva en la que están enmarcados Heavy Rain o The Walking Dead (la aventura gráfica de Telltale games, no el FPS chusco que sacaron)

Asura es uno de los ocho generales del emperador Strada, que luchan contra la demoníaca raza de los Gohma y su encarnación máxima Vlitra, un ser que vive en el interior del planeta Tierra. Tras una aplastante victoria, el emperador es asesinado. Asura es culpado por ello y arrojado al infierno de donde escapará jurando acabar con sus enemigos y rescatar a su hija, a la cual utilizan los restantes generales, ahora autonombrados dioses, para obtener más poder.

Este juego es lo que debería ser un título de Dragon Ball o Saint Seiya. Es cierto que prácticamente se juega solo, pero la sensación de que formamos parte de la historia, aun siendo la interacción escasa, no ha sido conseguida por casi ningún otro título. Así, en muchos momentos deberemos pulsar determinados botones o mover los sticks para realizar algunas acciones y, aunque si lo pensamos fríamente, es muy probable que si no hiciéramos nada los acontecimientos se desarrollarían de igual modo, tuve la sensación de que era totalmente necesario que yo estuviera ahí. Es una sensación muy gratificante, difícil de explicar y que hay que experimentar por uno mismo, con la mente libre de prejuicios.

Asura´s Wrath está dividido en capítulos, al igual que un anime, con sus créditos, su resumen del episodio 
anterior y su avance del siguiente una vez lo terminemos. Estos episodios contarán con mucha narración interactiva, así como con combates. En ellos el objetivo es golpear a nuestros adversarios hasta rellenar la barra de furia, momento en el que ejecutaremos nuestro movimiento final que pondrá punto final a la batalla. También tendremos algo de shooter on rails, algo caótico en determinados momentos a decir verdad.

La intensidad y la emoción es creciente a lo largo del juego, aunque la batalla final contra Viltra y Deus, el verdadero asesino de Strada, se desinfla y pierde la épica que desde el principio  ha ido in crescendo, hasta desembocar en el desesperado e inolvidable intento de Yasha, un de destruir el brahmastra que amenaza con acabar con Asura, elevado al panteón de los momentos inolvidables de la historia del videojuego, con la ayuda del tema "Yasha´s Theme", enmarcado en una gran banda sonora, aunque escasa de canciones.

El juego invita a rejugarlo para desbloquear el capitulo secreto que nos dará acceso al "supuestamente", verdadero final de la historia, aunque por su distanciamiento de la mecánica de juego, una vez conozcamos el final de la historia nada nos motivará a continuar con el titulo, ni siquiera el poder desbloquear los vídeos, ilustraciones o barras de energía que nos otorgarán diversas mejoras como una mayor defensa o ataque.

Hay que decir que el juego sin los DLC parece estar incompleto, pues es en uno de estos contenidos descargables donde podremos ver el auténtico final del juego. Esto me parece una canallada, para ser sinceros. En uno de estos DLC además tendremos la oportunidad de luchar contra Ryu, de la saga Street Fighter, una chorrada como cualquier otra con la que sacar el dinero a los incautos.

Este es el único punto que empaña esta historia interactiva, de la que deberán alejarse todos aquellos que no amen el anime o la mitología hindú (que me imagino no serán muchos a este lado del Ganges)




lunes, 31 de marzo de 2008

Un día completo

¿Quién dijo que los libro-juegos estaban muertos? (Aparte de más o menos el 95% de la población) Si Jim del Espacio exterior llegó a ser mencionado en un estudio de la Universitat Oberta de Catalunya, con Un día completo, el nuevo blog-juego desarrollado por Backside Games Studio (vamos, yo), espero tener una pequeña reseña en las memorias de Vincent Price: Volví de la tumba para esto.

No solo es más largo que su predecesor, más absurdo y más ilustrado, sino que además, ¡apenas tiene faltas de ortografía! Solo las que el corrector de Blogger no es capaz de detectar. A decir verdad adolece de simpleza en diversas partes, debido a causas ajenas al autor. Esta vez me ha resultado sorprendentemente fácil escribir una historia no porno, así que podrán leerlo niños de diez a noventa y nueve años. O bueno, pensándolo mejor no, que luego no quiero denuncias.

Este libro, que podréis encontrar a la venta en papel en la tienda de Lulú y la de Amazon, forma parte de la colección "Elige tu propia historia" que por ahora consta de dos títulos: Jim del Espacio Exterior y este mismo.

Así que no lo dudes, si quieres disfrutar de un plagio penoso de uno de los míticos libros de R.A. Montgomery, pincha en el siguiente enlace: http://undiacompleto.blogspot.com.es/

miércoles, 4 de abril de 2007

Jim del Espacio Exterior

Tras el (futuro) éxito arrollador de ventas de Fin del juego, llega el segundo libro de la colección Mr Roboto: Jim del Espacio Exterior, título llamado a revolucionar el género de los libro-juegos y el skyline de mi biblioteca con decenas de páginas repletas de lugares cósmicos, personajes planos y chistes malos como los del Chiquito extremeño:

- Papá, papá, en el colegio me llaman "Pang".
- ¿Pang?
- Oh no, ¡me han dado!

Te pondrás en la piel de Jim, un policía pasota que no ejerce de proxeneta porque no es lo suficientemente honrado. De ti depende darle un buen final a sus correrías por la galaxia o, si eres un pequeño motherfucker, hacerle sufrir indecibles penurias con las que a buen seguro te troncharás. Y si no lo hace, te devolvemos el dinero (No, no lo hacemos)

Por unos módicos 6 euros, podrás impresionar a las chicas con una lectura sesuda a la par que humorística. ¿Sabes por qué Mandingo triunfa entre las mujeres? ¿Por su lanza estratosférica? Por favor, las mujeres prefieren a un hombre cultivado antes que a un trípode insaciable. La razón de su éxito está en su afición por Jim del Espacio Exterior. ¿Vas a dejar que esa morena con la que te cruces todas las mañanas en el ascensor del trabajo no se acueste contigo por no comprar mi libro? Yo de ti me lo pensaría. Podrás encontrarlo en las tiendas de Amazon y Lulú. 





Si lo de gastar dinero no es tu rollo, y mucho menos por un libro de un desconocido incluso en su casa a la hora de comer, podrás disfrutar igualmente de la aventura en la web: http://www.jimdelespacioexterior.blogspot.com

PD: Mandingo no aprueba la utilización de su nombre en este anuncio.

Backside Games Studios

Backside Games Studios © 2014 - Designed by Templateism.com, Plugins By MyBloggerLab.com | Published By Gooyaabi Templates