17 años en Internet

27 julio 2024

[Dev-Blog] [Proyecto Isekai] [#13] Multi-idioma y port a PC

     En la última semana me he estado centrando en dos temas, el primero era en ver cómo dar soporte multi-idioma al juego y el segundo empezar a trabajar en un prototipo para PC. Uno de los principales quebraderos de cabeza que suelen tener los novatos de GB Studio es que por defecto los diálogos de selección de opción sólo permiten seleccionar dos respuestas y eso resulta un impedimento si quieres permitir un menú con más opciones.
 

     Pero la gracia es que si quieres hacer un menú con más opciones, lo que te hace falta no es un evento de "mostrar opciones", te hace falta justamente es un evento de mostrar menú, en el que puedes añadir todas las posibles opciones de diálogo que te vengan en gana. Ahora bien, es aconsejable desactivar la casilla de "Establecer en '0' si se presiona 'B'", puesto que es un comportamiento pensado para los menús de pausa (salir de él al presionar 'B') y si no controlas bien el valor de la variable, luego te puede dar sorpresas. Básicamente si quitas esa checkbox, evitas salir del menú por error y te aseguras que una opción es marcada sí o sí.

    Así que retomé todas las pantallas de la escena inicial y jugando con un sencillo control de variable mostraba los textos en un idioma u en otro. Cabe destacar que en GB Studio no existen opciones de justificación del texto, por lo que si lo que quieres es centrarlo para que los diálogos queden "bonitos", pues no te queda otra que añadir un porrón de espacios en blanco. Por suerte si posicionas el cursor en el texto, te permite tener una previsualización a la izquierda de cómo se verá en el juego. Por cierto, otro error que se suele cometer al principio es la de poner una sucesión de eventos de diálogo, uno detrás de otro... Pero si os fijáis, el evento de diálogo tiene un botón "+" que os permite añadir todos los diálogos que queráis en un único evento (y esto es muy práctico).

    Y bueno, mientras iba tocando todas las escenas de la primera cinemática para hacerla multi-idioma, aproveché para tocar las paletas de colores por defecto, para que sean más agradables a la vista por si a alguien le da por jugar al juego en una Super Game Boy o en una Game Boy Color. Cabe destacar que el framework te permite definir una paleta de colores para el fondo y otra para los sprites, por lo que realmente puedes disponer de hasta 8 colores con los que poder jugar.

    También aproveché para ponerle una melodía de fondo. Por suerte encontré varias bibliotecas interesantes del usuario TipTopTomCat (https://tiptoptomcat.itch.io/), en concreto su canción "Wind Wind, Take Me Home".

    Y bueno, también dediqué un poco de mi tiempo a intentar hacer un prototipo del juego para PC. En otras entradas creo que he mencionado que quería aprender Unreal Engine, pero realmente en el último año le he atrapado mucho el gustillo por Godot, en especial por lo bien que parece funcionar con C#. Y como prototipo es bastante simple: Consta de dos escenas, una de ellas es un user-interface para definir el diálogo y que tiene como parámetros de entrada su propio RichTextLabel (el componente que muestra el texto en pantalla), su propio AnimationPlayer (para animar la aparición de fuentes y del indicador de fin de línea), una lista de strings donde definiremos los textos a mostrar en cada escena y un enlace a la siguiente escena (a dónde bascular una vez finalizamos los textos a mostrar).


    En cuanto a la lógica de este componente, no hay mucho más que añadir: Si pulsamos la tecla de "UI_ACCESS" (que por defecto en Godot suele ser el espacio o el intro, pero en mi caso añado la tecla "Z"), mostramos todo el texto en pantalla de golpe y si éste ya estaba visible (propiedad "VisibleRatio") pasamos al diálogo siguiente. Y si ya no quedan más diálogos que mostrar, basculamos a la escena siguiente. Es un código extremamente básico... pero funciona y hace lo que debe. Total, hablamos de la lógica detrás de una cinemática estilo Visual Novel. Faltaría poner una lógica detrás para saltarse la cinemática si mantenemos pulsado "Escape" o avanzar rápido los textos mientras se presiona "Control" (controles que también pienso implementar en la versión de Game Boy).


    Y lo segundo es un canvas al que le añado un TextureRect con el fondo a mostrar y el componente que hemos creado antes y donde inserto a mano los textos a mostrar. Es bastante chapucero, pero como prueba de concepto no está mal. La idea es hacer que esto sea realmente el bucle principal de las cinemáticas e ir cambiando dinámicamente el fondo y los textos en función de unos parámetros de entrada que indiquen el idioma y la cinemática en cuestión, cotejando estos valores dentro de un fichero externo o de una base de datos local.


    Y bueno, así está quedando la escena inicial en PC:


    Por cierto, el indicador azul saltarín es una idea que he tomado prestada de un vídeo de Emilio ES, donde hacemos lo mismo pero con una lógica interna bastante distinta: https://www.youtube.com/watch?v=UnMcvjF6YAk

No hay comentarios:

Publicar un comentario

Si te ha gustado la entrada o consideras que algún dato es erróneo o símplemente deseas dar algún consejo, no dudes en dejar un comentario. Todo feedback es bienvenido siempre que sea respetuoso. También puedes contactarme vía Twitter @Hamster_ruso si lo consideras necesario.