
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 Fallback1. 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
- Protótipo com um cliente de decisão falso local.
- Estado de gravação e reprodução instantâneos.
- Adicione o cliente remoto atrás de um sinalizador de recurso.
- Enviar fallback-primeiro comportamento e telemetria.
- 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.


