Tengo problemas para entender el diseño del juego. En la plataforma Android, tengo una actividad y configuro su vista de contenido con una vista de superficie personalizada. La vista de superficie personalizada actúa como mi panel y creo instancias de todas las clases y hago todo el dibujo y el cálculo allí.
Pregunta: ¿Debería crear las instancias de otras clases en mi actividad?
Ahora creo una clase de hilo personalizada que maneja el ciclo del juego.
Pregunta: ¿Cómo uso esta clase en todas mis actividades? ¿O tengo que crear una instancia separada de la clase de hilo extendida cada vez?
En mi juego anterior, tenía varios niveles que tenían que crear una instancia de la clase de subproceso y en la clase de subproceso tuve que establecer métodos de constructor para cada nivel separado y en el bucle usar una instrucción de cambio para verificar qué nivel necesita representar y actualizar. Lo siento si eso suena confuso.
Solo quiero saber si el método que estoy usando es ineficiente (que probablemente lo sea) y cómo diseñarlo de la manera correcta. He leído muchos tutoriales y todavía tengo muchos problemas con este tema en particular. ¿Quizás un enlace a algunos tutoriales que explican esto? Gracias.
fuente
OpenGL ES
usted debe saber que el render enOpenGL ES
que ya tiene su propio hilo y en ese caso no es necesario crear manualmente y comenzar una nuevaThread
yRunnable
para ese sistema.Por lo general, su ciclo de juego es autónomo dentro de una sola Actividad.
cuando cambias de actividad, pausas / matas tu bucle de juego. Las actividades separadas deberían corresponder a pausar el juego de todos modos (por ejemplo, porque ha cambiado a una actividad de "enviar correo electrónico a amigos" o "menú principal")
Para niveles adicionales, no deberías crear o eliminar nuevos hilos ... a menos que cambies a una actividad de "nivel completo, cargando el siguiente nivel, espera", y tendrás que reiniciar el "juego principal" "Actividad de todos modos. Pero incluso en ese caso, en realidad no estás haciendo hilos "adicionales", solo estás haciendo un hilo en esa Actividad, y matando / reiniciando / matando / reiniciando secuencialmente ... esa Actividad. cada vez que se completa un nivel.
fuente
Si entiendes alemán, este tutorial es muy bueno.
Para el idioma inglés, puedo recomendar este tutorial
Con respecto a la clase de hilo: no sé si es realmente necesario que pueda hacer referencia a todas las clases en su aplicación. En mi juego, lo resolví de esa manera:
La clase que es responsable de dibujar la GUI principal tiene un método de renderizado anulado. En este método, se llama una clase de subproceso que actualiza todos los elementos de la GUI y procesa las entradas del usuario.
El hilo también es responsable de mantener una velocidad de fotogramas constante. Dependiendo del juego que estés desarrollando, esto podría ser importante.
fuente