Quest sezione mostra come trovare durante il runtime i giocatori e i team configurati in precedenza.
Definizione dei membri di una classe
- Apri Verse Explorer e fai due volte clic su triad_infiltration_game.verse per aprire lo script in Visual Studio Code.
- All'inizio del file, aggiungi
using { /Verse.org/Random }
per accedere alla funzioneShuffle()
. Ciò ti permetterà di mescolare casualmente i team di giocatori prima di bilanciarli. Aggiungi ancheusing { /Fortnite.com/FortPlayerUtilities }
per accedere alla funzioneRespawn()
che utilizzerai in seguito per teletrasportare i giocatori nelle loro aree di generazione all'inizio del gioco.using { /Fortnite.com/Devices } using { /Fortnite.com/FortPlayerUtilities } using { /Verse.org/Simulation } using { /Verse.org/Random } using { /UnrealEngine.com/Temporary/Diagnostics }
- Nella definizione della classe
triad_infiltration_game
, aggiungi i seguenti campi:- Tre numeri interi modificabili chiamati
MaximumInfiltrators
,MaximumAttackers
eMaximumDefenders
. InizializzaMaximumInfiltrators
a 2 eMaximumAttackers
eMaximumDefenders
a 4. Questi parametri definiscono il numero massimo di giocatori per ogni team e verranno utilizzati per bilanciare dinamicamente i team. Puoi modificare questi numeri a scopo di test e per creare interessanti variazioni nel gioco.triad_infiltration := class(creative_device): # Per evitare che i giocatori non siano in grado di unirsi a un team, dovresti impostare il numero massimo # di giocatori nelle impostazioni isola rispetto alla somma di tutte le variabili Maximum(Team). # Numero massimo di giocatori nel team degli infiltrati. @editable MaximumInfiltrators:int = 2 # Numero massimo di giocatori nel team degli attaccanti. @editable MaximumAttackers:int = 4 # Numero massimo di giocatori nel team dei difensori. @editable MaximumDefenders:int = 4
- Una variabile [
map
] (map-in-verse) chiamataTeamsAndTotals
. Assocerà i team di giocatori al numero massimo di giocatori presenti in quel team.# Numero massimo di giocatori nel team degli infiltrati. @editable MaximumInfiltrators:int = 2 # Numero massimo di giocatori nel team degli attaccanti. @editable MaximumAttackers:int = 4 # Numero massimo di giocatori nel team dei difensori. @editable MaximumDefenders:int = 4 # Mappa dei team con il loro numero massimo di giocatori. var TeamsAndTotals:[team]int = map{}
- Un array modificabile di teletrasporti denominato
Teleporters
. Contiene un riferimento ai teletrasporti che userai per teletrasportare i giocatori nelle loro zone di generazione dopo il bilanciamento dei team.# Mappa dei team con il loro numero massimo di giocatori. var TeamsAndTotals:[team]int = map{} # Array di teletrasporti che teletrasportano i giocatori alla piattaforma di generazione del loro team una volta iniziato il gioco. @editable Teleporters:[]teleporter_device = array{}
- Un array
item_granter_device
modificabile denominatoWeaponGranters
. Memorizza gli assegnatori oggetti necessari per assegnare un'arma ai giocatori in base al loro team al momento della generazione.# Array di teletrasporti che teletrasportano i giocatori alla piattaforma di generazione del loro team una volta iniziato il gioco. @editable Teleporters:[]teleporter_device = array{} # Array di assegnatori di armi per ogni team. @editable var WeaponGranters:[]item_granter_device = array{}
- Tre variabili opzionali
Team
denominateMaybeInfiltrators
,MaybeAttackers
eMaybeDefenders
. Memorizzano un riferimento a ogni team per permetterti di controllare che i team siano impostati correttamente.# Array di assegnatori di armi per ogni team. @editable var WeaponGranters:[]item_granter_device = array{} # Riferimento al team degli infiltrati. var MaybeInfiltrators:?team = false # Riferimento al team degli attaccanti. var MaybeAttackers:?team = false # Riferimento al team dei difensori. var MaybeDefenders:?team = false
- Un array variabile di team denominato
Teams
. Questo array contiene un riferimento a tutti i team del gioco e lo userai per definire le variabili opzionali di team di cui sopra, oltre che per trovare i team a cui assegnare i giocatori durante il bilanciamento.# Riferimento al team degli infiltrati. var MaybeInfiltrators:?team = false # Riferimento al team degli attaccanti. var MaybeAttackers:?team = false # Riferimento al team dei difensori. var MaybeDefenders:?team = false # Array di tutti i team nel gioco. var Teams:[]team = array{}
- Tre numeri interi modificabili chiamati
Identificazione dei giocatori e team durante il runtime
- In
OnBegin()
, aggiorna l'arrayTeams
con ogni team configurato in precedenza in Impostazioni esperienza. Puoi utilizzare la funzioneGetTeams()
dell'APIfort_team_collection
per ottenere un array di tutti i team presenti nello spazio di gioco.OnBegin<override>()<suspends>:void = # Ottieni tutti i team. set Teams = GetPlayspace().GetTeamCollection().GetTeams()
- Registra un riferimento a ciascun team assegnando
MaybeInfiltrators
,MaybeAttackers
eMaybeDefenders
ai rispettivi team nell'arrayTeams
.# Salva i team per farvi riferimento in seguito. set MaybeInfiltrators = option{Teams[0]} set MaybeAttackers = option{Teams[1]} set MaybeDefenders = option{Teams[2]}
- Ora controlli se tutti e tre i team sono stati configurati correttamente. Dal momento che
MaybeInfiltrators
,MaybeAttackers
eMaybeDefenders
rappresentano rispettivamente unaoption
, puoi procedere verificando se contengono un valore reale. In caso affermativo, imposta il valore di ogni team inTeamsAndTotals
al numero massimo di giocatori per quel team.if: Infiltrators := MaybeInfiltrators? Attackers := MaybeAttackers? Defenders := MaybeDefenders? Logger.Print("Sono stati trovati tutti e tre i team") set TeamsAndTotals[Infiltrators] = MaximumInfiltrators set TeamsAndTotals[Attackers] = MaximumAttackers set TeamsAndTotals[Defenders] = MaximumDefenders Logger.Print("Configura tutti e tre i team in TeamsAndTotals") else: Logger.Print("Impossibile trovare tutti i team: assicurati di assegnare i team corretti nelle impostazioni della tua isola.")
-
Il tuo codice
triad_infiltration_game
dovrebbe essere simile al seguente:triad_infiltration_game := class(creative_device): Logger:log = log{Channel := triad_infiltration_log_channel} # Per evitare che i giocatori non siano in grado di unirsi a un team, dovresti impostare il numero massimo # di giocatori nelle impostazioni isola rispetto alla somma di tutte le variabili Maximum(Team). # Numero massimo di giocatori nel team degli infiltrati. @editable MaximumInfiltrators:int = 2 # Numero massimo di giocatori nel team degli attaccanti. @editable MaximumAttackers:int = 4 # Numero massimo di giocatori nel team dei difensori. @editable MaximumDefenders:int = 4 # Array di teletrasporti che teletrasportano i giocatori alla piattaforma di generazione del loro team una volta iniziato il gioco. @editable Teleporters:[]teleporter_device = array{} # Array di assegnatori di armi per ogni team. @editable var WeaponGranters:[]item_granter_device = array{} # Array di generatori di giocatori per ogni team. @editable PlayersSpawners:[]player_spawner_device = array{} # Riferimento al team degli infiltrati. var MaybeInfiltrators:?team = false # Riferimento al team degli attaccanti. var MaybeAttackers:?team = false # Riferimento al team dei difensori. var MaybeDefenders:?team = false # Array di tutti i team nel gioco. var Teams:[]team = array{} # Mappa dei team con il loro numero massimo di giocatori. var TeamsAndTotals:[team]int = map{} OnBegin<override>()<suspends>:void = # Ottieni tutti i team set Teams = GetPlayspace().GetTeamCollection().GetTeams() # Salva i team per farvi riferimento in seguito set MaybeInfiltrators = option{Teams[0]} set MaybeAttackers = option{Teams[1]} set MaybeDefenders = option{Teams[2]} if: Infiltrators := MaybeInfiltrators? Attackers := MaybeAttackers? Defenders := MaybeDefenders? Logger.Print("Sono stati trovati tutti e tre i team") set TeamsAndTotals[Infiltrators] = MaximumInfiltrators set TeamsAndTotals[Attackers] = MaximumAttackers set TeamsAndTotals[Defenders] = MaximumDefenders Logger.Print("Configura tutti e tre i team in TeamsAndTotals") else: Logger.Print("Impossibile trovare tutti i team: assicurati di assegnare i team corretti nelle impostazioni della tua isola.")
-
Salva lo script in Visual Studio Code e nel Menu principale, sotto Verse, fai clic su Compila script Verse per aggiornare il tuo dispositivo creato con Verse nel livello.
-
Fai clic su Avvia sessione nella barra degli strumenti UEFN per eseguire il playtest del livello. Durante il test del tuo livello, verifica che tutti e tre team siano configurati in
TeamsAndTotals
. Verifica questo comportamento con il registro.
Passaggio successivo
Nel passaggio successivo di questo tutorial, imparerai come bilanciare i team in modo asimmetrico all'inizio di una partita.