Roblox 게임은 기본적으로 클라우드에 저장됩니다. Studio는 당신의 장소, 자산 및 스크립트를 Roblox에 저장하고, 버전 기록은 각 장소의 변경 사항을 추적합니다. 많은 팀은 변경 사항을 검토하고, 전체 기록을 유지하며, 빌드 및 배포를 자동화할 수 있도록 게임을 Git과 같은 버전 관리 시스템에 두고 싶어합니다.
Roblox의 모든 버전 관리 워크플로우는 한 가지 질문에 답합니다: 게임의 각 부분에 대한 진실의 출처는 어디에 있습니까? 세 가지 일반적인 답변은 다음과 같습니다:
- Studio 네이티브: Roblox의 장소가 모든 것에 대한 진실의 출처입니다. Script Sync는 스크립트를 Git으로 복사하여 검토하고 추적할 수 있게 합니다.
- 부분적으로 관리됨: Git이 코드에 대한 진실의 출처입니다. Roblox의 장소는 모델, 지형 및 UI와 같은 모든 것에 대한 진실의 출처입니다.
- 완전 관리됨: Git이 전체 게임에 대한 진실의 출처입니다. Roblox의 장소는 CI가 리포지토리에서 게시하는 빌드 출력입니다.
이 페이지는 이러한 워크플로우를 비교하고, 각 워크플로우에서 사용하는 도구를 설명하며, 팀이 그 주위에 설정하는 환경을 다룹니다. 워크플로우를 설정하려면 워크플로우 설정을 참조하세요.
파일 기반 워크플로우 로드맵
Roblox는 팀이 서드파티 도구를 조합하지 않고도 버전 관리를 사용할 수 있도록 1차 파일 기반 워크플로우를 개발하고 있습니다. 이러한 워크플로우가 출시될 때까지 이 페이지의 설정은 오늘날 팀에 적합한 방법을 반영합니다.
워크플로우 비교
Studio 네이티브
부분적으로 관리됨
완전 관리됨
| Studio 네이티브 | 부분적으로 관리됨 | 완전 관리됨 | |
|---|---|---|---|
| 적합한 팀 | 단일 장소 게임에서 작업하는 5명 이하의 제작자 팀 | 여러 프로그래머와 다중 장소 게임을 가진 팀 | 모든 인스턴스와 자산에 대한 검토 및 기록이 필요한 팀 |
| 버전 관리에 포함됨 | 스크립트 | 스크립트, 프로젝트 구성 및 도구 | 모델 및 이미지를 포함한 모든 것 |
| 콘텐츠 편집 | 팀 생성 | 팀 생성 및 패키지 | Git의 파일, CI에 의해 빌드됨 |
| 유지 관리 도구 | Studio와 편집기를 제외하고는 없음 | Rojo 및 린팅, CI 도구 | Rojo, 병합 및 자산 도구, 전체 CI 파이프라인 |
워크플로우 선택
필요에 맞는 가장 간단한 워크플로우로 시작하세요. 나중에 더 관리되는 워크플로우로 이동할 수 있습니다. 이러한 도구는 여러분을 잠그지 않기 때문입니다. 대부분의 팀은 완전 관리 Rojo가 필요하지 않으며, 이는 상당한 복잡성을 추가합니다.
도구
대부분의 설정은 Roblox의 몇 가지 도구와 커뮤니티의 몇 가지 도구를 결합합니다.
Roblox 도구
| 도구 | 기능 | 사용되는 곳 |
|---|---|---|
| 팀 생성 | Studio에서 실시간 협업 편집, 빌드, 레벨 디자인 및 아트에 가장 적합합니다. | 모든 워크플로우 |
| 스크립트 동기화 | Studio의 스크립트를 로컬 디스크의 파일과 양방향으로 동기화합니다. | Studio 네이티브 |
| 패키지 | 장소와 게임 전반에 걸쳐 업데이트할 수 있는 재사용 가능한 버전 그룹입니다. | Studio 네이티브, 부분적으로 관리됨 |
| 버전 기록 | 각 장소의 저장된 버전을 보고, 비교하고, 복원할 수 있습니다. | 모든 워크플로우 |
| 장소 게시 API | 장소 파일을 Roblox에 게시하는 오픈 클라우드 API입니다. CI에서 배포하는 데 사용합니다. | 부분적으로 관리됨, 완전 관리됨 |
| Luau 실행 API | Roblox 서버의 장소에서 Luau를 실행하는 오픈 클라우드 API입니다. CI에서 테스트를 실행하는 데 사용합니다. | 부분적으로 관리됨, 완전 관리됨 |
| 자산 API | 이미지, 오디오 및 모델과 같은 자산을 업로드하고 업데이트하는 오픈 클라우드 API입니다. | 완전 관리됨 |
커뮤니티 도구
| 도구 | 기능 | 사용되는 곳 |
|---|---|---|
| Rojo | 로컬 서버와 Studio 플러그인을 통해 디스크의 파일을 Studio로 동기화하고, 프로젝트 파일에서 장소 및 모델 파일을 빌드합니다. Rojo 7.7 이상에서 rojo syncback 명령은 기존 장소를 프로젝트 파일로 변환합니다. | 부분적으로 관리됨, 완전 관리됨 |
| Rokit | 도구 체인 관리자. 팀의 모든 사람이 동일한 도구 버전을 사용하도록 고정합니다. | 부분적으로 관리됨, 완전 관리됨 |
| Wally | 커뮤니티 Luau 라이브러리를 위한 패키지 관리자입니다. | 부분적으로 관리됨, 완전 관리됨 |
| Lune | 빌드, 배포 및 자동화 스크립트에 일반적으로 사용되는 독립형 Luau 런타임입니다. | 부분적으로 관리됨, 완전 관리됨 |
| selene | Luau 린터입니다. | 모든 워크플로우 |
| StyLua | Luau 코드 포매터입니다. | 모든 워크플로우 |
| Luau 언어 서버 | 외부 편집기에서 자동 완성과 타입 검사를 제공합니다. | 모든 워크플로우 |
| Tarmac | 디스크에서 Roblox로 이미지를 업로드하고 파일 경로를 자산 ID에 매핑하는 모듈을 생성합니다. | 완전 관리됨 |
| rbx-merge | .rbxl, .rbxlx, .rbxm, 및 .rbxmx 파일을 위한 Git diff 및 병합 드라이버입니다. 읽기 쉬운 diff를 보여주고 속성 수준에서 비충돌 변경 사항을 병합합니다. | 완전 관리됨 |
Rojo를 설치하고 실행하려면 Rojo를 참조하세요. Rokit, Wally, 린터 및 기타 도구에 대해서는 서드파티 도구를 참조하세요.
환경
버전 관리를 사용하는 팀은 일반적으로 작업을 환경으로 분리하여 미완성 변경 사항이 플레이어에게 도달하지 않도록 합니다. 모든 사람이 편집하는 하나의 장소 대신, 각 환경은 자체 장소입니다.
각 환경을 동일한 그룹 아래의 별도 게임으로 만드는 것을 권장합니다. 데이터 저장소, 비밀 및 기타 클라우드 서비스는 게임에 국한되므로, 별도의 게임은 테스트 데이터를 프로덕션에서 분리합니다.
일반적인 설정은 다음과 같은 환경을 포함합니다:
| 환경 | 목적 | 업데이트하는 사람 |
|---|---|---|
| 개인 개발 | 각 제작자의 일상 작업을 위한 개발 장소의 개인 복사본입니다. | 해당 제작자 |
| 공유 개발 | 팀이 작업 중인 결합된 불안정한 기능 세트입니다. | 프로그래머가 검토된 코드를 동기화하고, 아티스트가 승인된 콘텐츠를 복사합니다. |
| 자산 | 캐릭터, 빌딩 키트 및 세트 드레싱과 같은 패키지의 정본 버전입니다. | 아티스트 |
| 안정적 | 정기적인 간격으로 공유 개발의 스냅샷, 예를 들어 주간 플레이 테스트를 위해. | CI만 |
| 프로덕션 | 실시간 공개 게임입니다. | 출시 승인을 받은 후 안정적에서 복사됨 |
개인 개발 장소 만들기
- Studio에서 공유 개발 장소를 엽니다.
- 파일 ⟩ 다른 이름으로 게시를 선택합니다.
- 개발 게임을 소유한 그룹을 선택합니다.
- 자신과 프로젝트를 식별하는 이름으로 새 게임으로 장소를 게시합니다. 예: USER / YourName - ProjectName.
- 공유 개발 장소를 닫고 새 개인 복사본을 엽니다.
모든 환경에 대해 일관된 이름을 사용하세요. 예: DEV - ProjectName, ASSET / ProjectName, STABLE / ProjectName 등으로 팀이 Creator Dashboard에서 쉽게 구분할 수 있도록 합니다.
워크플로우 설정
| 워크플로우 | 설정 가이드 |
|---|---|
| Studio 네이티브 | 팀과 함께 스크립트 동기화 사용 |
| 부분적으로 관리됨 | 부분적으로 관리 Rojo |
| 완전 관리됨 | 완전 관리 Rojo |
일반적인 문제 해결
| 문제 | 해결 방법 |
|---|---|
| 개발 장소에서 테스트가 프로덕션 데이터를 변경합니다. | 개발과 프로덕션은 동일한 게임의 장소이므로 데이터 저장소를 공유합니다. 각 환경을 별도의 게임으로 이동하세요. |
| 팀원이 서로의 스크립트 변경 사항을 덮어씁니다. | 두 사람이 동일한 스크립트를 하나의 팀 생성 세션으로 동기화하고 있습니다. 개인 개발 장소에 코드를 동기화하고 Git을 통해 병합하세요. |
| 스크립트의 한 복사본에 대한 수정 사항이 다른 복사본에 적용되지 않습니다. | 스크립트를 복사하면 독립적인 복사본이 생성됩니다. 공유 동작은 ModuleScript에 넣고 CollectionService 태그로 인스턴스에 연결하세요. |
| 서버 전용 코드가 클라이언트에 표시됩니다. | 클라이언트에 복제되는 컨테이너의 모듈은 클라이언트에 전송됩니다. 서버 전용 모듈은 ServerScriptService 또는 ServerStorage에 보관하세요. |