언리얼/언리얼 학습

FOnlineSessionSettings

코드망령 2026. 6. 3. 12:42

제가 학습한 것을 기준으로 만들어진 것이기 때문에 이 글 내용이 틀렸을 수도 있습니다.


FOnlineSessionSettings

FOnlineSessionSettings는 세션을 만들 때 OnlineSubsystem에게 넘겨주는 설정값 묶음이다.

직접 방을 생성하는 클래스라기보다는, 어떤 방식의 방을 만들지 설명하는 데이터 객체라고 볼 수 있다.

실제 세션 생성은 CreateSession()에서 이루어지며,
FOnlineSessionSettings에 설정한 값에 따라 세션의 동작이 결정된다.


기본 개념

TSharedPtr<FOnlineSessionSettings> SessionSettings = MakeShareable(new FOnlineSessionSettings());

기본 생성자에서는 대부분의 값이 다음과 같이 초기화된다.

false
0

즉, 대부분의 기능은 기본적으로 꺼져 있으며,
필요한 기능만 개발자가 직접 활성화하는 방식이다.


NumPublicConnections

공개 접속 슬롯 수

다른 플레이어가 일반적으로 참가할 수 있는 자리 수를 의미한다.

SessionSettings->NumPublicConnections = 4;

위 설정은 최대 4명이 참가 가능한 세션을 의미한다.


NumPrivateConnections

비공개 접속 슬롯 수

초대 전용 슬롯이나 예약 슬롯 등에 사용할 수 있다.

SessionSettings->NumPrivateConnections = 2;

모든 OnlineSubsystem에서 적극적으로 사용되는 것은 아니다.


bShouldAdvertise

세션을 검색에 노출할지 여부

SessionSettings->bShouldAdvertise = true;

true

  • FindSessions() 검색 가능
  • 다른 플레이어가 방을 찾을 수 있음

false

  • 방은 생성되지만 검색 결과에 나타나지 않을 수 있음

bAllowJoinInProgress

게임 진행 중 참가 허용 여부

SessionSettings->bAllowJoinInProgress = true;

true

게임이 시작된 후에도 참가 가능

false

게임 시작 이후 참가 불가


bIsLANMatch

LAN 세션 여부

SessionSettings->bIsLANMatch = true;

true

같은 네트워크 내부에서만 검색 가능

false

Steam, EOS 등의 온라인 서비스 사용


예시

SessionSettings->bIsLANMatch =
    IOnlineSubsystem::Get()->GetSubsystemName() == "NULL";

NULL Subsystem이면 LAN 세션으로 생성


bIsDedicated

전용 서버 여부

SessionSettings->bIsDedicated = true;

true

Dedicated Server

false

Listen Server


일반적인 Host 방식

SessionSettings->bIsDedicated = false;

플레이어가 직접 호스트하는 방식


bUsesStats

온라인 통계 시스템 사용 여부

SessionSettings->bUsesStats = true;

예시

  • 킬 수
  • 승패 기록
  • 점수 기록

실제 지원 여부는 OnlineSubsystem에 따라 다르다.


bAllowInvites

친구 초대 허용 여부

SessionSettings->bAllowInvites = true;

플랫폼이 제공하는 친구 초대 기능을 사용할 수 있다.


bUsesPresence

Presence 사용 여부

SessionSettings->bUsesPresence = true;

Presence란 현재 유저 상태 정보이다.

예시

  • 게임 접속 중
  • 로비 대기 중
  • 특정 세션 참가 중

활용 예시

Steam 친구 목록

친구가 현재 게임 플레이 중

같은 정보 제공


bAllowJoinViaPresence

Presence를 통한 참가 허용 여부

SessionSettings->bAllowJoinViaPresence = true;

예시

친구 목록 → 게임 참가

기능 지원


bAllowJoinViaPresenceFriendsOnly

친구만 Presence 참가 허용

SessionSettings->bAllowJoinViaPresenceFriendsOnly = true;

true

친구만 참가 가능

false

누구나 참가 가능


bAntiCheatProtected

안티치트 보호 세션 여부

SessionSettings->bAntiCheatProtected = true;

예시

  • VAC
  • PunkBuster
  • Easy Anti Cheat

실제 동작은 플랫폼마다 다르다.


bUseLobbiesIfAvailable

Lobby API 사용 여부

SessionSettings->bUseLobbiesIfAvailable = true;

플랫폼이 Lobby 기능을 지원하면

Session API
    ↓
Lobby API 우선 사용

UE5 Steam/EOS 멀티플레이에서 자주 사용된다.


bUseLobbiesVoiceChatIfAvailable

Lobby 음성 채팅 사용 여부

SessionSettings->bUseLobbiesVoiceChatIfAvailable = true;

Lobby 생성 시

  • 음성 채팅방 생성
  • 자동 참가

기능을 활성화한다.


SessionIdOverride

세션 ID 직접 지정

SessionSettings->SessionIdOverride = TEXT("MySession");

보통은 사용하지 않는다.

대부분 플랫폼이 자동 생성한다.


BuildUniqueId

빌드 구분용 ID

SessionSettings->BuildUniqueId = 1;

서로 다른 빌드끼리 세션 검색 결과가 섞이지 않도록 한다.

예시

빌드 ID
개발 빌드 1
테스트 빌드 2
출시 빌드 3

Settings

커스텀 세션 설정 저장소

TMap<FName, FOnlineSessionSetting>

매치 타입, 맵 이름, 게임 모드 등을 저장할 수 있다.


값 저장

SessionSettings->Set(
    FName("MatchType"),
    FString("FreeForAll"),
    EOnlineDataAdvertisementType::ViaOnlineServiceAndPing
);

<br>
#### EOnlineDataAdverisementType

Set으로 저장한 값을 어디에 노출하는지 정하는 옵션이다.

DontAdvertise

세션 안에는 저장하지만, 외부 검색결과나 Qos/ping 데이터로 노출하지 않음.

ViaPingOnly

온라인 서비스의 세션 검색 데이터에는 올리지 않고, 서버에 ping/Qos 질의를 했을 때만 전달되게 함.

ViaOnlineService

Steam, EOS같은 Online Subsystem의 세션 검색 결과에 포함되게 함.

ViaOnlineServiceAndPing

세션 검색 결과에도 나오고, ping/Qos응답에도 포함 될 수 있게 함.
---

## 값 읽기

FString MatchType;

SearchResult.Session.SessionSettings.Get(
FName("MatchType"),
MatchType
);


---

## 활용 예시

MatchType
MapName
GameMode
Difficulty


---

## MemberSettings

세션 전체가 아닌

플레이어 개별 설정 저장소

---

예시

플레이어 A
└ 팀 : Red

플레이어 B
└ 팀 : Blue

플레이어 C
└ 캐릭터 : Warrior


---

활용 가능 정보

-   팀 정보
-   역할 정보
-   선택 캐릭터
-   플레이어 상태

---

모든 OnlineSubsystem이 지원하는 것은 아니다.

---

## 정리

`FOnlineSessionSettings`

-   세션 생성 옵션을 저장하는 데이터 객체
-   직접 세션을 만드는 클래스는 아님
-   `CreateSession()` 호출 시 OnlineSubsystem에 전달됨

주요 설정

NumPublicConnections


공개 접속 슬롯 수

bShouldAdvertise


검색 노출 여부

bAllowJoinInProgress


중간 참가 허용 여부

bIsLANMatch


LAN 세션 여부

bUsesPresence


Presence 사용 여부

bAllowJoinViaPresence


친구 목록을 통한 참가 허용

bUseLobbiesIfAvailable


Lobby API 사용 여부

Settings


매치 타입, 맵 이름 등 커스텀 정보 저장

---

즉, `FOnlineSessionSettings`는

> "어떤 방을 만들 것인가?"

를 OnlineSubsystem에게 설명하는 설정 데이터 묶음이다.

설정을 모두 완료한 뒤

SessionInterface->CreateSession(...)

```

에 전달하면 OnlineSubsystem이 해당 설정을 기반으로 세션을 생성한다.

'언리얼 > 언리얼 학습' 카테고리의 다른 글

FInputModeUIOnly  (0) 2026.06.02
GameInstance  (0) 2026.06.01
GameMode  (1) 2026.06.01
Delegate (델리게이트)  (0) 2026.06.01