본문 바로가기
[ Unreal5 ]/- 언리얼엔진5 실습

언리얼엔진5 Online Subsystem Steam Connection

by MRG 2025. 2. 13.
728x90
반응형

 

 

▣ TSharedPtr<IOnlineSession, ESPMode::ThreadSafe> OnlineSessionInterface;
IOnlineSession을 스마트 포인터(TSharedPtr)로 관리하여 세션 인터페이스를 안전하게 사용.
ESPMode::ThreadSafe를 사용하여 멀티스레드 환경에서도 안전하게 공유할 수 있도록 설정.

 

  멀티스레드(Multithreading)란 하나의 프로그램(프로세스) 내에서 여러 개의 작업(스레드, Thread)을 동시에 실행하는 기술을 의미합니다.

  스레드(Thread)란?
스레드는 프로세스 내에서 실행되는 작은 작업 단위.
하나의 프로그램(프로세스)은 여러 개의 스레드를 가질 수 있음.


  멀티스레드란?
CPU의 여러 코어를 활용하여 여러 작업을 동시에 실행하는 방식.
Unreal Engine 같은 게임 엔진에서는 물리 연산, AI 처리, 네트워크 처리 등을 병렬로 실행하기 위해 사용됨.

 

▣  IOnlineSession을 스마트 포인터(TSharedPtr)로 관리하여 안전한 메모리 사용
Unreal Engine에서는 스마트 포인터(TSharedPtr)를 사용하여 객체의 메모리를 자동 관리할 수 있음.
TSharedPtr은 참조 횟수(Reference Counting)를 기반으로 하여, 더 이상 사용되지 않으면 자동으로 메모리를 해제.


▣  멀티스레드 환경에서 안전하게 사용 (ESPMode::ThreadSafe)
ESPMode::ThreadSafe를 사용하면 멀티스레드 환경에서도 안전하게 공유 가능.
Unreal Engine의 온라인 서브시스템은 멀티스레드로 동작할 수 있으므로, ThreadSafe 모드를 지정하여 충돌을 방지.


▣ OnlineSessionInterface를 통해 세션을 관리하기 위해 필요
OnlineSessionInterface를 사용하여 멀티플레이어 세션을 생성하고, 참가하고, 종료할 수 있음.

 

언리얼 엔진 5에서는 C++ 표준 스마트 포인터(std::unique_ptr, std::shared_ptr, std::weak_ptr)와 유사한 기능을 제공하는 자체 스마트 포인터 시스템을 사용합니다.
이는 엔진의 메모리 관리 및 퍼포먼스를 최적화하기 위해 설계되었습니다.

 

📌 1. 언리얼 스마트 포인터의 종류

언리얼 엔진은 크게 네 가지의 스마트 포인터를 제공합니다.

스마트 포인터설명

TUniquePtr<T> std::unique_ptr<T>와 동일하게 단일 소유권을 가짐
TSharedPtr<T> std::shared_ptr<T>와 비슷하게 참조 카운트 방식
TWeakPtr<T> std::weak_ptr<T>와 유사하게 약한 참조(Weak Reference)
TSharedRef<T> TSharedPtr<T>와 동일하지만, 널(nullptr) 허용 불가

📌 2. 언제 사용하는가?

스마트 포인터사용 상황

TUniquePtr<T> 오직 한 객체만 소유할 때 (동적 할당 후, 다른 곳에서 참조 불필요)
TSharedPtr<T> 여러 곳에서 공유된 소유권이 필요할 때
TWeakPtr<T> 순환 참조(Circular Reference) 방지, 유효성 확인
TSharedRef<T> 항상 유효한 객체가 필요할 때 (null 체크 불필요)

 

 

 

 

▣ IOnlineSubsystem::Get()
현재 사용 중인 온라인 서브시스템(Steam, EOS 등)을 가져옴.
DefaultEngine.ini에서 DefaultPlatformService=Steam이 설정되어 있다면, OnlineSubsystemSteam을 가져옴.

 

▣ OnlineSubsystem->GetSessionInterface();
현재 활성화된 온라인 서브시스템에서 세션 인터페이스를 가져옴.
이 인터페이스를 사용하면 세션을 생성, 참가, 검색, 종료하는 기능을 수행 가능.

 

 

▣ Play를 클릭하면 NULL이 출력됩니다. 

 

 

▣ 패키징 후에 

 

▣ 스팀 실행 후 로그인하고

 

 

 

▣ 패키징된 exe 파일로 실행하면 이렇게 STEAM이 출력됩니다. 

 

▣ API

https://dev.epicgames.com/documentation/ko-kr/unreal-engine/online-subsystem-in-unreal-engine

 

https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Plugins/OnlineSubsystem/Interfaces/IOnlineSession/GetNamedSession

 

728x90
반응형

댓글