Respuesta a la pregunta real (¿Debe un bucle de juego estar en un hilo separado?):
La razón por la que las personas a menudo recomiendan usar un hilo separado es porque no quieren que el procesamiento pesado interfiera con la interactividad de la interfaz de usuario. Eres el único que puede saber si se necesita un hilo separado para tu juego. Depende completamente del motor y el marco si el bucle principal del juego en su diseño actual puede interferir con el tiempo de respuesta de la interfaz de usuario. Pensé que generalmente asumes que no lo hará (en proyectos pequeños) a menos que tengas una razón para pensar lo contrario.
Otra razón para mantener el código en subprocesos separados es mantener el código modular y simple. Tener dos piezas de código no relacionadas mezcladas a menudo puede hacer que el código sea menos legible y mantenible a largo plazo.
¿Un bucle de juego debe ejecutarse en su propio hilo separado? Posiblemente. Si hay un problema con el tiempo de respuesta o el código y necesita varios elementos de la interfaz de usuario para responder, independientemente del procesamiento pesado, o simplemente desea dividir el código en tareas específicas que ocurren simultáneamente por razones de diseño, vaya con él. Sin embargo, se considera una práctica de programación avanzada .
Un ejemplo simple pero quizás no excelente para ilustrar es un juego de dos jugadores. Es posible que desee ejecutar dos instancias de una clase que maneja la entrada del usuario y la convierte en cambios de estado en la instancia del personaje del jugador.
Algunos marcos lo alientan / requieren que utilice un sistema basado en eventos / interrupciones como lo hace ActionScript3.0. En esos casos, el código de bucle normalmente irá al OnEnterFrame
evento o algo similar que ocurre de 20 a 60 o 120 veces por segundo.
Respuesta a la pregunta original (¿Necesito un bucle principal?):
Todo se reduce al contador del programa . Si está creando un juego que se ejecutará más de una cantidad de tiempo predeterminada y no generará código a medida que avanza , deberá solicitar amablemente a la PC de su usuario que repita algunas instrucciones que ya ha procesado y lo que posiblemente cambie en el mientras tanto es el estado (los valores almacenados en los objetos y globales del juego).
Como sabe que deberá repetir las instrucciones, hay varias formas de completar esta tarea y procesar continuamente las mismas instrucciones. Todos estos métodos implican mover el contador del programa nuevamente a la instrucción actualmente relevante. Las declaraciones de flujo de control más comunes que hacen que se repita el código se llaman bucles, otra es la goto
declaración que rara vez se usa en el código moderno y tiene un efecto similar en este caso (completamente no relevante para usted).
Entonces, para responder a su pregunta anterior, ¿necesita un bucle? Si tu puedes.