¿Cómo crear un juego de Android 2D?

Soy un desarrollador que sigue aprendiendo en Android, he creado dos aplicaciones hasta ahora, un reloj despertador, un widget y un administrador de pases usando bases de datos, tengo un poco de experiencia, pero me gustaría crear un lado 2D Scroller juego, comprobar en la web y hay diferentes tutoriales, pero, ¿cuál es la mejor manera de empezar a trabajar en él? He leído sobre libgdx pero no estoy seguro de si está desactualizado.

He visto que todos los juegos se hacen en Java, y luego portado a Android, es esto correcto? ¡Agradecería una cierta dirección, gracias!

Tienes varias opciones, puedes ir a AndEngine (que a mí me parecía extremadamente poco documentado y al azar), hacer su propio juego "nativo" Android con la extensión de un SurfaceView (que no es imposible, pero ciertamente no hace su vida Fácil, especialmente al manejar imágenes y especialmente sonido, pero aquí está una disposición para él: Usando un SurfaceView y un hilo de rosca para la programación del juego del androide (ejemplo) ), y allí está LibGDX.

Yo personalmente recomiendo LibGDX, incluso hice un juego de 4 jugadores multijugador bastante simple en él y ciertamente no fue difícil. Recomendaría el siguiente tutorial sobre cómo llegar a él: http://www.gamefromscratch.com/page/LibGDX-Tutorial-series.aspx

Y lo básico son los siguientes:

  • Cuando creas un proyecto, lo primero que quieres hacer es cambiar ApplicationAdapter a Game para que tengas acceso a la función de delegación setScreen(Screen) , para que puedas separar la pantalla y la lógica de tu juego en Screens.

  • Usted quiere manejar el tiempo transcurrido en su pantalla, que se hace como el siguiente: Cómo controlar el tiempo en Libgdx (android)

  • Es probable que desee hacer un menú, que por supuesto se puede hacer con imágenes bonitas y BitmapFonts, pero voy a señalar a la official wiki ( https://github.com/libgdx/libgdx/wiki ) con eso. Usted puede utilizar Scene2D, aunque me pareció un poco difícil, por lo que personalmente hizo un menú de rectángulos, que funcionó bastante bien: LibGDX – Custom Click Listener?

  • Un poco más de "clic orientado" guía sobre cómo he manejado eventos táctiles con LibGDX: https://stackoverflow.com/a/24511980/2413303

  • Después, literalmente, solo implementa lógica de juego, temporizadores, modelos de datos, comportamiento.

La forma en que resolví el estiramiento en lugar de usar un StretchingViewport o las cámaras incorporadas fue la siguiente:

 public class Resources { public static Texture texture; public static SpriteBatch batch; public static Matrix4 normalProjection; public static BitmapFont bitmapFont; public static ShapeRenderer shapeRenderer; .... } public static void initialize() { int width = Gdx.graphics.getWidth(); int height = Gdx.graphics.getHeight(); Resources.bitmapFont = new BitmapFont(); Resources.shapeRenderer = new ShapeRenderer(); Gdx.gl.glLineWidth((width < 640 && height < 480) ? 2.5f : 6f); //camera = new OrthographicCamera(1, h / w); //I didn't use this at all Gdx.gl.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); loadTextures(); Resources.batch = new SpriteBatch(); Resources.normalProjection = new Matrix4().setToOrtho2D(0, 0, 480, 320); //model is 480x320 Resources.batch.setProjectionMatrix(Resources.normalProjection); Resources.shapeRenderer.setProjectionMatrix(Resources.normalProjection); } public class InputTransform { private static int appWidth = 480; private static int appHeight = 320; public static float getCursorToModelX(int screenX, int cursorX) { return (((float)cursorX) * appWidth) / ((float)screenX); } public static float getCursorToModelY(int screenY, int cursorY) { return ((float)(screenY - cursorY)) * appHeight / ((float)screenY) ; } } 

Asegúrese de deshacerse de los recursos que necesitan deshacerse, en la devolución de llamada dispos () del juego.

Libgdx no está obsoleta y es, IMHO, la mejor manera de programar para android. La razón es que, usted puede desarrollar un 99% en el escritorio (ofc pensar en los controles, que no será un teclado en android) y luego tienes una aplicación androide de trabajo con unas pocas líneas sólo.
Si en cambio desarrolla para android directamente, necesitas usar el emulador verry slow o tienes que enviar la aplicación a un testphone, solo para depurar tu código. Esto es mucho más lento que depurar en el escritorio directamente.
Libgdx es verry eficiente, fácil de usar (tan pronto como entender cómo funciona) y tiene una buena documentación.

Para tutoriales: escribí una respuesta aquí en SO , que parecía ayudar a algunas personas. Es un corto "tutorial" que muestra sólo los fundamentos verry y he añadido los enlaces a algunos tutoriales que me ayudó a aprender. Así que espero que te ayude a ^ ^

  • Android libgdx gran pantalla de resolución
  • Implementar Google Analytics para las pantallas de juegos Android LibGDX
  • Multiplicando un vector2 por un escalar (LibGDX)
  • Producción de efectos de borrado mediante libgdx y OpenGL ES
  • LibGDX - Obtener deslizar hacia arriba o deslizar derecha, etc?
  • En libgdx, ¿cómo puedo obtener información del botón de retroceso?
  • Libgdx se bloquea en Android
  • No se puede empacar imágenes de resolución 800x800 utilizando libGDX texture packer con opción stripwhitespace?
  • Cómo generar múltiples apk (utilizando gradle, libGDX)
  • Añadiendo Admob a Libgdx juego
  • Cómo girar un modelo 3D en múltiples ejes con la orientación del teléfono
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.