Estou trabalhando em um jogo "social" com cerca de 90% de conclusão. Um dos recursos restantes é o modo tutorial.
Basicamente, o modo tutorial restringe o usuário a acessar algumas partes da interface do usuário e limita os recursos (como itens de loja). O tutorial só progredirá se um determinado evento for acionado, seguindo especificamente o tutorial.
O código está pronto e já temos um jogo "quase" funcionando. O problema é que não previ o modo tutorial enquanto fazia esses 90%. Meu requisito é que não deve haver nenhum carregamento / transição do modo tutorial para o modo normal. Isso significa que eu tenho que acompanhar o progresso do tutorial (sem re-renderização de ativos e outras coisas).
Como devo projetar isso de maneira a não tocar em nada do meu código antigo? Quero que seja tão fácil quanto apenas conectá-lo. Não quero bloquear o tutorial no meu código antigo, pois isso levará a muitos bugs.
fonte
Respostas:
Um pouco mais de informação o ajudaria a obter melhores respostas. Sem saber muito sobre o tipo de jogo que você tem ou como é sua estrutura de nível, só posso fazer uma facada no escuro.
Dito isto, se eu estivesse fazendo algo semelhante ao meu projeto atual, criaria um nível especial que orienta o usuário pelos assuntos em questão. Seus NPCs podem ser criados apenas com os itens que você deseja disponibilizar no tutorial, por exemplo.
Na medida em que impede o acesso a determinados elementos da interface do usuário, se você não pode adicionar ou remover os elementos que deseja / não deseja no seu tutorial, pode ser necessário incorporar um filtro ao código existente para determinar se um elemento deve existir ou não (pense em "restrições de acesso").
fonte
Estou trabalhando em um tutorial para o meu jogo em C # agora. Estou separando o tutorial do jogo usando eventos. No meu jogo, eu tenho vários eventos que são acionados quando o estado do jogo muda de várias maneiras: Entidades se movendo, sendo destruídas, sendo construídas, com atualização completa etc. Meu tutorial ouve os eventos de interesse e tem a capacidade para manipular o HUD. É tudo o que você precisa. Para deixar perfeitamente claro, o jogo não faz ideia de que o tutorial está acontecendo.
Isso também pode ser importante: Meu Tutorial é uma subclasse de Cenário, onde o Jogo está sempre executando um Cenário. Como estou usando o C #, eu poderia pegar qualquer um dos meus cenários e lançá-los em um arquivo de script em C #, mas agora, todos os meus cenários são compilados diretamente no jogo.
A classe está um pouco em andamento no momento, mas aqui está uma versão um pouco desatualizada que você pode ver: http://asteroidoutpost.svn.sourceforge.net/viewvc/asteroidoutpost/trunk/Scenarios/TutorialScenario.cs? view = marcação
fonte
Também estou trabalhando em um tutorial para o meu jogo em flash e é assim que eu o configuro. Cada parte do jogo verifica um objeto Tutorial para verificar se uma ação está disponível para o jogador. Se o módulo tutorial não existir ou estiver inativo, podemos assumir que o jogador pode fazer qualquer coisa.
Usando seu jogo Sim City, por exemplo, digamos que quando o tutorial iniciar, você não deseja que o jogador possa fazer nada até o momento apropriado. Você pode ter sinalizadores no seu objeto tutorial, como PLAYER_CAN_USE_TOOLBAR, PLAYER_CAN_SWITCH_VIEWS ou PLAYER_CAN_DESIGNATE_ZONE etc, todos configurados para FALSE. À medida que o player percorre seu tutorial, você pode começar a definir esses sinalizadores como verdadeiros.
Para sua parte da interface do usuário, bloqueie o sinal para o modelo ou controlador que realmente executa a ação se os sinalizadores do tutorial não estiverem definidos:
Para esperar por eventos específicos, você pode passar o evento de volta ao seu objeto tutorial para validar o que o jogador precisa fazer para continuar a etapa do tutorial. Por exemplo, se você precisava do player para criar uma zona residencial em um X, Y específico:
Espero que tenha ajudado. Infelizmente, você precisará adicionar as verificações do tutorial ao seu código antigo para que isso funcione. Porém, supondo que todas as ações sejam válidas, a menos que exista o objeto tutorial, deve facilitar esse processo de integração e minimizar os erros.
fonte