콘텐츠로 이동

스마트 태그

사용자 입력 필드 외에도 메타 태그는 SignalRGB API에서 데이터를 가져올 수도 있습니다. 이를 미터라고 하며, 스니펫 섹션에서 다루는 Meter 클래스와는 구별됩니다. 사용 가능한 시각적 미터 유형은 네 가지입니다: linear, area, ocr_textmatch, ocr_numeric.

또한 API는 일곱 가지 콘텐츠 속성을 제공합니다: 오디오 레벨, 오디오 너비, 오디오 밀도, 오디오 주파수, 영역 색조, 영역 채도, 영역 밝기.

모든 미터는 네 가지 핵심 속성을 공유합니다:

속성설명
Meter변수 이름을 정의합니다. engine.vision.meter를 통해 접근할 수 있으며, meter는 선택한 이름입니다.
Type미터 유형을 지정합니다: linear, area, ocr_textmatch, 또는 ocr_numeric
X정규화된 형식의 X 좌표. 미터는 왼쪽 상단 모서리에서 그려집니다.
Y정규화된 형식의 Y 좌표.

X와 Y 좌표, 높이와 너비는 정규화된 값으로 입력해야 합니다. 예를 들어, 1920x1080 해상도로 게임을 하고 있고 화면 왼쪽의 절반 정도 아래에 작은 미터를 배치하려면 미터의 원점(왼쪽 상단 모서리)이 화면 왼쪽에서 50픽셀, 위에서 500픽셀 아래에 있다고 결정합니다.

이렇게 하면:

x = 50, y = 500이 됩니다.

이를 정규화된 좌표로 변환하려면 x를 화면 너비(1920)로, y를 화면 높이(1080)로 나누면 됩니다(반올림 후 올바른 형식으로):

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

이론적으로 이 변환을 통해 미터가 16:9 화면 비율을 가진 모든 해상도에서 작동해야 하지만, 많은 게임에서 해상도에 따라 UI가 약간 변경됩니다. 다양한 해상도에 맞게 미터를 형식화하는 방법은 이 페이지 하단의 문제 해결 섹션에서 다룹니다.

선형 미터는 수평선을 따라 지정된 HSL 범위와 일치하는 픽셀의 백분율을 0.0에서 1.0 사이의 값으로 반환합니다. 예를 들어, 초록색 체력 바의 전체 너비를 커버하는 선형 미터는 체력이 절반일 때 0.5 값을 반환합니다.

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

선형 미터에는 네 가지 추가 속성이 필요합니다:

속성설명
Width정규화된 형식으로 표현된 너비 값
HHSL 색조 구성 요소, 0~360 범위
SHSL 채도 구성 요소, 0%~100%
LHSL 밝기 구성 요소, 0%~100%

영역 미터는 직사각형 영역 내에서 지정된 HSL 범위에 속하는 픽셀의 백분율을 0.0에서 1.0 사이의 값으로 반환합니다. 이 유형의 미터는 텍스트 박스나 미니맵 영역 같은 더 큰 UI 요소를 감지하는 데 사용할 수 있습니다.

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

영역 미터에는 다섯 가지 추가 속성이 필요합니다:

속성설명
Width정규화된 형식으로 표현된 너비 값
Height정규화된 형식으로 표현된 높이 값
HHSL 색조 구성 요소, 0~360 범위
SHSL 채도 구성 요소, 0%~100%
LHSL 밝기 구성 요소, 0%~100%

이 미터는 광학 문자 인식(OCR)을 사용하여 화면의 정의된 직사각형 영역 내에서 특정 문자열을 찾습니다. 문자열이 발견되면 1을, 발견되지 않으면 0을, 불확실한 경우 -1을 반환합니다.

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

OCR 텍스트 일치 미터에는 네 가지 추가 속성이 필요합니다:

속성설명
Width정규화된 형식의 너비.
Height정규화된 형식의 높이.
String찾을 문자열. 대소문자를 구분합니다.
Confidence미터가 일치에 얼마나 확신해야 하는지를 지정하는 0-100의 값. 지정하지 않으면 기본값은 70입니다.

이 미터는 광학 문자 인식(OCR)을 사용하여 화면의 직사각형 영역 내에서 숫자 값을 감지합니다. 성공하면 정수로 숫자를 반환하고, 실패하면 -1을 반환합니다.

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

OCR 숫자 미터에는 세 가지 추가 속성이 필요합니다:

속성설명
Width정규화된 형식의 너비.
Height정규화된 형식의 높이.
Confidence미터가 일치에 얼마나 확신해야 하는지를 지정하는 0-100의 값. 지정하지 않으면 기본값은 70입니다.

콘텐츠 속성은 API에서 직접 가져오는 고밀도 미터입니다.

  • engine.audio.level은 현재 오디오 레벨을 데시벨 단위로 반환합니다.
  • engine.audio.width는 수신 오디오의 인지된 스테레오 너비를 0~1 비율로 반환합니다.
  • engine.audio.density는 수신 오디오의 주파수 밀도를 0~1 비율로 반환합니다. 화이트 노이즈는 1.0에 가까운 값을, 순음은 0에 가까운 값을 반환합니다.
  • engine.audio.freq는 200개의 요소로 구성된 배열을 반환하며, 각 요소는 특정 주파수 대역의 현재 레벨을 나타냅니다.
  • engine.zone.hue는 560개의 요소로 구성된 배열을 반환하며, 각 요소는 화면의 한 지점의 색조 값을 나타냅니다. 이 지점들은 28 x 20 그리드에서 샘플링됩니다.
  • engine.zone.saturation은 560개의 요소로 구성된 배열을 반환하며, 각 요소는 동일한 28 x 20 그리드에서 샘플링된 화면 지점의 채도를 나타냅니다.
  • engine.zone.lightness는 560개의 요소로 구성된 배열을 반환하며, 각 요소는 동일한 28 x 20 그리드에서 샘플링된 화면 지점의 밝기 값을 나타냅니다.

코드를 작성할 때 문제가 발생할 수 있습니다. 아래는 미터와 관련된 일반적인 문제와 해결 방법입니다:

  • “앱에 미터 또는 사용자 컨트롤이 표시되지 않음”

    • 애플리케이션을 완전히 닫고 재시작해 보십시오. 문제가 지속되면 미터 형식이 잘못되었을 수 있습니다. 철자와 구두점을 다시 확인하십시오.
  • “앱 또는 LightScript가 계속 충돌함”

    • 잘못된 형식의 미터로 인해 발생하는 경우가 많습니다. 속성이 누락되거나 추가된 경우 앱이나 코드가 충돌할 수 있습니다. 미터가 올바르다면 무한 루프나 선언되지 않은 변수 등의 문제를 찾아보십시오.
  • “미터가 표시되지만 화면의 올바른 영역을 추적하지 않음”

    • 정규화된 좌표가 잘못되었을 수 있습니다. x / 화면 너비, y / 화면 높이임을 기억하십시오. 올바른 화면 영역을 파악하는 데 도움이 되도록 미터의 너비나 높이를 늘려 보십시오. 직사각형 미터는 검사기에서 세로로 찌그러져 보인다는 점을 주의하십시오.
  • “미터가 한 해상도에서는 작동하지만 다른 해상도에서는 작동하지 않음”

    • 다행히 동적 UI에 여러 미터가 필요하지 않습니다. 아래는 여러 해상도에 맞게 조정된 선형 미터의 예시입니다.
<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>

보시다시피, 3840x21602560x1080 해상도에 맞게 미터를 구체적으로 조정했습니다. 다른 모든 해상도는 원래 미터를 기본값으로 사용합니다.

  • “미터가 올바르게 배치되었지만 트리거되지 않음”

    • LightScript 개발자에게 이것은 흔한 문제입니다. 영역 및 선형 미터는 그라디언트나 투명 UI에서 까다로울 수 있습니다. HSL 슬라이더를 열고 색상이 일치할 때까지 화면을 관찰하십시오. 미터가 일관되게 트리거될 때까지 색조, 채도, 밝기의 범위를 넓게 시작한 다음 좁혀가십시오. OCR 미터의 경우 대상 단어나 숫자 전체가 미터에 포함되도록 하고 추가 콘텐츠는 최소화하십시오. OCR 미터가 작동하는 텍스트 크기나 화면 해상도에는 한계가 있습니다. 1920x1080 화면을 가득 채운 큰 “VICTORY” 텍스트에 OCR 미터를 배치하는 것은 문제없습니다. 하지만 1280x720의 채팅 박스에 시도하면 제한된 결과를 볼 것입니다. OCR의 경우 텍스트와 배경 사이의 높은 대비가 이상적입니다. 흰색 배경의 흰색 텍스트는 인식되지 않습니다.
  • “미터가 너무 빠르게 또는 항상 트리거됨”

    • 축하합니다, 미터가 작동하지만 초당 세 번 트리거되는 것은 원하는 결과가 아닐 것입니다. 투명 UI, 다채로운 환경, 폭발, 심지어 컷씬도 미터의 거짓 또는 빠른 활성화를 유발할 수 있습니다. 이것은 항상 도전 과제입니다. 한 가지 간단한 해결 방법은 다음 섹션인 스니펫에 설명된 Meter 클래스를 사용하는 것입니다.