Kabosu - Creando cosas

Logo de la página. Gato esférico con colores verdoso.

Paella Pixel Dungeon (parte 2): inspeccionando el código

Publicado: 2024-02-07 (actualizado 2024-02-20)

Etiquetas: java, juegos, reto de la paella


Logo de Paella Pixel Dungeon

Continúo con mi proyecto bautizado como el Reto de la Paella. Consiste en modificar el juego Shattered Pixel Dungeon para añadirle algún elemento valenciano como la paella aunque no necesariamente tiene que ser una paella. En el artículo anterior puedes encontrar más información.

He empezado descargando el código fuente del juego de Github. Tiene unas breves instrucciones de cómo compilar y ejecutar en PC. El juego está escrito en Java. Al parecer utiliza la librería libGDX. He escuchado hablar de ella pero no sé nada sobre ella.

Me he bajado el código del juego:

git clone https://github.com/00-Evan/shattered-pixel-dungeon.git

Para compilar utiliza Gradle así que compilarlo es tan simple como ejecutar:

./gradlew desktop:release

Al cabo de unos minutos ya tengo listo el paquete .jar que ejecuto con

java -jar desktop/build/libs/desktop-2.3.2.jar

He estado probando unos minutos el juego. Al menos estos instantes iniciales son muy parecidos a lo que recuerdo del juego original que jugué hace muchos años. No quiero jugar demasiado porque me engancharé. Básicamente es un rogue con estética pixel. Hay que ir explorando una mazmorra bajando niveles hasta que te matan. Uno de los detalles que me parecía divertido es que los botes con líquido no sabes lo que hacen hasta que los pruebas. A lo mejor ese líquido azul que tienes en el inventario es una poción de curación pero también podría ser un cóctel incendiario. ¿Qué haces, lo bebes o lo lanzas? Por suerte una vez has usado un líquido de un determinado color ya sabes para qué sirve durante el resto de esa partida.

Captura del juego Shattered Pixel Dungeon

Tras compilar y ver que funciona, lo siguiente que he hecho ha sido echar un vistazo al código. He ido al directorio desktop/ porque lo que a mí me interesa es la versión para PC aunque una vez allí he visto que no había prácticamente nada. Lo único interesante es el fichero DesktopLauncher.java que inicializa algunas cosas como la resolución y luego delega todo en la clase ShatteredPixelDungeon que está en core/. Allé voy.

El código parece bastante bien organizado:

Creo que para mis tonterías solo voy a necesitar modificar cosas en core/ así que me puedo despreocupar del resto.

Para hacer una prueba he abierto con GIMP una de las imágenes core/src/main/assets/interfaces/banners.png que incluye el texto que se usa en la pantalla del título y he escrito "Paella" encima de "Shattered". Tras recompilar y ejecutar de nuevo el juego he visto que ahora el título es Paella Pixel Dungeon. Debería haber escrito el texto de otro color porque es difícil de leer con el fondo oscuro del juego pero no es algo que me preocupe demasiado ahora mismo.

Captura de pantalla de la pantalla Shattered Pixel Dungeon. Encima de la palabra Shattered está escrito "Paella" de manera bastante cutre.

Ahora a ver qué hago con el código.

He visto que en core/src/main/assets/sprites/items.png están los sprites de los alimentos como el pan o la manzana. Seguramente puedo añadir ahí la paella.

Luego tiene pinta de que tengo que crear una nueva clase en core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/food/. He visto que ahí hay una clase para cada alimento e incluso algo de código que parece que se usa para combinar alimentos.

El fichero Generator.java parece que se usa para crear aleatoriamente items en el juego. Tiene un array llamado FOOD.classes en el que se listan los tipos de comida que pueden aparecer en el juego. FOOD.defaultProbs entiendo que indica la probabilidad con la que aparece cada tipo de comida.

Parece que los únicos cambios que tendría que hacer para añadir mi item paella son:

En los próximos días me pondré con ello.

Los artículos de este reto son estos:


Artículo siguiente: Paella Pixel Dungeon (parte 3): visualizando el sprite
Artículo anterior: Paella Pixel Dungeon (parte 1): añadiendo valencianía a un juego