quarta-feira, 26 de agosto de 2026

UEFN Verse: NPC Character Definition

In the previous article about the NPC Spawner Device, we saw that the NPC Spawner uses an NPC Character Definition to obtain information about the NPC to be spawned.


Creating an NPC Character Definition allows a custom character to be saved as a project asset and reused in multiple places.


In this article, we will create three different NPC Character Definitions to give you an idea of the available options.


First, let's create a Verse class of the NPC Behavior type that we'll use in one of the NPC Character Definitions.


Open Verse Explorer, right-click on the project name, and select the option Add new Verse file to project.


Select the NPC Behavior template, enter npc_behavior_sample in the NPC Behavior Name field, and click Create.



This is an example NPC Behavior template. We won't modify the Verse code in this template.

Compile the Verse code using the Verse > Compile Verse Code option from the UEFN menu.

Now let's start creating the NPC Character Definitions. I recommend creating a folder to keep the NPC Character Definition assets.

In the Content Drawer, navigate to your project folder, right-click inside the Content Drawer, and select New Folder. Choose a name for the folder. In my project, I chose CharDefs.


Open the folder you created and right-click inside the Content Drawer. Select Artificial Intelligence > NPC Character Definition.


Repeat this step three times and rename the three assets with the following names:

  1. NPCCharDefGuard
  2. NPCCharDefWild
  3. NPCCharDefVerse


Double-click the NPCCharDefGuard asset to edit its properties. This NPC will be a Guard and will use the default behavior. You can keep the guard on Team Index 1 so that it won't attack the player. In Cosmetic Modifier, you can choose a Fortnite skin for the guard.



Double-click the NPCCharDefWild asset to edit it. This NPC will be a Wildlife type, so you need to choose a subtype to define the animal. In my example, I chose Chicken.



Double-click the NPCCharDefVerse asset. This NPC will be a Custom type and will use a Verse class to define its behavior. In Behavior, select Verse Behavior. In NPCBehavior Script, select the Verse class we created at the beginning of the article, npc_behavior_sample.


To demonstrate the use of NPC Character Definitions, let's create a Verse device that contains an array of NPC Spawner devices. Each element in the array will reference an NPC Spawner configured with a different NPC Character Definition.

The Verse device also has a Button device. When the player presses the button, one of the NPC Spawners in the array is randomly selected to spawn an NPC. This NPC can be a guard, an animal, or the custom NPC controlled by Verse code. We repeat this process using a loop.

In the Verse Explorer, right-click on the project name, and select the option Add new Verse file to project.

In Device Name put random_npc_spawners and click the Create Empty button.

Copy the Verse code below into the random_npc_spawners file:

using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /Verse.org/Random }
using { /UnrealEngine.com/Temporary/Diagnostics }

random_npc_spawners := class(creative_device):

    @editable
    NpcSpawnerArray : []npc_spawner_device = array{}

    @editable
    Button : button_device = button_device{}

    OnBegin<override>()<suspends>:void=
        
        loop:            
            Button.InteractedWithEvent.Await()

            if: 
                IndexSpawner: int = GetRandomInt(0, NpcSpawnerArray.Length-1)
                NpcSpawner := NpcSpawnerArray[ IndexSpawner ]
            then:
                NpcSpawner.Spawn()


The Button.InteractedWithEvent.Await() expression suspends the execution of the OnBegin function until the player presses the button.

Next, a random index is generated and used to get a reference to one of the NPC Spawners in the array. Both expressions are failable, so we execute them as part of the if expression, which provides a failure context.

Save the file and compile the Verse code using the Verse > Compile Verse Code option from the UEFN menu.

Open the Content Drawer and add the new random npc spawners device to the level. We'll also need a Button Device.

When you drag an NPC Character Definition from the Content Drawer into the level, an NPC Spawner Device is created using that NPC Character Definition.

Drag the three NPC Character Definitions we created into the level.

The image below shows the devices we'll use.


Set Spawn Count to 5 for each NPC Spawner Device to allow each spawner to have multiple active NPCs.

Also uncheck Spawn On Timer so that the NPC is spawned only by the Verse code.


Select the random npc spawners in the level. In the Details panel, add three elements to NpcSpawnerArray and select the NPC Spawners in the level as their references. Also select the Button Device reference.



Save the level and click Launch Session to load it in Fortnite. Once in the game, press the button to spawn a new NPC of one of the three types.

UEFN Verse: NPC Character Definition (pt-BR)

No artigo anterior sobre Dispositivo NPC Spawner vimos que o NPC Spawner usa um NPC Character Definition para obter informações sobre o NPC que deve ser gerado.


A criação de um NPC Character Definition permite que o personagem customizado seja salvo como um asset do projeto e reutilizado em vários lugares.

Neste artigo, vamos criar três tipos de NPC Character Definition para que você possa ter uma ideia das opções disponíveis.

Primeiro vamos criar uma classe verse do tipo NPC Behavior que será usada em um dos NPC Character Definition.

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.

Selecione o template NPC Behavior, em NPC Behavior Name coloque npc_behavior_sample e clique no botão Create.


Este é um template de exemplo de NPC Behavior. Não iremos modificar o código Verse deste template. 

Compile o código Verse usando a opção Verse > Compile Verse Code do menu do UEFN.

Agora vamos iniciar a criação dos NPC Character Definition. Recomendo criar uma pasta para manter os NPC Character Definition assets. 

No Content Drawer, navegue até a pasta do seu projeto, clique com o botão direito dentro do Content Drawer e selecione a opção New Folder. Escolha um nome para ela. No meu projeto eu escolhi CharDefs.


Abra a pasta criada e clique com o botão direito dentro do Content Drawer. Selecione Artificial Intelligence > NPC Character Definition.


Faça este passo três vezes e renomeie os três assets criados com estes nomes:

  1. NPCCharDefGuard
  2. NPCCharDefWild
  3. NPCCharDefVerse


Dê dois cliques no asset NPCCharDefGuard para editar as propriedades. Este NPC será do tipo Guard e usará o comportamento padrão. Pode manter o guarda com Team Index 1 para que ele não ataque o jogador. No Cosmetic Modifier, você pode escolher uma skin do Fortnite para o guarda.



Dê dois cliques no asset NPCCharDefWild para editá-lo. Este NPC será do tipo Wildlife, e é preciso escolher o subtipo que define o tipo de animal. No meu exemplo, escolhi Chicken.



Dê dois cliques no asset NPCCharDefVerse. Este NPC será do tipo Custom e usará uma classe Verse para definir seu comportamento. Em Behavior, selecione Verse Behavior. Em NPCBehavior Script, selecione a classe Verse que criamos no início do artigo, com o nome npc_behavior_sample.


Para demonstrar o uso dos NPC Character Definitions, vamos criar um dispositivo Verse que contém um array de dispositivos NPC Spawner. Cada elemento do array irá referenciar um NPC Spawner configurado com um NPC Character Definition diferente.

O dispositivo Verse também tem um dispositivo Button. Quando o jogador pressionar o botão, será escolhido aleatoriamente um dos NPC Spawners do array para gerar um NPC, que pode ser um guarda, um animal ou o NPC customizado com código Verse. Este processo se repete com o uso de um loop.

No 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 random_npc_spawners e clique no botão Create Empty.

Copie o código Verse abaixo para o dispositivo random_npc_spawners:

using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /Verse.org/Random }
using { /UnrealEngine.com/Temporary/Diagnostics }

random_npc_spawners := class(creative_device):

    @editable
    NpcSpawnerArray : []npc_spawner_device = array{}

    @editable
    Button : button_device = button_device{}

    OnBegin<override>()<suspends>:void=
        
        loop:            
            Button.InteractedWithEvent.Await()

            if: 
                IndexSpawner: int = GetRandomInt(0, NpcSpawnerArray.Length-1)
                NpcSpawner := NpcSpawnerArray[ IndexSpawner ]
            then:
                NpcSpawner.Spawn()


A expressão Button.InteractedWithEvent.Await() suspende a execução da função OnBegin até que o jogador pressione o botão.

Em seguida, é gerado um índice aleatório que é usado para obter a referência de um dos NPC Spawner do array. As duas expressões são falíveis e por isso elas são executadas como expressões do if que fornece um contexto de falha

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 random npc spawners ao nível. Vamos precisar de um Button Device.

Quando um NPC Character Definition é arrastado do Content Drawer para o nível, um NPC Spawner Device é criado usando o NPC Character Definition.

Arraste para o nível os três NPC Character Definitions que foram criados.

A imagem abaixo mostra os dispositivos que serão usados.


Modifique o Spawn Count para 5 em cada dos NPC Spawner Device para permitir que cada spawner tenha vários NPCs ativos.

Também desmarque Spawn On Timer para que o NPC seja gerado apenas pelo código Verse.


Selecione o random npc spawners no nível. Na aba Details, adicione três elementos ao NpcSpawnerArray e selecione as referências dos Npc Spawners que estão no nível. Selecione também a referência do Button Device.



Salve o nível e clique no botão Launch Session para carregá-lo no Fortnite. Dentro do jogo, pressione o botão para gerar um novo NPC de um dos três tipos.

segunda-feira, 29 de junho de 2026

UEFN Verse: NPC Spawner device

NPC stands for Non-Playable Character. NPCs are characters controlled by the game, including guards, villagers, wild animals, and many other types of characters.

UEFN includes specialized spawner devices for spawning standard characters, such as guards (Guard Spawner) and creatures (Wildlife Spawner). These devices provide many configuration options that are worth exploring, as they can handle a wide variety of use cases.

To customize NPC appearance and behavior, use the NPC Spawner device. It works together with two types of assets that enable the same appearance and behavior to be reused across multiple NPC Spawners:

  • NPC Character Definition: Defines the NPC's type, appearance, modifiers, and behavior.
  • NPC Behavior Script: Verse script that defines the NPC's behavior.


The image below shows some of the properties of an NPC Spawner:


The Spawn Count field specifies how many NPCs spawned by this spawner can be active at the same time.

The NPC Character Definition must be selected. The NPC Behavior Script override field is optional because every NPC Character Definition is already associated with a Behavior Script. However, you can override it by assigning a different script in the NPC Spawner.

The Spawn On Timer property determines whether NPCs are spawned automatically by the NPC Spawner. When set to false, NPCs can only be spawned through Verse code.

The following properties expose the functions and events available in the NPC Spawner:


We will create a device that demonstrates how to control an NPC Spawner using Verse code. The Spawn Count property will be set to 1, ensuring that only one NPC is active at any given time.

The device runs a loop that spawns an NPC and waits for it to be eliminated. Each time an NPC is eliminated, the elimination counter is updated and displayed on the screen. The loop then starts again.

Open Verse Explorer, right-click on the project name, and select the option Add new Verse file to project.

In Device Name put npc_spawner_manager and click the Create Empty button.

Copy the Verse code below into the npc_spawner_manager file:

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)

The npc_spawner_manager device holds a reference to an npc_spawner_device. This reference is used to call the Spawn() function and wait for the EliminatedEvent to be triggered.

In this example, the npc_spawner_device is configured to allow only one active NPC at a time. Therefore, a Sleep(0.1) call is required to give the device time to update its internal state. Without this delay, Spawn() would not create a new NPC because the previously eliminated NPC would still be considered active internally.

Note: An infinite loop must contain at least one call to a <suspends> function, such as Sleep() or Await(), to yield control back to the engine. Otherwise, the engine will terminate the loop and a runtime error will be generated.


Save the file and compile the Verse code using the Verse > Compile Verse Code option from the UEFN menu.

Access the Content Drawer and add the npc_spawner_manager to the level.  We will need an NPC Spawner Device and an Item Spawner Device. The image below shows the elements that we will use in this example.



It will be necessary to create an NPC Character Definition to use with the NPC Spawner Device. We will create a very simple one. In the next article, we will take a closer look at the NPC Character Definition.

In the project folder in the Content Drawer, right-click on an empty space and select the Artificial Intelligence > NPC Character Definition option, as shown in the image.



Name it GuardRandomCharDef and double-click it to edit its properties. The NPC will be a Guard type and will use the default behavior. There is a list of modifiers used to define an NPC.

In the Team Modifier, change the Team Index to 2. This way, the NPCs will be on a different team from the player and will therefore attack them. In the Cosmetic Modifier, change the Character Look to Random Fortnite Character to add variety to the generated NPCs.


Select the NPC Spawner Device in the level. In the Details panel, change the NPC Character Definition to the new GuardRandomCharDef. Uncheck the Spawn On Timer property so that NPCs are spawned only through Verse code.


Select the npc_spawner_manager in the level. in the Details panel, select the reference to the NPC Spawner Device.  


We will provide a weapon for the player to defend against the NPCs. Select the Item Spawner in the level and add an element to the Item List. Choose some type of rifle.

Set Time Before First Spawn to 0 so that the weapon is available immediately at the start of the match.


We will provide infinite ammo for the player. In the Outliner panel, select Island Settings. In the Details panel, search for Infinite. Check the Infinite Magazine Ammo property. This property is located in the Inventory category.



Save the level and click the Launch Session button to load it in Fortnite. Eliminate the NPC so that a new NPC with a different appearance is generated.


UEFN Verse: Dispositivo NPC Spawner

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.


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.

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 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.


quarta-feira, 27 de maio de 2026

UEFN Verse: fort_character interface

The fort_character interface is used to define the capabilities of characters in Fortnite. It is associated with the character’s physical attributes and actions, such as health, shield, jumping, and crouching.

To better understand fort_character, let’s compare it with the agent class:

  • agent: Represents the entity controlling the character, which can be a human player or an NPC. It has an identifier (id) that persists throughout the game session. It can be thought of as the brain.
  • fort_characterRepresents the agent within the game world. It can be thought of as the body of the agent. When a player is eliminated, the fort_character is destroyed, but the agent instance remains active. When entering a new match, a new fort_character is created and associated with the existing agent.


This interface inherits from and implements several other interfaces, including healthful, damageable, healable, shieldable, positional, game_action_instigator, and game_action_causer. It serves as the main interface for characters, since a fort_character instance provides access to the methods defined by all of these interfaces.

Tip: When looking through the documentation or the Fortnite.digest file for methods available in fort_character, you will only find the methods defined directly in that interface. However, all methods from the interfaces mentioned earlier are also accessible through fort_character. For example, the SetHealth() method belongs to the healthful interface and can be called from fort_character.


You can use the fort_character interface to modify health and shield, as well as determine whether the character is jumping, crouching, on the ground, in water, or in the air. There are many available features. 

To use the fort_character interface, the following module must be added:

using { /Fortnite.com/Characters }


This module adds an extension method to the agent class that returns the associated fort_character instance:

if( FortCharacter := Agent.GetFortCharacter[] ):


It is also possible to retrieve the agent associated with a fort_character, if one exists:

if ( Agent := FortCharacter.GetAgent[] ):


The example below demonstrates how to increase the health of a fort_character by 10:

CurrentHealth := FortCharacter.GetHealth()
FortCharacter.SetHealth( CurrentHealth + 10 )


As a practical example of using fort_character, we will create a device that references a volume_device. The device can restore the health and shield of agents located inside the referenced volume and provides several configuration options.

Open Verse Explorer, right-click on the project name, and select the option Add new Verse file to project.

In Device Name put recharger_device and click the Create Empty button.

Copy the Verse code below into the recharger_device file:

using { /Fortnite.com/Characters }
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }

recharger_device := class(creative_device):

    @editable
    VolumeDevice : volume_device = volume_device{}

    @editable
    TimeInterval : float = 1.0

    @editable
    HealthRegenAmount : float = 10.0;
    
    @editable
    ShieldRegenAmount : float = 10.0;

    @editable
    IsHealthRecharger : logic = true;

    @editable
    IsShieldRecharger : logic = true;

    var AgentsInVolume : []agent = array{}

    OnBegin<override>()<suspends>:void=

        loop: 
            Sleep(TimeInterval)

            set AgentsInVolume = VolumeDevice.GetAgentsInVolume()

            if(AgentsInVolume.Length > 0):

              for (Agent : AgentsInVolume):
                if(FortCharacter := Agent.GetFortCharacter[]):
                  if(IsHealthRecharger?):
                    CurrentHealth := FortCharacter.GetHealth()
                    FortCharacter.SetHealth(CurrentHealth + HealthRegenAmount)

                  if(IsShieldRecharger?):
                    CurrentShield := FortCharacter.GetShield()
                    FortCharacter.SetShield(CurrentShield + ShieldRegenAmount)


The device runs a loop every TimeInterval, which defaults to 1 second. On each iteration, it retrieves an array of agents inside the volume. For each agent, health and shield are increased if those options are enabled.

Save the file and compile the Verse code using the Verse > Compile Verse Code option from the UEFN menu.

Access the Content Drawer and add the recharger_device to the level. Then add a Volume Device and check the Visible in Game option.


Select the recharger_device in the level. In the Details panel, assign the reference to the Volume Device. You can also configure the device to restore only health or shield, as well as adjust the recharge amount and time interval.



To make testing easier, reduce the player's starting health. In the Outliner panel, select Island Settings. In the Details panel, search for Health and set Starting Health Percentage to 20%.


Save the level and click Launch Session to load it in Fortnite. Move the character into the volume to restore health and shield.