Desarrollando un juego con Godot
Siempre me gustó la programación, aunque es un hobby al que le he dedicado poco tiempo. Como no se me ocurre ninguna aplicación a la que pueda meterle mano, los videojuegos parecen una buena opción, ya que nunca sobran y no tienen por qué ser útiles.
Mis primeros pinitos en el mundillo los hice con pygame, porque python es el lenguaje de programación más asequible para mí. Pero, aunque el lenguaje es sencillo, había que programar prácticamente todas las cuestiones del videojuego, lo que te hace perder mucho tiempo con la parte técnica, y es difícil ver avances.
Unos cuantos años después he vuelto a empezar, pero esta vez he confiado la parte más técnica a un motor de videojuegos que se llama Gogot. Aunque sigue siendo necesario programar cosas, Godot se encarga de gestionar todo lo difícil de programar, dejando la lógica en tus manos. Godot utiliza un lenguaje de scripting, GDscript, que es muy parecido a python, por lo que comenzar a trastear con él ha sido muy sencillo.
Desarrollando el videojuego
Lo primero es decidir el tipo de videojuego, en mi caso un clásico plataformas en 2D. Después viene pensar un poco en la mecánica del juego, es decir, en qué consite. Para este juego la idea es tener un nivel con varias plataformas, obviamente, enemigos estáticos y dinámicos, collectables, y salidas. Se trata de recoger todos los collectables y encontrar la salida, avanzando entre las plataformas y evitando a los enemigos. Hasta el momento todo fácil.
En Godot, la mayoría de las cosas que vayas a ver en el videojuego son escenas. Las escenas se componen combinando nodos de varios tipos y la lógica de la escena se define mediante scripts.
El mundo
Esta es la escena principal, que va a contener, un fondo, las plataformas y a la que luego añadiremos el resto de los elementos.
El jugador
Se trata de un nodo tipo CharacterBody2D, lo que le permite interaccionar con las físicas del juego, como la gravedad. Le añadiremos un nodo AnimatedSprite2D con las animaciones del movimientoy un CollisionShape2D, que le permitirá chocar con algunas de las cosas, por ejemplo, con el suelo.
Los collectables
Las cerezas que voy a utilizar como collectables van a aparecer flotando en determinados lugares del mapa y solo interaccionarán con el jugador. No están sujetas a la gravedad ni pueden chocar con nada. Para definirlas usaré un Area2D, con un AnimatedSprite2D y un CollisionShape2D
Los enemigos
Todavía estoy pensando cómo lo voy a plantear, pero probablemente los cree de forma que puedan interaccionar con objetos físicos y estén sujetos a la gravedad. Comenzaré con objetos estáticos y luego iremos viendo.
Trampas
Final
De nuevo, aparecerá flotando en algún punto del mapa y solo interaccionará con el jugador.