Feliz en la Noche, mi primer juego en Python con PyGame para mi primera Game Jam

Con la idea de seguir practicando y mejorando con Python y aprender a realizar juegos con PyGame, decidí participar en mi primera Game Jam: la Indie Spain Jam 2023. El resultado fue Feliz en la Noche, un juego desarrollado con PyGame-ce en una semana. Ahora publico el código fuente y os hablo sobre él.

Feliz en la Noche

Feliz en la Noche es un juego estilo Pang desarrollado para la Indie Spain Jam 2023. Los objetivos eran:

  • Participar en mi primera Game Jam.
  • Aprender a trabajar con PyGame-ce y profundizar en Python mientras aprendía las bases de la programación de juegos.

El tema de la Game Jam era “Cae la noche”. Después del “brainstorming” típico al inicio de una Game Jam, y después de empezar otro juego y tirarlo a la basura apareció esta idea, la de crear un juego al estilo Pang pero cambiando las bolas por soles. De modo que cuando el jugador acaba con un sol, la pantalla se va oscureciendo un poco.

El objetivo de cada nivel del juego es acabar con todos los soles para que la noche caiga.

Feliz en la Noche Titulo

Puedes obtener más información, ver el resultado e incluso descargar versiones empaquetadas de juego desde su página de itch.io.

Historia de Feliz en la Noche (a.k.a Pang Nightfall)

Lucas es un antiguo astronauta de la Agencia Espacial Europea. El espacio era su casa, pero desde su jubilación siente una gran soledad en su interior. Solamente es feliz cuando CAE LA NOCHE y puede contemplar el cielo nocturno. Observar las estrellas lo hace sonreír recordando los tiempos en los que fue un viajero entre ellas.

Pero ahora, unos traviesos soles han invadido sus tierras alumbrando todo a su paso e impidiendo contemplar la noche en todo su esplendor.

Usa el láser y ayuda a Lucas a acabar con sus enemigos. ¡Acabad con ellos para conseguir que la noche vuelva a caer de nuevo! Pero ten cuidado, cada vez que elimines a un enemigo, la noche ira cayendo…

Feliz en la Noche juego

Código fuente del juego

Uno de objetivos del blog es divulgar el software libre. Al estar desarrollando el juego para una Game Jam, y más siendo la primera, no pude crear el repositorio y publicar el código fuente del juego en aquel momento. Pero ahora, unos meses más tarde, he preparado el repositorio en Gitlab, los ficheros README.md y por fin, publicado el código.

Además, he aprovechado para preparar el juego para soportar traducciones y generado las dos primeras: Inglés y Español.

Tengo que reconocer que la idea era también hacer algunos artículos o algún tutorial de PyGame, pero creo que esto tendrá que esperar… Así que si estás interesado puedes usar el repositorio de público de Feliz en la Noche para aprender Python y PyGame o más bien PyGame-ce.

Desarrollando videojuegos con PyGame-ce

Ahora que ya te he hablado del juego en sí, voy a contarte un poco más sobre PyGame y PyGame-ce.

PyGame es básicamente un conjunto de módulos Python para el desarrollo de videojuegos. Se podría decir que nos permite usar desde Python la conocidísima libreria SDL a la vez que añade funcionalidades. Además, al estar usando Python, y dado que este es un lenguaje interpretado, permite que los juegos sean ejecutados en multitud de plataformas y sistemas operativos.

No se puede decir que PyGame sea realmente un motor gráfico para el desarrollo de juegos como pueden ser Godot, Unity o Unreal Engine. Esto hace que haya muchas cosas que un motor gráfico ya te resuelve de manera más o menos automática y que en PyGame tienes que hacerlo tú. Por ejemplo, una cosa tan simple como animar un personaje cambiando el sprite tienes que codificarla tú. Esto podría ser su punto débil, pero depende de lo que estés buscando. De hecho, esta misma situación puede verse como su punto fuerte, porque te permite aprender las bases del desarrollo de videojuegos. Así que lo que si puede ser PyGame es un buen punto de partida para aprender las bases y después saltar a algún motor gráfico.

PyGame vs PyGame-ce

¿Pero por qué a veces estoy hablando de PyGame y otras de PyGame-ce? Esto se debe a que no hace mucho que la comunidad de PyGame y el responsable del repositorio del código tuvieron un conflicto. No conozco los detalles, pero parece que el origen viene de cierta dejadez del responsable a la hora de aceptar cambios, trabajar con la comunidad en mejoras y en general con ciertos problemas con el mantenimiento del PyGame original. Así que, llegado el momento, la mayor parte de los colaboradores de la comunidad decidieron seguir su propio camino y generar PyGame-ce. Esta versión cuenta con mejoras, mayor frecuencia de actualizaciones y de momento un desarrollo más activo. Así que se está imponiendo en la comunidad como la versión más recomendada para usar. De hecho, Feliz en la Noche está desarrollado con PyGame-ce.

Enlaces de interés

Artículo anterior

Artículos relacionados: