Aller au contenu

Smart Tags

Au-delà des champs de saisie utilisateur, les balises meta peuvent également récupérer des données de l’API SignalRGB. Ceux-ci sont connus sous le nom de compteurs, distincts de la classe Meter abordée dans la section Snippets. Il existe quatre types de compteurs visuels disponibles : linear, area, ocr_textmatch et ocr_numeric.

De plus, l’API propose sept Propriétés de Contenu : audio level, audio width, audio density, audio frequency, zone hue, zone saturation et zone lightness.

Tous les compteurs partagent quatre attributs principaux :

AttributsDescription
MeterDéfinit le nom de variable, accessible via engine.vision.meter, où meter est le nom que vous avez choisi.
TypeSpécifie le type de compteur : linear, area, ocr_textmatch ou ocr_numeric
XCoordonnée X, sous forme normalisée. Le compteur est dessiné depuis son coin supérieur gauche.
YCoordonnée Y, sous forme normalisée.

Les coordonnées X et Y, ainsi que la hauteur et la largeur, doivent être saisies sous forme de valeurs normalisées. Par exemple, si je joue à un jeu à une résolution 1920x1080 et que je veux placer un petit compteur environ à mi-hauteur sur le côté gauche de l’écran, je détermine que l’origine (coin supérieur gauche) du compteur est à 50 pixels depuis la gauche et 500 pixels depuis le coin supérieur gauche de l’écran.

Cela me donne :

x = 50, y = 500.

Pour convertir ces valeurs en coordonnées normalisées, je divise x par la largeur de l’écran (1920) et y par la hauteur de l’écran (1080), ce qui donne (arrondi et dans le format correct) :

x = “.026”, y = “.463”

Bien que cette conversion devrait théoriquement permettre à un compteur de fonctionner pour n’importe quelle résolution avec un rapport d’aspect 16:9, de nombreux jeux subissent de petits changements d’interface entre les résolutions. La façon de formater les compteurs pour différentes résolutions sera couverte dans la section de dépannage au bas de cette page.

Un compteur linéaire retourne le pourcentage de pixels sur une ligne horizontale qui correspondent à une plage HSL spécifiée, avec une valeur de 0.0 à 1.0. Par exemple, un compteur linéaire couvrant toute la largeur d’une barre de vie verte retournerait une valeur de 0.5 à mi-vie.

<meta meter="myLinear" type="linear" x=".1729" y=".9740" width=".0390" h="0-360" s="0-10" l="90-100">

Les compteurs linéaires nécessitent quatre attributs supplémentaires :

AttributDescription
WidthLa valeur de largeur, exprimée sous forme normalisée
HLa composante de teinte HSL, allant de 0 à 360
SLa composante de saturation HSL, de 0% à 100%
LLa composante de luminosité HSL, de 0% à 100%

Un compteur de zone retourne le pourcentage de pixels dans une région rectangulaire qui se situent dans une plage HSL spécifiée, avec des valeurs de 0.0 à 1.0. Ce type de compteur peut être utilisé pour détecter des éléments d’interface plus larges comme des zones de texte ou des zones de mini-carte.

<meta meter="myArea" type="area" x=".1729" y=".9740" width=".0390" height=".02" h="0-360" s="0-10" l="90-100">

Les compteurs de zone nécessitent cinq attributs supplémentaires :

AttributDescription
WidthLa valeur de largeur, exprimée sous forme normalisée
HeightLa valeur de hauteur, exprimée sous forme normalisée
HLa composante de teinte HSL, allant de 0 à 360
SLa composante de saturation HSL, de 0% à 100%
LLa composante de luminosité HSL, de 0% à 100%

Ce compteur utilise la Reconnaissance Optique de Caractères (OCR) pour rechercher une chaîne spécifique dans une zone rectangulaire définie à l’écran. Si la chaîne est trouvée, il retourne 1 ; si elle n’est pas trouvée, il retourne 0 ; et s’il est incertain, il retourne -1.

<meta meter="myTextOCR" type="ocr_textmatch" x=".1729" y=".9740" width=".0390" height=".02" string="my string" confidence="70">

Les compteurs de correspondance de texte OCR nécessitent quatre attributs supplémentaires :

AttributDescription
WidthLa largeur, sous forme normalisée.
HeightLa hauteur, sous forme normalisée.
StringLa chaîne à rechercher. Sensible à la casse.
ConfidenceUne valeur de 0 à 100 qui spécifie le degré de certitude du compteur pour une correspondance. Par défaut à 70 si non spécifié.

Ce compteur utilise la Reconnaissance Optique de Caractères (OCR) pour détecter des valeurs numériques dans une zone rectangulaire à l’écran. En cas de succès, il retourne le nombre sous forme d’entier ; en cas d’échec, il retourne -1.

<meta meter="myNumOCR" type="ocr_numeric" x=".1729" y=".9740" width=".0390" height=".02" confidence="70">

Les compteurs OCR numériques nécessitent trois attributs supplémentaires :

AttributDescription
WidthLa largeur, sous forme normalisée.
HeightLa hauteur, sous forme normalisée.
ConfidenceUne valeur de 0 à 100 qui spécifie le degré de certitude du compteur pour une correspondance. Par défaut à 70 si non spécifié.

Les propriétés de contenu sont des compteurs haute densité qui proviennent directement de l’API.

  • engine.audio.level retourne le niveau audio actuel en décibels.
  • engine.audio.width donne la largeur stéréo perçue de l’audio entrant, sous forme de ratio de 0 à 1.
  • engine.audio.density fournit la densité de fréquences de l’audio entrant, également sous forme de ratio de 0 à 1 - le bruit blanc produit des valeurs proches de 1.0, tandis que les tons purs retournent des valeurs proches de 0.
  • engine.audio.freq retourne un tableau de 200 éléments, chacun représentant le niveau actuel d’une bande de fréquence spécifique.
  • engine.zone.hue retourne un tableau de 560 éléments, chacun représentant la valeur de teinte d’un point à l’écran. Ces points sont échantillonnés à partir d’une grille 28 x 20.
  • engine.zone.saturation retourne un tableau de 560 éléments, chacun représentant la saturation à un point d’écran, échantillonné depuis la même grille 28 x 20.
  • engine.zone.lightness retourne un tableau de 560 éléments, chacun indiquant la valeur de luminosité à un point d’écran, également échantillonné depuis la grille 28 x 20.

Lors de l’écriture de code, des problèmes peuvent survenir. Voici quelques problèmes courants avec les compteurs et comment les résoudre :

  • “Mon compteur ou contrôle utilisateur n’apparaît pas dans l’application”

    • Essayez de fermer complètement et de redémarrer l’application. Si le problème persiste, le compteur est peut-être mal formaté. Vérifiez l’orthographe et la ponctuation.
  • “L’application ou le LightScript continue de planter”

    • Cela est souvent causé par un compteur mal formé. Des attributs manquants ou supplémentaires peuvent faire planter l’application ou le code. Si vos compteurs sont corrects, recherchez des problèmes comme des boucles infinies ou des variables non déclarées.
  • “Mon compteur apparaît mais ne suit pas la bonne zone de l’écran”

    • Les coordonnées normalisées sont peut-être incorrectes. Rappelez-vous : c’est x / largeur de l’écran, y / hauteur de l’écran. Si les mathématiques ne sont pas votre point fort, essayez d’augmenter la largeur ou la hauteur du compteur pour vous aider à identifier la bonne zone d’écran. Gardez simplement à l’esprit que les compteurs rectangulaires paraîtront aplatis verticalement dans l’inspecteur.
  • “Mon compteur fonctionne sur une résolution, mais pas sur d’autres”

    • Heureusement, vous n’aurez pas besoin de plusieurs compteurs pour une interface dynamique. Voir ci-dessous pour un exemple de compteur linéaire adapté à plusieurs résolutions.
<meta meter="health" tags="vlc,fortnite" x= ".05" y=".9" width=".189" h="70-140" s="40-100" l="40-100" type="linear">
<resolution size="3440x1440" x="0.1666" y="0.8993" width="0.1541"/>
<resolution size="2560x1080" x="0.1666" y="0.8993" width="0.1541"/>
<resolution size="1920x1080" x="0.0557" y="0.9083" width="0.199"/>
</meta>

Comme vous pouvez le voir, j’ai spécifiquement ajusté le compteur pour les résolutions 3840x2160 et 2560x1080. Toutes les autres résolutions utiliseront le compteur original par défaut.

  • “Mon compteur est correctement placé mais ne se déclenche pas”

    • En tant que développeur LightScript, c’est un problème courant. Les compteurs de zone et linéaires peuvent être capricieux sur les dégradés ou les interfaces transparentes. Ouvrez un curseur HSL (comme celui-ci) et observez votre écran jusqu’à ce que les couleurs correspondent. Commencez avec des plages larges en teinte, saturation et luminosité jusqu’à ce que le compteur se déclenche de façon cohérente, puis réduisez. Pour les compteurs OCR, assurez-vous que le mot entier ou le nombre que vous ciblez est inclus dans le compteur, avec aussi peu de contenu supplémentaire que possible. Il y a une limite à la taille du texte ou à la résolution de l’écran sur lesquels les compteurs OCR fonctionneront. Placer un compteur OCR sur un grand texte “VICTORY” remplissant un écran 1920x1080 ? Aucun problème. Mais essayez-le sur une zone de chat à 1280x720 et vous verrez des résultats limités. De plus, un contraste élevé entre le texte et l’arrière-plan est idéal pour l’OCR - du texte blanc sur fond blanc ne sera pas lu.
  • “Mon compteur se déclenche trop rapidement ou tout le temps”

    • Félicitations, votre compteur fonctionne, mais se déclencher trois fois par seconde n’est probablement pas ce que vous voulez. Les interfaces transparentes, les environnements colorés, les explosions, et même les cinématiques peuvent provoquer des activations fausses ou rapides de vos compteurs. Ce sera toujours un défi. Une solution simple consiste à utiliser la classe Meter, comme décrit dans la section suivante, Snippets.