Immagine hero: HeroImageSearchAndDestroy.png Immagine argomento: TopicImageSearchAndDestroy.png Immagine social: SocialImageSearchAndDestroy.png
Il *modello di detonazione di Verse ti illustra come creare un gioco in cui due team combattono per armare e disarmare siti di bombe.
Questo tutorial utilizza il dispositivo Verse e dispositivi base come il dispositivo indicatore mappa per realizzare meccaniche di gameplay, come la visualizzazione di segnalatori a seconda delle condizioni.
Il modello descrive concetti di Verse quali:
-
Enum
-
Concorrenza
-
Gara
-
Attesa
-
Panoramica
Quella che segue è una panoramica dei passaggi necessari per ricreare quest'isola nella sequenza ideale:
-
Crea un nuovo progetto e modifica le Impostazioni isola per configurare il gioco.
-
Configura i dispositivi.
-
Aggiungi lo script Verse.
Creazione di un nuovo progetto e configurazione del gioco
-
Apri UEFN e crea un nuovo progetto vuoto.
-
Seleziona il dispositivo IslandSettings nell'Outliner e individua la sezione Opzioni utente - Regole del gioco.
-
Modifica le opzioni utente come mostrato di seguito.
Opzione | Valore | Spiegazione |
---|---|---|
Team | Indice team 2 | I giocatori sono divisi in team da due. |
Round totali | 5 | Vengono giocati cinque round prima della fine del gioco. |
Consente di fare da spettatore ad altri team | False | I giocatori non possono assistere ai round degli altri team. |
Risorse infinite | False | I giocatori non hanno a disposizione materiali da costruzione infiniti durante il gioco. |
La costruzione può distruggere l'ambiente | False | Il posizionamento di strutture costruite dai giocatori non può distruggere nessuna parte dell'ambiente con cui si sovrappongono. |
Danni ambiente | Disattivato | I giocatori non possono infliggere danni all'ambiente durante il gioco. |
Distruzione piccone | Nessuna | I picconi non causano danni all'ambiente o agli edifici. |
Consente la rigenerazione manuale | False | I giocatori non possono utilizzare l'opzione di menu Rigenerazione durante il gioco. |
Usa Punteggio team | True | Ogni team che partecipa alla gioco ottiene statistiche equivalenti alla somma dei punteggi dei giocatori. |
Configurazione dei dispositivi
Questo tutorial utilizza i seguenti dispositivi:
-
1 dispositivo Verse
Dispositivo Esplosivo

Utilizza il dispositivo Esplosivo per far esplodere i detonatori. Su lati opposti della mappa, copia e posiziona un gruppo di quattro dispositivi Esplosivo.
Per configurare il dispositivo, imposta le Opzioni utente seguenti:
Opzione | Valore | Spiegazione |
---|---|---|
Può essere danneggiato | False | Questo dispositivo non può essere danneggiato dai giocatori. |
Obiettivo a tempo

Il dispositivo Obiettivo a tempo funge da detonatore per ogni sito. Posiziona un dispositivo Obiettivo a tempo su entrambi i gruppi di dispositivi Esplosivo.
Per configurare il dispositivo, imposta le Opzioni utente seguenti:
Opzione | Valore | Spiegazione |
---|---|---|
Tempo | 30 | Determina la durata del timer per l'obiettivo. |
Punteggio avvio | 2 | Imposta il punteggio conferito per avviare un timer inattivo. |
Punteggio arresto | 5 | Imposta il punteggio conferito per arrestare un timer attivo. |
Punteggio completamento | 3 | Imposta il punteggio conferito al completamento del timer. |
Stile testo etichetta del timer | Arancione grassetto | Imposta lo stile del conto alla rovescia e il testo personalizzato visualizzati. |
Filtro team avvio | Indice team 1 | Determina quale team può avviare un timer inattivo. |
Testo di interazione di avvio | Attivazione bomba | Definisce il testo personalizzato da visualizzare come messaggio per un giocatore che può avviare un timer inattivo. |
Tempo di interazione di avvio | 5 | Determina la durata dell'interazione richiesta per avviare un timer inattivo. |
Filtro team arresto | Indice team 2 | Determina quale team può arrestare un timer attivo. |
Testo di interazione di arresto | Disattivazione bomba | Definisce il testo personalizzato da visualizzare come messaggio per un giocatore che può fermare un timer attivo. |
Tempo di interazione di arresto | 5.0 | Determina la durata dell'interazione richiesta per arrestare un timer attivo. |
Distanza suono timer | Tutta la mappa | Determina se il suono del timer è localizzato o se è udibile da qualsiasi punto della mappa. |
Dispositivo Indicatore mappa

Utilizza il dispositivo Indicatore mappa per posizionare marcatori personalizzati su una minimappa. Su ogni sito di esplosivo, posiziona due dispositivi indicatori mappa, uno per ogni team.
Per configurare il dispositivo, imposta le Opzioni utente seguenti:
Opzione | Valore | Spiegazione |
---|---|---|
Colore icona | Sceglie un colore | Imposta il colore dell'icona visualizzata. Scegli un colore che identifichi ogni team. |
Testo | Esplosivo A - Esplosivo B | Nomina una coppia di dispositivi indicatori mappa Bomba A e l'altra Bomba B. |
Dispositivo Fine gioco

Utilizza il dispositivo Fine gioco per terminare un round dopo che la bomba è stata disattivata correttamente o esplode dopo 30 secondi tramite lo script Verse.
Per configurare il dispositivo, imposta le Opzioni utente seguenti:
Opzione | Valore | Spiegazione |
---|---|---|
Team vincitore | Team attivatore | Il team che attiva il dispositivo vince il gioco. |
Cosa far finire | Round | Il dispositivo pone fine al round. |
Dispositivo Pedana di generazione giocatore

Raggruppa i dispositivi Pedana di generazione giocatore del team su lati opposti della tua mappa. In questo modo ogni team ha i propri generatori: il team 1 attiva la bomba e il team 2 la disattiva. I team cambiano a ogni round.
Per configurare il dispositivo, imposta le Opzioni utente seguenti:
Opzione | Valore | Spiegazione |
---|---|---|
Team giocatore | Indice team 1 - 2 | Un gruppo di pedane di generazione è configurato sull'indice del team 1, l'altra sull'indice del team 2. |
Aggiunta degli script Verse
Aggiungi gli script Verse seguenti, iniziando a fare riferimento ai dispositivi con la funzione @editable.
Puoi copiare il codice nell'ordine in cui è scritto. I commenti vengono inseriti all'interno dello script con finalità di chiarezza.
# enum per determinare lo stato delle bombe
bomb_state<public>:= enum {AllUnarmed, BombAArmed, BombBArmed}
Il codice precedente definisce un'enumerazione per tenere traccia dello stato delle bombe.
search_and_destroy := class(creative_device):
Logger:log = log{Channel:=log_search_and_destroy}
@editable
TimedObjectiveA: timed_objective_device = timed_objective_device{}
@editable
TimedObjectiveB: timed_objective_device = timed_objective_device{}
@editable
ExplosiveBarrelsA: []explosive_device = array{}
@editable
ExplosiveBarrelsB: []explosive_device = array{}
@editable
EndGameDevice: end_game_device = end_game_device{}
@editable
BombAMapIndicators: []map_indicator_device = array{}
@editable
BombBMapIndicators: []map_indicator_device = array{}
@editable
BombABeaconArm: beacon_device = beacon_device{}
@editable
BombABeaconDisarm: beacon_device = beacon_device{}
@editable
BombBBeaconArm: beacon_device = beacon_device{}
@editable
BombBBeaconDisarm: beacon_device = beacon_device{}
var BombState:bomb_state = bomb_state.AllUnarmed
Puoi usare la funzione @editable per fare riferimento ai dispositivi.
# Viene eseguito quando il dispositivo viene avviato in un gioco in esecuzione
OnBegin<override>()<suspends>:void=
# L'espressione di gara viene utilizzata per eseguire un blocco di due o più espressioni asincrone contemporaneamente. Quando l'espressione più veloce termina, "la gara viene vinta".
# https://dev.epicgames.com/documentation/it-it/uefn/race-in-verse
race:
block:
# Attendi l'attivazione della bomba A
ArmingPlayer:= TimedObjectiveA.StartedEvent.Await()
Print("Bomba A attivata",?Duration:=5.0)
# Permette di sapere quali segnalatori attivare e quali barili far esplodere
set BombState = bomb_state.BombAArmed
# Disattiva l'altro Obiettivo a tempo
TimedObjectiveB.Disable(ArmingPlayer)
# Disattiva gli indicatori mappa della bomba B
for (MapIndicator : BombBMapIndicators):
MapIndicator.Disable()
La prima sezione del codice mostra come la concorrenza utilizza l'espressione di gara per determinare se è stata attivata per prima la bomba A o la bomba B.
block:
# Attendi l'attivazione della bomba B
ArmingPlayer:= TimedObjectiveB.StartedEvent.Await()
Print("Bomba B attivata",?Duration:=5.0)
# Permette di sapere quali segnalatori attivare e quali barili far esplodere
set BombState = bomb_state.BombBArmed
# Disattiva l'altro Obiettivo a tempo
TimedObjectiveA.Disable(ArmingPlayer)
# Disattiva gli indicatori mappa della bomba A
for (MapIndicator : BombAMapIndicators):
MapIndicator.Disable()
# Attiva i segnalatori corretti ora che è stata attivata una bomba
UpdateBeacons()
# Attende che termini o si interrompa il conto alla rovescia di TimedObjective
race:
block:
BombDetonated(TimedObjectiveA.CompletedEvent.Await())
block:
BombDetonated(TimedObjectiveB.CompletedEvent.Await())
block:
DisarmingPlayer:= TimedObjectiveA.StoppedEvent.Await()
Print("Bomba disattivata", ?Duration:=5.0)
EndGameDevice.Activate(DisarmingPlayer)
block:
DisarmingPlayer:= TimedObjectiveB.StoppedEvent.Await()
Print("Bomba disattivata", ?Duration:=5.0)
EndGameDevice.Activate(DisarmingPlayer)
Il codice precedente mostra una concorrenza in cui lo script attende che il conto alla rovescia dell'obiettivo a tempo termini o si interrompa.
# Disattiva i segnalatori disattivi e attiva il segnalatore della bomba attiva.
UpdateBeacons():void=
BombABeaconArm.Disable()
BombBBeaconArm.Disable()
if:
BombState = bomb_state.BombAArmed
then:
BombABeaconDisarm.Enable()
else:
BombBBeaconDisarm.Enable()
Il codice precedente aggiorna lo stato dei segnalatori in base alla bomba attiva.
BombDetonated(Agent:agent):void=
Print("Bomba esplosa", ?Duration:=5.0)
# Indica quali barili devono esplodere
if:
BombState = bomb_state.BombAArmed
then:
ExplodeBarrels(ExplosiveBarrelsA, Agent)
else:
ExplodeBarrels(ExplosiveBarrelsB, Agent)
EndGameDevice.Activate(Agent)
Il metodo illustrato viene richiamato quando l'Obiettivo a tempo viene completato Determina quali barili devono esplodere e quando terminare il gioco.
ExplodeBarrels(Barrels:[]explosive_device, Agent:agent):void=
for (Barrel : Barrels):
Barrel.Explode(Agent)
Il loop for precedente fa esplodere ogni barile nella posizione esatta della bomba.
Dispositivo Verse

Compila lo script Verse, quindi individua il tuo dispositivo in Esplora contenuti. Trascina il dispositivo Verse in un'area non visibile della mappa per configurarne le impostazioni.
Utilizza questo dispositivo per creare un'associazione diretta evento per i dispositivi necessari in modo che possano essere usati come riferimenti dallo script Verse.

Nel pannello Dettagli del dispositivo, configura le impostazioni in modo che corrispondano a ciascun dispositivo di riferimento, come nella foto qui sopra.
Per configurare il dispositivo, imposta le Opzioni utente seguenti:
Opzione | Valore | Spiegazione |
---|---|---|
TimeObjectiveA | Obiettivo a tempo BombSiteA | Collega il dispositivo Obiettivo a tempo al sito dell'esplosivo. |
TimeObjectiveB | Obiettivo a tempo BombSiteB | Collega il dispositivo Obiettivo a tempo al sito dell'esplosivo. |
ExplosiveBarrelsA | 0 - BarrelBombSiteA_1 | Collega il dispositivo Esplosivo. |
ExplosiveBarrelsA | 1 - BarrelBombSiteA_2 | Collega il dispositivo Esplosivo. |
ExplosiveBarrelsA | 2 - BarrelBombSiteA_3 | Collega il dispositivo Esplosivo. |
ExplosiveBarrelsA | 3 - BarrelBombSiteA_4 | Collega il dispositivo Esplosivo. |
ExplosiveBarrelsB | 0 - BarrelBombSiteB_1 | Collega il dispositivo Esplosivo. |
ExplosiveBarrelsB | 1 - BarrelBombSiteB_2 | Collega il dispositivo Esplosivo. |
ExplosiveBarrelsB | 2 - BarrelBombSiteB_3 | Collega il dispositivo Esplosivo. |
ExplosiveBarrelsB | 3 - BarrelBombSiteB_4 | Collega il dispositivo Esplosivo. |
EndGameDevice | Dispositivo Fine gioco 2 | Collega il dispositivo Fine gioco. |
BombAMapIndicators | 0 - Map_Team1_BombsiteA | Collega il dispositivo Indicatore mappa al sito dell'esplosivo. |
BombAMapIndicators | 1 - Map_Team2_BombsiteA | Collega il dispositivo Indicatore mappa al sito dell'esplosivo. |
BombBMapIndicators | 0 - Map_Team1_BombsiteB | Collega il dispositivo Indicatore mappa al sito dell'esplosivo. |
BombBMapIndicators | 1 - Map_Team2_BombsiteB | Collega il dispositivo Indicatore mappa al sito dell'esplosivo. |
BombABeaconArm | BeaconArmBombSiteA | Attiva l'esplosivo nel sito A. |
BombABeaconDisarm | BeaconArmBombSiteA | Disattiva l'esplosivo nel sito A. |
BombBBeaconArm | BeaconArmBombSiteB | Attiva l'esplosivo nel sito B. |
BombBBeaconDisarm | BeaconArmBombSiteB | Disattiva l'esplosivo nel sito B. |
Seleziona Avvia sessione per testare il livello completato.