JEV Unity Tutorial: Construa uma tática em tempo real NPC

Construa uma arquitetura Unity NPC em torno de JEV com um estado compacto, Legal Actions, uma cadência de decisão, um executor, tratamento de tempo limite e um fallback observável.

Seele Editorial TeamUpdated 21 de setembro de 2026
Unity-style tactical NPC scene with perception, decision, navigation, and fallback layers.

Este tutorial Unity usa JEV como uma camada de decisão tática limitada, enquanto Unity permanece responsável pelo estado da cena, física, navegação, animação e autoridade de jogo. É um padrão de adaptador, não uma afirmação de que uma chamada SDK pode substituir um controlador NPC.

A arquitetura Unity

Cinco componentes separados: um projetor de estado lê a cena, um construtor de ação cria Legal Actions, um cliente JEV envia a solicitação, um executor mapeia uma ação validada para sistemas Unity e uma política fallback mantém a NPC movendo-se quando a resposta está atrasada ou inválida.

NpcController -> StateProjector -> LegalActionBuilder -> JevClient -> Validator -> Executor or Fallback

1. Projete a cena em Game State

Projete apenas fatos relevantes para a decisão: função, saúde, inimigos visíveis, status do objetivo, cobertura próxima, munição, tempos de espera, intenção atual e uma versão do estado. Use a camada de percepção de NPC para que informações ocultas não vazem na decisão.

state = { agentId, role, healthRatio, visibleThreatIds, objectiveUnderThreat, ammo, stateVersion }

2. Construir Legal Actions

O construtor de ação cria comandos como se proteger, atacar um alvo visível, ajudar um aliado ou manter posição. Cada ação carrega o identificador de destino ou local necessário ao executor. A navegação continua sendo uma preocupação de Unity: JEV escolhe candidatos de intenção ou destino enquanto NavMesh calcula o caminho.

3. Chamada fora do loop de renderização

Acione uma decisão quando a intenção atual for concluída, uma ameaça entrar na percepção, o objetivo mudar ou um cronômetro tático expirar. Use uma corrotina, tarefa assíncrona ou serviço de jogo com uma solicitação em andamento por NPC. Nunca bloqueie o thread principal de Unity aguardando a resposta da rede.

if (!requestInFlight) { requestInFlight = true; result = await client.Decide(snapshot, actions); ApplyIfStillValid(result); }

4. Valide e execute

Compare a versão do estado da resposta com o mundo atual, reconstrua o conjunto de ações permitidas e verifique os parâmetros. Um alvo pode ter morrido ou um ponto de cobertura pode estar inacessível enquanto a solicitação estava em andamento. Se a validação for bem-sucedida, mapeie a intenção para um comando existente, árvore de comportamento, destino NavMesh ou sistema de habilidade.

5. Defina cadência, tempo limite e fallback

Separe o loop de renderização do loop tático. Defina um prazo que deixe NPC tempo para agir. No tempo limite, mantenha a intenção segura atual ou use uma política local, como se proteger quando ferido, manter o objetivo ou recuar quando não houver ataque legal.

6. Torne as decisões visíveis

Em compilações de desenvolvimento, exponha o estado projetado, Legal Actions, ação selecionada, versão do estado, latência da solicitação, resultado da validação e razão fallback em uma janela ou dispositivo de depuração. Os designers devem compreender uma decisão sem ler um rastreamento de rede.

Unity lista de verificação

  • A percepção possui a projeção do estado.
  • Não bloqueie o principal thread.
  • Revalidar antes da execução.
  • Mantenha movimento, física, animação e autoridade em Unity.
  • Navio determinístico fallback e telemetria desde o primeiro protótipo.

Uma configuração mínima de Unity cena

Comece com um NPC, um objetivo, duas ameaças, alguns pontos de cobertura e um controlador fallback local. Adicione um componente de percepção, um projetor de estado, um construtor de ação, um cliente de decisão e um executor como MonoBehaviours ou serviços separados. Mantenha o adaptador JEV independente dos detalhes de NavMeshAgent e Animator para que possa ser testado sem uma cena completa.

O limite do adaptador

O adaptador converte os tipos Unity em uma solicitação neutra em termos de provedor e converte uma intenção validada de volta em um comando existente. Ele não deve chamar SetDestination, reproduzir uma animação ou aplicar dano antes da validação. Esses efeitos pertencem ao executor e aos sistemas de jogo.

Teste cenários antes dos prompts de ajuste

  • Saúde baixa com cobertura disponível.
  • Sem munição, mas uma retirada acessível rota.
  • Um alvo destruído enquanto a solicitação está em vôo.
  • Dois pontos de cobertura igualmente válidos com diferentes distâncias.
  • JEV tempo limite durante um estado de combate ativo.
  • Descarregamento de cena ou NPC desaparece antes da resposta.

Para cada cenário, afirme que a ação selecionada é legal, o executor é chamado no máximo uma vez, a resposta obsoleta é ignorada e o fallback deixa o NPC em um estado válido.

O que medir no Unity Profiler

Acompanhe o tempo de projeção do estado, tempo de serialização, espera da rede, tempo de validação, início do executor, conclusão da ação e contagem de fallback. Um modelo pode ser rápido enquanto o adaptador é lento porque serializa muito estado ou agenda trabalho no thread principal. Meça o impacto do quadro separadamente da latência de decisão ponta a ponta.

Um plano de remessa faseado

  1. Protótipo com um cliente de decisão falso local.
  2. Estado de gravação e reprodução instantâneos.
  3. Adicione o cliente remoto atrás de um sinalizador de recurso.
  4. Enviar fallback-primeiro comportamento e telemetria.
  5. Execute uma coorte NPC limitada antes de tomar a camada de decisão universal.

Para o contrato neutro em termos de provedor, leia JEV API uso. Para design de espaço de ação, consulte JEV Legal Actions. O tutorial geral está em JEV tutorial.