sexta-feira, 17 de abril de 2026

UEFN Verse: Classes agent e player

Neste artigo, vou falar sobre as classes agent e player, além de revisar os conceitos de herança e casting.

A classe agent é uma subclasse de entity. Ela representa entidades que atuam  no jogo, podendo ser NPCs ou jogadores.

A classe player é uma subclasse de agent. Representa um jogador humano que está na partida.

Conforme os conceitos de herança, uma subclasse herda as propriedades de sua superclasse (classe pai). É como se acumulasse os tipos de suas superclasses. 

Por exemplo, uma instância da classe player também é um agent e é uma entity. Por isso, ela também pode ser referenciada por um campo cujo tipo seja o de uma superclasse, como agent

No UEFN, as interações com dispositivos são realizadas por agentes, que podem ser NPCs ou jogadores. Para verificar se o agente que interagiu com o dispositivo é um jogador, podemos usar casting para tentar converter a referência do tipo agent para uma referência do tipo player. Se o casting for bem-sucedido, significa que a instância referenciada é do tipo player.
HandleItemPickedUp(Agent:agent):void=
    if ( Player := player[Agent] ):

Após o casting, a referência do tipo player permitirá acessar os campos e métodos que pertencem apenas à classe player.

Para ver o casting em ação, vamos criar um dispositivo que referencia um trigger_device. Quando o trigger for acionado, vamos usar casting para verificar se foi um player ou um NPC que o ativou. Se for um jogador, uma luz verde será ligada. Se for um NPC, uma luz vermelha será ligada.

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

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

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

agent_check_device := class(creative_device):

    @editable
    TriggerDevice : trigger_device = trigger_device{}

    @editable
    GreenLight : customizable_light_device = customizable_light_device{}

    @editable
    RedLight : customizable_light_device = customizable_light_device{}

    OnBegin<override>()<suspends>:void =
        TriggerDevice.TriggeredEvent.Subscribe(OnTriggered)

    OnTriggered(MaybeAgent : ?agent) : void =
        if (Agent := MaybeAgent?):
            GreenLight.TurnOff()
            RedLight.TurnOff()

            if (Player := player[Agent]):
                GreenLight.TurnOn()
            else:
                RedLight.TurnOn()

O dispositivo agent_check_device possui um trigger_device e dois customizable_light_device

Na função OnTriggered, o parâmetro é do tipo ?agent (option agent), pois o TriggerDevice pode ser acionado por código Verse sem a interação de um agente. Primeiro, é verificado se o TriggerDevice foi acionado por um agente e, em seguida, é testado se o agente é um player ou NPC.

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 agent_check_device ao nível. Em seguida, adicione também um Trigger Device, dois Customizable Light Devices e um Wildlife Spawner Device

Selecione o Trigger Device no nível e marque a opção Triggered by Creatures.

Selecione um dos Customizable Light Devices, renomeie para RedLight, escolha uma cor vermelha em Light Color e desmarque a opção Initial State para que a luz comece desligada. Renomeie o outro Light Device para GreenLight e faça os ajustes semelhantes usando a cor verde.


Selecione o agent_check_device no nível. Na aba Details, selecione as referências dos dispositivos adicionados ao nível.


Vamos usar o Wildlife Spawner Device para gerar criaturas no nível que poderão ativar o Trigger Device ao passarem sobre ele. Selecione o dispositivo e, em Type, escolha Random para que apareçam tipos diferentes de criaturas. Em Spawn Count, defina 10.


Salve o nível e clique no botão Launch Session para carregá-lo no Fortnite. Passe sobre o Trigger Device para ativar a luz verde. Tente atrair uma criatura para que ela passe sobre o Trigger Device e ative a luz vermelha.