Roblox Studio TeleportService tool

로블록스 TeleportAsync 코드 생성기

목적지 PlaceId, 플레이어 범위, 공개·예약 서버 방식을 선택하면 현재 권장 API인 TeleportService:TeleportAsync()용 서버 Luau 코드를 만듭니다. 입력은 이 브라우저 안에서만 처리하며 Roblox 계정이나 게임에 연결하지 않습니다.

텔레포트 조건 입력

URL의 게임 ID가 아니라 목적지 PlaceId를 입력하세요. 이 도구는 1부터 JavaScript 안전 정수 범위까지의 숫자만 받습니다.

한 명 방식은 teleportPlayer(player) 함수를, 전체 방식은 Players:GetPlayers()를 생성합니다.

목적지 서버 방식

서버 지정 속성 세 가지는 함께 쓸 수 없으므로 한 가지만 고릅니다. 특정 서버 ID와 예약 서버 코드는 코드의 교체용 자리표시자로 생성됩니다.

sourcePlaceId와 sourceJobId만 전달합니다. 재화·인벤토리·권한 같은 보안 데이터는 포함하지 마세요.

호출 오류를 잡고 정해진 횟수까지만 다시 시도합니다. 시작 뒤 실패는 TeleportInitFailed에서 Flooded·Failure만 재시도합니다.

조건을 확인한 뒤 TeleportAsync 코드 생성하기를 누르세요.

생성한 코드를 확인하는 순서

  1. Creator Dashboard의 게임에서 목적지 Place를 열어 PlaceId를 확인합니다. 게임 페이지 URL의 숫자와 목적지 PlaceId가 같다고 가정하지 마세요.
  2. 공개 자동 매칭, 특정 공개 서버, 새 예약 서버, 기존 예약 서버 중 하나를 고릅니다. 이 생성기는 서로 충돌하는 TeleportOptions 속성을 동시에 만들지 않습니다.
  3. 코드를 생성해 ServerScriptService의 Script 또는 서버 ModuleScript에 옮깁니다. 한 명 방식은 실제 서버 이벤트에서 검증한 Player를 teleportPlayer(player)에 전달합니다.
  4. 자리표시자 문자열이 있으면 실제 서버 JobId 또는 예약 서버 접근 코드로 교체합니다. 클라이언트가 보낸 값을 그대로 신뢰하지 말고 서버에서 대상과 권한을 검증하세요.
  5. 게임과 목적지 Place를 게시한 뒤 Roblox 앱에서 테스트합니다. TeleportService는 Studio 플레이 테스트에서 실제 이동을 지원하지 않습니다.
  6. 실패하면 서버 Output의 경고와 TeleportInitFailed 결과를 확인하고, 설정·PlaceId·권한 오류를 무한 재시도로 가리지 마세요.

TeleportAsync는 서버에서 호출합니다

Roblox Creator Hub의 Teleport between places와 TeleportService API는 새 작업에서 서버 Script의 TeleportAsync(placeId, players, teleportOptions)를 사용하도록 안내합니다. 클라이언트의 Teleport()는 새 작업에 권장되지 않습니다.

LocalScript의 버튼으로 이동을 시작해야 한다면 RemoteEvent에는 목적지의 의미만 보내고, 서버가 플레이어 상태·진행도·허용된 PlaceId를 다시 확인한 뒤 TeleportAsync를 호출하세요. 전날 정리한 RemoteEvent 서버 검증 순서를 함께 적용할 수 있습니다.

TeleportOptions 속성은 서로 배타적입니다

TeleportOptions API는 ServerInstanceId, ShouldReserveServer, ReservedServerAccessCode 중 특정 조합을 함께 쓰면 오류가 난다고 설명합니다. 공개 자동 매칭은 이 속성을 설정하지 않고, 나머지 세 방식은 해당 속성 하나만 설정합니다.

  • ServerInstanceId: 특정 공개 서버 인스턴스의 game.JobId입니다. 서버가 종료됐거나 ID가 맞지 않으면 원하는 인스턴스로 갈 수 없습니다.
  • ShouldReserveServer: true이면 새 예약 서버를 만들고 그 할당으로 보냅니다. 같은 예약 서버에 나중에 합류시키려면 접근 코드를 별도로 보관하는 설계가 필요합니다.
  • ReservedServerAccessCode: 기존 예약 서버의 접근 코드입니다. 공개 UI·로그·클라이언트 코드에 노출하지 말고 서버 전용 저장소에서 관리하세요.

TeleportData에는 비밀 값을 넣지 않습니다

공식 문서는 TeleportOptions:SetTeleportData()로 기본적인 비보안 정보를 전달할 수 있지만 이 데이터가 클라이언트에 보이고 암호화되지 않는다고 경고합니다. 재화, 인벤토리, 권한, 구매 결과처럼 위조되면 문제가 되는 값은 DataStore 또는 MemoryStore에 저장하고 도착 서버에서 서버 데이터로 다시 확인해야 합니다.

생성기의 선택 예시는 출발 PlaceId와 JobId만 보냅니다. 도착 서버에서는 Player:GetJoinData()의 TeleportData를 읽을 수 있지만, 이 값도 권한 증명으로 사용하지 않습니다.

pcall 성공 뒤에도 이동이 실패할 수 있습니다

네트워크 호출인 TeleportAsync는 오류를 던질 수 있어 pcall()로 감싸야 합니다. 호출이 성공해 이동이 시작된 뒤 마지막 단계에서 실패하면 TeleportService.TeleportInitFailed가 발생할 수 있습니다. 이 생성기는 재시도를 켰을 때 Flooded와 Failure만 제한적으로 다시 시도하고, InvalidTeleport처럼 설정 수정이 필요한 결과는 경고만 남깁니다.

재시도 횟수와 간격은 이 도구의 안전한 입력 범위일 뿐 Roblox가 보장하는 최적값이 아닙니다. 실제 게임의 인원, 호출 빈도, 대기 UI와 장애 패턴을 측정해 조정하고, 같은 플레이어에 대한 중복 요청을 막는 서버 상태 잠금을 추가하세요.

게시·접근 설정도 함께 확인합니다

Place가 게시되지 않았거나 대상 게임의 접근 조건을 충족하지 않으면 코드만 맞아도 이동하지 않습니다. 다른 게임으로 보내려면 Studio의 File → Experience Settings → Security → Allow Third Party Teleports 설정이 필요할 수 있습니다. 같은 게임 안의 진행 제한이 중요하면 Creator Dashboard의 Access Control for Places와 Direct Access Control도 확인하세요.

공식 문서는 Access Control for Places에서 Fully open, Limited to same universe, Secure within universe only의 동작을 구분합니다. 엄격한 진행도나 테스트 Place처럼 서버가 허용한 경로로만 들어가야 한다면 서버 시작 TeleportAsync와 Secure 설정을 함께 검토하세요.

직접 확인한 범위와 제한

2026년 10월 3일 Windows 데스크톱 브라우저에서 Roblox Creator Hub의 Teleport between places, TeleportService, TeleportOptions 공개 HTML과 Markdown 원문을 대조했습니다. 세 문서의 Markdown 메타데이터는 각각 2026-10-02 21:48:53 UTC, 2026-10-02 21:48:52 UTC, 2026-10-02 21:48:52 UTC 갱신으로 표시됐습니다.

  • 실제 Roblox 게임이나 추가 Place를 게시하지 않았고 Roblox 앱에서 텔레포트를 실행하지 않았습니다. 생성 코드는 공식 API 원칙과 입력 검증을 바탕으로 한 시작점입니다.
  • PlaceId 최대 16자리, 재시도 1~5회, 간격 0.5~10초는 브라우저 입력 실수를 줄이기 위한 이 페이지의 제한이며 Roblox Engine 전체 한도가 아닙니다.
  • 파티 매칭, SocialService 파티 조회, 크로스 서버 큐, MemoryStore 예약, 커스텀 로딩 GUI, 도착 서버 데이터 복구는 생성하지 않습니다.
  • 특정 공개 서버와 기존 예약 서버 모드는 의도적으로 교체용 문자열을 만듭니다. 값을 넣기 전에는 실행 가능한 최종 코드가 아닙니다.
  • 초기화하면 빈 PlaceId, 플레이어 1명, 공개 서버 자동 매칭, TeleportData 꺼짐, 3회·1초 재시도 상태로 돌아갑니다.