Pour faciliter le débogage de votre jeu, vous pouvez afficher certaines données du jeu à des fins de test tout en masquant ces informations au joueur. L'un des moyens d'y parvenir est de consulter les journaux disponibles, mais vous pouvez également afficher certaines données du jeu de manière plus visuelle grâce à l'*API Dessin de débogage**.
L'API Dessin de débogage permet de dessiner des formes élémentaires et de définir leur emplacement, leur taille, leur couleur et la durée de leur affichage à l'écran. Par exemple, vous pouvez connaître la visibilité d'un PNJ ou la distance à laquelle un son est audible à partir de son point d'origine. Grâce à la forme de débogage de la boîte, vous pouvez dessiner une boîte dont les dimensions et l'emplacement correspondent à n'importe quel volume, même si ce volume est invisible dans votre jeu. Cela peut vous aider à déterminer le placement des volumes avec certains effets.
Vous pouvez utiliser la flèche de débogage, qui va du visage d'un PNJ jusqu'à la limite de sa plage de visibilité, pour définir l'emplacement idéal des gardes.
Activer le Dessin de débogage de Verse
La première étape consiste à vous assurer que vous voyez les formes que vous dessinez.
-
Sélectionnez IslandSettings (paramètres de l'île) dans l'organiseur de l'UEFN.
-
Dans la barre de recherche du panneau Détails, saisissez débogage. Les résultats sont filtrés dans la catégorie Débogage des Options utilisateur.
-
Cliquez sur Débogage, puis sur Dessin de débogage Verse pour activer les fonctionnalités Débogage et Dessin de débogage Verse.
La fonctionnalité Dessin de débogage Verse n'est activée que pendant une session de jeu de l'UEFN. Elle est activée par utilisateur, ce qui signifie que seuls les utilisateurs ayant activé les fonctionnalités Débogage et Dessin de débogage Verse peuvent voir les formes de débogage. Les formes de débogage n'apparaissent pas dans le hublot de l'UEFN ni dans une île publiée, même si cette option est activée dans les paramètres de l'île.
Dessiner votre première forme de débogage
Pour dessiner votre première forme avec l'API Dessin de débogage, procédez comme suit.
-
Ajoutez cette expression d'importation à votre fichier Verse.
using { /UnrealEngine.com/Temporary/Diagnostics }
-
Créez un canal en déclarant une sous-classe qui hérite du type
debug_draw_channel
. Les canaux permettent de regrouper des formes apparentées. Ils sont facultatifs, mais nous vous recommandons de les utiliser. L'API Dessin de débogage contient certaines fonctions que vous pouvez utiliser pour afficher, masquer ou effacer plusieurs formes en même temps, mais l'affichage et le masquage ne fonctionnent qu'au niveau du canal.my_debug_draw := class(debug_draw_channel) {}
-
Déclarez une nouvelle constante de type
debug_draw
. Il s'agit de l'objet que vous utiliserez pour appeler les méthodes permettant de dessiner des formes. Dans cet exemple, nous vous expliquons comment utiliser le paramètre Canal (créé à l'étape précédente), bien qu'il soit facultatif.DebugDraw:debug_draw = debug_draw{Channel := my_debug_draw}
-
Appelez la méthode
DrawSphere
. Dans cet exemple, nous utilisons deux paramètres.
-
Center:= vector3{Z:= 150.0}
: il s'agit d'un paramètre obligatoire de type vector3 qui détermine l'emplacement du centre de la sphère. Dans cet exemple, vous allez utiliser le constructeur du typevector3
pour créer une valeur littérale. Le centre de la sphère sera ainsi positionné à l'emplacement0.0, 0.0, 150.0
. -
?DrawDurationPolicy:= debug_draw_duration_policy.Persistent
: Ce paramètre est facultatif, mais sa valeur par défaut faisant disparaître la sphère au bout de quelques secondes, il convient de lui attribuer la stratégie Persistent. Cela signifie que la sphère restera visible sur l'île jusqu'à ce qu'elle soit masquée ou effacée par un autre code.DebugDraw.DrawSphere(Center := vector3{Z:=150.0}, ?DrawDurationPolicy := debug_draw_duration_policy.Persistent)
Après avoir créé votre code Verse et lancé une session, une sphère doit apparaître à l'emplacement défini par le paramètre Center
.
Formes
Grâce à l'API Dessin de débogage, vous pouvez dessiner plusieurs formes qui apparaissent comme de simples fils de fer dans une session UEFN en cours. Chaque forme est utile dans différents scénarios. Dans les sections suivantes, nous vous décrivons les méthodes utilisées pour dessiner chaque forme, ainsi que les paramètres propres à chaque méthode. Dans une prochaine section, nous vous expliquerons les paramètres communs à toutes les méthodes. Pour chaque exemple de code de cette section, nous supposons que vous avez ajouté le code de la rubrique Dessiner votre première forme de débogage à votre fichier Verse.
Boîte
Utilisez la méthode DrawBox()
pour dessiner un cube.
DebugDraw.DrawBox(vector3{Z:=150.0}, rotation{}, ?DrawDurationPolicy := debug_draw_duration_policy.Persistent)
Paramètre unique | Effet |
---|---|
Center:vector3 | Définit le centre de la boîte |
Rotation:rotation | Définit le mode de rotation de la boîte |
?Extent:vector3 | Définit la longueur, la largeur et la profondeur de la boîte |
Capsule
Utilisez la méthode DrawCapsule()
pour dessiner une capsule. Une capsule est constituée d'un cylindre avec une demi-sphère à chaque extrémité.
DebugDraw.DrawCapsule(vector3{Z:=200.0}, rotation{}, ?DrawDurationPolicy := debug_draw_duration_policy.Persistent)
Paramètre unique | Effet |
---|---|
Center:vector3 | Définit le centre de la capsule |
Rotation:rotation | Définit le mode de rotation de la capsule |
?Height:float | Définit la longueur de la capsule |
?Radius:float | Définit le rayon de la capsule à son point le plus large |
Sphère
Utilisez la méthode DrawSphere()
pour dessiner une sphère.
DebugDraw.DrawSphere(vector3{Z:=150.0}, ?DrawDurationPolicy := debug_draw_duration_policy.Persistent)
Paramètre unique | Effet |
---|---|
Center:vector3 | Définit le centre de la sphère |
?Radius:float | Définit le rayon de la sphère à son point le plus large |
?NumSegments:int | Définit le nombre de lignes qui composent la sphère |
Cône
Utilisez la méthode DrawCone()
pour dessiner un cône.
DebugDraw.DrawCone(vector3{Z:=150.0}, vector3{Z:=-1.0}, ?DrawDurationPolicy := debug_draw_duration_policy.Persistent)
Paramètre unique | Effet |
---|---|
Origin:vector3 | Définit l'emplacement du point du cône |
Direction:vector3 | Définit la direction dans laquelle le cône s'ouvre |
?Height:float | Définit la longueur du cône |
?NumSides:int | Définit le nombre de faces |
?AngleWidthRadians:float | Définit la largeur du cône dans la direction X |
?AngleHeightRadians:float | Définit la largeur du cône dans la direction Y |
Pour que la base de votre cône soit un cercle parfait, AngleWidthRadians
et AngleHeightRadians
doivent être égaux.
Cylindre
Utilisez la méthode DrawCylinder()
pour dessiner un cylindre.
DebugDraw.DrawCylinder(vector3{Z:=100.0}, vector3{Z:=200.0}, ?DrawDurationPolicy := debug_draw_duration_policy.Persistent)
Paramètre unique | Effet |
---|---|
Start:vector3 | Définit l'emplacement d'une extrémité du cylindre |
End:vector3 | Définit l'emplacement de l'autre extrémité du cylindre |
?NumSegments:int | Définit le nombre de lignes reliant une extrémité du cylindre à l'autre |
?Radius:float | Définit le rayon des deux cercles constituant chaque extrémité du cylindre |
Ligne
Utilisez la méthode DrawLine()
pour dessiner une ligne.
DebugDraw.DrawLine(vector3{Z:=100.0}, vector3{Z:=200.0}, ?DrawDurationPolicy := debug_draw_duration_policy.Persistent)
Paramètre unique | Effet |
---|---|
Start:vector3 | Définit l'emplacement d'une extrémité de la ligne |
End:vector3 | Définit l'emplacement de l'autre extrémité de la ligne |
Flèche
Utilisez la méthode DrawArrow()
pour dessiner une flèche.
DebugDraw.DrawArrow(vector3{Z:=100.0}, vector3{Z:=200.0}, ?DrawDurationPolicy := debug_draw_duration_policy.Persistent)
Paramètre unique | Effet |
---|---|
Start:vector3 | Définit l'emplacement du début de la flèche |
End:vector3 | Définit l'emplacement de la tête de la flèche |
?ArrowSize:float | Définit la longueur des deux lignes qui constituent la tête de la flèche |
Point
Utilisez la méthode DrawPoint()
pour dessiner un point.
DebugDraw.DrawPoint(vector3{Z:=200.0}, ?Thickness:= 10.0, ?DrawDurationPolicy := debug_draw_duration_policy.Persistent)
Paramètre unique | Effet |
---|---|
Position:vector3 | Définit l'emplacement du point. |
L'épaisseur par défaut de DrawPoint
est trop faible pour être visible. Définissez Thickness
sur une valeur supérieure, comme indiqué dans l'exemple ci-dessus, pour afficher le point.
Paramètres communs
Ces paramètres sont communs à toutes les méthodes qui dessinent des formes. Par ailleurs, ils sont tous facultatifs et ne doivent pas être inclus en tant qu'arguments lors de l'appel d'une méthode. Si vous décidez de les inclure, assurez-vous d'utiliser le nom des paramètres précédé d'un ?
. Pour en savoir plus sur les arguments nommés et facultatifs, consultez la rubrique Fonctions.
Couleur
Définissez la couleur des formes en utilisant le paramètre Color
. Les valeurs doivent être de type color
. La liste des couleurs valides se trouve dans le module NamedColors. Assurez-vous de placer l'expression d'importation du module Colors
au début de votre fichier Verse. Voici un exemple d'attribution d'une couleur différente à un point.
DebugDraw.DrawPoint(Position := vector3{Z:= 200.0}, ?Thickness := 20.0, ?Color := NamedColors.MediumSeaGreen)
Paramètre DrawDurationPolicy
Le paramètre DrawDurationPolicy
détermine la durée pendant laquelle une forme de débogage reste affichée à l'écran. Trois valeurs sont disponibles.
-
SingleFrame
: la forme reste à l'écran pendant la durée d'une seule image. Cette stratégie peut s'avérer utile lorsque vous souhaitez redessiner fréquemment une forme. -
FiniteDuration
: cette stratégie est utilisée avec le paramètreDuration
pour afficher une forme pendant un certain nombre de secondes. -
Persistent
: avec la stratégiePersistent
, la forme reste à l'écran jusqu'à ce qu'elle soit masquée ou supprimée par un autre code.
Paramètre Duration
Le paramètre Duration
est utilisé avec la stratégie FiniteDuration
pour afficher une forme pendant un certain nombre de secondes. Voici un exemple de code qui dessine une sphère qui s'affiche pendant 30 secondes.
DebugDraw.DrawSphere(vector3{}, ?DrawDurationPolicy := debug_draw_duration_policy.FiniteDuration, ?Duration := 30.0)
Paramètre Thickness
Le paramètre Thickness
définit l'épaisseur des lignes qui composent chaque forme de débogage. Dans le cas de DrawPoint()
, il définit l'épaisseur du point unique.
Canaux
Vous pouvez utiliser les canaux pour regrouper des formes apparentées, puis masquer, afficher ou effacer toutes les formes d'un canal en même temps.
Pour créer un canal, utilisez le paramètre Channel
lors de la déclaration d'une instance de debug_draw
.
DebugDraw:debug_draw = debug_draw{Channel := debug_draw_defaults}
Désormais, toute forme dessinée à l'aide de l'instance DebugDraw
peut être masquée, affichée ou effacée à l'aide d'une seule méthode. Par exemple, si vous dessinez un point, une sphère et une flèche avec l'instance DebugDraw
, vous pouvez les masquer pendant un certain temps, les afficher à nouveau, puis les effacer lorsqu'ils deviennent inutiles.
# Point
DebugDraw.DrawPoint(vector3{Z := 200.0}, ?Thickness:= 50.0, ?DrawDurationPolicy:= debug_draw_duration_policy.Persistent)
# Sphère
DebugDraw.DrawSphere(vector3{Z := 200.0}, ?DrawDurationPolicy:= debug_draw_duration_policy.Persistent)
# Flèche
DebugDraw.DrawArrow(vector3{Z := 200.0}, vector3{Z := 400.0}, ?DrawDurationPolicy:= debug_draw_duration_policy.Persistent)
Sleep(5.0)
DebugDraw.HideChannel()
Sleep(5.0)
DebugDraw.ShowChannel()
Sleep(5.0)
DebugDraw.ClearChannel()
Valeurs des paramètres par défaut
Paramètre | Valeur |
---|---|
?Color:color | NamedColors.Yellow |
?DrawDurationPolicy:debug_draw_duration_policy | debug_draw_duration_policy.FiniteDuration |
?Duration:float | 5.0 |
?Thickness:float | 0.0 |
?Radius:float | 10.0 |
Exemples
Visualiser la portée d'un lecteur audio
L'appareil Lecteur audio dispose d'un paramètre permettant de visualiser son atténuation. Néanmoins, vous ne pouvez voir cette visualisation qu'en mode modification. Procédez comme suit pour apprendre à recréer les visuels d'atténuation dans une session de jeu.
-
Faites glisser un appareil Lecteur audio dans votre niveau. Dans le panneau Détails, assurez-vous que l'option Activer les visuels d'atténuation est activée. Cette option vous permet de vérifier que vous recréez correctement les images avec les formes de débogage.
-
Dans votre fichier Verse, créez une nouvelle instance
debug_draw
appeléeDebugDrawAudio
. Attribuez-lui un canal avec le nomdebug_draw_audio
.DebugDrawAudio:debug_draw = debug_draw{Channel := debug_draw_audio}
-
Ajoutez deux constantes
@editable
de typefloat
. Nommez-lesDebugAttenuationMinDistance
etDebugAttenuationFalloffDistance
. Il s'agit des deux rayons des sphères dessinées pour visualiser l'atténuation du lecteur audio.@editable DebugAttenuationMinDistance:float = 100.0 @editable DebugAttenuationFalloffDistance:float = 100.0
-
Ajoutez une autre constante
@editable
pour représenter le lecteur audio. Nommez-laAudioPlayerDevice
.@editable AudioPlayerDevice:audio_player_device = audio_player_device{}
-
Déclarez une fonction appelée
DrawAudioDeviceRange()
et attribuez-lui deux paramètres de typefloat
:AttenuationMinDistance
etAttenuationFalloffDistance
.DrawAudioDeviceRange(AttenuationMinDistance:float, AttenuationFalloffDistance:float):void =
-
Dans la nouvelle fonction, récupérez l'objet Transformation de l'appareil Lecteur audio.
AudioPlayerDeviceTransform:= AudioPlayerDevice.GetTransform()
-
À l'aide de la fonction
DrawSphere
de l'API Dessin de débogage, dessinez deux sphères pour représenter la distance d'atténuation minimum et la distance d'atténuation. Le rayon (Radius
) du second appel àDrawSphere
doit être défini sur la somme d'AttenuationMinDistance
et deAttenuationFalloffDistance
, car l'atténuation ne commence qu'à l'extérieur du rayon de la distance d'atténuation minimum.DebugDrawAudio.DrawSphere( AudioPlayerDeviceTransform.Translation, ?Radius:= AttenuationMinDistance, ?DrawDurationPolicy:= debug_draw_duration_policy.Persistent) DebugDrawAudio.DrawSphere( AudioPlayerDeviceTransform.Translation, ?Radius:= AttenuationMinDistance + AttenuationFalloffDistance, ?DrawDurationPolicy:= debug_draw_duration_policy.Persistent)
-
Dans la fonction
OnBegin()
de votre fichier Verse, appelez la fonctionDrawAudioDeviceRange()
.OnBegin<override>()<suspends>:void= DrawAudioDeviceRange(DebugAttenuationMinDistance, DebugAttenuationFalloffDistance)
-
Créez votre code Verse. Dans le panneau Détails de votre appareil Verse, assurez-vous de définir les valeurs de DebugAttenuationMinDistance et de DebugAttenuationFalloffDistance. Ces valeurs doivent être équivalentes aux valeurs Distance d'atténuation minimum et Distance d'atténuation de votre lecteur audio, multipliées par 100.
Le lecteur audio utilise les mètres pour la distance d'atténuation minimum et la distance d'atténuation. Dans la mesure où l'API Dessin de débogage utilise des centimètres, vous devez convertir les valeurs.
-
Terminer le script
using { /Fortnite.com/Devices } using { /Fortnite.com/Characters } using { /Fortnite.com/Playspaces } using { /UnrealEngine.com/Temporary/Diagnostics } using { /UnrealEngine.com/Temporary/SpatialMath } debug_audio_device := class(creative_device): @editable AudioPlayerDevice:audio_player_device = audio_player_device{} @editable DebugAttenuationMinDistance:float = 100.0 @editable DebugAttenuationFalloffDistance:float = 100.0 DebugDrawAudio:debug_draw = debug_draw{Channel := debug_draw_audio} OnBegin<override>()<suspends>:void= DrawAudioDeviceRange(DebugAttenuationMinDistance, DebugAttenuationFalloffDistance) DrawAudioDeviceRange(AttenuationMinDistance:float, AttenuationFalloffDistance:float):void = AudioPlayerDeviceTransform:= AudioPlayerDevice.GetTransform() DebugDrawAudio.DrawSphere( AudioPlayerDeviceTransform.Translation, ?Radius:= AttenuationMinDistance, ?DrawDurationPolicy:= debug_draw_duration_policy.Persistent) DebugDrawAudio.DrawSphere( AudioPlayerDeviceTransform.Translation, ?Radius:= AttenuationMinDistance + AttenuationFalloffDistance, ?DrawDurationPolicy:= debug_draw_duration_policy.Persistent)