모드 배포하기
모드를 배포할 준비가 되었다고 생각되면, 제대로 작동하는지 확인하고 모드 저장소가 모드와 함께 작동할 수 있도록 필요한 정보를 설정하기 위해 몇 가지 추가 단계를 따라야 합니다.
로컬 테스트
모드를 배포하기 전에, 구현한 기능이 예상대로 작동하는지 확인해야 합니다.
예를 들어, 모드가 새로운 아이템, 제작법 또는 마일스톤을 추가하는 경우, 일반 플레이어의 입장에서 이를 해금하여 접근할 수 있는지 확인하십시오.
제작법의 경우, 제작법을 제작할 건물을 설정하고 실제로 작동하는지 확인하십시오. 예를 들어, 제작법이 아이템의 묶음 크기보다 더 많은 양을 요구하는 경우, 제작법이 유효해 보이더라도 기계는 작동할 수 없습니다.
모드에 구성 옵션이 있는 경우, 모드를 설치하는 모든 사용자가 기본 구성 옵션을 변경할 수 있다는 것을 인식하지 못할 수 있으므로, 지정한 기본 구성 옵션이 원하는 것인지 확인하십시오. 기본 구성 설정은 모드의 의도된 사용자 경험을 나타내야 합니다.
멀티플레이에서 클라이언트와 호스트 플레이어 모두에게 모드가 작동하는지 확인하십시오. 아이템, 도면, 제작법을 추가하는 모드의 경우 큰 문제가 되지 않지만, 추가 건물이나 다른 기능을 추가한 경우에는 문제가 될 수 있습니다.
모드를 테스트하는 방법에 대한 추가 정보는 테스트/멀티플레이 테스트 페이지에서 확인할 수 있습니다.
모드의 UPlugin 파일
모든 언리얼 엔진 플러그인은
<모드 참조>.uplugin 파일을 가져야 하며,
새티스팩토리 모드도 예외는 아닙니다.
이 파일은 JSON 형식으로 되어 있으며,
모드에 대한 정보(버전 번호, 의존성, 크레딧, 링크 등)를 포함합니다.
플러그인 디렉터리에는 하나의 uplugin 파일만 존재해야 하며,
그렇지 않으면 에디터가 혼란스러워할 수 있습니다.
이 파일은 모드를 알파킷으로 생성할 때 자동으로 생성되었어야 합니다.
튜토리얼의 그 시점에서, 나중에 다시 돌아오겠다고 했던 몇 가지 필드가 있으며, 이제 그때입니다.
이 파일은 모드의 플러그인 디렉터리에서 찾을 수 있지만, 일반적으로 언리얼 에디터 내에서 알파킷을 통해 편집하는 것이 좋습니다. 알파킷은 파일의 형식을 자동으로 처리해 주며, 잘못된 uplugin 파일을 생성하여 추적하기 번거로운 실수를 방지하는 데 도움을 줍니다.
알파킷 모드 목록에서 모드 옆의 편집 버튼을 클릭하여 알파킷 편집기를 엽니다.
왼쪽의 레이블 위에 마우스를 올리면 그 목적을 설명하는 툴팁이 표시됩니다.

아래에서 그들의 목적에 대해 더 자세히 설명하겠습니다. 지정하는 값에 대해 올바른 결정을 내리기 위해 아래의 모든 입력란의 정의를 읽는 것이 좋습니다.
원하시면 플러그인 문서 또는 C++ 참조에서 사용할 수 있는 다양한 언리얼 설정에 대해 읽어보실 수 있지만, 이 페이지에서는 새티스팩토리 모드에서 가장 중요한 설정들을 다룰 것입니다.
입력란을 편집한 후, 변경 사항이 포함된 파일을 업로드할 수 있도록 모드를 다시 패키징하십시오.
기본 입력란
다음 입력란은 언리얼의 일반 uplugin 형식의 일부이며, 모딩 툴킷에 의해 추가 기능이 제공됩니다.
| 매개변수 | 기능 설명 |
|---|---|
Version |
이 정수는 |
VersionName |
이 문자열은 |
FriendlyName |
이 문자열은 게임 내 로드된 모드 목록 및 구성 화면에 표시될 모드의 이름입니다. |
Description |
이 문자열은 게임 내 로드된 모드 목록 및 구성 화면에서 누군가가 모드를 볼 때 표시됩니다. |
CreatedBy |
이 문자열은 게임 내 로드된 모드 목록 및 구성 화면에서 누군가가 모드를 볼 때 작성자 이름 섹션에 표시됩니다. |
DocsURL |
여기 링크가 제공되면, 게임 내 로드된 모드 목록에서 클릭 시 URL을 열 수 있는 버튼이 표시됩니다.
|
SupportURL |
여기 링크가 제공되면, 게임 내 로드된 모드 목록에서 클릭 시 URL을 열 수 있는 버튼이 표시됩니다.
|
특수 입력란
SML 및 SMR은 플러그인 설명 파일에 추가 입력란을 포함해야 합니다. 이 중 가장 중요한 것은 SemVersion, GameVersion 및 모드 의존성 목록입니다.
|
모드가 특별히 SML 없이 작동하도록 설계된 경우가 아니라면 SML이 아래 설명된 대로 플러그인 입력란에 나열되어 있는지 확인하십시오. |
아래는 SML 및 SMR이 요구하는 모든 추가 입력란에 대한 설명입니다.
| 매개변수 | 기능 설명 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
SemVersion |
모드의 버전 번호입니다. 새로운 배포와 함께 항상 증가해야 하며,
semver 형식을 따라야 합니다.
요약하자면, 형식은
모드의 프리릴리스 버전을 배포하고 싶다면,
확장된
|
||||||||||||
GameVersion |
이 모드가 개발/테스트된 게임 빌드 버전 번호에 대한 버전 범위 지정자입니다.
미래의 게임 빌드 번호가 무엇인지 모르기 때문에, 현재로서는 최소 범위(예: |
||||||||||||
Plugins |
일반 uplugin 플러그인 배열에 추가 기능이 추가되었습니다.
여기에서 다른 모드 참조(또는 언리얼 플러그인)를 나열할 수 있으며,
SMM은 모드를 설치할 때 다운로드해야 함을 알고 있습니다.
모드 참조로 플러그인을 추가하면,
나열된 모드가 모드의 의존성이 됩니다.
SML과 분리된 모드를 생성하지 않는 한 SML 플러그인은 기본적으로 항상 여기에 나열되어야 하며, 모드가 지원하는 SML 버전을 지정할 수 있습니다. 각 플러그인은 다음 속성을 가진 객체로 나열되어야 합니다.
|
||||||||||||
RemoteVersionRange |
멀티플레이에서 원격 측에서 수락되는 버전의 Semver 범위입니다.
이 입력란은 원격 측에서 특정 버전의 모드가 설치되어 있어야 참여할 수 있도록 합니다.
이 입력란의 형식은 위의 플러그인 |
||||||||||||
RequiredOnRemote |
멀티플레이에서 모드가 양측에 있어야 하는지 제어합니다.
클라이언트가 연결할 때, 호스트는 자신의 모드 목록을 클라이언트의 목록과 비교합니다.
호스트의 모드에 |
예시
여기 JSON 형식의 몇 가지 예시 .uplugin 이 제시됩니다.
블루프린트 전용 모드의 .uplugin 예:
{
"FileVersion": 3,
"Version": 6,
"SemVersion": "6.2.1",
"VersionName": "6.2.1",
"FriendlyName": "예시 블루프린트 전용 모드",
"Description": "블루프린트 콘텐츠만 포함된 모드의 .uplugin 예시",
"Category": "모딩",
"CreatedBy": "새티스팩토리 모딩 팀",
"CreatedByURL": "https://github.com/satisfactorymodding/SatisfactoryModLoader",
"DocsURL": "https://docs.ficsit.app",
"MarketplaceURL": "",
"SupportURL": "",
"CanContainContent": true,
"IsBetaVersion": false,
"IsExperimentalVersion": false,
"Installed": false,
"LocalizationTargets": [
{
"Name": "ExampleMod",
"LoadingPolicy": "Always"
}
],
"Plugins": [
{
"Name": "SML",
"Enabled": true,
"SemVersion": "^3.9.0"
}
],
"GameVersion": ">=365306"
}
C++ 및 블루프린트 모드의 .uplugin 예:
{
"FileVersion": 3,
"Version": 6,
"VersionName": "6.2.1",
"SemVersion": "6.2.1",
"FriendlyName": "예시 하이브리드 모드",
"Description": "블루프린트 콘텐츠와 C++ 모듈을 모두 포함하는 모드의 .uplugin 예시",
"Category": "모딩",
"CreatedBy": "새티스팩토리 모딩 팀",
"CreatedByURL": "https://ficsit.app/",
"DocsURL": "https://docs.ficsit.app/",
"MarketplaceURL": "",
"SupportURL": "",
"CanContainContent": true,
"IsBetaVersion": false,
"IsExperimentalVersion": false,
"Installed": false,
"Modules": [
{
"Name": "ExampleHybridMod",
"Type": "Runtime",
"LoadingPhase": "PostDefault"
}
],
"Plugins": [
{
"Name": "SML",
"SemVersion": "^3.9.0",
"Enabled": true
},
{
"Name": "DependencyMod",
"SemVersion": "^1.3.0",
"Enabled": true
}
],
"GameVersion": ">=365306"
}
SMR UPlugin 검증기
uplugin 파일의 형식을 확인하고 싶다면, SMR은 도움 페이지에서 검증기를 제공합니다. uplugin 파일을 오른쪽 상자에 붙여넣으면, 아래 상자에 오류 메시지가 표시됩니다.
검증기가 완벽하지는 않지만, 업로드 중 발생할 수 있는 많은 오류를 해결하는 데 도움이 될 수 있습니다. 검증에 실패하면, 누락된 쉼표나 일치하지 않는 중괄호 및 대괄호와 같은 문제를 주의 깊게 살펴보십시오.
형식 문제를 피하려면 에디터에서 알파킷 위젯을 사용하는 것이 좋습니다!
이 단계에서 막히면 디스코드에서 문의해 보십시오.
배포 패키지 만들기
모드를 배포할 준비가 되면, 업로드를 위해 모드를 패키징해야 합니다.
지금까지 무시했던 "알파킷 배포" 탭을 사용할 시간입니다.
알파카 로켓 버튼을 클릭하거나 파일 > 알파킷 배포 를 클릭하여 엽니다.
배포 대상 설명
여러 가지 다른 버전의 새티스팩토리를 다운로드할 수 있다는 것을 알고 계실 것입니다.
안정적(주요 분기) 버전과 실험적(EXP, 초기 기능 테스트) 분기 간의 구분은 상대적으로 잘 알려져 있습니다. 그러나 각 플랫폼(대상)에 대한 게임의 약간 다른 빌드도 있습니다. 각각의 안정적 및 실험적 변형이 있습니다:
-
Windows- 새티스팩토리의 클라이언트 버전이며, 게임을 플레이하기 위해 실행하는 버전입니다. 리눅스에서 게임을 하는 사람들은 여전히 이 버전을 사용하며, 호환성/에뮬레이션 레이어를 통해 실행합니다. -
Windows Server- 새티스팩토리의 Windows 전용 서버 버전입니다. 시각적 인터페이스가 없으며, Windows에서 서버를 실행하는 데 사용되며, 다소 드뭅니다. -
Linux Server- 새티스팩토리의 Linux 전용 서버 버전입니다. 이는 대부분의 전용 서버가 실행하는 버전이며, 특히 제3자 서비스에서 호스팅됩니다.
스팀과 에픽을 위한 Windows 클라이언트의 약간 다른 버전도 있습니다. 각 플랫폼에서 사용 가능하도록 모드를 컴파일하려면 약간 다른 방식으로 컴파일해야 하며, 특히 Linux 서버와 호환되도록 해야 합니다.
다행히도, 알파킷은 모든 3개의 대상 플랫폼과 2개의 런처 변형에 대해 모드를 컴파일하는 작업을 처리합니다!
|
로컬에서 싱글 플레이로 모드를 테스트하는 동안, 사용하지 않는 다른 플랫폼을 위해 코드를 컴파일하고 패키징하는 것은 시간 낭비입니다. 그래서 '선택 알파킷(개발)' 및 개발 '알파킷!' (이 모드만) 버튼은 테스트 중에 관심 있는 대상만 컴파일하며, "게임 경로 복사" 값에서 감지할 수 있을 때만 에픽/스팀 클라이언트의 변형을 컴파일합니다. |
모드 파일 내보내기 작동 방식
지금까지는 알파킷 개발의 '모드 디렉터리로 복사' 기능을 사용하여 테스트를 위해 게임의 폴더에 모드 파일을 배치했을 것입니다.
별개로, '선택 알파킷(개발)' 또는 '알파킷!' (이 모드만) 버튼을 사용하면
<시작 프로젝트 폴더>/Saved/ArchivedPlugins/모드참조/모드참조-대상플랫폼이름.zip 에 위치한 보관 zip 파일이 생성됩니다.
이 폴더는 시작 프로젝트의 Saved 폴더에 있으며,
모드의 Saved 폴더가 아닙니다.
알파킷 배포
'선택 알파킷(배포)' 및 배포 '알파킷!' (이 모드만) 버튼은
모드를 모든 대상에 대해 하나의 다중 대상 zip 파일로 컴파일하고 패키징합니다.
아래의 예시 이미지에서, ExampleMod에 대해 알파킷! 을 클릭하면 모든 3개의 대상에 대해 빌드됩니다.

모드 옆의 '알파킷!'(이 모드만) 버튼을 누르고 완료될 때까지 기다리십시오. 프로젝트의 C++ 코드가 이전에 건너뛴 대상을 위해 컴파일되기 때문에 배포를 위한 패키징에는 상당한 시간이 소요될 수 있지만, 이후 실행은 더 빠를 겁니다.
모드를 알파킷 배포를 통해 패키징을 최초로 완료하면, 그 열에 새 폴더 버튼이 나타날 것입니다. 버튼을 클릭하면 해당 모드의 zip 파일이 포함된 앞서 언급한 보관된 플러그인 폴더로 이동하여 쉽게 검사하고 업로드할 수 있습니다.
배포 과정은 모든 빌드 대상을 포함한
모드참조.zip 압축 파일을 생성할 것입니다.
이 파일은 나중에 모드 저장소에 업로드할 파일입니다.
zip 파일의 내용을 확인하여 예상한 대로인지 확인하십시오. 어떤 이유로든 모드에 추가 파일이 패키징되어야 하는 경우, 알파킷이이 빌드할 때 이를 포함하도록 지시하는 방법은 여기에서 확인하십시오.
모드 참조를 변경할 마지막 기회
앞서 언급한 모드 참조 섹션에 따르면, 모드를 배포하면 더 이상 모드 참조를 변경할 수 없습니다.
변경하기로 결정하면, 여러 파일을 수정해야 하며, 그 중 대부분은 해당 페이지에 설명되어 있습니다.
새티스팩토리 모드 저장소에 업로드
모드 페이지 및 배포를 생성하려면 SMR에 업로드 페이지의 지침을 따르십시오.