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 

0 comentarios:

Publicar un comentario

Speak freely, friend.

Backside Games Studios

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