terça-feira, 15 de julho de 2025

UEFN Verse: Modulo (pt-BR)

Um módulo Verse permite a organização de vários elementos de código para serem reutilizados no projeto. Um módulo também pode ser distribuído para ser utilizado em outros projetos.

As primeiras linhas Verse de um dispositivo criativo tem a instrução using que importa módulos Verse do UEFN com os elementos necessários.  

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

A criação de um módulo é feito usando a palavra chave module. Um módulo pode conter outros módulos, classes, constantes, funções e outros elementos.

Uma pasta dentro do projeto UEFN é tratada como um módulo. Por exemplo, você pode criar uma pasta com o seu domínio para guardar os seus módulos que poderão ser distribuídos ao público.

Para criar uma pasta que será usada como módulo, siga estes passos:

  • Abra o Verse Explorer
  • Clique com o botão direito na pasta Content.
  • Selecione a opção Create Submodule.
  • Desmarque a opção Hide Empty Directories para que a nova pasta seja exibida.
  • Clique com o botão direito na nova pasta e renomeie com o nome do seu módulo.

A imagem abaixo mostra a pasta que eu criei para o meu módulo RomeroBlueprints. O meu módulo contém o arquivo dice.verse que é um dos arquivos que vamos criar neste artigo.


Como exemplo vamos criar o módulo Dice (dados em inglês). Este módulo contém os seguintes elementos:

  • A classe die (dado em inglês) com campos e um método para rolar o dado.
  • A função GenerateDice que recebe como parâmetro a quantidade de dados e o número de faces dos dados. A função cria e retorna um array de dados (instâncias da classe die).
  • A função SumDice que recebe como parâmetro um array de dados, soma os valores de todos os dados e retorna o resultado da soma.

Clique com o botão direito na pasta que foi criada, no meu exemplo o nome da pasta é RomeroBlueprints, e escolha a opção Create New Verse File

Use o nome dice para o arquivo clique no botão Create Empty.

Copie o código Verse abaixo para o arquivo dice:

using { /Verse.org/Random }

Dice<public> := module:

    die<public> := class():

        NumFaces<public> : int = 6
        var TopFace<public> : int = 1

        Roll<public>(): int =
            set TopFace = GetRandomInt(1, NumFaces)
            TopFace

    GenerateDice<public>(Amount: int, _NumFaces: int): []die =

        var DiceArray : []die = array{}

        for (Counter := 1..Amount):
            CurrentDie := die{NumFaces:= _NumFaces}
            CurrentDie.Roll()
            set DiceArray += array{CurrentDie}
        
        DiceArray

    SumDice<public>(DiceArray: []die): int =

        var sum : int = 0

        for (Currentdie : DiceArray):
            set sum += Currentdie.TopFace

        sum

Salve o arquivo e compile o código Verse usando a opção Verse > Build Verse Code do menu do UEFN.

Para usar o módulo Dice em outro arquivo Verse que está na pasta Content do projeto é preciso importar o módulo com a instrução using com o nome da pasta  e o nome do módulo separados por "." como mostra a linha abaixo:

using { RomeroBlueprints.Dice }

Assim, a classe die e as funções do módulo Dice estarão disponíveis para serem usados em outro arquivo Verse.

Vamos criar um dispositivo no UEFN para testar o módulo Dice. 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 module_device clique no botão Create Empty.

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

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

using { RomeroBlueprints.Dice }

module_device := class(creative_device):

    DieInstance : die = die{}

    var DiceArray : []die = array{}

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

        DieInstance.Roll()
        Print("DieInstance.TopFace = {DieInstance.TopFace}")

        set DiceArray = GenerateDice(10,6)

        Print("Dice generated:")

        for( CurrentDie : DiceArray):
            Print("{CurrentDie.TopFace}")

        Print("The sum of the dice is { SumDice(DiceArray) }")

O module_device possui uma instância da classe die e um array de instâncias da classe die. No método OnBegin são executadas as funções disponíveis no módulo Dice para gerar 10 dados e somar os seus valores. Os resultados das funções são registrados no log.

Salve o arquivo e compile o código Verse usando a opção Verse > Build Verse Code do menu do UEFN. 

Acesse o Content Drawer e adicione o dispositivo Verse module_device ao nível. 

Clique no botão Launch Session localizado na barra de ferramentas do UEFN para carregar o nível no Fortnite. 

Após iniciar a partida no Fortnite, pressione a tecla Tab e selecione a aba Registro para visualizar o log com as mensagens escritas pelas funções Print.


Sumário Verse