Smart Tags
Udover brugerinputfelter kan meta-tags også hente data fra SignalRGB API’en. Disse kaldes målere og skal skelnes fra Meter-klassen der diskuteres i afsnittet “Snippets”. Der er fire typer visuelle målere tilgængelige: linear, area, ocr_textmatch og ocr_numeric.
Derudover tilbyder API’en syv indholds-egenskaber: Audioniveau, Audiobredde, Audiodensitet, Audiofrekvens, Zonefarvetone, Zonemætning og Zonelyshed.
Målere
Sektion kaldt “Målere”Alle målere har fire fælles kerneatributter:
| Attribut | Beskrivelse |
|---|---|
| Meter | Definerer variabelnavnet, tilgængeligt via engine.vision.meter, hvor meter er det valgte navn. |
| Type | Angiver målertypen: linear, area, ocr_textmatch eller ocr_numeric |
| X | X-koordinat i normaliseret form. Måleren tegnes fra dens øverste venstre hjørne. |
| Y | Y-koordinat i normaliseret form. |
Normaliserede koordinater
Sektion kaldt “Normaliserede koordinater”X- og Y-koordinater samt højde og bredde skal indtastes som normaliserede værdier. Hvis et spil f.eks. spilles i 1920x1080 opløsning og en lille måler skal placeres ca. i midten til venstre på skærmen, bestemmes udgangspunktet (øverste venstre hjørne) for måleren til 50 pixels fra venstre kant og 500 pixels fra øverste venstre hjørne af skærmen.
Det giver:
x = 50, y = 500.
For at konvertere disse til normaliserede koordinater divideres x med skærmbredden (1920) og y med skærmhøjden (1080), hvilket (afrundet og i korrekt format) giver:
x = “.026”, y = “.463”
Selvom denne konvertering teoretisk set burde sikre at en måler fungerer for enhver opløsning med et 16:9-billedformat, oplever mange spil små UI-ændringer mellem opløsninger. Hvordan målere formateres for forskellige opløsninger behandles i fejlfindingsafsnittet sidst på denne side.
Lineær måler
Sektion kaldt “Lineær måler”En lineær måler returnerer procentdelen af pixels langs en vandret linje der matcher et bestemt HSL-område, med en værdi fra 0,0 til 1,0. En lineær måler der dækker hele bredden af en grøn livsstang returnerer f.eks. værdien 0,5 ved halvt liv.
<meta meter="myLinear" type="linear" x=".1729" y=".9740" width=".0390" h="0-360" s="0-10" l="90-100">Lineære målere kræver fire yderligere attributter:
| Attribut | Beskrivelse |
|---|---|
| Width | Breddeværdien i normaliseret form |
| H | HSL-farvetonekomponenten, fra 0 til 360 |
| S | HSL-mætningskomponenten, fra 0% til 100% |
| L | HSL-lyshedskomponenten, fra 0% til 100% |
Områdemåler
Sektion kaldt “Områdemåler”En områdemåler returnerer procentdelen af pixels inden for et rektangulært område der falder inden for et bestemt HSL-område, med værdier fra 0,0 til 1,0. Denne målertype kan bruges til at registrere større UI-elementer som tekstfelter eller minimap-områder.
<meta meter="myArea" type="area" x=".1729" y=".9740" width=".0390" height=".02" h="0-360" s="0-10" l="90-100">Områdemålere kræver fem yderligere attributter:
| Attribut | Beskrivelse |
|---|---|
| Width | Breddeværdien i normaliseret form |
| Height | Højdeværdien i normaliseret form |
| H | HSL-farvetonekomponenten, fra 0 til 360 |
| S | HSL-mætningskomponenten, fra 0% til 100% |
| L | HSL-lyshedskomponenten, fra 0% til 100% |
OCR-tekstgenkendelsesmåler
Sektion kaldt “OCR-tekstgenkendelsesmåler”Denne måler bruger optisk tegngenkendelse (OCR) til at søge efter en bestemt tegnstreng inden for et defineret rektangulært område på skærmen. Hvis strengen findes, returnerer den 1; hvis den ikke findes, returnerer den 0; og ved usikkerhed returnerer den -1.
<meta meter="myTextOCR" type="ocr_textmatch" x=".1729" y=".9740" width=".0390" height=".02" string="my string" confidence="70">OCR-tekstgenkendelsesmålere kræver fire yderligere attributter:
| Attribut | Beskrivelse |
|---|---|
| Width | Bredden i normaliseret form. |
| Height | Højden i normaliseret form. |
| String | Den søgte tegnstreng. Skelner mellem store og små bogstaver. |
| Confidence | En værdi fra 0–100 der angiver hvor sikker måleren skal være ved et match. Standardværdi er 70, hvis ikke angivet. |
OCR-talmåler
Sektion kaldt “OCR-talmåler”Denne måler bruger optisk tegngenkendelse (OCR) til at genkende numeriske værdier inden for et rektangulært område på skærmen. Ved succes returnerer den tallet som et heltal; ved fejl returnerer den -1.
<meta meter="myNumOCR" type="ocr_numeric" x=".1729" y=".9740" width=".0390" height=".02" confidence="70">OCR-talmålere kræver tre yderligere attributter:
| Attribut | Beskrivelse |
|---|---|
| Width | Bredden i normaliseret form. |
| Height | Højden i normaliseret form. |
| Confidence | En værdi fra 0–100 der angiver hvor sikker måleren skal være ved et match. Standardværdi er 70, hvis ikke angivet. |
Indholds-egenskaber
Sektion kaldt “Indholds-egenskaber”Indholds-egenskaber er målere med højere datatæthed der kommer direkte fra API’en.
Audio-egenskaber
Sektion kaldt “Audio-egenskaber”- engine.audio.level returnerer det aktuelle audioniveau i decibel.
- engine.audio.width angiver den opfattede stereobredde af det indgående audio som et forhold fra 0 til 1.
- engine.audio.density returnerer frekvenstætheden af det indgående audio som et forhold fra 0 til 1 — hvid støj giver værdier tæt på 1,0, mens rene toner returnerer værdier tættere på 0.
- engine.audio.freq returnerer et array med 200 elementer, hvor hvert element repræsenterer det aktuelle niveau for et bestemt frekvensbånd.
Skærm-egenskaber
Sektion kaldt “Skærm-egenskaber”- engine.zone.hue returnerer et array med 560 elementer, hvor hvert element repræsenterer farvetoneværdien for et punkt på skærmen. Disse punkter samples fra et 28 x 20-gitter.
- engine.zone.saturation returnerer et array med 560 elementer, hvor hvert element repræsenterer mætningen ved et skærmpunkt, samplet fra det samme 28 x 20-gitter.
- engine.zone.lightness returnerer et array med 560 elementer, hvor hvert element angiver lyshedsværdien ved et skærmpunkt, ligeledes samplet fra 28 x 20-gitteret.
Fejlfinding
Sektion kaldt “Fejlfinding”Under programmering kan problemer opstå. Nedenfor er angivet nogle almindelige problemer med målere og deres løsninger:
-
“Min måler eller min brugerkontrol vises ikke i appen”
- Prøv at lukke applikationen helt og genstarte den. Hvis problemet fortsætter, er måleren muligvis forkert formateret. Tjek stavning og tegnsætning.
-
“Appen eller LightScript’et crasher konstant”
- Dette forårsages ofte af en fejlagtig måler. Manglende eller overflødige attributter kan få appen eller koden til at crashe. Hvis målerne er korrekte, søg efter problemer som uendelige løkker eller ikke-deklarerede variabler.
-
“Min måler vises, men sporer ikke det korrekte skærmområde”
- De normaliserede koordinater kan være forkerte. Husk: x / skærmbredde, y / skærmhøjde. Hvis matematikken virker vanskelig, kan målerens bredde eller højde øges for at identificere det korrekte skærmområde. Bemærk at rektangulære målere ser lodretscomprimerede ud i Inspector.
-
“Min måler fungerer ved én opløsning, men ikke ved andre”
- Heldigvis kræves der ikke flere målere til dynamisk UI. Nedenfor er et eksempel på en lineær måler der er tilpasset til flere opløsninger.
<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>Som du kan se, er måleren specifikt tilpasset til 3840x2160 og 2560x1080 opløsninger. Alle andre opløsninger bruger den originale måler som standard.
-
“Min måler er korrekt placeret, men aktiveres ikke”
- Som LightScript-udvikler vil du støde på dette problem hyppigt. Område- og lineære målere kan være upålidelige ved gradienter eller gennemsigtige UI-elementer. Åbn en HSL-regulering (som denne) og observer skærmen, indtil farverne matcher. Begynd med brede intervaller for farvetone, mætning og lyshed, indtil måleren aktiveres konsekvent, og indsnævr derefter intervallet. For OCR-målere skal du sikre at hele ordet eller tallet er inden for måleren med så lidt ekstra indhold som muligt. Tekststørrelsen eller skærmopløsningen hvor OCR-målere fungerer er begrænset. At placere en OCR-måler på en stor “VICTORY”-tekst på en 1920x1080-skærm? Intet problem. Men i et chatvindue ved 1280x720 er resultaterne begrænsede. Desuden er høj kontrast mellem tekst og baggrund ideel til OCR — hvid tekst på hvid baggrund registreres ikke.
-
“Min måler aktiveres for hyppigt eller konstant”
- Tillykke, måleren fungerer, men tre aktiveringer i sekundet er sandsynligvis ikke målet. Gennemsigtige UI-elementer, farverige omgivelser, eksplosioner og endda cutscenes kan forårsage falske eller hurtige måleraktiveringer. Dette vil altid være en udfordring. En enkel løsning er at bruge Meter-klassen som beskrevet i næste afsnit Snippets.