Le modèle de détonation Verse vous montre comment créer un jeu dans lequel deux équipes s'affrontent pour amorcer et désamorcer des bombes.
Dans ce tutoriel, nous utilisons l'appareil Verse et des appareils simples tels que l'Indicateur de carte pour créer des mécaniques de jeu, notamment faire apparaître des balises en fonction de conditions.
Ce modèle aborde divers concepts Verse, à savoir :
-
les énumérations
-
la concurrence
-
l'expression "race"
-
l'attente
-
Vue d'ensemble
Voici une vue d'ensemble des étapes à suivre pour recréer cette île de la meilleure manière :
-
Créez un nouveau projet et modifiez les paramètres de l'île pour configurer le jeu.
-
Configurez les appareils.
-
Ajoutez le script Verse.
Créer un nouveau projet et configurer le jeu
-
Ouvrez l'UEFN et créez un nouveau projet vide.
-
Sélectionnez l'appareil IslandSettings (paramètres de l'île) dans l'organiseur et déroulez les différentes sections Options utilisateur dans le panneau Détails.
-
Modifiez les options utilisateur comme indiqué ci-dessous.
Option | Valeur | Explication |
---|---|---|
Équipes | Index d'équipe 2 | Les joueurs sont répartis en deux équipes. |
Manches totales | 5 | Cinq manches auront lieu avant la fin du jeu. |
Observer les autres équipes en spectateur | Interdire | Les joueurs ne peuvent pas observer les autres équipes. |
Matériaux de construction infinis | Désactivé | Les joueurs ne disposent pas de matériaux de construction illimités pendant le jeu. |
Construire détruit le décor | Désactivé | Le placement de structures construites par le joueur ne peut pas détruire les parties du décor qu'elles chevauchent. |
Dégâts sur le décor | Non | Les joueurs ne peuvent pas infliger de dégâts au décor. |
Dégâts de la pioche | Aucun | Les pioches ne causent aucun dégât au décor ou aux bâtiments. |
Réapparitions manuelles | Désactivé | Les joueurs ne peuvent pas utiliser l'option de menu Réapparaître pendant le jeu. |
Utiliser le score de l'équipe | Activé | Chaque équipe accumule les points obtenus par tous leurs joueurs. |
Configuration des appareils
Ce tutoriel utilise les appareils suivants :
-
1 x appareil Verse
Appareil explosif

Utilisez l'appareil explosif pour provoquer l'explosion à la fin du temps paramétré sur les appareils Objectif chronométré. Sur les côtés opposés de la carte, copiez et placez un groupe de quatre explosifs.
Pour configurer cet appareil, réglez les options utilisateur comme suit :
Option | Valeur | Explication |
---|---|---|
Peut subir des dégâts | Désactivé | Cet appareil ne peut subir aucun dégât de la part des joueurs. |
Objectif chronométré

L'appareil Objectif chronométré sert de détonateur pour chaque site. Placez un objectif chronométré sur les deux groupes d'explosifs.
Pour configurer cet appareil, réglez les options utilisateur comme suit :
Option | Valeur | Explication |
---|---|---|
Temps | 30 | Détermine la durée du chronomètre de l'objectif. |
Score de lancement | 2 | Détermine le nombre de points attribués après avoir démarré un chronomètre inactif. |
Score d'arrêt | 5 | Détermine le nombre de points attribués après avoir réussi à arrêter un chronomètre actif. |
Score d'achèvement | 3 | Détermine le nombre de points attribués lorsque le chronomètre est terminé. |
Style de texte de l'étiquette du chronomètre | Orange gras | Détermine le style visuel du compte à rebours et du texte personnalisé. |
Équipe pouvant lancer | Index d'équipe 1 | Détermine l'équipe pouvant démarrer un chronomètre inactif. |
Texte d'interaction de départ | Amorcer la bombe | Détermine le texte personnalisé à afficher pour inciter les joueurs à démarrer un chronomètre inactif. |
Durée de lancement | 5 | Détermine la durée de l'interaction nécessaire pour démarrer un chronomètre inactif. |
Équipe pouvant arrêter | Index d'équipe 2 | Détermine l'équipe qui peut arrêter un chronomètre actif. |
Texte d'interaction d'arrêt | Désamorcer la bombe | Détermine le texte à afficher pour les joueurs pouvant arrêter un chronomètre actif. |
Durée d'arrêt | 5,0 | Détermine la durée d'interaction nécessaire pour arrêter un chronomètre actif. |
Distance du son du chronomètre | Carte entière | Indique si le son du chronomètre est localisé ou s'il peut être entendu sur toute la carte. |
Appareil d'indicateur de carte

Utilisez l'appareil d'indicateur de carte pour créer des marqueurs personnalisés sur la minicarte. Placez deux indicateurs de carte au-dessus de chaque site d'explosifs, un pour chaque équipe.
Pour configurer cet appareil, réglez les options utilisateur comme suit :
Option | Valeur | Explication |
---|---|---|
Couleur de l'icône | Choisir une couleur | Définit la couleur de l'icône affichée. Choisissez une couleur différente pour chaque équipe. |
Texte | Explosif A - Explosif B | Nommez une paire d'indicateurs de carte Bombe A et l'autre Bombe B. |
Appareil de fin de partie

Utilisez l'appareil de fin de partie pour mettre fin à la partie une fois la bombe désamorcée ou après 30 secondes lorsqu'elle explose via le script Verse.
Pour configurer cet appareil, réglez les options utilisateur comme suit :
Option | Valeur | Explication |
---|---|---|
Équipe vainqueur | Équipe pouvant déclencher | L'équipe qui déclenche l'appareil remporte la partie. |
À quoi mettre fin | Manche | Cet appareil met fin à la manche. |
Point d'apparition de joueur

Regroupez les points d'apparition de joueur de l'équipe sur les côtés opposés de votre carte. Chaque équipe dispose de ses propres générateurs, l'équipe 1 étant celle qui active la bombe et l'équipe 2 celle qui la désactive. Les équipes changent de rôle à chaque manche.
Pour configurer cet appareil, réglez les options utilisateur comme suit :
Option | Valeur | Explication |
---|---|---|
Équipe des joueurs | Index d'équipe 1 - 2 | Un ensemble de points d'apparition est défini sur l'index d'équipe 1, l'autre sur l'index d'équipe 2. |
Ajouter les scripts Verse
Ajoutez les scripts Verse suivants en commençant par référencer les appareils avec la fonction @editable.
Vous pouvez copier le code dans l'ordre où il est écrit. Des commentaires sont ajoutés dans le script pour plus de clarté.
# enum qui détermine l'état des bombes
bomb_state<public>:= enum {AllUnarmed, BombAArmed, BombBArmed}
Le code ci-dessus définit une énumération pour suivre l'état des bombes.
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
Vous pouvez utiliser @editable pour référencer les appareils.
# S'exécute à l'activation de l'appareil dans une partie en cours.
OnBegin<override>()<suspends>:void=
# L'expression race est utilisée pour exécuter simultanément un bloc de deux expressions asynchrones ou plus. Lorsque l'expression la plus rapide se termine, elle "gagne la course".
# https://dev.epicgames.com/documentation/fr-fr/uefn/race-in-verse
race:
block:
# Attendre que la bombe A soit amorcée
ArmingPlayer:= TimedObjectiveA.StartedEvent.Await()
Print("Bomb A Armed",?Duration:=5.0)
# Permet de savoir quelles balises activer et quels barils doivent exploser
set BombState = bomb_state.BombAArmed
# Désactiver l'autre objectif chronométré
TimedObjectiveB.Disable(ArmingPlayer)
# Désactiver les indicateurs de carte pour la bombe B
for (MapIndicator : BombBMapIndicators):
MapIndicator.Disable()
La première section du code montre que l'expression race utilise la concurrence pour déterminer si la bombe A ou la bombe B a été amorcée en premier.
block:
# Attendre que la bombe B soit amorcée
ArmingPlayer:= TimedObjectiveB.StartedEvent.Await()
Print("Bomb B Armed",?Duration:=5.0)
# Permet de savoir quelles balises activer et quels barils doivent exploser
set BombState = bomb_state.BombBArmed
# Désactiver l'autre objectif chronométré
TimedObjectiveA.Disable(ArmingPlayer)
# Désactiver les indicateurs de carte pour la bombe A
for (MapIndicator : BombAMapIndicators):
MapIndicator.Disable()
# Activer les balises appropriées maintenant qu'une bombe est amorcée
UpdateBeacons()
# Attendre la fin ou l'arrêt de l'objectif chronométré
race:
block:
BombDetonated(TimedObjectiveA.CompletedEvent.Await())
block:
BombDetonated(TimedObjectiveB.CompletedEvent.Await())
block:
DisarmingPlayer:= TimedObjectiveA.StoppedEvent.Await()
Print("Bomb Disarmed", ?Duration:=5.0)
EndGameDevice.Activate(DisarmingPlayer)
block:
DisarmingPlayer:= TimedObjectiveB.StoppedEvent.Await()
Print("Bomb Disarmed", ?Duration:=5.0)
EndGameDevice.Activate(DisarmingPlayer)
Le code ci-dessus montre une concurrence là où le script attend la fin ou l'arrêt de l'objectif chronométré.
# Désactiver les balises non amorcées et activer la balise sur la bombe amorcée
UpdateBeacons():void=
BombABeaconArm.Disable()
BombBBeaconArm.Disable()
if:
BombState = bomb_state.BombAArmed
then:
BombABeaconDisarm.Enable()
else:
BombBBeaconDisarm.Enable()
Le code ci-dessus met à jour l'état des balises en fonction de la bombe amorcée.
BombDetonated(Agent:agent):void=
Print("Bomb Detonated", ?Duration:=5.0)
# Indiquer quels barils doivent exploser
if:
BombState = bomb_state.BombAArmed
then:
ExplodeBarrels(ExplosiveBarrelsA, Agent)
else:
ExplodeBarrels(ExplosiveBarrelsB, Agent)
EndGameDevice.Activate(Agent)
La méthode ci-dessus est appelée lorsque l'objectif chronométré est terminé. Elle détermine quels barils doivent exploser avant de mettre fin à la partie.
ExplodeBarrels(Barrels:[]explosive_device, Agent:agent):void=
for (Barrel : Barrels):
Barrel.Explode(Agent)
La boucle for ci-dessus permet de faire exploser chaque baril là où se trouve la bombe.
Appareil Verse

Compilez votre script Verse, puis recherchez votre appareil dans le tiroir à contenu. Faites glisser l'appareil Verse dans une zone non visible de votre carte pour en personnaliser les paramètres.
Utilisez cet appareil pour lier directement les événements aux appareils nécessaires afin que le script Verse puisse les référencer.

Dans le panneau Détails de l'appareil, configurez les paramètres pour qu'ils correspondent à chaque appareil référencé, comme sur l'illustration ci-dessus.
Pour configurer cet appareil, réglez les options utilisateur comme suit :
Option | Valeur | Explication |
---|---|---|
Objectif chronométré A | Objectif chronométré du site A | Relie l'objectif chronométré au site d'explosifs. |
Objectif chronométré B | Objectif chronométré du site B | Relie l'objectif chronométré au site d'explosifs. |
Barils explosifs A | 0 - BarrelBombSiteA_1 | Relie l'explosif. |
Barils explosifs A | 1 - BarrelBombSiteA_2 | Relie l'explosif. |
Barils explosifs A | 2 - BarrelBombSiteA_3 | Relie l'explosif. |
Barils explosifs A | 3 - BarrelBombSiteA_4 | Relie l'explosif. |
Barils explosifs B | 0 - BarrelBombSiteB_1 | Relie l'explosif. |
Barils explosifs B | 1 - BarrelBombSiteB_2 | Relie l'explosif. |
Barils explosifs B | 2 - BarrelBombSiteB_3 | Relie l'explosif. |
Barils explosifs B | 3 - BarrelBombSiteB_4 | Relie l'explosif. |
Appareil de fin de partie | Appareil de fin de partie 2 | Relie l'appareil de fin de partie. |
Indicateurs de carte de la bombe A | 0 - Map_Team1_BombsiteA | Relie l'indicateur de carte au site d'explosifs. |
Indicateurs de carte de la bombe A | 1 - Map_Team2_BombsiteA | Relie l'indicateur de carte au site d'explosifs. |
Indicateurs de carte de la bombe B | 0 - Map_Team1_BombsiteB | Relie l'indicateur de carte au site d'explosifs. |
Indicateurs de carte de la bombe B | 1 - Map_Team2_BombsiteB | Relie l'indicateur de carte au site d'explosifs. |
Désamorçage de la balise de la bombe A | BeaconDisarmBombSiteA | Désamorce l'explosif pour le site A. |
Désamorçage de la balise de la bombe | BeaconDisarmBombSiteA | Désamorce l'explosif pour le site A. |
Amorçage de la balise de la bombe B | BeaconArmBombSiteB | Amorce l'explosif pour le site B. |
Désamorçage de la balise de la bombe B | BeaconDisarmBombSiteB | Désamorce l'explosif pour le site B. |
Sélectionnez Lancer la session pour tester le niveau que vous avez créé.