모드 배포하기
모드를 배포할 준비가 되었다고 생각되면, 제대로 작동하는지 확인하고 모드 저장소가 모드와 함께 작동할 수 있도록 필요한 정보를 설정하기 위해 몇 가지 추가 단계를 따라야 합니다.
로컬 테스트
모드를 배포하기 전에, 구현한 기능이 예상대로 작동하는지 확인해야 합니다.
예를 들어, 모드가 새로운 아이템, 제작법 또는 마일스톤을 추가하는 경우, 일반 플레이어의 입장에서 이를 해금하여 접근할 수 있는지 확인하십시오.
제작법의 경우, 제작법을 제작할 건물을 설정하고 실제로 작동하는지 확인하십시오. 예를 들어, 제작법이 아이템의 묶음 크기보다 더 많은 양을 요구하는 경우, 제작법이 유효해 보이더라도 기계는 작동할 수 없습니다.
모드에 구성 옵션이 있는 경우, 모드를 설치하는 모든 사용자가 기본 구성 옵션을 변경할 수 있다는 것을 인식하지 못할 수 있으므로, 지정한 기본 구성 옵션이 원하는 것인지 확인하십시오. 기본 구성 설정은 모드의 의도된 사용자 경험을 나타내야 합니다.
멀티플레이에서 클라이언트와 호스트 플레이어 모두에게 모드가 작동하는지 확인하십시오. 아이템, 도면, 제작법을 추가하는 모드의 경우 큰 문제가 되지 않지만, 추가 건물이나 다른 기능을 추가한 경우에는 문제가 될 수 있습니다.
모드를 테스트하는 방법에 대한 추가 정보는 테스트/멀티플레이 테스트 페이지에서 확인할 수 있습니다.
모드의 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에 업로드 페이지의 지침을 따르십시오.