¿Cómo crear una función Ghost Replay en un juego?

19

Cuando establece un mejor tiempo de vuelta personal en un juego de carreras de consola, tiene la opción de competir contra su fantasma.

¿Cómo se puede crear esta característica para un juego de tipo casual para un jugador?

claude keller
fuente
2
+1 Pregunta interesante para alguien que es solo un principiante en el desarrollo de juegos (yo). =)
Will Marcouiller
Si nos dices qué tipo de juego es, podríamos ayudarte más específicamente.
AttackingHobo

Respuestas:

10

Los fantasmas generalmente se realizan mostrando una repetición de un intento anterior. Esta repetición se representa con una versión no colisionable del auto del jugador para que no pueda afectarla. Dado que los juegos de carreras a menudo tienen una función de repetición de todos modos, este tipo viene de forma gratuita.

Aquí hay un buen punto de partida para crear un sistema de reproducción: http://www.gamasutra.com/view/feature/2029/developing_your_own_replay_system.php

También hay una serie de preguntas aquí sobre ese tema:

Wkerslake
fuente
+1 Acabo de aprender algo nuevo con tu respuesta, ¡gracias! =)
Will Marcouiller
1

Depende de la tecnología con la que esté trabajando. Por lo tanto, realmente no podemos discutir la mejor manera, ya que podría cambiar de una tecnología a otra. La idea bruta en mi opinión sería la siguiente:

  1. Use un almacén de datos subyacente para conservar sus datos (XML, Cookies, Base de datos, CSV, otros ...);
  2. Trabaje su acceso de datos a este almacén de datos subyacente;
  3. Debe mantener datos de información sobre la mejor puntuación de un jugador, por lo que se requiere un identificador (correo electrónico, nombre de entrada, más ...);
  4. Asociar este mejor puntaje al identificador de una forma u otra.

En resumen, suponiendo el uso de una base de datos, podríamos tener dos tablas:

  1. Datos de usuarios / jugadores (identificador, correo electrónico, etc.);
  2. Los mejores datos de información del tablero.

Luego, puede guardar la información del usuario junto con un cuadro de indicadores individual que, si lo desea, puede contener un registro de fecha y hora de cuándo se ha logrado este puntaje.

Espero que esto ayude y que haya entendido correctamente la pregunta. De lo contrario, dígalo para que pueda editar mi respuesta en consecuencia.

Will Marcouiller
fuente
3
Creo que probablemente esté buscando un mecanismo de grabación / reproducción para lograr esto. El entorno de juego determinista, el seguimiento de eventos que cambian las cosas (por ejemplo, la entrada del jugador) y similares son las formas recomendadas de hacerlo.
James
Gracias por tu aporte James! Estas son cosas que no sé, aunque mi respuesta también es un enfoque fácil de hacer, humildemente. Sin embargo, estoy interesado en aprender más sobre el tema. Ah, y +1 por tu comentario, esto me enseña que hay otro enfoque factible. =) Gracias! =)
Will Marcouiller
Realmente lo siento por esta tontería. Todavía estoy aprendiendo lo básico gracias a ambos por su información. Realmente no puedo responder con el conocimiento adecuado porque no poseo ninguno. lo que quiero lograr es que cada vez que trato de superar mi puntaje personal más alto, veo en la pantalla un fantasma (repetición) de cómo jugué el juego cuando establecí mi puntaje alto
claude keller
@¿Le vas a decir información sobre lo que se podría hacer para una configuración de multijugador, una vez que haya descubierto la respuesta a su pregunta sobre un juego para un solo jugador? Su pregunta es cómo crear el fantasma en primer lugar.
AttackingHobo
@AttackingHobo: Gracias por decírmelo. De hecho, descubrí el comentario de James sobre la grabación, luego de leer la respuesta de wkerslake, ahora entiendo mejor lo que pide el OP. Además, tienes razón cuando dices que mi configuración propuesta es más probable que se use en una configuración multijugador. ¡Hola, todavía estoy aprendiendo aquí, y gracias por permitirme crecer mejor! El desarrollo de juegos sigue siendo un nuevo truco para mí, aunque soy un desarrollador experimentado. =) Gracias por tu comentario AttackingHobo! =)
Will Marcouiller
1

No es fácil responder esta pregunta sin tener más información sobre tu juego. La respuesta de wkerslake funciona siempre que el juego actual con el fantasma no pueda afectar el determinismo de los datos fantasmas grabados. Si los datos grabados son una contrarreloj de un solo automóvil en un entorno estático, debería estar bien usando esa técnica.

Sin embargo, en muchos juegos con reproducción fantasma, como Super Meat Boy, la posición del jugador puede cambiar el estado del nivel y la IA. Claramente, no puede tener el fantasma que afecta al mundo y a la IA, por lo que sería mejor simplemente registrar los cambios de posición + animación (y cualquier otra cosa visible) en cada fotograma para el jugador principal. Durante la reproducción, solo renderice el fantasma en la ubicación actual y el cuadro de animación sin que esté en el mundo. Esto le permite reproducir un fantasma y no hacer que el jugador actual lo afecte.

Lathentar
fuente