NPC significa Non-Playable Character (personagem não jogável). São personagens controlados pelo jogo, como guardas, moradores de uma vila, animais selvagens, entre outros.
O UEFN possui dispositivos spawner especializados na criação de personagens padrões, como guardas (Guard Spawner) e criaturas (Wildlife Spawner). Esses dispositivos oferecem diversas opções de configuração que recomendo experimentar, pois podem ser suficientes para muitos casos.
Para personalizar a aparência e comportamento dos NPCs, podemos usar o dispositivo NPC Spawner. Este dispositivo é usado em conjunto com dois tipos de assets, que permitem reutilizar a aparência e o comportamento em vários NPC Spawners:
- NPC Character Definition: Usado para definir o tipo, a aparência, os modificadores e o comportamento do NPC.
- NPC Behavior Script: Script em Verse que define o comportamento do NPC.
Nos próximos artigos, vamos explorar esses dois tipos de assets com mais detalhes.
A imagem abaixo mostra algumas das propriedades de um NPC Spawner:
O campo Spawn Count indica quantos NPCs gerados por esse spawner podem permanecer ativos ao mesmo tempo.
O NPC Character Definition deve ser selecionado. O campo NPC Behavior Script override é opcional porque um NPC Charater Definition já está associado a um Behavior Script. No entanto, esse comportamento pode ser substituído por script nesse campo do NPC Spawner.
O campo Spawn On Timer indica se o os NPCs são gerados automaticamente pelo NPC Spawner. Se esse campo estiver definido como false, os NPCs serão gerados apenas por código verse.
Nas propriedades, podemos ver as funções e os eventos disponíveis no NPC Spawner:
Vamos criar um dispositivo para demonstrar como controlar um NPC Spawner usando código Verse. O Spawn Count do NPC Spawner será definido como 1, para que apenas um NPC permaneça ativo por vez.
O dispositivo mantém um loop que gera um NPC e aguarda até que ele seja eliminado. Um contador de NPCs eliminados é atualizado e exibido na tela. Em seguida, o loop se repete.
Abra o Verse Explorer, clique com o botão-direito no nome do projeto e escolha a opção Add new Verse file to project.
Em Device Name coloque npc_spawner_manager e clique no botão Create Empty.
Copie o código Verse abaixo para o dispositivo npc_spawner_manager:
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
npc_spawner_manager := class(creative_device):
@editable
NpcSpawner : npc_spawner_device = npc_spawner_device{}
var EliminatedCount : int = 0
OnBegin<override>()<suspends>:void=
loop:
NpcSpawner.Spawn()
NpcSpawner.EliminatedEvent.Await()
set EliminatedCount += 1
Print("Guards eliminated: {EliminatedCount}")
Sleep(0.1)
O dispositivo npc_spawner_manager possui uma referência a um npc_spawner_device, que é usada para chamar a função Spawn() e aguardar o acionamento do evento EliminatedEvent.
Neste exemplo, o npc_spawner_device será configurado para manter apenas um NPC ativo por vez. Por isso, foi usada a função Sleep() com uma pausa de 0,1 segundo para dar tempo ao npc_spawner_device de atualizar seu estado interno. Sem a chamada a Sleep(), a função Spawn() não geraria um novo NPC , pois o NPC eliminado ainda estaria registrado internamente como ativo.
Nota: Um loop infinito precisa conter pelo menos uma chamada a uma função <suspends>, como Sleep() ou Await(), para devolver o controle à engine. Caso contrário, a engine encerrará o loop e um erro de runtime será gerado.
Salve o arquivo e compile o código Verse usando a opção Verse > Compile Verse Code do menu do UEFN.
Acesse o Content Drawer e adicione o novo dispositivo npc_spawner_manager ao nível. Vamos precisar de um NPC Spawner Device e um Item Spawner Device. A imagem abaixo mostra os elementos que vamos usar neste exemplo.
Será necessário criar um NPC Character Definition para usar no NPC Spawner Device. Vamos criar um bem simples. No próximo artigo veremos o NPC Character Definition com mais detalhes.
Na pasta do projeto no Content Drawer, clique com o botão direito do mouse em um espaço vazio e selecione a opção Artificial Intelligence > NPC Character Definition como mostra a imagem.
Coloque o nome de GuardRandomCharDef e dê dois cliques para editar as propriedades. O NPC será do tipo Guard e usará o comportamento padrão. Existe uma lista de modificadores usados para definir um NPC.
No Team Modifier, altere o Team Index para 2. Dessa forma os NPCs ficarão em um time diferente do jogador e por isso vão atacá-lo. No Cosmetic Modifier, altere o Character Look para Random Fortnite Character para termos variedade nos NPCs gerados.
Selecione o NPC Spawner Device no nível. Na aba Details, mantenha Spawn Count em 1 e mude o NPC Character Definition para o novo GuardRandomCharDef. Desmarque a propriedade Spawn On Timer para que os NPCs sejam gerados somente por código Verse.
Selecione o npc_spawner_manager no nível. Na aba Details, selecione a referência ao NPC Spawner Device.
Vamos fornecer uma arma para o jogador se defender dos NPCs. Selecione o Item Spawner no nível e adicione um elemento na Item List. Escolha algum tipo de rifle.
Coloque o valor 0 em Time Before First Spawn para que arma esteja disponivel imediatamente no início da partida.
Vamos fornecer munição infinita para o jogador. Na aba Outliner, selecione o Island Settings. Na aba Details, pesquise por Infinite. Marque a propriedade Infinite Magazine Ammo. Esta propriedade fica na categoria Inventory.
Salve o nível e clique no botão Launch Session para carregá-lo no Fortnite. Elimine o NPC para que seja gerado um novo NPC com aparência diferente.








