Estoy trabajando en un juego de estrategia por turnos en Java (en el marco de Android). Siguiendo la estructura en Beginning Android Games, tengo un hilo de renderizado y un hilo de interfaz de usuario. El hilo de renderizado actualiza repetidamente el estado mundial y luego vuelve a dibujar el mundo. Cuando el usuario interactúa con la pantalla, la GUI envía acciones al mundo (patrón de comando). Ahora estoy agregando jugadores AI, y aquí está mi plan:¿Cómo debo manejar la comunicación entre los hilos AI y el lazo principal del juego?
Cada jugador AI tendrá una IA que se ejecute en un hilo separado.
Cuando el mundo se actualiza en un turno AI, comprueba si hay una acción pendiente. Si es así, lo ejecuta. Luego le pide al jugador de IA su próxima acción.
El reproductor AI enviará la solicitud de una acción al hilo AI y luego regresará.
Eventualmente, la IA generará una acción y la publicará de nuevo en el Mundo, que la verá en la próxima actualización.
dos preguntas:
1) ¿Tiene este diseño parecen sonido?
2) ¿Cómo manejo la comunicación hacia y desde el hilo AI? Si tengo el hilo AI llame a world.queueAction (acción), parece que funcionaría, pero si el hilo de renderizado llama a ai.chooseAction (mundo) que ejecutará la acción eligiendo en el hilo de renderizado, que no es lo que quiero .
No está haciendo lógica mundial en el hilo de renderizado, ¿verdad? – BRFennPocock