Make Unreal REAL.
article thumbnail
Unreal Engine 5 C++ Multiplayer Shooter

 

헤더를 포함한다.

 

 

세션 생성 시 사용할 설정은 나중에 다시 참고할 수도 있으니 멤버 변수로 선언한다.

 

 

CreateSession() 세션 생성 함수를 구현한다.

  • 만약 세션 생성에 실패하면, 저장해 둔 델리게이트 핸들을 이용해 델리게이트 리스트에서 델리게이트를 등록 해제한다.


NULL 온라인 서브시스템이면 bIsLANMatch 옵션을 true로 설정해, LAN 매치로 세션을 생성한다.

 

세션 생성에 문제가 있을 경우 bUseLobbiesIfAvailable 옵션을 true로 설정해본다.

 

 

UI를 띄우기 위해 초기화하는 MenuSetup() 함수에서 최대 참가 인원수와 매치 종류를 인자로 받도록 변경한다.

 

다른 레벨로 이동할 때 호출되는 UUserWidget::OnLevelRemovedFromWorld() 함수를 오버라이드한다.

  • 세션 생성 혹은 참가 뒤에 다음 레벨로 이동할 때, 입력을 게임 모드로 변경하기 위함이다.
  • 언리얼 엔진 5.1+ 버전에서는 OnLevelRemovedFromWorld() 함수가 존재하지 않으므로, NativeDestruct() 함수로 대체한다.

 

 

입력을 게임 모드로 변경하는 MenuTearDown() 함수를 선언한다.

 

최대 참가 인원수와 매치 종류를 저장할 멤버 변수를 선언한다.

 

 

구현부에도 인자를 추가하고 멤버 변수에 값을 저장한다.

  • 구현부에는 기본값을 적어주지 않는다.

 


CreateSession() 함수에 하드코딩된 값 대신 멤버 변수에 저장된 값을 전달한다.

 

세션 생성 후 Lobby 레벨을 Listen 서버로 열도록 한다.

 

 

MenuTearDown() 함수는 다른 레벨로 이동할 때 호출되며, 위젯을 뷰포트에서 제거한 후 입력을 게임 모드로 변경한다.

 

 

게임을 쉽게 종료시킬 수 있도록 ESC 키에 Quit Game 노드를 바인딩한다.

 


Steam 온라인 서브시스템에 연결하기 위해 매번 컴파일하고 패키징하는 대신, 컴파일 후 uproject 파일을 우클릭해 Launch game을 눌러 바로 실행해도 된다.

profile

Make Unreal REAL.

@diesuki4

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그