2010-06-17 16 views
6

Estoy tratando de hacer un juego de desplazamiento lateral fácil solo para aprender las cuerdas de la programación de juegos en Android. Se me ocurrió una solución de cómo hacerlo, pero realmente no creo que sea la solución más elegante. Quería obtener algunas ideas diferentes sobre cómo implementar mi juego, ya que realmente no tengo otra solución en este momento.juego de desplazamiento lateral Java en Android

Aquí es una breve explicación de cómo funciona ..

Tengo básicamente bloques u objetos caen desde la parte superior de la pantalla. Los bloques se definen a partir de una cadena predefinida que creo utilizando un 'editor de mapas' personalizado.

Creo todos los bloques en tiempo de compilación, los coloco dentro o fuera de la pantalla y simplemente incrementa sus coordenadas con cada iteración de Gameloop.

En realidad se hace un poco mejor que eso, pero eso da una breve explicación fácil sobre la idea básica.

Escuché de algunas personas que, en lugar de incrementar cada posición de bloque, los bloques permanecen allí y simplemente cambian el área visible. Eso tiene sentido, pero no tengo idea de cómo hacerlo.

¿Alguien puede compartir algunas ideas o enlaces sobre cómo puedo implementar algo como esto? Sé que mi solución actual no es la mejor.

Gracias!

Respuesta

7

Para aprender las cuerdas para la programación de juegos en Android, te señalaría en Google I/O 2009 - Writing Real-Time Games for Android sesión de E/S del año pasado y this una de las sesiones de 2010.

Las personas que le dicen que debe cambiar el área visible probablemente estén asumiendo que está utilizando OpenGL ES, que quizás no sea, pero que probablemente deba considerar.

+0

Estos son excelentes enlaces, muchas gracias – hanesjw

3

Si los bloques/objetos son independientes entre sí, continuaría considerándolos como objetos independientes y actualizando su posición por separado. Después de todo, es posible que desee algún día hacer que algunos de ellos se muevan de forma diferente el uno del otro. En el desarrollo del juego, es bueno dejar el motor lo más flexible posible durante el tiempo que puedas: pulir un juego implica una gran cantidad de pruebas de juego y ajustes de la mecánica del juego, y cuantas más cosas tengas que ajustar el juego. más pulido puede obtenerlo. Optimizar solo si es necesario.

Pero si los bloques no son independientes, y no lo serán, cambiar el área de visualización en lugar de mover cada bloque puede ser una buena idea, aunque más información sobre tu juego ayudaría: ¿es un juego de plataformas? Un tirador? Si hay algún tipo de objeto controlado por el jugador en el campo de juego, tendrás que cambiar su posición para mantenerlo en pantalla a medida que cambias el área visible, lo que puede complicar demasiado las cosas. Es difícil aconsejar sin más detalles.

¡Buena pregunta, sin embargo!

EDIT:

Tras su comentario, y vi su otra pregunta Problem decrementing in Java with '-='; Creo que entiendo su pregunta un poco mejor, lo principal que cambiaría, desde el punto de vista del diseño, sería crear los bloques según sea necesario, en lugar de crearlos todos a la vez. En otras palabras, cree los bloques en el marco antes de que aparezcan en la pantalla y, una vez que estén fuera de la pantalla, elimínelos. A menos que el diseño del juego requiera un gran mundo persistente, por supuesto, pero no suena como ese tipo de juego. ¿Puede el jugador retroceder, o solo permite el desplazamiento en un solo sentido?

+0

Gracias por la respuesta. La idea básica del juego es que tienes un personaje, los bloques caen y tratas de esquivarlos moviendo al personaje. Entonces los bloques son independientes. Tendría que mantener una ubicación de todos ellos para la detección de colisión que estoy asumiendo. Entonces tal vez tengo la idea correcta. – hanesjw

3

Replica Island (http://code.google.com/p/replicaisland/) es un juego de código abierto Jump & para Android. (Es del tipo que hizo las conversaciones de Escritura en tiempo real) Tal vez puedas obtener algunas buenas ideas de él.

Cuestiones relacionadas