Kabosu - Creando cosas
Publicado: 2024-02-07 (actualizado 2024-08-02)
Etiquetas: Java, Juegos, Proyectos, Reto de la Paella
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.
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:
core/
contiene el código del juego en sí.android/
contiene todo lo necesario para lanzar el juego en móviles.desktop/
contiene todo lo necesario para ejecutarse en un Linux, Windows o Mac.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.
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:
items.png
.Paella
en el directorio food/
Generator.java
añadir mi clase Paella
y su probabilidad de aparición a FOOD
.En los próximos días me pondré con ello.
Los artículos de este reto son estos: