Buscar..


Versiones

Versión Fecha de lanzamiento
1.9.3 2016-05-16
1.9.5 2016-12-11

Instalación o configuración

LibGDX tiene una configuración bastante simple, con la ayuda de un programa Java simple. Puedes encontrar la descarga aquí . Cuando inicies la aplicación, se verá algo así: Ejemplo de generador de proyectos LibGDX
Nota: esta captura de pantalla se ha tomado en Linux y muestra una ruta que difiere de una instalación de Windows. Sin embargo, el formulario es el mismo en cualquier sistema operativo compatible con esta aplicación de configuración

Cajas de entrada

En el cuadro de entrada "Nombre", está el nombre del juego para tu proyecto. El cuadro de entrada "Paquete" es el paquete para su clase principal. El cuadro de entrada "Clase de juego" es la clase principal a la que se llama cuando se ejecuta el juego. El cuadro de entrada "Destino" es el destino donde se generará el proyecto. El cuadro de entrada "Andriod SDK", la ruta a donde se encuentra su SDK de Android. Este cuadro de entrada es completamente opcional, por lo que si no desea implementar su aplicación en Android, no tiene que preocuparse por esto.


Sub Proyectos

Los subproyectos son solo las plataformas que se van a implementar. Esa parte es bastante autoexplicativa. Si no desea implementarlo en HTML, por ejemplo, simplemente desactive la casilla de verificación.


Extensiones

Las extensiones son las extensiones oficiales de LibGDX. Aquí hay una tabla que te dice lo que cada uno es:

Nombre de extensión Descripción
Bala Bullet es una biblioteca de detección de colisiones 3D y dinámica de cuerpos rígidos.
Freetype Freetype le permite usar fuentes .ttf, en lugar de tener que usar fuentes de mapa de bits
Herramientas Le permite implementar la salida de herramientas LibGDX.
Controladores Le permite implementar controladores como los controladores XBox 360.
Box2d Una biblioteca de física para juegos 2d.
Box2dlights Permite una manera fácil de agregar luces dinámicas suaves a un juego de física.
Ashley Un pequeño marco de entidad
Ai Un marco de inteligencia artificial.

Puede agregar Extensiones de terceros, pero sus detalles o nombres no se mostrarán aquí.


Avanzado

En la sección Avanzado puede establecer varias configuraciones y generar archivos de proyecto adicionales para Eclipse e IDEA IDE.

Nombre de la configuración Descripción
Maven Mirror URL Reemplaza a Maven Central con la URL de Maven proporcionada
IDEA Genera archivos de proyecto IDEA Intellij
Eclipse Genera archivos de proyecto de Eclipse.
Modo offline No forzar dependencias de descarga

Generacion

Una vez que tenga todos los ajustes correctos, puede presionar el botón "Generar". Esto puede tardar un par de segundos, pero generará los archivos básicos, y Gradle es necesario para su proyecto. Una vez que haya terminado con eso, es hora de importar el proyecto a su IDE.

Hola mundo libGDX

Lo esencial

Los proyectos generados contienen una aplicación básica similar a Hello World ya implementada.

El proyecto principal es el proyecto principal, que contiene todo el código independiente de la plataforma. Esto es obligatorio, pero en función de la configuración de su generación, puede tener varios proyectos más para cada plataforma que seleccionó.

El ejemplo

Abra com.mygdx.game.MyGdxGame.java en el proyecto core . Verás el siguiente código:

public class MyGdxGame extends ApplicationAdapter {
    SpriteBatch batch;
    Texture img;
    
    @Override
    public void create () {
        batch = new SpriteBatch();
        img = new Texture("badlogic.jpg");
    }

    @Override
    public void render () {
        Gdx.gl.glClearColor(1, 0, 0, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        batch.begin();
        batch.draw(img, 0, 0);
        batch.end();
    }
    
    @Override
    public void dispose () {
        batch.dispose();
        img.dispose();
    }
} 

Aunque este es su proyecto principal, no lo ejecutará directamente, siempre tiene que ejecutar el Lanzador específico de la plataforma, para el escritorio se llama com.mygdx.game.desktop.DesktopLauncher.java en el proyecto de desktop .

public class DesktopLauncher {
    public static void main (String[] arg) {
        LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();
        new LwjglApplication(new MyGdxGame(), config);
    }
} 

En esta clase puede establecer configuraciones específicas de la plataforma.


Corriendo tu juego

Eclipse e Intellij utilizan dos métodos diferentes para ejecutar su proyecto. Encuentra el IDE que estás usando a continuación.

Ejecutando usando Eclipse

Usando eclipse, puede ejecutar su aplicación ejecutando esta clase como una aplicación Java (haga clic con el botón derecho en el proyecto -> Ejecutar como -> aplicación Java). Verás la siguiente ventana:

Ejecutando Hello World en el escritorio

Correr con la idea de Intellij

En Intellij, necesitarás hacer una configuración de ejecución. Para hacer esto, debes hacer clic en el botón en la esquina superior derecha que parece una zanahoria hacia abajo:

Zanahoria

Luego haga clic en el botón "Editar configuraciones ...". Aparecerá una pantalla con todas las configuraciones de ejecución actuales. Haga clic en el "+" en la parte superior izquierda de esa ventana y seleccione la opción "Aplicación". Desde allí, seleccione el archivo "DesktopLauncher" para la opción "Clase principal", configure "Usar classpath del módulo" a la opción principal y configure "Directorio de trabajo" en la carpeta de activos en su carpeta principal. El producto final debe verse algo como esto:

Ejecutar ejemplo de configuración

Una vez que haya hecho eso, puede seleccionar un nombre para su configuración de ejecución y hacer clic en "Aplicar", luego "Aceptar". Una vez que haya terminado con eso, puede hacer clic en el icono de ejecución verde en la parte superior derecha:

Icono de ejecutar

¿Qué está pasando en la clase MyGdxGame?

Primero se llama al método de create , que inicializará el lote que se dibuja en la pantalla. Luego el método carga el archivo badlogic.jpg en la memoria.

Después de esto, se llama repetidamente al método de render hasta que se detiene la aplicación. Este método restablecerá el color de fondo a rojo y dibujará la imagen en la pantalla. Como puede ver, siempre tiene que comenzar y finalizar el dibujo por lotes. Por último, cuando la aplicación está a punto de detener el método de dispose , se liberará el espacio de memoria utilizado por la textura y el lote.

(Es bueno saber que la eliminación puede ocurrir en tiempo de ejecución también en otras plataformas, por ejemplo, Android, ya que Android puede liberar espacio de memoria cuando las aplicaciones están en segundo plano, pero este es un tema más avanzado)



Observación: ¡ Si obtiene un error al ejecutar como se muestra a continuación, verifique esta pregunta para obtener respuesta!

Archivo no encontrado: badlogic.jpg (interno)

Descripción general de LibGDX

LibGDX es una biblioteca de desarrollo de juegos de código abierto y gratuita desarrollada en Java. Sus objetivos son permitir a los usuarios desarrollar juegos multiplataforma que se ejecutan en navegadores de escritorio, Android, iOS y web. Escribir código una vez, desplegarlo en cualquiera de las plataformas principales.

Agregando soporte para código específico de la plataforma

LibGDX está diseñado de manera que pueda escribir el mismo código y desplegarlo en varias plataformas diferentes. Sin embargo, hay ocasiones en las que desea obtener acceso a un código específico de la plataforma. Por ejemplo, si tiene tablas de clasificación y logros en su juego, es posible que desee utilizar herramientas específicas de la plataforma (como Google Play Games) además de almacenarlas localmente. O quieres usar una base de datos, o algo completamente diferente.

No puede agregar este tipo de código en el módulo principal. Entonces el primer paso es crear una interfaz. Crealo en el módulo central. Este primero es una utilidad para gestionar otras interfaces:

public interface PlatformWrapper{
    //here you can also add other things you need that are platform specific.
    //If you want to create your own file saver for an instance, a JSON based database,
    //achievements, leaderboards, in app purchases and anything else you need platform specific code for.
    SQLWrapper getSQLSaver();//This one will be used in this example
    AchievementWrapper getAchievementHandler();//this line is here as an example
}

Entonces, necesitamos crear una segunda interfaz, el SQLWrapper. Éste también va en el módulo central.

public interface SQLWrapper{
    void init(String DATABASE);
    void saveSerializable(int id, Object o);
    Object loadSerializable(int id, Object o);
    void saveString(int id, String s);
    //.... and other methods you need here. This is something that varies
    //with usage. You may not need the serializable methods, but really need a custom method for saving 
    //an entire game world. This part is entirely up to you to find what methods you need
   
    //With these three methods, always assume it is the active database in question. Unless 
    //otherwise specified, it most likely is
    String getActiveDatabase();
    void deleteDatabase();
    void deleteTable(String table);//delete the active table
}

Ahora, debe ir a cada proyecto y crear una clase para implementar PlatformWrapper y una para implementar SQLWrapper. En cada proyecto se agrega el código necesario, como instancias, constructores, etc.

Una vez que haya anulado todas las interfaces que creó, asegúrese de que todas tengan una instancia en la clase que implemente PlatformWrapper (y que haya un captador). Finalmente, cambias el constructor en la clase principal. La clase principal es la clase a la que hace referencia desde el iniciador. Extiende ApplicationAdapter, implementa ApplicationListener o extiende el juego. Edite el constructor y agregue PlatformWrapper como un argumento. Dentro de la envoltura de la plataforma tiene algunas utilidades (si agregó alguna) además de todas las otras envolturas (sql, logros, o cualquier otra cosa que haya agregado).

Ahora, si todo está configurado correctamente, puede hacer una llamada a PlatformWrapper y obtener cualquiera de las interfaces multiplataforma. Llame a cualquier método y (suponiendo que el código ejecutado sea correcto) verá en cualquier plataforma, hace lo que se supone que debe hacer con el código específico de la plataforma

Gestor de activos

El AssetManager es una clase que le ayuda a administrar sus activos.

En primer lugar, necesitas crear una instancia:

AssetManager am = new AssetManager();

Después de que esto se haya inicializado, y antes de renderizar algo, desea obtener los recursos:

am.load("badlogic.jpg", Texture.class);//Texture.class is the class this asset is of. If it is a 
//sound asset, it doesn't go under Texture. if it is a 3D model, it doesn't go under Texture.class
//Which class added depends on the asset you load

//... other loading here ...//

//when finished, call finishLoading:
am.finishLoading();

Ahora, donde sea que quieras tener badlogic.jpg :

Texture texture = am.get("badlogic.jpg");
//Ready to render! The rendering itself is in the normal way

El uso de AssetManager le permite cargarlos una vez en la memoria del AssetManager y luego obtenerlos tantas veces como desee.

¿Por qué usar AssetManager? (de la wiki ):

AssetManager (código) le ayuda a cargar y administrar sus activos. Es la forma recomendada de cargar sus activos, debido a los siguientes comportamientos agradables:

  • La carga de la mayoría de los recursos se realiza de forma asíncrona, por lo que puede mostrar una pantalla de carga reactiva mientras se cargan las cosas
  • Los activos son referencia contados. Si los dos activos A y B dependen de otro activo C, C no se eliminará hasta que A y B se eliminen. Esto también significa que si carga un activo varias veces, en realidad se compartirá y solo ocupará memoria una vez.
  • Un solo lugar para almacenar todos sus activos.
  • Permite implementar de manera transparente cosas como cachés (ver FileHandleResolver más abajo)

El gráfico de escena 2D

Cuando comienzas con Java o Android, aprendes rápidamente que (0,0) está en la esquina superior izquierda. En LibGDX, sin embargo, (0,0) está por defecto en la esquina inferior izquierda.

Usando una cámara ortográfica, puede obtener (0, 0) estar en la esquina superior izquierda. Aunque por defecto, (0, 0) está en la esquina inferior izquierda. Esto es algo que es importante saber, ya que también cambia qué esquina de las texturas tienen las coordenadas X e Y.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow