세션 설정
이 페이지는 작업 중입니다. |
SML3.5에서 도입된 세션 설정(게임 내에서 모드 저장 게임 설정으로 언급됨)은 고급 게임 설정과 유사한 기능으로, 모드가 게임 저장 기준으로 구성 정보를 저장할 수 있게 해줍니다. 고급 게임 설정이 활성화되지 않아도 사용할 수 있습니다.
세션 설정은 현재 맵 여행 URL에 저장되며, 로딩 과정 초기에 매우 쉽게 접근할 수 있습니다. 이는 향후 변경될 수 있습니다.
특정 레벨에만 세션 설정을 만들 수 있으며, 맞춤 레벨에 대한 구성 옵션을 제공하는 데 특히 유용합니다. 저장이 생성되기 전에 편집할 수 있습니다.
새로운 세션 설정 정의하기
세션 설정은 데이터 애셋으로 정의됩니다.
블루프린트에서 세션 설정을 만들려면, 콘텐츠 브라우저에서 우클릭하고
고급 자산 생성
> 기타
> 데이터 애셋
을 선택한 후 SMLSessionSetting
을 검색합니다.
Str Id 선택하기
세션 설정은 UFGUserSetting
에서 상속되며, 이는 게임이 설정 메뉴에서 구성 옵션을 정의하는 데 사용하는 클래스입니다.
"Str Id" 필드는 세션 설정의 고유 식별자이며, 나중에 세션 설정의 값을 검색하는 데 사용됩니다. 아래 표에서 Str Id의 예시와 선택 시 유의해야 할 사항을 확인하십시오.
✔️ 좋은 예시 | ❌ 나쁜 예시 |
---|---|
✔️ 모드 참조를 ID 접두사로 사용하여 모드 간에 고유성을 보장합니다. |
❌ 다른 모드가 이 이름으로 세션 설정을 구현할 수 있어 충돌이 발생할 수 있습니다. |
✔️ 세션 설정은 문자열 ID로 참조되므로, 상세하고 고유한 이름을 부여하면 코드에서 설정의 모든 사용을 쉽게 찾을 수 있습니다. |
❌ "뭘 위한 배수였지?" 이 설정이 무엇을 제어하는지 잊기 쉽고, 미래에 다른 "배수"를 추가하기로 결정하면, 이것과 혼동될 수 있습니다. |
✔️ 세션 설정을 읽고 쓰기 위해 유형별 메서드를 사용해야 하므로, 설정의 유형을 ID의 일부로 포함하는 것을 고려하십시오. 불행히도 잘못된 getter 메서드를 사용하는 것은 현재 조용한 오류로, FG 옵션 시스템의 구현 방식 때문에 이 문제를 추적하기가 특히 어렵습니다. |
|
✔️ 유사한 이름이나 기능을 가진 여러 설정을 제공하는 경우, 어떤 건물/기능에 설정이 적용되는지를 나타내는 것을 고려하십시오. |
세션 설정 동작 선택하기
UFGUserSetting
의 모든 속성이 세션 설정과 관련이 있는 것은 아닙니다.
어떤 속성이 효과가 있는지 실험해 보아야 합니다.
발견한 내용을 바탕으로 "이 페이지 편집"을 통해 이 문서 페이지를 업데이트해 주십시오.
"Use CVar" 필드를 체크하는 것은 게임 콘솔을 통해 세션 설정의 값을 수정할 수 있도록 하려는 경우에만 필요합니다.
SML은 세션 설정에 대해 다음 속성 값을 자동으로 강제합니다. 이 속성을 변경하면 애셋이 다음에 로드될 때 이 값으로 자동으로 재설정됩니다.
-
ShowInBuilds:
Public Builds
로 설정하여 세션 설정이 사용자에게 표시되도록 합니다. -
ManagerAvailability:
USM MAX
, 이는 유효하지 않은 값으로, 설정이 기본 게임 옵션 메뉴에 표시되지 않도록 합니다. -
IsSettingSessionWide:
true
로 설정하여 멀티플레이 클라이언트가 세션 설정을 수정하고 변경 사항이 저장 파일에 저장될 수 있도록 합니다.
세션 설정을 저장 생성 시에만 편집 가능하게 하려면, "게임에서 표시하지 않음" 가시성 제외자를 사용하십시오.
등록
세션 설정은 플레이어가 사용할 수 있도록 등록해야 합니다.
세션 설정을 등록하려면, 모드의 게임 인스턴스 모듈에서 관련 배열에 나열해야 합니다.
세션 설정을 등록하면 SML 세션 설정 메뉴에서 구성할 수 있게 되며, 이는 월드 생성 시와 일시 정지 메뉴에서 모두 사용할 수 있습니다.
세션 설정 읽기 및 쓰기
세션 설정의 값을 읽으려면 세션 설정 관리자에서 "Get <뭐시기> Option Value" 메서드를 사용하십시오. 변경 사항에 구독하려면 "Subscribe to Dynamic Option Update"를 사용하십시오.
세션 설정의 값을 프로그래밍적으로 수정하려면, 세션 설정 관리자에서 "Set <뭐시기> Option Value" 메서드를 사용하십시오.
ExampleMod에서 세션 설정의 예시와 값을 읽는 방법을 확인할 수 있습니다. ExampleMod 레벨 블루프린트와 게임 월드 모듈에서 예시가 있습니다.
정수형 세션 설정 값을 읽는 예시 C++:
// self->GetWorld()는 월드 컨텍스트를 얻는 다른 방법으로 대체할 수 있습니다.
USessionSettingsManager* SessionSettings = self->GetWorld()->GetSubsystem<USessionSettingsManager>();
auto optionValue = SessionSettings->GetIntOptionValue("모드참조.IntSessionSetting");
언리얼 콘솔 명령어
세션 설정이 CVar를 사용하도록 구성된 경우,
언리얼 콘솔 명령어를 사용하여 값을 설정할 수 있습니다.
예를 들어 SML.ForceAllowCheats 1
은 SML 세션 설정 ForceAllowCheats
를 1로 설정합니다.
세션 설정 vs 모드 구성
TODO
모드 구성은 사용자 인터페이스나 시각적 요소에 더 적합하며, 사용자의 게임과 함께 저장되고 저장 간에 유지됩니다.
세션 설정은 사용자 정의 레벨에 대한 옵션과 같이 저장 파일별 선택이 필요한 것에 적합합니다.
세션 설정 값은 멀티플레이에서 복제됩니다.