▣ Default Level과 Lobby Level을 생성합니다.
▣ Player Blueprint에서 1번 키를 눌렀을 때, 2번 키를 눌렀을 때에 대한 노드를 완성합니다.
▣ Options 옵션이란?
역할:
레벨이 로드될 때 추가적인 설정이나 명령행 옵션을 전달하는 문자열입니다.
예를 들어, "open MyMap?listen"와 같이 사용하면 MyMap을 로드하면서? listen 옵션도 함께 적용됩니다.
▣ 사용 방식:
Open Level (by Name) 노드에서 Level Name과 함께 Options 입력란에 옵션 문자열을 넣어주면, 엔진은 이를 레벨 로딩 명령에 추가하여 처리합니다.
▣ 왜 Options에 listen을 넣어야 하는가?
리슨 서버 모드 지정:
listen 옵션은 현재 게임 인스턴스를 단순 클라이언트가 아니라 리슨 서버(Listen Server)로 실행하라는 의미입니다.
▣ 리슨 서버 (Listen Server) 란?
리슨 서버 (Listen Server) 는 한 컴퓨터에서 게임을 호스팅 하면서 동시에 플레이할 수 있는 모드입니다.
즉, 해당 인스턴스가 서버 역할을 수행하여 다른 클라이언트의 접속을 받을 수 있게 됩니다.
▣ 멀티플레이어 기능 활성화:
멀티플레이어 게임에서 플레이어가 직접 서버를 호스팅 하는 경우, 해당 인스턴스가 클라이언트 모드로 실행되면 다른 플레이어의 접속을 받을 수 없습니다.
따라서 Options에 listen을 추가하여,
open Lobby?listen
와 같이 명령어가 실행되면, 현재 인스턴스가 리슨 서버 모드로 로드되어 다른 클라이언트가 접속할 수 있게 됩니다.
▣ 정리
Options 옵션은 레벨 로딩 시 추가 설정을 위한 문자열 파라미터입니다.
listen 옵션을 넣으면, 해당 레벨이 리슨 서버 (Listen Server) 모드로 실행되어 호스트가 동시에 게임에 참여하면서 다른 플레이어의 접속을 받을 수 있습니다.
멀티플레이어 게임에서 리슨 서버를 구성하려면, Open Level (by Name) 노드의 Options에 listen을 꼭 추가해야 합니다.
▣ Execute Console Command 노드란?
기능:
게임 실행 중 콘솔에 직접 명령어를 입력한 것과 동일하게, 블루프린트에서 문자열 형태의 명령어를 실행할 수 있습니다.
주요 용도:
디버깅 및 테스트: 특정 설정 변경, 디버그 기능 활성화 등
레벨 전환: 다른 맵을 불러오거나 이동할 때
멀티플레이어 서버 접속: 특정 IP 주소로 서버에 접속하는 기능 등
▣ 언제 사용하나요?
레벨 전환이 필요할 때:
플레이어가 특정 조건이나 이벤트 후 다른 맵으로 이동해야 할 때, Execute Console Command를 통해 간단하게 맵 전환 명령어를 호출할 수 있습니다.
멀티플레이어 서버 접속:
게임 내 UI(예: 접속 버튼)를 만들어 플레이어가 특정 IP의 서버에 접속할 수 있도록 할 때, "open [IP주소]:[포트]" 명령어를 사용합니다.
디버깅/테스트:
개발 중에 엔진의 숨겨진 기능이나 설정을 실시간으로 변경하거나, 빠르게 테스트할 때 유용합니다.
▣ IP 주소는 명령프롤토콜에서 IPv4 주소 입력
▣ 패키징 전에 Lobby Map 리스트 등록 후 패키징
▣ 1번 컴퓨터에서 1번키를 누르고 리슨서버 생성 후 2번 키를 눌러 같은 와이파이에 있는 플레이어 불러옴
▣ OpenLobby() 설명:
이 함수는 ServerTravel을 사용하여 서버에서 로비(Lobby) 맵으로 이동합니다.
GetWorld()를 호출하여 현재 월드(UWorld*) 객체를 가져옵니다.
ServerTravel("/Game/Maps/Lobby?listen")을 실행하면 서버는 새로운 맵으로 이동하며,
?listen 옵션을 사용하여 서버가 리슨 서버 역할을 하도록 설정합니다.
ServerTravel은 서버에서만 실행 가능하며, 모든 클라이언트를 함께 새로운 맵으로 이동시킵니다.
▣ CallOpenLevel 설명:
이 함수는 UGameplayStatics::OpenLevel()을 사용하여 맵을 변경 합니다.
Address로 전달된 맵 이름(또는 IP 주소)을 기반으로 로드합니다.
*Address를 통해 FString을 const TCHAR*로 변환하여 함수에 전달합니다.
이 함수는 싱글플레이어 또는 로컬 플레이어 환경에서 맵을 변경할 때 사용됩니다.
서버-클라이언트 환경에서는 클라이언트가 강제로 맵을 변경하지 않으며, 서버만 새로운 맵으로 변경됩니다.
▣ CallClientTravel 설명:
이 함수는 ClientTravel()을 사용하여 클라이언트를 특정 주소로 이동하게 합니다.
GetGameInstance()->GetFirstLocalPlayerController()를 사용하여 첫 번째 로컬 플레이어의 APlayerController*를 가져옵니다.
ClientTravel(Address, ETravelType::TRAVEL_Absolute)을 호출하여 클라이언트를 Address로 이동시킵니다.
ETravelType::TRAVEL_Absolute: 절대 경로 이동을 의미하며, IP 주소 또는 맵 이름을 직접 입력하여 이동할 수 있습니다.
'[ Unreal5 ] > - 언리얼엔진5 실습' 카테고리의 다른 글
언리얼엔진5 Online Subsystem Steam Connection (0) | 2025.02.13 |
---|---|
언리얼엔진5 Online Subsystem Steam Setting (0) | 2025.02.13 |
언리얼엔진5 c++ virtual, override (0) | 2025.02.08 |
언리얼엔진5 c++ Class, 생성자, 기본멤버함수 (0) | 2025.02.08 |
언리얼엔진5 c++ int32 타입의 숫자를 FText로 변환 (0) | 2025.01.31 |
댓글