콘텐츠로 이동

Interpreter

Interpreter는 코드를 직접 입력해 실행하는 창입니다. 개발자가 확인 코드의 실행을 부탁할 때, QA 담당자 분이나 플레이 테스터 분이 서버와 클라이언트에서 실행할 수 있도록 만들었습니다. View > Interpreter로 열거나, 명령 팔레트에서 open interpreter를 입력하면 됩니다.

Interpreter 창. 위쪽에 코드 상자, 아래쪽에 실행 결과 목록이 있습니다.

  1. **Run on:**에서 실행할 위치를 선택합니다.
    • Server: 서버에서 실행합니다. 서버 보기를 쓸 수 있는 세션에서만 나타납니다.
    • This client: 이 클라이언트에서만 실행합니다.
  2. 코드 상자에 Luau 코드를 입력합니다. 여러 줄도 쓸 수 있습니다.
  3. Run을 누르거나, 코드 상자에 커서가 있는 상태에서 Ctrl+Enter를 누릅니다. 실행하는 동안 단추가 Running…으로 바뀝니다.

실행 위치에 따라 상자 위의 안내 문구가 바뀝니다. 서버는 Runs on the server with server power. Every run is logged., 클라이언트는 Runs on this client only (the server compiles it and logs it).입니다. 클라이언트에서 실행하는 코드도 소스를 서버로 보내 컴파일하고 기록합니다. 서버는 클라이언트가 만든 컴파일 결과를 받지 않습니다.

변수 서버에서 이 클라이언트에서
player 실행한 사람(Player) 내 LocalPlayer
selection 서버 Explorer에서 선택한 인스턴스 클라이언트 Explorer에서 선택한 인스턴스

selection은 인스턴스 배열입니다. 창에 selection = 2 instances selected in the server Explorer처럼 현재 개수가 표시되고, 아무것도 선택하지 않으면 빈 배열입니다. 서버 쪽에서는 선택한 노드가 이미 사라졌거나 한도를 넘어 빠진 경우 결과에 selection: N of M skipped … 경고가 붙습니다.

-- 고른 인스턴스의 이름을 모두 모은다
local names = {}
for _, inst in selection do
table.insert(names, inst.Name)
end
return table.concat(names, ", ")

한 번 실행할 때마다 결과 목록에 한 항목씩 쌓입니다.

  • 첫 줄은 > 로 시작하며, 실행한 코드의 첫 줄을 보여 줍니다.
  • 이어서 코드가 print한 내용이 표시됩니다. warn은 노란색입니다.
  • 에러가 나면 command:3: … 형식의 에러가 빨간 글자로 표시됩니다. 컴파일 에러도 여기에 표시됩니다.
  • 성공하면 마지막에 → 값이 표시됩니다. 식을 입력하면 그 값을 돌려줍니다. 예를 들어 1 + 2만 입력해도 → 3이 표시됩니다. 문장이 여러 개면 return으로 값을 돌려주면 됩니다. 테이블은 한 단계까지 펼쳐서 보여 줍니다.

결과 줄은 마우스로 선택해 복사할 수 있습니다. 최근 50개 항목까지 보관하며, Clear를 누르면 모두 지워집니다.

코드가 끝난 뒤에 출력되는 내용(task.delay나 이벤트 연결에서 나중에 실행되는 print)은 이 목록이 아니라 Output 창에 표시됩니다. 창의 안내 문구에도 Output printed after a run ends (task.delay, events) appears in the Output window.라고 적혀 있습니다.

서버가 멈추지 않도록 실행에는 다음 제한이 있습니다.

  • 코드는 20000바이트까지 입력할 수 있습니다.
  • yield(task.wait 등) 없이 2초를 넘게 실행되면 에러로 중단됩니다.
  • 한 번의 실행은 시작부터 30초가 지나면 중단됩니다.
  • 서버 명령은 사람마다 한 번에 하나만 실행됩니다. 이전 명령이 끝나기 전에 다시 실행하면 a server command of yours is still running과 함께 거절됩니다.
  • 너무 자주 실행하면 too many commands, slow down과 함께 거절됩니다.
  • 한 항목에 표시되는 출력과 결과의 개수에도 상한이 있습니다.