Como criar um recurso de Ghost Replay em um jogo?

19

Quando você define o melhor tempo pessoal de volta em um jogo de corrida de console, você tem a opção de competir contra seu fantasma.

Como esse recurso pode ser criado para um jogo casual para um jogador?

claude keller
fonte
2
+1 Pergunta interessante para quem é iniciante no desenvolvimento de jogos (eu). =)
Will Marcouiller
Se você nos dissesse que tipo de jogo é esse, poderíamos ajudá-lo mais especificamente.
AttackingHobo

Respostas:

10

Fantasmas geralmente são feitos exibindo uma repetição de uma tentativa anterior. Essa reprodução é feita com uma versão não colidível do carro dos jogadores, para que você não possa afetá-la. Como os jogos de corrida geralmente têm um recurso de repetição de qualquer maneira, esse tipo de ação aparece de graça.

Aqui está um bom ponto de partida para a construção de um sistema de reprodução: http://www.gamasutra.com/view/feature/2029/developing_your_own_replay_system.php

Também há várias perguntas aqui sobre esse tópico:

wkerslake
fonte
+1 Acabei de aprender algo novo com sua resposta, obrigado! =)
Will Marcouiller 15/03
1

Depende da tecnologia com a qual você está trabalhando. Portanto, não podemos realmente discutir o melhor caminho, pois ele pode mudar de uma tecnologia para outra. A idéia grosseira na minha opinião seria a seguinte:

  1. Use um armazenamento de dados subjacente para manter seus dados (XML, Cookies, Banco de Dados, CSV, outro ...);
  2. Trabalhe seu acesso a dados neste armazenamento de dados subjacente;
  3. Você precisa manter dados de informações sobre a melhor pontuação de um jogador, para que um identificador seja necessário (e-mail, nome da entrada, mais ...);
  4. Associe essa melhor pontuação ao identificador de uma maneira ou de outra.

Em suma, assumindo o uso de um banco de dados, poderíamos ter duas tabelas:

  1. Dados de usuários / jogadores (identificador, email, etc.);
  2. Melhores dados de informações do placar.

Em seguida, você pode salvar as informações do usuário junto com o painel de avaliação individual, que pode, se desejado, conter o registro de data e hora de quando essa pontuação foi atingida.

Espero que isso ajude e que eu tenha entendido corretamente a pergunta. Caso contrário, informe para que eu possa editar minha resposta de acordo.

Will Marcouiller
fonte
3
Eu acho que ele provavelmente está procurando um mecanismo de gravação / reprodução para fazer isso. Ambiente determinístico de jogo, rastreamento de eventos que mudam as coisas (entrada do Player, por exemplo) e similares geralmente são as formas recomendadas de fazer isso.
James
Obrigado pela sua contribuição James! Essas são coisas que eu não conheço, embora minha resposta também seja uma abordagem fácil, humildemente. No entanto, estou interessado em aprender mais sobre o assunto. Ah, e, +1 no seu comentário, isso me ensina que há outra abordagem viável. =) Obrigado! =)
Will Marcouiller
Sinto muito por essa brincadeira. Ainda estou aprendendo o básico, graças a ambas pelas informações. Não posso responder com o conhecimento adequado porque não possuo nenhuma. o que eu quero fazer é cada vez que eu tentar bater a minha pontuação elevada pessoal que eu vejo na tela um fantasma (repetição) de como eu joguei o jogo quando eu definir a minha pontuação alta
Keller claude
@ Você está dizendo a ele informações sobre o que poderia ser feito para uma configuração multiplayer, depois que ele descobrir a resposta para sua pergunta sobre um jogo para um jogador. Sua pergunta é como criar o fantasma em primeiro lugar.
AttackingHobo
@ AttackingHobo: Obrigado por me dizer. Na verdade, eu descobri no comentário de James sobre a coisa da gravação e, depois de ler a resposta de wkerslake, agora entendo melhor o que está sendo solicitado pelo OP. Além disso, você está certo ao dizer que é mais provável que minha configuração proposta seja usada em uma configuração para vários jogadores. Ei, eu ainda estou aprendendo aqui, e obrigado por permitir crescer melhor! O desenvolvimento de jogos ainda é um novo truque para mim, embora eu seja um desenvolvedor experiente. =) Obrigado pelo seu comentário AttackingHobo! =)
Will Marcouiller
1

Não é fácil responder a essa pergunta sem ter mais informações sobre o seu jogo. A resposta do wkerslake funciona desde que a reprodução atual do fantasma não possa afetar o determinismo dos dados fantasmas registrados. Se os dados gravados forem um contra-relógio individual em um ambiente estático, você deve estar bem usando essa técnica.

No entanto, em muitos jogos com reprodução fantasma, como Super Meat Boy, a posição do jogador pode alterar o estado do nível e a IA. Claramente, você não pode ter o fantasma afetando o mundo e a IA; portanto, seria melhor gravar mudanças de posição + animação (e qualquer outra coisa visível) em cada quadro do jogador principal. Durante a reprodução, apenas renderize o fantasma no local atual e no quadro de animação sem que ele esteja no mundo. Isso permite que você reproduza um fantasma e não o jogador atual o afete.

Lathentar
fonte