Estoy creando un juego basado en cuadrículas en Java y quiero implementar la grabación y reproducción de juegos. No estoy seguro de cómo hacer esto, aunque yo he considerado 2 ideas:¿La mejor manera de implementar la reproducción del juego?
Varias veces cada segundo, me gustaría grabar todo el estado del juego. Para reproducirlo, escribo un renderizador para leer los estados y tratar de crear una representación visual. Con esto, sin embargo, es probable que tenga un gran archivo guardado, y cualquier intento de reproducción probablemente tenga un retraso notable.
También podría escribir cada pulsación de tecla y de clic del ratón en el archivo de salvar. Esto me daría un archivo más pequeño, y podría reproducir con menos retraso. Sin embargo, el más mínimo error al comienzo del juego (por ejemplo, disparar 1 milisegundo más tarde) daría lugar a un estado de juego muy diferente en varios minutos del juego.
¿Cuál es, entonces, la mejor forma de implementar la reproducción del juego?
Editar- no estoy seguro exactamente cómo determinista es mi juego, así que no estoy seguro de todo el juego puede ser reconstruido exactamente registrando sólo las pulsaciones de teclado y los clics del ratón.
Esta es una manera elegante de manejarlo. Si el juego real y la grabación se basan en el mismo mecanismo de tiempo/marco, debe evitar errores debido a problemas de tiempo. Si tiene aleatoriedad en sus eventos, es posible que necesite registrar también el valor inicial de la semilla para su generador de números aleatorios. Así es como las funciones 'Random Map' en los juegos RTS te permiten regenerar un mapa aleatorio que te gusta. –
Este patrón también puede darle la capacidad Deshacer/Rehacer. –