콘텐츠로 이동

Inspect

Inspect는 서버의 상태를 확인하는 창이며, 탭이 네 개 있습니다. F4 키나 View > Inspect로 열고 닫을 수 있습니다.

Inspect 창의 Server 탭. 서버 수치와 그래프, 클래스 집계가 보입니다.

탭 내용 필요한 능력
Server 현재 서버 수치와 인스턴스 집계 Server
History 서버에 쌓인 지난 수치의 그래프 Server
Watches 서버 인스턴스의 속성 감시와 변경 기록 Server + ServerValues
Remotes Remote·Bindable 호출 확인, 값 보내기와 호출 Execute (서버 쪽 대상은 Server + ServerValues도 필요)

Server 능력이 없으면 Inspect 창이 나타나지 않고, 능력이 부족한 탭도 나타나지 않습니다. 능력은 권한과 레벨에서 설명합니다.

창이 닫혀 있거나 탭이 가려져 있는 동안에는 그 탭이 서버에 요청을 보내지 않습니다.

창이 열려 있으면 2초마다 서버 수치를 받아 갱신합니다. 수치는 세 줄로 나뉩니다.

줄 항목
첫째 Instances, Moving parts, Primitives, Contacts, Players
둘째 Heartbeat, Physics step, Send, Receive, Uptime
셋째 Memory total(아래에 scripts, instances, physics), Place version

그 아래 줄에는 JobId와 Streaming: on/off(StreamingEnabled 여부)가 표시됩니다. 수치를 받지 못하면 같은 줄에 Server stats unavailable: …가 빨갛게 표시됩니다.

수치 아래의 그래프 세 개는 최근 값의 흐름을 보여 줍니다. Heartbeat(ms), Memory(MB), Instances를 표시하며, 그래프 위에 가장 최근 값이 나옵니다. 표본이 어느 정도 쌓이기 전에는 선이 그려지지 않습니다.

서버에 어떤 클래스의 인스턴스가 몇 개 있는지 집계합니다. 누수나 갑작스러운 증가를 찾을 때 유용합니다.

  1. Count classes를 누릅니다. 집계하는 동안에는 Counting...으로 표시됩니다.
  2. 아래 목록에 ClassName, Count, Change 열이 표시됩니다. 개수가 많은 클래스부터 상위 200개까지 표시되며, 그 경우 (top 200 shown)이 붙습니다.

집계 결과는 이전 결과와 비교할 수 있습니다.

  • Snapshot: 현재 결과를 비교 기준으로 저장합니다. 오른쪽에 Snapshot: 47,224 instances (game)처럼 표시됩니다.
  • 기준을 저장한 뒤 Count classes를 다시 누르면 Change 열에 클래스별 증감(+N/-N)이 표시됩니다. 늘어난 쪽은 호박색, 줄어든 쪽은 초록색입니다. 기준과 범위가 같을 때만 비교합니다.
  • Clear snapshot: 기준을 지웁니다. 기준이 없으면 No snapshot이 표시됩니다.
  • Scope: game / Scope: selection: 집계 범위를 정합니다. selection이면 서버 Explorer에서 선택한 노드 하나와 그 자손만 집계합니다. 노드를 하나만 선택하지 않았으면 Scope: whole game (select one server node)라고 알려 주고 전체를 집계합니다.
  • Sort: count / Sort: change: 목록을 개수순으로 볼지 증감순으로 볼지 정합니다.

서버는 전체 검색이 너무 잦지 않도록 제한합니다. 연달아 누르면 a full search ran a moment ago; try again in 8 s 같은 안내가 빨갛게 표시됩니다.

History 탭. 구간 탭과 지표 단추, 선 그래프가 보입니다.

서버는 시작할 때부터 1초마다 수치를 표본으로 쌓습니다. 게임 설정에서 History = false로 끌 수 있으며, 이 경우 탭에 the history recorder is off in this game이 표시됩니다. 오래된 기록은 점점 큰 버킷으로 합쳐지며 최대 72시간 전까지 남습니다. 이 탭은 그 기록을 선 그래프로 보여 줍니다.

  • 구간: 15 min, 1 h, 6 h, 24 h, 72 h 탭으로 볼 기간을 선택합니다.
  • 지표: Heartbeat, Physics, Instances, Moving, Memory, Script mem, Send, Receive, Players, Errors/s 중에서 선택하면 그래프가 바뀝니다(두 줄로 배치됩니다).
  • 그래프: 진한 선이 버킷의 평균(Avg), 옅은 선이 최대(Max)입니다. 순간적으로 튄 값은 Max에 남습니다. 값이 없는 버킷에서는 선이 끊깁니다.
  • 그래프 위에 마우스를 올리면 해당 버킷의 값이 아래 줄에 표시됩니다.
  • 위쪽 안내 줄에는 기록이 시작된 시각, 버킷 크기(bucket), 버킷 수가 표시됩니다. 서버가 시작된 지 얼마 되지 않았으면 구간보다 짧게 표시됩니다.
  • 탭이 보이는 동안 10초마다 자동으로 갱신하며, Refresh로 바로 갱신할 수도 있습니다.

Watches 탭. 감시 중인 속성 목록과 변경 기록이 보입니다.

서버 인스턴스의 속성이나 특성을 감시하다가 값이 바뀔 때마다 기록합니다. 서버가 0.25초마다 값을 확인하므로, 값이 순간적으로 바뀌었다 돌아오면 기록되지 않을 수 있습니다.

  1. 서버 Explorer에서 인스턴스를 우클릭해 **Watch property…**를 선택합니다. Watches 탭이 열리고 속성 이름 상자에 커서가 놓입니다. 서버 Explorer에서 노드를 하나 선택하면 Target: 줄이 그 노드로 바뀝니다.
  2. 속성 이름을 입력합니다. 특성은 Attribute:<이름> 형식으로 씁니다. 예: Health, Attribute:Cooldown.
  3. Enter를 누르거나 Watch property를 누릅니다.

창마다 최대 20개까지 감시할 수 있습니다(Watched properties (3/20)). 이미 감시 중인 속성이면 Already watching that.이라고 알려 줍니다. 이름이나 권한에 문제가 있으면 서버가 보낸 이유가 상태 줄에 빨갛게 표시됩니다. 목록이 비어 있으면 No watches. Server Explorer: right-click > Watch property…라는 안내가 표시됩니다.

  • 위쪽 목록: Instance, Property, Current value 열이 있습니다. 줄 오른쪽의 Remove를 누르면 감시를 멈추고 줄을 지웁니다. 대상 인스턴스가 사라지면 그 줄에 종료 표시가 남습니다.
  • Changes: 값이 바뀐 기록입니다. Time (UTC), Instance, Property, Value 열이 있고 새 기록은 맨 아래에 추가됩니다. 감시를 시작할 때의 값도 첫 기록으로 남습니다. 상자에 입력해 인스턴스, 속성, 값으로 필터링할 수 있고, Clear를 누르면 화면의 기록을 비웁니다.
  • 기록 줄을 누르면 아래 칸에 [시각 UTC] 경로 . 속성 = 값 형식으로 전체 내용이 표시됩니다.

Remotes 탭. 도착한 호출 목록과 보내기 패널이 보입니다.

RemoteEvent, RemoteFunction, BindableEvent, BindableFunction(과 UnreliableRemoteEvent)을 서버와 클라이언트 양쪽에서 디버깅할 수 있습니다.

Explorer에서 Remote나 Bindable을 우클릭해 Debug remote를 선택합니다. 클라이언트 Explorer에서 선택하면 클라이언트 쪽, 서버 Explorer에서 선택하면 서버 쪽으로 열립니다. Execute가 없으면 항목에 needs Execute가 표시되고 선택할 수 없습니다. 대상이 없을 때는 Right-click a remote or bindable in the Explorer (client or server) > Debug remote.라는 안내가 표시됩니다. Devplorer 자체의 Remote는 대상으로 쓸 수 없습니다.

Start watching을 누르면 그때부터 도착하는 호출을 목록에 기록합니다. 누르기 전의 호출은 기록되지 않습니다. Stop watching으로 멈출 수 있습니다. 목록의 열은 Time (UTC), Player, Arguments입니다.

대상 확인할 수 있는 호출
서버의 RemoteEvent 클라이언트가 서버로 보낸 호출(OnServerEvent)
서버의 BindableEvent 서버 안에서 Fire된 호출 (Player 열은 (server))
클라이언트의 RemoteEvent 서버가 이 클라이언트로 보낸 호출(OnClientEvent)
클라이언트의 BindableEvent 이 클라이언트 안에서 Fire된 호출
RemoteFunction, BindableFunction 콜백이 하나뿐이라 끼어들 수 없어 확인할 수 없습니다(보내기만 가능)

필터 상자에 입력해 플레이어나 인자로 필터링할 수 있고, Clear를 누르면 목록이 비워집니다. 1초에 너무 많은 호출이 오면 일부는 개수만 세고 표시 줄로 알려 줍니다.

아래 패널에 인자를 입력하고 단추를 누릅니다.

  • 인자: 쉼표로 구분해 입력합니다. 예: 1, "text", true, Vector3.new(1, 2, 3), {key = "v", 5}. 숫자, 문자열, 불리언, 테이블과 Vector3.new, Color3.fromRGB, CFrame.new, UDim2.new 같은 허용된 생성자만 쓸 수 있으며, 코드는 실행되지 않습니다. 비워 두면 인자 없이 보냅니다.
  • Target (UserId): 서버 쪽 RemoteEvent/RemoteFunction에서만 씁니다. all이면 모든 클라이언트, UserId를 입력하면 해당 플레이어 한 명에게 보냅니다. Me를 누르면 내 UserId가 입력됩니다. 옆에 해당 플레이어 이름이 표시됩니다.
  • 실행 단추의 글자는 대상에 따라 다릅니다.
대상 단추
클라이언트의 RemoteEvent FireServer
클라이언트의 RemoteFunction InvokeServer
서버의 RemoteEvent Fire to client(s)
서버의 RemoteFunction InvokeClient (UserId 한 명이 꼭 필요합니다)
BindableEvent Fire event
BindableFunction Invoke function
  • 호출(Invoke)은 응답을 최대 5초까지 기다리며, 늦게 도착한 응답은 버립니다. 결과는 단추 아래에 표시됩니다.
  • 서버의 RemoteEvent에 Target을 all로 두고 실행하면 Fire to ALL clients? 확인 창이 한 번 나타납니다. 모든 플레이어의 실제 핸들러가 실행된다는 경고입니다. 확인 단추 Fire를 눌러야 전송됩니다.