La plantilla de parkour de Verse te mostrará cómo crear un modo de juego en el que los jugadores puedan maniobrar estratégicamente a través de obstáculos y plataformas para recoger baterías.
En este modo de juego, los jugadores recogerán cuatro baterías para completar el nivel. El tiempo se prolongará si encuentran la batería secreta. Cuando se acaba el tiempo, el jugador vuelve al principio.
Esta plantilla muestra algunas funciones básicas del lenguaje como:
-
Bucles
for
-
Suscripciones
-
Matrices
-
API de dispositivo
Los conceptos complejos, como la simultaneidad, no se utilizarán en esta plantilla.
Resumen
A continuación, encontrarás un resumen con los pasos que tendrás que seguir para recrear esta isla según la secuencia ideal:
-
Crea un nuevo proyecto y modifica la configuración de la isla para definir el juego.
-
Construye la arena.
-
Configura los dispositivos.
-
Añade la secuencia de comandos de Verse.
Cómo crear un nuevo proyecto y configurar el juego
-
Abre UEFN y crea un nuevo proyecto vacío.
-
Selecciona el dispositivo Ajustes de la isla en el esquematizador y localiza Opciones de usuario - Reglas del juego.
-
Modifica las opciones de usuario como se muestra a continuación.
Opción Valor Explicación Condición de victoria del juego Las puntuaciones más altas ganan El jugador con la puntuación más alta ganará el juego. Destrucción con pico Ninguno El pico no dañará el entorno. Empezar con un pico Desactivado Los jugadores no empezarán el juego con un pico. Recoger objetos automáticamente Sí Los jugadores recogerán automáticamente los objetos con los que entren en contacto. Permitir trepar/esprintar/deslizarse/golpe de hombro Activado Los jugadores podrán hacer parkour por el entorno. Condición de victoria de la ronda Puntuación Los jugadores con la puntuación más alta ganarán la ronda. Primera columna de la tabla de puntuación Puntuación La tabla de puntuación mostrará la puntuación en la primera columna.
Cómo construir la arena
Este mapa utiliza la Galería de elementos de atrezo de ciudad cibernética, que puedes encontrar en Fortnite > Galerías > Elementos.
Recrea este mapa con plataformas y obstáculos para que los jugadores hagan parkour sobre ellos.
Cómo configurar los dispositivos
Este tutorial utiliza los siguientes dispositivos:
-
Cualquier número de plataformas de aparición de jugador
-
Cinco repartidores de objetos
-
Un cronómetro
Dispositivo Plataforma de aparición de jugador

Utiliza un dispositivo Plataforma de aparición de jugador para hacer aparecer jugadores en el mapa. Al principio de tu mapa, coloca una plataforma de aparición para cada jugador. Las encontrarás en Fortnite > Dispositivos > Plataforma de aparición de jugador.
Para configurar este dispositivo, establece las Opciones de usuario como se indica a continuación:
Opción | Valor | Explicación |
---|---|---|
Visible en partida | Desactivado | Este dispositivo no será visible en la partida. |
Dispositivo Repartidor de objetos

En UEFN, arrastrar un consumible desde el almacén de contenido lo coloca automáticamente en un dispositivo Generador de objetos. Arrastra una batería al mapa. La encontrarás en Fortnite > Objetos > Batería.
Para configurar este dispositivo, establece las Opciones de usuario como se indica a continuación:
Opción | Valor | Explicación |
---|---|---|
Tiempo antes de la generación | 0.1 | Establece la cantidad de tiempo que transcurre antes de que aparezca el objeto. |
Generar reaparición de objeto por cronómetro | Desactivado | La batería no reaparece una vez recogida. |
Base visible durante la partida | Desactivado | El dispositivo no será visible en el juego. |
Munición adicional para armas | Desactivado | Las armas no darán munición extra. |
Recogida al pasar por encima | Activado | Los jugadores recogerán automáticamente este objeto. |
Escala de objetos | 2.0 | Establece el tamaño de la batería. |
Copia y pega este dispositivo cuatro veces más y colócalo alrededor de tu mapa.
Dispositivo Fin de partida

Coloca un dispositivo Fin de partida para terminar la partida cuando se active.
Para configurar este dispositivo, establece las Opciones de usuario como se indica a continuación:
Opción | Valor | Explicación |
---|---|---|
Aviso de victoria personalizado | Texto introducido | Introduce el texto que quieres que se muestre para el ganador. |
Dispositivo Volumen de daño

El dispositivo Volumen de daño es un límite que puede dañar a los jugadores dentro de su zona. Coloca este dispositivo debajo de tu mapa y ajusta la Anchura de la zona, la Profundidad y la Altura para cubrir el fondo de tu arena y eliminar al instante a los jugadores caídos.
Para configurar este dispositivo, establece las Opciones de usuario como se indica a continuación:
Opción | Valor | Explicación |
---|---|---|
Daño | 500 | Este dispositivo inflige suficiente daño para eliminar instantáneamente a los jugadores que caen. |
Dispositivo Cronómetro

Coloca un dispositivo Cronómetro cerca del dispositivo Fin de partida. Este dispositivo contará el tiempo hasta que el jugador sea eliminado y deba volver a empezar.
Para configurar este dispositivo, establece las Opciones de usuario como se indica a continuación:
Opción | Valor | Explicación |
---|---|---|
Duración | 30 | El cronómetro durará 30 segundos. |
Iniciar cuando empiece la partida | Activado | El cronómetro comienza cuando se inicia la partida. |
Se aplica a | Jugador | Cuando se inicia el cronómetro, se aplica a un jugador concreto. |
Completar al finalizar el tiempo | Desactivado | Cuando el cronómetro llegue a su fin, no contará como completado. |
Visible durante la partida | Oculto | El dispositivo estará oculto durante la partida. |
Texto de cronómetro en marcha | Texto introducido | Introduce el texto que quieres que se muestre para el cronómetro. |
Mensaje del HUD

Utiliza un dispositivo Mensaje del HUD para mostrar mensajes atractivos a los jugadores.
Para configurar este dispositivo, establece las Opciones de usuario como se indica a continuación:
Opción | Valor | Explicación |
---|---|---|
Tiempo mostrado | 2.0 | El mensaje aparecerá durante dos segundos antes de desaparecer. |
Mostrar al empezar la ronda | Desactivado | Este mensaje no se mostrará cuando comience la ronda, sino cuando se recoja una batería. |
Cómo añadir secuencias de comandos de Verse
Añade las siguientes secuencias de comandos de Verse. Empieza haciendo referencia a los dispositivos con la función @editable.
Puedes copiar el código en el orden en que está escrito. Se añaden comentarios dentro de la secuencia de comandos para mayor claridad.
using { /Fortnite.com/Devices }
using { /Fortnite.com/Characters }
using { /Verse.org/Simulation}
using { /UnrealEngine.com/Temporary/Diagnostics }
log_parkour := class(log_channel){}
# Este es un dispositivo del modo Creativo diseñado con Verse que se puede colocar en un nivel.
# Este ejemplo de secuencia de comandos es una versión de parkour en la que el objetivo es reunir cuatro baterías antes de que se agote el cronómetro.
#
# Primeros pasos:
# https://dev.epicgames.com/documentation/es-es/uefn/learn-programming-with-verse-in-unreal-editor-for-fortnite
parkour_race_script := class(creative_device):
Logger : log = log{Channel:=log_parkour}
# Referencia del dispositivo al generador de jugadores
@editable
PlayerSpawnDevice : player_spawner_device = player_spawner_device{}
# Dispositivo Fin de partida para una victoria
@editable
EndGameVictoryDevice : end_game_device = end_game_device{}
# Cronómetro para este modo de juego
@editable
TimerDevice : timer_device = timer_device{}
# Mensaje del HUD de respuesta para el jugador cuando consiga una batería
@editable
HUDMessageBattery : hud_message_device = hud_message_device{}
# Una matriz de los generadores de objetos que tenemos.
@editable
BatteryItemSpawners : []item_spawner_device = array{}
@editable
SecretBatteryItemSpawner : item_spawner_device = item_spawner_device{}
# Cantidad de tiempo ajustable que se añade cuando el jugador recoge la batería secreta
@editable
SecretBatteryTimeReward : float = 10.0
# Declaración para un entero que representa el número de baterías que el jugador ha recogido hasta el momento
var BatteriesCollected : int = 0
La secuencia de comandos anterior muestra cómo utilizar @editable para exponer dispositivos del modo Creativo, matrices y valores float en UEFN. Para que tu secuencia de comandos pueda recurrir a ellos más adelante, primero hay que definir los dispositivos en Verse.
# Mensajes que se muestran cuando se recoge una batería
BatteryCollectedMessage<localizes>(Amount:int) : message = "Has recogido {Amount} baterías"
BatteriesCollectedMessage<localizes>(Amount:int) : message = "Has recogido {Amount} baterías"
# Mensajes para recoger la batería secreta y mensaje de finalización
AllBatteriesCollectedMessage<localizes> : message = "¡Has recogido todas las baterías!"
SecretBatteryCollectedMessage<localizes> : message = "Has recogido la batería secreta, ¡se añade tiempo adicional!"
La secuencia de comandos anterior muestra cómo definir una función que devuelve un mensaje parametrizado en función de la cantidad de baterías recogidas. También establece los mensajes que se mostrarán cuando se recojan todas las baterías, incluida la secreta.
# Se ejecuta cuando este device_script se inicia en una partida en marcha.
OnBegin<override>()<suspends>:void=
# Puedes ver el registro de esta forma para determinar qué está haciendo tu secuencia de comandos.
Logger.Print("¡Secuencia de comandos de carrera de parkour iniciada!")
# Suscripción a AgentSpawnedEvent.
# Cuando aparece el jugador, se llama a la función «HandleAgentSpawned».
PlayerSpawnDevice.SpawnedEvent.Subscribe(HandleAgentSpawned)
# Lo mismo para el cronómetro. Nos suscribimos cuando termine.
TimerDevice.FailureEvent.Subscribe(HandleTimerExpired)
# Recorremos nuestra matriz de batteryItemSpawners y por cada generador de objetos, nos suscribimos a ItemPickupEvent.
# Hacemos esto para cada generador de objetos y no guardamos el controlador como antes para AgentSpawnedSubscription y TimerExpiredSubscription.
# No es necesario que guardes el controlador, pero sin él no podrás cancelar la suscripción para que se active cada vez que se recoja un objeto.
for (BatterySpawner : BatteryItemSpawners):
BatterySpawner.ItemPickedUpEvent.Subscribe(HandleBatteryPickedUp)
<# Otra forma de hacer el bucle for anterior que utiliza un entero para recorrer la matriz.
for (i:int := 0..BatteryItemSpawners.Length - 1):
if (Battery := BatteryItemSpawners[i]):
Battery.ItemPickedUpEvent.Subscribe(HandlebatteryPickedUp) #>
SecretBatteryItemSpawner.ItemPickedUpEvent.Subscribe(HandleSecretBatteryPickedUp)
La función OnBegin define lo que ocurre cuando se inicia el juego mientras el bucle for hace su recorrido por el evento de las baterías recogidas.
# Función a la que se llama cuando el agente aparece en la plataforma de aparición de jugador.
HandleAgentSpawned(Agent:agent):void=
Logger.Print("¡Agente generado!")
# Reinicia el dispositivo Cronómetro para que los jugadores que reaparezcan dispongan de todo el tiempo posible.
TimerDevice.Reset(Agent)
TimerDevice.Start(Agent)
Arriba está el código para cuando el jugador aparece, que reinicia el cronómetro y vuelve a empezar.
# Función a la que se llama cuando se recoge un objeto de batería de los generadores de objetos.
HandleBatteryPickedUp(Agent:agent):void=
# Incrementa el número de baterías recogidas.
set BatteriesCollected = BatteriesCollected + 1
# Así es como puedes enviar el número de baterías al registro. Esto es útil para la depuración.
Logger.Print("Número de baterías recogidas: {BatteriesCollected}")
# Comprueba si hay suficientes baterías recogidas para terminar el juego.
if:
BatteriesCollected >= BatteryItemSpawners.Length
then:
# Comprueba si hemos recogido cuatro (o más) baterías. Si es así, hemos ganado: se llama a la función EndGame.
spawn { EndGame(Agent) }
else:
# Este código se ejecuta si el número de baterías es inferior a 4. Muestra un mensaje del HUD para espolear al jugador.
# El mensaje del HUD es «batería» si solo se recoge 1 batería. Será «baterías» si se recoge más de una.
if:
BatteriesCollected = 1
then:
HUDMessageBattery.SetText(BatteryCollectedMessage(BatteriesCollected))
HUDMessageBattery.Show(Agent)
else:
HUDMessageBattery.SetText(BatteriesCollectedMessage(BatteriesCollected))
HUDMessageBattery.Show(Agent)
# A continuación, obtenemos el siguiente generador de objetos de la matriz que hemos configurado.
# Lo hacemos «indexando» en la matriz. Está dentro de la declaración «if» para garantizar que se hace referencia a NextBatterySpawner correctamente.
if:
NextBatterySpawner := BatteryItemSpawners[BatteriesCollected]
then:
# Si conseguimos el siguiente generador de objetos, se llama a SpawnItem que activará la siguiente batería para conseguir.
NextBatterySpawner.SpawnItem()
Arriba está el código que gestiona la recogida de una batería. Si se han recogido todas las baterías, se llama al método EndGame. Si no, se muestran mensajes en el HUD para los jugadores y se genera la siguiente batería.
HandleSecretBatteryPickedUp(Agent:agent):void=
Logger.Print("Batería secreta recogida")
# Obtén el tiempo restante para que podamos añadirle tiempo adicional.
var TimeRemaining:float = TimerDevice.GetActiveDuration( Agent )
var TimeToAdd:float = (TimeRemaining + SecretBatteryTimeReward)
# Añade tiempo adicional al dispositivo Cronómetro, pero no sobrepases la hora inicial.
TimerDevice.SetActiveDuration(Min(TimeToAdd, TimerDevice.GetMaxDuration()), Agent )
HUDMessageBattery.SetText(SecretBatteryCollectedMessage)
HUDMessageBattery.Show(Agent)
Arriba está el código que añade tiempo al dispositivo Cronómetro cuando se recoge la batería secreta. Está configurado para no sobrepasar los 30 segundos de inicio del dispositivo Cronómetro. Este código también muestra un mensaje en pantalla.
# Función a la que se llama cuando el cronómetro se agota.
HandleTimerExpired(MaybeAgent:?agent):void=
Logger.Print("Cronómetro finalizado")
if (Agent := MaybeAgent?):
Agent
# Elimina al jugador.
if:
FortCharacter:fort_character = Agent.GetFortCharacter[]
then:
FortCharacter.Damage(500.0)
Arriba está el código que elimina al jugador cuando se acaba el tiempo. A continuación, el jugador vuelve a aparecer y el cronómetro se reinicia en el método HandleAgentSpawned.
# Función asíncrona que gestiona el final de la partida.
EndGame(Agent:agent)<suspends>:void=
HUDMessageBattery.SetText(AllBatteriesCollectedMessage)
HUDMessageBattery.Show(Agent)
# Espera tres segundos antes de terminar el juego.
Sleep(3.0)
EndGameVictoryDevice.Activate(Agent)
# Se ejecuta cuando esta secuencia de comandos del dispositivo se detiene o termina la partida.
OnEnd<override>():void=
Logger.Print("¡Dispositivo de Verse detenido!")
Arriba está el código que termina el juego. Sleep(3.0) es un ejemplo de uso de método asíncrono.
Cómo configurar el dispositivo de Verse

Compila tu secuencia de comandos de Verse y busca tu dispositivo en el almacén de contenido. Arrastra el dispositivo de Verse a una zona no visible de tu mapa para personalizar la configuración.

En el panel de detalles del dispositivo, configura los ajustes para que coincidan con cada dispositivo referenciado, como en la foto de arriba.
Para configurar este dispositivo, establece las Opciones de usuario como se indica a continuación:
Opción | Valor | Explicación |
---|---|---|
PlayerSpawnDevice | Plataforma de aparición de jugador | Selecciona esta opción del cuadro desplegable para hacer referencia a los dispositivos. |
EndGameVictoryDevice | Dispositivo de victoria de fin de partida | Selecciona esta opción del cuadro desplegable para hacer referencia a los dispositivos. |
TimerDevice | Cronómetro | Selecciona esta opción del cuadro desplegable para hacer referencia a los dispositivos. |
HUDMessageBattery | Mensaje del HUD del dispositivo Batería | Selecciona esta opción del cuadro desplegable para hacer referencia a los dispositivos. |
PlayerSpawnDevice | Plataforma de aparición de jugador | Selecciona esta opción del cuadro desplegable para hacer referencia a los dispositivos. |
BatteryItemSpawners - 0 | Generador de baterías 1 | Selecciona esta opción del cuadro desplegable para hacer referencia a los dispositivos. |
BatteryItemSpawners - 1 | Generador de baterías 2 | Selecciona esta opción del cuadro desplegable para hacer referencia a los dispositivos. |
BatteryItemSpawners - 2 | Generador de baterías 3 | Selecciona esta opción del cuadro desplegable para hacer referencia a los dispositivos. |
BatteryItemSpawners - 3 | Generador de baterías 4 | Selecciona esta opción del cuadro desplegable para hacer referencia a los dispositivos. |
SecretBatteryItemSpawner | Generador de baterías - Secreto | Selecciona esta opción del cuadro desplegable para hacer referencia a los dispositivos. |
SecretBatteryTimeReward | 10.0 | La recompensa de tiempo por recoger la batería secreta. |
Selecciona Abrir sesión para probar tu nivel finalizado.