Instalando Slick2D

Descargamos Slick2D y LWJGL y configuramos un proyecto en Eclipse IDE. Si usas otro IDE no puedo ayudarte.

Este curso ha sido marcado como anticuado y no está siendo revisado de forma activa. Es posible que la información pueda estar desactualizada o que los enlaces se hayan roto.

Para comenzar a desarrollar videojuegos en Java con Slick2D, lo primero que necesitamos es configurar nuestro entorno de desarrollo. Partimos de tener instalado el JDK, el JRE y Eclipse, que son las bases para programar en Java. Si aún no los tenemos, es fundamental instalarlos antes de continuar.

El siguiente paso es descargar las librerías necesarias para trabajar con gráficos 2D y manejar la entrada del usuario. La librería principal es Slick, que podemos obtener desde su página oficial. Slick nos proporciona módulos y clases para dibujar en 2D, gestionar la entrada del teclado y ratón, cargar imágenes y reproducir sonidos, entre otras funcionalidades esenciales para un juego.

Sin embargo, Slick no funciona de manera independiente. Detrás de ella está LWJGL (Lightweight Java Game Library), que es la encargada de interactuar directamente con la tarjeta gráfica y manejar OpenGL. Slick actúa como una capa que simplifica el uso de LWJGL. Por eso, también debemos descargar LWJGL desde su sitio oficial, asegurándonos de obtener la versión correcta y solo los archivos necesarios, como el archivo principal .jar y las librerías nativas para nuestro sistema operativo (por ejemplo, .dll para Windows o .so para Linux).

Una vez descargadas ambas librerías, las añadimos a nuestro proyecto en Eclipse. Para ello, creamos un nuevo proyecto Java y en las propiedades del proyecto, dentro de la sección Java Build Path, agregamos los archivos .jar de Slick y LWJGL como librerías externas. Además, configuramos la ruta de las librerías nativas para que el entorno pueda acceder a ellas correctamente.

Es recomendable también configurar el Javadoc para estas librerías, lo que nos permitirá consultar la documentación directamente desde Eclipse mientras programamos, facilitando la comprensión de los métodos y clases que utilizamos.

Con el entorno listo, podemos empezar a crear nuestro primer juego básico. En Slick, la clase principal para definir un juego es Game, que es una interfaz. Para simplificar, podemos extender la clase BasicGame, que ya implementa esta interfaz y nos permite centrarnos en la lógica del juego sin preocuparnos por detalles complejos.

Al crear nuestra clase que extienda BasicGame, debemos definir un constructor que llame al constructor padre con el título del juego, que aparecerá en la ventana. Además, implementamos tres métodos clave:

  • init: se ejecuta una vez al inicio y sirve para inicializar recursos como imágenes, sonidos o configuraciones.
  • update: se llama repetidamente y es donde actualizamos la lógica del juego, como mover personajes o detectar entradas del usuario. Recibe un parámetro delta que indica el tiempo transcurrido desde la última llamada, útil para sincronizar movimientos.
  • render: también se llama repetidamente y es donde dibujamos en pantalla todos los elementos del juego, utilizando el objeto gráfico que se pasa como parámetro.

Para mostrar nuestro juego en una ventana, utilizamos la clase AppGameContainer, que actúa como contenedor y se encarga de crear la ventana donde se renderiza el juego. Al crear una instancia de AppGameContainer, le pasamos nuestro juego y configuramos propiedades como el tamaño de la ventana y si queremos pantalla completa.

Un ejemplo sencillo para probar que todo funciona es dibujar un texto en pantalla dentro del método render usando el método drawString del objeto gráfico. Por ejemplo:

import org.newdawn.slick.*;
import org.newdawn.slick.state.*;

public class HolaSlick extends BasicGame {

    public HolaSlick() {
        super("Hola Slick");
    }

    @Override
    public void init(GameContainer container) throws SlickException {
        // Inicialización del juego
    }

    @Override
    public void update(GameContainer container, int delta) throws SlickException {
        // Actualización del juego
    }

    @Override
    public void render(GameContainer container, Graphics g) throws SlickException {
        g.drawString("Hola Slick", 100, 200);
    }

    public static void main(String[] args) {
        try {
            AppGameContainer app = new AppGameContainer(new HolaSlick());
            app.setDisplayMode(852, 480, false);
            app.start();
        } catch (SlickException e) {
            e.printStackTrace();
        }
    }
}

Al ejecutar este código, veremos una ventana con el texto Hola Slick dibujado en la posición indicada. Además, en la esquina se muestra el contador de fotogramas por segundo, que nos indica la frecuencia con la que se está renderizando la pantalla.

Slick también nos permite dibujar formas básicas como líneas, rectángulos y óvalos, tanto rellenos como solo con el contorno. Por ejemplo, podemos usar métodos como drawLine, drawRect y fillOval para crear gráficos simples. Esto es útil para entender cómo funciona el renderizado antes de pasar a imágenes más complejas.

Un detalle interesante es el uso del hot swap en Eclipse, que nos permite modificar el código mientras el juego está en ejecución y ver los cambios reflejados sin necesidad de reiniciar la aplicación, siempre que los cambios se hagan en métodos que se llaman repetidamente como render o update.

En resumen, con Slick y LWJGL configurados, podemos crear juegos básicos en Java definiendo una clase que extienda BasicGame, implementando los métodos init, update y render, y ejecutando el juego dentro de un AppGameContainer. A partir de aquí, podemos explorar más funcionalidades, como cargar imágenes, manejar sonidos y crear juegos más complejos.

Lista de reproducción
  1. 1
    Instalando las herramientas Java
    11 minutos
  2. 2
    Instalando Slick2D
    26 minutos
  3. 3
    Estados e imágenes
    23 minutos
  4. 4
    Respuesta de usuario
    24 minutos
  5. 5
    Colisiones
    25 minutos
  6. 6
    Matemáticas y física
    13 minutos
  7. 7
    SpriteSheet
    13 minutos
  8. 8
    Tilemaps básicos
    23 minutos
  9. 9
    Escalas
    11 minutos
  10. 10
    Animaciones (parte 1)
    14 minutos
  11. 11
    Animaciones (parte 2)
    15 minutos
  12. 12
    Radiografía de un estado
    12 minutos
  13. 13
    Mover con el ratón (parte 1)
    11 minutos
  14. 14
    Mover con el ratón (parte 2)
    13 minutos
  15. 15
    Sonido
    13 minutos
  16. 16
    Música
    14 minutos
  17. 17
    Fuentes
    19 minutos
  18. 18
    Instalar Slick en NetBeans
    6 minutos