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?


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:


+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.


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.