플러그인 설정 및 게임 월드 모듈
모드를 시작하려면 알파킷의 마법사를 사용하여 새로운 언리얼 플러그인을 만들어야 합니다. 모든 모드는 별도의 언리얼 플러그인이어야 합니다.
모드 참조
계속하기 전에 "모드 참조" 개념에 대해 이야기해야 합니다. 이것은 자주 언급될 것입니다.
모드 참조는 본질적으로 '모드의 고유한 이름’입니다. 이 모드 참조는 클래스 이름, 파일 이름, 폴더 이름 및 여러 다른 곳에서 사용됩니다. 모드를 새티스팩토리 모드 저장소에 업로드할 때, 거기에서 모드 참조를 제공해야 합니다.
언리얼 플러그인(모드라고도 함)은 모드 참조를 이름으로 사용해야 하며, 작성하는 모든 C++ 모듈은 모드 참조를 이름으로 하는 소스 폴더에 있어야 합니다.
모드 참조에는 언더스코어(_
)를 제외한 특수 문자가 포함될 수 없으며(예: +
, #
, .
, ß
, …),
공백도 마찬가지입니다.
모드의 최종 사용자는 모드의 표시 이름(공백 및 특수 문자를 포함할 수 있음)을 보게 되며, 모드 폴더, 로그 메시지 및 파일 경로의 경우는 예외입니다.
파스칼케이스 명명 규칙을 따르는 것을 강력히 권장합니다. 즉, 모드 참조의 각 '단어’는 대문자로 시작하고 나머지는 소문자입니다.
다음은 몇 가지 가능한 모드 이름과 제안된 모드 참조의 예입니다.
모드 표시 이름 | 모드 참조 |
---|---|
예제 모드 |
|
Rob의 매우 멋진 모드 |
|
새티스팩토리 모드 로더 |
모드의 참조는 표시 이름의 텍스트와 정확히 일치할 필요는 없습니다. |
언리얼 플러그인 생성
SML3.0부터 모드는 이제 언리얼 플러그인이며, 로드는 언리얼 자체에서 처리됩니다.
알파킷에는 새티스팩토리 모드를 위한 플러그인 파일을 생성하는 데 도움이 되는 마법사가 포함되어 있습니다. 알파킷 개발 패널을 아직 열지 않았다면, 여기의 지침을 따르십시오.
모드 생성 마법사를 열려면 알파킷 개발 패널에서 모드 생성
버튼을 클릭하십시오.
커뮤니티에서 생성한 모드 템플릿이 여기에 나타납니다.
블루프린트만
템플릿을 선택하십시오.
마법사는 또한 모드 이름을 입력하라는 메시지를 표시합니다.
플러그인의 이름은 반드시 모드의
모드 참조여야 합니다.
이 문서 예제에서는 DocMod
를 모드 참조로 사용하겠습니다.
자신의 모드를 시작할 때는 이와 다른 모드 참조로 새로운 플러그인을 생성해야 합니다.
선택적으로 "디스크립터 데이터" 섹션을 작성하거나 나중에 편집할 수 있도록 비워둘 수 있습니다.
모드 참조에 대한 주의 사항을 반드시 읽어보십시오. 모드 참조가 이러한 형식 규칙을 따르는 것이 중요합니다. |
"콘텐츠 디렉터리 표시"를 체크한 상태로 두고 모드 생성
을 누르십시오.
모드 속성 편집
새로운 플러그인이 이제 알파킷의 모드 목록에 나타나야 합니다.
목록 옆의 편집
버튼을 클릭하여 알파킷 모드 속성 마법사를 엽니다.
여기에서 모드에 대한 추가 세부정보를 입력할 수 있습니다. 왼쪽의 레이블 위에 마우스를 올리면 그 목적을 설명하는 툴팁이 표시됩니다. 현재 예제 모드를 작업 중이므로, 이 필드의 대부분은 우리에게 관련이 없지만, 모드를 공개적으로 출시하기 전에 나중에 다시 돌아올 것입니다.
Created By
란에 자신의 이름을 추가하십시오.
그 외에는 기본값이 현재로서는 괜찮습니다.
모드에 아이콘을 추가하고 싶다면, 여기에서 세 점 파일 선택기를 통해 할 수 있습니다. 선택하는 이미지는 정사각형이며 최소 128x128 픽셀이어야 합니다. 이 이미지를 나중에 모드의 ficsit.app 페이지에서 사용할 수 있도록 더 높은 해상도 버전을 보관하는 것이 좋습니다.
의존성 목록은 현재 SML 버전에 대한 의존성으로 미리 채워져 있어야 합니다.
모드의 파일
모드의 파일은 콘텐츠 브라우저의 플러그인 하위 폴더 내에서 찾을 수 있습니다.
디스크에서는 <프로젝트>/Mods/<모드 참조>
의 모딩 프로젝트 폴더 내에 위치합니다.
이 폴더는 모드가 사용하는 모든 애셋(코드, 모델, 블루프린트, 텍스처 등)이 존재하는 곳입니다.
마법사에서 선택한 모든 설정은 모드의 .uplugin
파일에 저장되며,
자세한 내용은 여기에서 읽을 수 있습니다.
에디터 내에서 모드는 콘텐츠 브라우저의 콘텐츠 루트 폴더의 <모드 참조> 콘텐츠
하위 폴더에서 찾을 수 있습니다.
콘텐츠 브라우저에서 세팅
→ 플러그인 콘텐츠 표시
를 클릭해야 모드의 내용을 언리얼 에디터에서 볼 수 있습니다.
어떤 이유로든 에디터나 게임이 플러그인을 로드하지 않도록 하려면,
uplugin 파일의 확장자를 이것은 나중에 모드를 업데이트 할 때 유용합니다. 이전의 uplugin 파일이 |
선택 사항: 모드를 위한 깃 저장소 생성
버전 관리는 다른 사람과 모드에서 협업하는 데 필수적이며, 업데이트를 출시할 때 패치 노트를 작성하는 데 도움이 되며, 파일이 손상되었을 때 이전 버전으로 돌아갈 수 있습니다.
모드와 함께 작업하기 위해 깃을 설정하는 방법에 대한 가이드는 여기에서 찾을 수 있습니다. 이 가이드를 따르다가 잠시 멈추고 그 가이드를 따르는 것이 안전합니다.
여러 모드에서 작업하는 경우, 하나의 모딩 프로젝트만 설정하면 됩니다. (이것은 복제한 SatisfactoryModLoader 저장소가 될 수 있습니다.) 그리고 생성하는 각 모드는 이 프로젝트 설정의 플러그인이 될 것입니다. 각 플러그인의 폴더는 해당 개별 모드의 버전 관리 저장소입니다.
게임 월드 모듈 생성
이제 플러그인을 생성했으므로, 모든 것이 호출되고 등록되는 시작점을 만들어야 합니다. 참조할 수 있는 지점이 없으면 게임은 우리의 모드 콘텐츠를 로드할 수 없습니다!
우리의 경우, 시작점은 게임 월드 모듈이지만, 이는 항상 필요한 것은 아닙니다. 게임 월드 모듈은 새로운 도면을 정의할 수 있도록 해주는 새티스팩토리 모드 로더에서 정의된 도우미입니다. 이 도면을 통해 아이템, 제작법 등을 정의할 수 있습니다.
다른 유형의 모듈과 콘텐츠 로딩 시스템에 대해 배우고 싶다면, 모듈 시스템 페이지에서 더 많은 정보를 읽을 수 있습니다. |
모드의 콘텐츠 폴더 내에서,
빈 공간을 마우스 오른쪽 버튼으로 클릭하고 블루프린트 클래스
를 선택하여 기본 애셋을 생성합니다.
일반 섹션 옆의 삼각형을 눌러 닫고,
모든 클래스 섹션 옆의 삼각형을 눌러 확장합니다.
검색 상자에 GameWorldModule
을 입력하고
나타나면 선택하고 파란색 선택 버튼을 눌러 블루프린트를 생성합니다.
애셋의 부모 클래스로 |
이름을 RootGameWorld_여기에모드참조입력
으로 지정하십시오.
Root
접두사는 자체적으로 아무런 기능을 하지 않지만,
나중에 더 많은 게임 월드 모듈을 추가할 경우 식별하는 데 도움이 됩니다.
모드 참조를 포함한 이름을 부여함으로써,
충돌 로그에서 식별하기가 더 쉬워지고 에디터에서 서로 다른 모듈을 구별하는 데 도움이 됩니다.
이 모듈을 사용하여 제작법 및 기타 콘텐츠를 등록할 수 있습니다.
다음으로, 모듈을 두 번 클릭하여 블루프린트 설정을 엽니다.
SML이 자동으로 모듈을 감지하고 로드하도록 하려면,
Root Module
세부 정보 필드에서 이를 루트 모듈로 표시해야 합니다.
블루프린트 세부 정보 필드에서 새 모듈을 루트로 표시해야 합니다! 유형당 하나의 루트 모듈(인스턴스, 게임 월드, 메뉴 월드)이 있을 수 있습니다. 이렇게 하지 않으면 모듈이 조용히 무시되며, 나중에 생성하는 콘텐츠가 로드되지 않습니다. 이 실수는 나중에 테스트할 콘텐츠가 있을 때까지 명백하지 않을 것입니다. |
루트 모듈에 대해 더 알고 싶다면, 모듈 시스템 페이지에서 확인할 수 있습니다.
컴파일 및 저장
이제 첫 번째 모드 애셋을 생성했으므로, 이를 '컴파일’하고 저장해야 합니다. 언리얼 엔진 블루프린트에서 '컴파일’은 오류를 확인하고 나중에 패키징할 파일을 준비하는 데이터 검증 단계입니다.
에디터는 다양한 지표를 통해 애셋이 저장되지 않았음을 알려줍니다:
-
콘텐츠 브라우저에서 애셋 아이콘의 왼쪽 하단 모서리에 별표(*)가 나타납니다.
-
애셋을 열면, 상단 바의 탭에서 애셋 이름 끝에 별표가 나타납니다.
-
애셋 에디터 패널을 열면, 컴파일 버튼의 아이콘이 다르게 표시됩니다.
컴파일 및 저장하는 일반적인 방법은 애셋 에디터 패널의 왼쪽 상단에 있는 '컴파일' 버튼을 클릭하는 것입니다.
또 다른 방법은 F7
키를 눌러 동일한 버튼을 누르는 것입니다.
"컴파일시 저장: 성공시에만"을 활성화하여 저장 버튼을 누르지 않고도 저장할 수 있도록 하는 것을 권장합니다. |
모드 애셋을 생성하거나 편집할 때는 반드시 컴파일하고 저장하십시오!
파일을 컴파일하고 저장하지 않으면, 다음 번에 모드를 패키징하고 시도할 때 수정한 내용이 모드에 포함되지 않습니다. 이것은 문제를 해결하는 데 매우 혼란스러울 수 있습니다!
또한, 에디터가 저장하기 전에 충돌하면 모든 변경 사항을 잃게 됩니다. 컴퓨터 작업을 할 때 자주 듣는 말은 "일찍 저장하고 자주 저장하라"입니다.
이 규칙의 예외는
에디터에서 기본 게임 애셋 자리 표시자를 검사하는 경우입니다.
애셋을 열면 다른 자리 표시자가 누락된 것으로 감지되어 저장되지 않은 것으로 표시될 수 있습니다.
예를 들어, FactoryGame 애셋에서 BP_Explorer
를 열면 변경하지 않아도 저장되지 않은 것으로 표시됩니다.
이 자리 표시자 파일에 대한 변경 사항을 저장할 필요는 없습니다.
이 파일의 값을 수정한 후 실수로 저장하면, 나중에 잘못된 값을 저장하여 혼란을 초래할 수 있습니다.
모드 테스트
모드가 예상대로 작동하는지 확인하기 위해, 게임에서 사용할 수 있도록 모드를 패키징해 보겠습니다.
패키징하기 전에 파일 > 저장할 파일 선택…
을 통해 저장되지 않은 파일이 있는지 빠르게 확인할 수 있습니다.
아래와 같은 대화 상자가 나타납니다.
'선택 저장’을 클릭하여 이전에 놓친 파일을 저장하십시오.
아직 실제 콘텐츠를 추가하지 않았으므로, 모드는 실제로 아무것도 하지 않을 것입니다. 그러나 메인 메뉴의 로드된 모드 목록에 나타날 것입니다. 이것은 설정 과정에서 발생할 수 있는 문제를 잡을 수 있는 좋은 기회입니다. 이 문제는 나중에 발생할 수 있지만, 그 원인을 파악하기가 덜 명확할 것입니다. 지금 문제를 잡으면, 그 문제는 우리가 이 시점까지 수행한 작업으로 인해 발생했음을 알 수 있습니다. 조기에 테스트하고 자주 테스트하여 버그를 더 빨리 잡으십시오!
모드를 패키징하려면 알파킷을 실행하십시오. 사용 방법에 대한 정보는 프로젝트 설정 페이지에서 찾을 수 있습니다.
패키징 프로세스를 시작한 후, 원하는 경우 "알파킷 로그 표시" 텍스트를 클릭하여 알파킷 전용 로그 창을 열 수 있습니다. 이 정보는 UE 출력 로그에도 존재하지만, 다른 에디터 메시지와 혼합되어 있습니다.
알파킷이 완료되면 게임을 실행하십시오. 알파킷을 통해 게임을 실행하도록 설정하지 않았다면 말입니다. 모드는 아래 스크린샷에 표시된 메인 메뉴의 모드 목록에 나타나야 합니다.
이것이 올바르게 작동하더라도, 아래의 문제 해결 섹션을 반드시 읽어보십시오. 나중에 발생할 수 있는 오류를 처리하는 방법을 확인할 수 있습니다.
문제 해결
아래에는 이 시점에서 또는 나중에 모드 개발 중에 발생할 수 있는 오류에 대한 정보가 있습니다.
패키지 모드 작업 실패!
알파킷은 모드 패키징을 방해하는 무언가가 있을 때 에디터에서 이 메시지를 표시합니다.
이 메시지만으로는 오류에 대한 아무런 정보도 제공하지 않으므로,
알파킷 로그(파일 > 알파킷 로그
) 또는 출력 로그(창 > 출력 로그
)를 확인해야 합니다.
로그에 들어가면 빨간색 오류 메시지를 찾아보십시오. 이 메시지에는 작업 실패의 이유가 포함되어 있을 것입니다. 출력 로그를 사용하는 경우, 필터 드롭다운을 사용하여 오류만 표시할 수 있습니다.
경고 메시지가 수십 개 또는 수백 개 있을 수 있습니다 - 이는 예상되는 것이며, 일반적으로 문제는 아닙니다. 우리는 Coffee Stain Studios가 게임을 빌드하는 데 사용하는 파일의 전체 버전을 가지고 있지 않으므로, 다양한 언리얼 엔진 및 게임 시스템이 누락되거나 불완전한 조각에 대해 불평할 것입니다. 때때로 이러한 경고 메시지를 읽어보는 것이 좋지만, 경고 메시지만으로는 모드가 패키징되지 않는 원인이 될 가능성이 매우 낮습니다.
오류 메시지를 찾으면, 그들이 설명하는 문제를 수정하거나, 디스코드에서 도움을 요청하십시오.
디렉토리 삭제 실패 / 파일 삭제 실패
에디터가 게임이 이미 실행 중일 때 모드 파일을 게임 파일로 복사할 수 없습니다. 게임이 해당 파일을 잠그고 있기 때문입니다. 게임을 종료하고 다시 시도하십시오.
UATHelper: 패키지 모드 작업 명령줄 구문 분석 오류: 스크립트 DLL 로드 실패, 작업이 지원되지 않음
이 오류는 모드를 패키징할 때 발생할 수 있습니다.
이 오류는 컴퓨터가 다운로드한 파일 중 하나를 안전하지 않은 것으로 간주하고 실행을 거부하기 때문에 발생합니다.
전체 오류 메시지의 예:
UATHelper: Package Mod Task (Windows): Parsing command line: -ScriptsForProject=E:/SatisfactoryModLoader-master/FactoryGame.uproject PackagePlugin -Project=E:/SatisfactoryModLoader-master/FactoryGame.uproject -PluginName=DocMod -GameDir=E:/SatisfactoryEarlyAccess -CopyToGameDir
UATHelper: Package Mod Task (Windows): ERROR: Failed to load script DLL: E:\SatisfactoryModLoader-master\Build\Alpakit.Automation\Scripts\Alpakit.Automation.dll: Could not load file or assembly 'Alpakit.Automation, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. Operation is not supported. (Exception from HRESULT: 0x8013151
5)
이 문제를 해결하려면, 오류 메시지에 언급된 파일(이 특정 예에서는 E:\SatisfactoryModLoader-master\Build\Alpakit.Automation\Scripts\Alpakit.Automation.dll
)을 우클릭, 속성을 선택한 후 하단의 차단 해제 상자를 선택하십시오.
이 문제를 피하려면 Zip 파일을 다운로드하는 대신 Git을 사용하여 시작 프로젝트를 클론하십시오.
플러그인 로드 실패, 모듈을 찾을 수 없음
이 오류는 게임을 시작할 때 발생할 수 있습니다.
이 문제는 모드의 C++ 모듈이 런타임에 올바르게 로드되지 않았을 때 발생합니다.
정상적인 상황에서는 이 튜토리얼 단계에서 이 문제를 겪지 않아야 합니다.
왜냐하면 우리는 블루프린트만
템플릿에서 플러그인을 생성했기 때문입니다. 블루프린트 및 C++
템플릿을 사용했다고 해도 문제가 아닙니다.
C++ 코드가 변경되고 게임에서 테스트하려면 Shipping 프로파일을 빌드해야 합니다. 정상적인 상황에서는 알파킷이 오래된 경우 Shipping을 빌드합니다.
유사하게, C++ 코드가 변경되고 에디터에서 업데이트하려면 Development Editor를 빌드해야 합니다. 이 작업을 수행할 때는 에디터를 닫아야 합니다. 언리얼 엔진이 핫 리로딩을 구현하려고 하지만, 종종 실패하여 에디터를 충돌시킵니다.
이 문제는 일반적으로 Visual Studio에서 Shipping 프로파일을 빌드하여 해결할 수 있습니다. 또한 Visual Studio 프로젝트 파일을 다시 생성해야 할 수도 있습니다.
이 프로젝트는 …을(를) 요구하며, SML 플러그인에 대한 누락된 의존성이 있습니다.
이 오류는 게임을 시작할 때 발생할 수 있습니다.
아마도 게임에 새티스팩토리 모드 로더가 설치되어 있지 않기 때문에, 언리얼 엔진이 자신의 모드가 작동하기 위해 설치되어야 한다고 말하고 있습니다. 이전 페이지에서 SML 패키징 단계를 따라 SML의 복사본을 패키징할 수 있습니다.
손상된 데이터가 발견되었습니다. 설치를 확인하십시오.
이 오류는 게임을 시작할 때 발생할 수 있습니다.
먼저, 모드 없이 게임이 올바르게 로드되는지 확인하십시오. 게임 파일을 확인하여 올바르게 로드되는지 확인하십시오.
게임이 모드 없이 올바르게 로드되면, 잘못된 버전의 엔진이 설치되었을 가능성이 높습니다. 최신 버전의 문서를 따르고 있으며, 이전 설정 페이지에서 언급한 올바른 버전의 엔진과 시작 프로젝트를 다운로드했는지 확인하십시오.
그것이 문제가 아니라면, 모드가 최신 버전의 SML에 의존하고 있는지 확인하십시오. 프로젝트의 SML 버전은 알파킷 목록에서 SML의 모드 에디터 위젯을 열어 확인할 수 있습니다.
다음 단계
다음으로, 제작법과 도면을 생성하여 게임에서 새로운 생산 제작법을 잠금 해제하고 활용하는 방법을 알아보겠습니다.
이 단계에 대한 문서 페이지를 찾는 방법에 대한 복습이 필요하다면, 시작하기 섹션 헤더를 확인하십시오.