LocalWorkspace

# 학습 과정 소개

로컬 워크스페이스는 크리에이터가 제작하는 월드 데이터를 내 컴퓨터로 내려받을 수 있는 기능입니다. 로컬 워크스페이스를 사용하고, 메이커와 동기화해 월드를 제작하는 방법을 알아봅시다.

##### 참고 가이드

  * [공동제작](/docs/?postId=670%7B%22target%22:%22_blank%22%7D)
  * [공동 제작 그룹 멤버의 등급과 권한](/docs/?postId=1077%7B%22target%22:%22_blank%22%7D)
  * [WorldConfig](/docs/?postId=1101%7B%22target%22:%22_blank%22%7D)
  * [LocalWorkspace 활용](/docs/?postId=1166%7B%22target%22:%22_blank%22%7D)



# 로컬 워크스페이스 소개

로컬 워크스페이스란 월드 데이터를 크리에이터의 컴퓨터(Local)로 내려받을 수 있는 기능입니다. 월드의 다양한 엔트리와 데이터를 크리에이터의 컴퓨터에 파일 형태로 저장합니다. 로컬 워크스페이스 기능을 활용해 컴퓨터에 저장한 파일은 크리에이터의 제작 방식에 따라 다양하게 활용할 수 있습니다. 비상시를 대비한 백업 파일용으로 저장하거나, 그룹에서 공용으로 파일을 관리하거나, 형상 관리 도구와 함께 사용해 파일을 관리할 수도 있습니다.

> 주의! 여러 작업자가 로컬 워크스페이스에서 월드를 제작하면 파일 내용이 자주 변경됩니다. 잦은 변경으로 인해 문제가 발생했을 때 복구할 수 있도록, 월드 백업 파일을 만들어두는 습관을 들이는 것을 권장합니다.

# 개인의 로컬 워크스페이스 활성화

  1. Workspace - WorldConfig - LocalWorkspace를 활성화합니다. [png](17732931962711825d8eaa78545bc9e250d01ecc84f24)
  2. 폴더 선택 창에서 파일을 저장할 위치를 선택합니다.
  3. 지정한 폴더를 열어 월드의 파일이 다운로드되었는지 확인합니다. [png](17189433493352cf95e72a7db436d89fbd2a87eb093c2)
  4. 메이커에서 월드를 수정하거나, 새로운 스크립트 엔트리를 추가하면 지정한 폴더에 저장됩니다.



# 그룹의 로컬 워크스페이스 활성화

로컬 워크스페이스 기능을 최초로 활성화할 수 있는 권한은 그룹장과 매니저에게 있습니다. 그룹원은 로컬 워크스페이스의 path만 지정할 수 있습니다.

#### 그룹장, 매니저

로컬 워크스페이스는 공동 제작 월드에서 활성화할 수 있으며, 그룹장과 매니저만 활성화할 수 있습니다. LocalWorkspace를 활성화하면, 크리에이터가 지정한 위치에 월드의 데이터가 다운로드 됩니다. LocalWorkspace를 활성화하는 방법은 다음과 같습니다.

  1. Panels - Cooperation - Members에서 복구 모드를 활성화합니다. 복구 모드를 활성화하면 그룹원은 월드를 수정할 수 없습니다. [png](1718943320876d4fdf86c67f2483e974e5e0cef47768a)

> Tip 복구 모드를 활성화하기 전에 그룹원 모두는 작업물을 모두 체크인해야 합니다. 작업 내용이 사라지지 않도록 별도 파일로 저장해 두는 것을 권장합니다.

  2. Workspace - WorldConfig - LocalWorkspace를 활성화합니다. [png](17732931962711825d8eaa78545bc9e250d01ecc84f24)

  3. 폴더 선택 창에서 파일을 저장할 위치를 선택합니다. 다운로드가 완료되면 공동 제작 상태가 해제됩니다.

  4. 지정한 폴더를 열어 월드의 파일이 다운로드되었는지 확인합니다. [png](17189433493352cf95e72a7db436d89fbd2a87eb093c2)

  5. 월드 파일을 함께 제작할 수 있도록 그룹원에게 공유합니다.

  6. 메이커에서 월드를 수정하거나, 새로운 스크립트 엔트리를 추가하면 지정한 폴더에 저장됩니다.




#### 그룹원

그룹원은 그룹장 혹은 매니저가 공유한 월드 파일을 자신의 컴퓨터에 내려받습니다. 그 후 로컬 워크스페이스가 활성화된 월드에 그룹원이 최초 입장하면, 폴더 선택창이 나타납니다. 그룹원은 자신의 컴퓨터에서 로컬 워크스페이스로 사용할 위치를 지정하고, 메이커에서 월드를 수정할 수 있습니다.

  1. 그룹에서 공유하는 월드 데이터를 다운 받습니다.
  2. 폴더 선택창에서 다운 받은 월드 데이터 폴더 위치를 지정합니다.



# 로컬 워크스페이스 사용

#### 로컬 워크스페이스 폴더

LocalWorkspace를 활성화하면 월드 데이터는 4개의 폴더에 구분되어 다운로드됩니다.

[{"이름":"Global","설명":"월드의 다양한 엔트리가 포함된 폴더입니다."},{"이름":"map","설명":"Hierarchy의 maps 엔트리 폴더입니다."},{"이름":"RootDesk","설명":"Workspace - MyDesk의 엔트리들이 포함된 폴더입니다."},{"이름":"ui","설명":"Hierarchy의 ui 엔티티 폴더입니다."}]

#### 로컬 워크스페이스와 리모트 워크스페이스

로컬 워크스페이스를 사용하게 되면 로컬 워크스페이스와 리모트 워크스페이스로 저장소가 구분됩니다. 크리에이터는 기본적으로 로컬 워크스페이스와 메이커를 필요에 따라 동기화하며 월드를 제작합니다. Revision 기록, 월드 출시가 필요할 때 리모트 워크스페이스와 로컬 워크스페이스를 동기화합니다.

#### 메이커를 로컬로 동기화

월드를 저장하면 크리에이터가 지정한 위치에 메이커에서 저장한 내용이 로컬 파일로 동기화됩니다.

> 주의! 워크스페이스의 엔트리나 폴더 이름이 OS에서 허용하지 않는 규칙으로 설정된 경우, 로컬로 저장할 때 문제가 발생할 수 있습니다. 로컬워크스페이스를 활성화하기 전에 아래 조건에 해당하는 이름이 있는지 점검하고 문제를 수정해야 합니다.
> 
>   * `<` (작음 기호), `>` (큼 기호), `:` (콜론), `"` (큰따옴표), `/` (슬래시), `\` (역슬래시), `|` (수직선), `?` (물음표), `*` (별표)
>   * 예약어 CON, PRN, AUX, NUL, COM1~COM9, LPT1~LPT9 사용
>   * 파일, 폴더 이름의 시작 혹은 끝에 마침표, 공백
>   * 전체 경로를 포함해 255자 초과
> 


#### 로컬을 메이커로 동기화

Hierarchy, Workspace의 콘텍스트 메뉴에서 Refresh, Reimport, ReimportAll을 상황에 맞게 선택해 사용할 수 있습니다. 메이플스토리 월드를 종료한 상태에서 월드 파일을 다운로드 받은 뒤, 메이커에서 월드를 불러오면 자동으로 로컬의 파일을 불러와 동기화합니다. 메이커를 실행 중인 상황에서 형상 관리 도구로부터 월드 메타데이터 파일을 다운로드 받은 경우라면, 상황에 따라 크리에이터가 직접 로컬 폴더의 데이터를 메이커로 동기화시켜야 합니다.

[{"이름":"Refresh","설명":"로컬 워크스페이스에서 변경점이 있는 파일만 메이커에서 새로고침하고 불러옵니다."},{"이름":"Reimport","설명":"개별 스크립트 또는 Dataset 엔트리의 로컬 변경점을 메이커에 반영합니다."},{"이름":"Reimport All","설명":"로컬 워크스페이스의 Hierarchy, Workspace의 모든 파일을 반영합니다. 개별 파일만 불러왔으나 오류가 발생했다면 Reimport All을 시도해 해결할 수 있습니다. 모든 파일을 불러온 후 월드를 재로딩합니다."}]

> 주의! 로컬 워크스페이스에 다운로드한 파일은 고유한 정보를 가지고 있으므로 특정 파일을 로컬에서 직접 복사하거나 편집하는 것은 지양해야 합니다. 임의로 수정된 파일로 인해 동기화 오류가 발생할 수 있습니다. 단, mLua 파일의 경우 mlua VS Code Extension을 사용하면 안정적으로 편집할 수 있으며, CSV 파일은 자유로운 수정이 가능합니다.

#### 리모트 워크스페이스로 동기화

크리에이터는 LocalDataset 동기화, Revisions 기록 등을 위해 메이플스토리 월드의 DB에 월드 데이터를 저장할 수 있습니다. File - Sync to Remote Workspace를 선택하면 로컬 파일이 리모트 워크스페이스로 동기화됩니다. Revision에는 동기화 직전의 메이커 데이터가 기록됩니다. 그룹 월드의 경우 리모트 워크스페이스로 동기화는 그룹장과 매니저만 가능합니다.

#### 월드 출시

월드를 출시할 때는 출시 시점의 최신 로컬 워크스페이스 내용을 리모트 워크스페이스에 동기화시킵니다. 메이커의 수정 파일이 로컬에 저장되지 않은 경우 메이커를 로컬로 동기화한 뒤, 로컬을 리모트 워크스페이스로 동기화하고 월드를 출시합니다. 로컬 워크스페이스를 사용하는 그룹 월드의 경우 그룹장과 매니저만 출시가 가능합니다.

# 개인의 로컬 워크스페이스 비활성화

로컬 워크스페이스를 더는 사용하지 않거나, 실수로 로컬 워크스페이스를 활성화했을 경우 이를 해제할 수 있습니다. 이때 로컬 워크스페이스의 데이터를 리모트 워크스페이스로 모두 저장한 후 로컬 워크스페이스를 비활성화합니다.

  * Workspace - WorldConfig - LocalWorkspace를 비활성화합니다.



# 그룹의 로컬 워크스페이스 비활성화

그룹의 로컬 워크스페이스를 비활성화할 경우 메이커는 다시 공동 제작 상태로 변경됩니다.

  1. Workspace - WorldConfig - LocalWorkspace를 비활성화합니다.
  2. 메이커가 공동 제작 상태로 변경되었는지 확인합니다.



# 로컬 워크스페이스와 파일 공유 도구

로컬 워크스페이스와 함께 별도의 파일 공유 도구를 활용하면 보다 효율적으로 월드를 제작할 수 있습니다. 그룹 월드의 경우 로컬 워크스페이스를 활성화한 뒤에는 더 이상 공동 제작 기능을 사용하는 월드가 아니므로 메이커 안에서 그룹원끼리 변경점을 동기화할 수 없습니다. 그러므로 별도로 파일을 공유하고, 내려받을 수 있는 공용 저장소가 필요합니다. 클라우드 저장소, 형상 관리 도구(svn, git)를 활용하면 공동으로 월드 데이터의 변경점을 기록하고, 관리할 수 있을 뿐만 아니라 필요한 파일만 메이커에 별도로 반영해 개별 테스트할 수 있습니다.

# 로컬워크스페이스와 VS Code 연동

VS Code 연동 기능을 활성화하면 메이커에서 선택한 항목의 mLua 파일이 자동으로 VS Code에서 열리게 됩니다. LocalWorkspace와 UseExtendedScriptFormat을 모두 활성화하면, File - Setting - 만들기에 LocalWorkspace 항목이 추가됩니다. 이 항목의 활성화해 VS Code를 연동할 수 있습니다. VS Code 연동 옵션은 Windows에서만 지원합니다. VS Code를 연동하면, `.vscode` 폴더, `.code-workspace` 파일, `launch.json` 파일을 로컬워크스페이스 폴더 하위에 생성할 수 있습니다.

> Tip. 연동된 상태에서 발생하는 Console, Build Console의 로그 메시지의 줄 번호는 VS Code의 줄 번호로 표시됩니다. 

> Tip. `launch.json` 파일은 VS Code Debugger 사용 시 필요한 파일입니다. 자세한 내용은 [Debugger for mLua](/docs?postId=1323%7B%22target%22:%22_blank%22%7D)에서 확인할 수 있습니다.

#### VS Code 연동 활성화

  1. File - Setting - 만들기 - LocalWorkspace에서 VS Code 연동을 활성화합니다. [png](1749630358982ac6b8c65696741b28a12ad2428ad56f7)
  2. VS Code가 연동되면 VS Code의 `Code.exe` 경로가 자동으로 설정됩니다. 만약 경로가 설정되지 않았다면 [경로 설정] 버튼을 눌러 직접 설정합니다. [png](17496303719117441164073524d468e5e7ae84208dbd5)



#### 스크립트 메이커에서 확인

VS Code와 연동된 월드는 메이커에서 모든 항목이 읽기 전용으로 변경되어 메이커에서 직접적으로 스크립트를 수정할 수 없게 됩니다. 만약 메이커에서 스크립트를 확인하고 싶은 경우 콘텍스트 메뉴 - Open In Script Editor(Read Only)를 눌러 메이커에서 읽을 수 있습니다.

[png](17496310661647421ad7e3f2b40c799cbfbb98ca75a0d)****