Theolium Comienza

Cópiate y sígueme porque busco publicar código paso a paso creando juego móvil inspirado en clásicos de los 80.

Theolium Comienza

Siendo de la generación X, me encuentro sediento de entretenimiento sano y clásico como el de los 80. Aquellos juegos cuyo único objetivo era tener el puntaje más alto y ver tus iniciales en la cima del listado.

Con eso en mente, decidí comenzar a codificar un pequeño juego móvil en mi tiempo libre inspirado en clásicos como Galaga, Space Invaders y Centipede. La estructura de LibGDX junto con Android Studio siguen siendo mis herramientas preferidas para codificar en Java y OpenGL.

Version LibGDX: 1.13.1
Version Android Studio: Ladybug | 2024.2.2

Primero comienzo con una interfaz para comunicación entre módulos.

public interface CommunicationInterface {

    String getBrand();

    String getBuild();

    boolean getSignIn();

    void login();

    void disconnect();

    void submitScore(int score);

    void getLeaderboards();

    void getAchievements();

    void pulseVibrate();

    void exitApp();
}

Próximo, modificar el módulo de Android y Desktop (lwjgl3) para aceptar la interfaz.

public class AndroidLauncher extends AndroidApplication implements CommunicationInterface {

    @Override
    protected void onCreate (Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
        config.numSamples = 12;

        View gdxGameView = initializeForView(new Main(this), config);

        FrameLayout frameLayout  = findViewById(R.id.game_view);
        frameLayout.addView(gdxGameView);
    }

    @Override
    public String getBrand() {
        return android.os.Build.MODEL;
    }

    @Override
    public String getBuild() {
        return BuildConfig.VERSION_NAME;
    }

    @Override
    public boolean getSignIn() {
        return false;
    }

    @Override
    public void login() {}

    @Override
    public void disconnect() {}

    @Override
    public void submitScore(int score) {}

    @Override
    public void getLeaderboards() {}

    @Override
    public void getAchievements() {}

    @Override
    public void pulseVibrate() {}

    @Override
    public void exitApp() {
        finish();
    }
}
public class Lwjgl3Launcher {

    public static void main(String[] args) {

        if (StartupHelper.startNewJvmIfRequired()) return;

        createApplication();
    }


    private static void createApplication() {

        new Lwjgl3Application(new Main(new CommunicationInterface() {

            @Override
            public String getBrand() {
                return System.getProperty("os.name");
            }

            @Override
            public String getBuild() {
                return "PROTOTYPE";
            }

            @Override
            public boolean getSignIn() {
                return false;
            }

            @Override
            public void login() {}

            @Override
            public void disconnect() {}

            @Override
            public void submitScore(int score) {}

            @Override
            public void getLeaderboards() {}

            @Override
            public void getAchievements() {}

            @Override
            public void pulseVibrate() {}

            @Override
            public void exitApp() {
                Gdx.app.exit();
            }

        }),

            getDefaultConfiguration());
    }


    private static Lwjgl3ApplicationConfiguration getDefaultConfiguration() {

        Lwjgl3ApplicationConfiguration config = new Lwjgl3ApplicationConfiguration();

        config.setForegroundFPS(0);
        config.setTitle("THEOLIUM);
        config.setWindowedMode(360, 640);
        config.useVsync(true);
        config.setResizable(true);
        config.setBackBufferConfig(8, 8, 8, 8, 16, 0, 12);

        return config;
    }
}

Con eso concluye la base. Próximo, se debe modificar la clase Main del módulo principal para adoptar el marco de código Scene2d de LibGDX, que ofrece una arquitectura para crear interfaces gráficas más dinámicas y responsables. Este marco es especialmente útil para desarrollar aplicaciones de juegos, permitiendo manejar elementos visuales de manera eficiente añadiendo múltiples escenas y actores, lo que facilitará el mantenimiento y mejorará la experiencia del usuario final.

Únete a otros 35 suscriptores

Deja una respuesta

Anuncios


Anuncios