Estou indeciso se quero implementar esse recurso no meu jogo no momento ou não. Não quero que o projeto fique muito fora de controle, por isso estou focando na mecânica principal primeiro.
Esse é um recurso fácil de implementar posteriormente, assumindo que eu conduza tudo e guardo tudo?
game-design
achievements
Bryan Harrington
fonte
fonte
Respostas:
Você está perguntando do ponto de vista técnico da implementação ou das ramificações do design? De qualquer forma, a resposta para sua pergunta é "sim".
Do lado técnico, em geral, você encontra os ganchos no seu código que estão respondendo aos eventos de conquista e coloca o código de rastreamento estatístico lá. Talvez seja necessário adicionar algumas coisas novas se estiver rastreando coisas que não são exatamente eventos discretos que já estão acontecendo no jogo (por exemplo: X quantidade de horas jogadas).
Do lado do design, as conquistas são motivadores extrínsecos e adicioná-los não é muito importante no ciclo principal da jogabilidade, exceto para as pessoas que querem procurá-las. Portanto, eles são bem seguros, independentemente.
fonte
shotsFired++
-se à parte em que novas balas são instanciadas eshotsHit++
na parte em que uma bala afeta outro jogador. Ele ajudou a que eu segui que atirou o marcador (porque eu usar a informação para rastrear quem tem o que matar etc)Desde que seu mecanismo de jogo seja bem projetado e use algum tipo de sistema de eventos observáveis (onde os eventos são gerados e ouvidos pelas partes interessadas), deve ser bastante fácil "conectar" um sistema de conquista posteriormente (adicionando ouvintes apropriados). Esse tipo de design é muito flexível.
fonte
Como as pessoas já adicionaram boas respostas, deixe-me responder a situações descobertas.
Se você está em uma posição em que concluiu a codificação do seu jogo e agora começa a codificar conquistas e acha muito complexo manter muitas variáveis e contagens e limpá-las em determinados eventos e coisas assim.
Você sempre pode criar uma classe (de preferência singleton) para receber todos os eventos. Agora liste todas as suas realizações. Em seguida, liste todos os eventos do jogo que precisam ser rastreados. Por exemplo, minha lista atual se parece com isso
MATAR INIMIGO - caminhar, balas MORTE DO JOGADOR - queda_off, saúde ENTER_ROOM, EXIT_ROOM etc.
Esses detalhes extras, como caminhar, balas, podem ser parâmetros. Agora, tenha uma função chamada fireEvent nessa classe de acompanhamento de conquistas. Pesquise todos os locais no código em que você precisa disparar eventos e chame essa função. Agora faça o resto do trabalho sujo na classe Conquistas. essa é a maneira mais segura de não perturbar o código e as realizações de código existentes. Funcionou muito rápido para mim.
fonte