본문으로 건너뛰기

모드 설치·개발 공략

모드는 단순한 편의성 유틸리티부터 새로운 기계, 게임플레이 기능, 번역 또는 커스텀 시나리오에 이르기까지 shapez 2를 변경하거나 확장하는 사용자가 만든 패키지입니다. 게임은 네이티브 모드 지원과 정해진 폴더 구조를 제공하므로 모드를 쉽게 설치하고 개발하며 공유할 수 있습니다.

모드와 영구 데이터 위치

  • 게임은 모드, 커스텀 시나리오, 프리셋, 그리고 내보낸 베이스 데이터 등을 포함한 영구 데이터를 게임 데이터 폴더(Game Data Folder, 또는 Game Data / save/game 폴더)에 저장합니다.
  • 경로:
    • Windows: %USERPROFILE%\AppData\LocalLow\tobspr Games\shapez 2\
    • MacOS: ~/Library/Application Support/tobspr Games\shapez 2/
    • Linux: ~/.config/unity3d/tobspr Games\shapez 2/
  • 게임에서 폴더를 여는 방법:
    • 메인 메뉴 → Play → Show Folder, 그런 다음 상위 폴더로 이동합니다.
    • 게임 내 → Blueprint Library → Open Folder, 그런 다음 상위 폴더로 이동합니다.
    • Debug Console 명령: logs.open-folder 또는 savegames.open-folder (참고: MacOS는 일부 로깅에 플레이어.log를 사용합니다).

Mods 폴더 구조 및 설치

  • Game Data Folder 내부의 mods 폴더는 로컬에서 게임이 로드할 모드를 넣는 위치입니다.
  • 각 모드는 mods 폴더 안의 하위 폴더 하나로 배치합니다. 게임은 각 하위 폴더를 개별 모드로 로드합니다.
  • Steam Workshop 모드는 지원되며 Workshop에 구독하면 자동으로 다운로드됩니다.

모딩 자료 및 도구

  • 공식 및 커뮤니티 자료:
    • 개발자가 제공하는 공식 모딩 문서와 아트/자산 지침.
    • 샘플 모드와 Shapez Shifter (modding API) 저장소가 GitHub에 있습니다.
    • 공식 문서를 보완하는 비공식 커뮤니티 문서가 존재합니다.
    • 유용한 서드파티 도구 문서: MonoMod RuntimeDetour 및 HarmonyX(런타임 디토어 및 패치용).
  • 게임은 Unity(문서에 명시된 특정 Unity 버전 사용)와 통합을 단순화하는 모딩 API(ShapezShifter)를 사용합니다; 별도의 외부 모드 로더는 필요하지 않습니다.
  • 심화 개발과 디버깅을 위해 어셈블리 및 클래스 참조가 제공됩니다.

게임 데이터 추출 및 모드용 데이터 내보내기

  • 게임은 내부 데이터(엔티티, 시나리오, 프리셋 같은 기본 콘텐츠)를 재사용하거나 참조용으로 내보낼 수 있습니다:
    • 게임 내에서 디버그 콘솔(F1)을 열고 debug.export-game-data를 실행합니다.
    • 그러면 Game Data Folder 안에 basedata-라는 폴더가 생성됩니다. 그 안의 파일을 커스텀 JSON 콘텐츠의 템플릿으로 사용하세요.

커스텀 시나리오, 프리셋 및 난이도

  • 커스텀 시나리오:
    • 시나리오 JSON 파일을 Game Data Folder의 custom-scenarios 폴더에 넣으면 게임이 로드합니다.
    • 게임에서 내보낸 시나리오 파일은 내보낸 basedata 폴더의 scenarios 폴더에 나타납니다.
  • 커스텀 시나리오 프리셋:
    • 커스텀 시나리오 프리셋 JSON 파일을 Game Data Folder의 custom-scenario-parameter-presets에 넣으세요.
    • 게임 내 시나리오 프리셋은 내보낸 basedata 폴더의 scenario-parameter-presets 안에 있습니다.
    • 시나리오를 선택할 때, 내부 목록에서 해당 시나리오를 가리키는 첫 번째 Scenario Preset이 기본으로 선택됩니다.
  • 커스텀 난이도 프리셋:
    • 현재 게임은 커스텀 난이도 프리셋을 JSON 파일로 직접 로드하는 것을 지원하지 않습니다. 그래도 내장된 난이도 프리셋은 내보낸 basedata 폴더의 difficulty-presets 폴더에서 확인할 수 있습니다.

커스텀 번역

  • 커스텀 번역을 로드하려면 translations-en-US.json과 동일한 형식의 translations-override.json 파일을 생성하여 게임이 기대하는 위치에 배치하세요.
  • 게임을 --custom-translations 명령줄 인수로 시작하면 오버라이드 파일을 로드합니다.
  • 파일 내부의 LanguageTitle은 무시되며, 언어 설정에는 "Custom"으로 표시됩니다. 누락된 키는 영어로 폴백됩니다.

개발 워크플로우 및 디버깅

  • 일반적인 워크플로우:
    • 기존 JSON을 템플릿으로 사용하기 위해 베이스 게임 데이터를 내보냅니다.
    • 문서와 아트 지침을 따라 자산, 코드, JSON 정의를 포함한 모드 하위 폴더를 만듭니다.
    • 코드 동작을 변경해야 하는 경우 모딩 API(ShapezShifter)나 런타임 패칭 라이브러리를 사용합니다.
    • 모드 폴더를 mods 디렉터리에 넣고 게임을 실행하여 로컬에서 테스트합니다.
  • 게임 내에서 명령과 문제 해결을 위해 Debug Console을 사용할 수 있습니다.
  • 디버깅 및 런타임 패칭 문서와 커뮤니티 예제(샘플 모드)는 참고 자료로 권장됩니다.

모드 배포 및 공유

  • Steam Workshop:
    • 모드는 Steam Workshop에 게시하여 자동 배포할 수 있습니다.
  • 커뮤니티 공유:
    • Blueprint와 콘텐츠 공유는 Community Vortex 웹사이트와 공식 Discord(#🛠blueprints)를 통해서도 이루어집니다.
  • 충돌이나 손상된 자산을 피하려면 모드를 게시할 때 게임의 모드 게시 및 자산 지침을 따르세요.

주제 및 고급 고려사항

  • 문서에서 다루는 관련 모딩 주제:
    • Modding Overview, Development Environment, Mod Loading, Debugging, Mod Publishing, Command Line Arguments, Game Files, Custom Game Modes, Debug Console.
  • 제공된 샘플 모드와 API 참조를 사용해 패턴과 모범 사례를 학습하세요.
  • JSON으로 콘텐츠(시나리오, 프리셋, 번역 등)를 수정하거나 추가할 때는 파일 이름과 배치가 위에 설명된 예상 폴더와 일치하는지 확인하여 게임이 이를 인식하도록 하세요.

시작을 위한 빠른 체크리스트

  • 베이스 데이터 내보내기: 디버그 콘솔 열기 → debug.export-game-data 실행.
  • Game Data Folder/mods/ 안에 모드 폴더를 생성하고 내용을 추가.
  • 커스텀 시나리오 또는 프리셋의 경우 각각 custom-scenarios 또는 custom-scenario-parameter-presets에 JSON을 넣기.
  • 번역의 경우 translations-override.json을 생성하고 --custom-translations로 게임 시작.
  • 모드를 공유하거나 받으려면 Steam Workshop에 구독/게시.
  • 코드 예제와 API 사용법은 공식 모딩 문서, 샘플 모드, ShapezShifter를 참고.

이 글에 등장하는 페이지