¿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!
- Evite que el juego LibGDX se detenga completamente cuando se detiene
- LibGDX - Shader trabajando en el escritorio pero no en Android
- LIBGDX: agregue un enlace de texto que se puede hacer clic
- Cómo dibujar una imagen de fondo grande con libgdx - las mejores prácticas?
- La UI de configuración de Libgdx da 2 errores inesperados en el nuevo proyecto GWT
- LibGdx Gdx-Pay extensión obtener el precio del artículo
- LibGDX: Implementación en un dispositivo iOS: ApplicationVerificationFailed
- Error: Android Pre Dex: Android SDK no está especificado
- Textura de texturepacker en LibGDX
- Libgdx: la aplicación android no encuentra la clase de juego principal
- Cómo utilizar los servicios de juegos de Google Play con LibGdx
- ¿Cómo hacer detector de contador enemigo en libgdx?
- Cómo portar el juego libgdx COMPLETADO de Android a iOS
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
aGame
para que tengas acceso a la función de delegaciónsetScreen(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 ^ ^