본문으로 건너뛰기

TSMPDebugCanvas

TSMPDebugCanvas는 Play mode 또는 업로드된 VRChat 월드 안에서 TSMP 상태를 보기 위한 컴포넌트입니다.

인게임에서는 Inspector field를 볼 수 없기 때문에 중요합니다. VRChat에서 스트림이 실패하면 debug canvas가 실패 단계를 가장 빠르게 알려줍니다.

지정할 것

  • Encoder: TX 데이터를 표시하려면 sender TSMPEncoder.
  • Decoder: RX 데이터를 표시하려면 receiver TSMPDecoder.
  • Target Text: Unity UI Text component.

Encoder, decoder, 또는 둘 다 표시할 수 있습니다.

TX fields

Field의미
TX bitrate추정 outgoing TSMP data rate.
frame현재 encoder frame index. Encoding 중 증가해야 합니다.
payload사용한 payload bytes / usable payload bytes.
msg이번 frame에 쓴 전체 payload message 수.
varVariable state messages.
rpcRPC messages.
codec선택된 codec ID.
sizeOutput frame size.

RX fields

Field의미
RX bitrate추정 received TSMP data rate.
loss추정 skipped frame percentage.
valid마지막 decoded frame이 usable인지.
headerHeader가 valid인지.
payloadHeader가 요청한 payload bytes.
availableDecoded texture에서 사용 가능한 payload bytes.
msgPayload에서 찾은 network messages.
var적용된 variable values.
rpc수신된 RPC calls.
dupFrameDecoder가 skip한 duplicate frames.
dupRpcDecoder가 skip한 duplicate RPC calls.

흔한 상태 읽기

표시가능성 높은 의미
TX frame은 증가하지만 payload=0Encoder는 실행 중이지만 sync 대상으로 선택된 데이터가 없습니다.
TX payload가 capacity에 가까움동기화 데이터를 줄이거나 output capacity를 늘리세요.
RX valid=noReceiver가 현재 texture를 decode할 수 없습니다.
header=noTSMP header가 없거나 손상되었습니다.
RX의 msg=0Valid frame은 도착했지만 network message가 없습니다.
loss가 높음전송 경로가 frame을 drop하거나 repeat하고 있습니다.
TX의 rpc는 증가하지만 RX는 증가하지 않음RPC frame이 손실되거나 decoder binding이 맞지 않습니다.

디버깅할 때 사용 순서

  1. TX frame이 증가하는지 확인합니다.
  2. TX payload가 0보다 큰지 확인합니다.
  3. RX header와 valid가 모두 yes인지 확인합니다.
  4. RX message count가 0보다 큰지 확인합니다.
  5. Receiver object가 active이고 receive interpolation이 None이 아닌지 확인합니다.

어떤 단계가 실패하면 다음 단계로 넘어가기 전에 그 단계를 먼저 해결하세요.