quarta-feira, 27 de maio de 2026

UEFN Verse: Interface fort_character

A interface fort_character é usada para definir as capacidades dos personagens no Fortnite. Ela está relacionada aos atributos e ações do corpo do personagem, como atributos como health (saúde) e shield (escudo), além de ações como pular e agachar.

Para entender o fort_character vamos compará-lo à classe agent:

  • agent: Representa quem está jogando, que pode ser um jogador humano ou NPC. Possui uma identificação (id) que é mantida durante a sessão de jogo. É como se fosse o cérebro.
  • fort_character: Representa o agent dentro do mundo do jogo. É como se fosse o corpo do agent. Quando um jogador é eliminado, o fort_character é descartado, mas a instância de agent continua ativa. Ao entrar em uma nova partida, um novo fort_character é gerado e associado ao agent existente.


Esta interface herda e implementa várias outras interfaces, como 
healthful, damageable, healable, shieldable, positional, game_action_instigator, game_action_causer. Ela funciona como uma interface principal usada pelos personagens, pois uma instância de fort_character permite acessar os métodos de todas essas interfaces.

Dica: Ao procurar na documentação ou no arquivo Fortnite.digest os métodos disponíveis na interface fort_character, você verá apenas os métodos definidos diretamente em fort_character. Contudo, todos os métodos das interfaces mencionadas anteriormente também estão disponíveis no fort_character. Por exemplo, o método SetHealth() pertence à interface healthful e está disponível em fort_character.


Você pode usar a interface fort_character para modificar o health e shield, além de verificar se o personagem está pulando, agachado, no chão, na água ou no ar. Existem muitas funcionalidades disponíveis. 

Para usar a interface fort_character, é necessário adicionar este módulo:

using { /Fortnite.com/Characters }


Este módulo adiciona um método de extensão à classe agent para obter a instância de fort_character:

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


Também é possível obter a referência do agent associado ao fort_character, caso exista:

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


O exemplo abaixo mostra como aumentar o health de um fort_character em 10:

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


Como exemplo prático de fort_character vamos criar um dispositivo que referencia um volume_device. Este dispositivo pode recuperar o health e shield dos agentes que estiverem dentro do volume referenciado. Ele também terá várias opções de configuração. 

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

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

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)


O dispositivo mantém um loop executado a cada TimeInterval, que por padrão é 1 segundo. A cada iteração do loop, é obtido um array de agentes que estão dentro do volume. Para cada agente, o health e shield são aumentados, caso estejam habilitados.

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 dispositivo recharger_device ao nível. Em seguida, adicione também um Volume Device e marque a propriedade Visible in Game.


Selecione o recharger_device no nível. Na aba Details, selecione a referência ao Volume Device.  Podemos configurar o dispositivo para recarregar apenas health ou shield, além de modificar o intervalo de tempo e a quantidade recarregada.



Para facilitar o teste do dispositivo, vamos diminuir o health inicial do jogador. Na aba Outliner, selecione o Island Settings. Na aba Details, pesquise por Health. Em Starting Health Percentage defina 20%


Salve o nível e clique no botão Launch Session para carregá-lo no Fortnite. Mova o personagem para dentro do volume para recarregar health e shield.