Make Unreal REAL.
article thumbnail
멀티 플레이어 플러그인 제작: 사용성 개선

Unreal Engine 5 C++ Multiplayer Shooter 현재 세션 생성 성공 후 UWorld::ServerTravel() 함수를 통해 이동할 레벨의 경로가 "/Game/ThirdPerson/Maps/Lobby"로 하드코딩 되어 있다. 메뉴 클래스의 MenuSetup() 함수에서 세 번째 인자로 받아, Listen 서버로 열 레벨을 사용자가 지정할 수 있도록 변경한다. 구현부에서 FString::Printf() 함수를 이용해, 전달 받은 경로에 "?listen" 문자열을 붙여 ServerTravel() 함수에 전달할 최종 문자열을 만든다. 하드코딩 되어 있던 문자열을 멤버 변수로 교체한다. Listen 서버로 열 레벨을 인자로 받도록 변경했다.

article thumbnail
멀티 플레이어 플러그인 제작: 세션 시작

Unreal Engine 5 C++ Multiplayer Shooter 강의에서는 세션의 시작기능은 사용하지 않지만 한 김에 구현해둔다. 세션의 시작은 온라인 세션을 Progress(진행 중) 상태로 표시하는 것이다. 이때부터는, FOnlineSessionSettings::bAllowJoinInProgress 옵션이 false이면 세션에 참가할 수 없다.

article thumbnail
멀티 플레이어 플러그인 제작: 참가자 확인

Unreal Engine 5 C++ Multiplayer Shooter 멀티 플레이어에서 가장 중요한 클래스 2개는 게임 모드(Game Mode)와 게임 스테이트(Game State)이다. 게임 모드는 다른 레벨로 언제 이동할지, 스폰 위치를 어떻게 정할지 등 게임의 룰을 관리한다. 플레이어가 들어오고 나갈 때 호출되는 PostLogin(), Logout() 이벤트 함수가 구현되어 있다. 게임에 참가할 때 PostLogin() 함수가 호출되며, 떠날 때 Logout() 함수가 호출된다. 게임 모드는 게임 스테이트에 접근할 수 있다. 게임 스테이트는 게임의 정보를 관리한다. 플레이어 점수와 같은 개인의 정보는 플레이어 스테이트에서 관리한다. 게임 스테이트는 플레이어 스테이트의 배열을 관리한다. Lobby ..

article thumbnail
멀티 플레이어 플러그인 제작: 위젯 바인딩 4

Unreal Engine 5 C++ Multiplayer Shooter 참가 버튼에 바인딩되어 있는 JoinButtonClicked() 함수를 구현한다. FindSessions() 함수에서 사용할 검색 설정을 멤버 변수로 만든다. FindSessions() 함수를 구현한다. 세션 검색 완료 시에 발동할 델리게이트 리스트에는 FindSessionsCompleteDelegate를 추가하고, Menu 클래스에 알리기 위한 델리게이트는 자체적으로 발동한다. 세션 검색 완료 델리게이트 리스트에 델리게이트를 통해 등록했던 OnFindSessionsComplete() 함수를 구현한다. 검색에 성공해도 결과가 0개이면 실패로 처리한다. 세션 검색 완료 시 델리게이트를 통해 Menu 클래스에 알려졌을 때 호출되는 OnF..

article thumbnail
멀티 플레이어 플러그인 제작: 위젯 바인딩 3

Unreal Engine 5 C++ Multiplayer Shooter 헤더를 포함한다. 세션 생성 이외에 검색, 참가, 하괴, 시작 시에도 메뉴 클래스에 알리기 위해 델리게이트 타입을 선언한다. 다이나믹 델리게이트에 등록할 콜백 함수의 인자는 모두 BP와 호환되는 타입이어야 한다. FOnlineSessionSearchResult와 EOnJoinSessionCompleteResult::Type은 BP와 호환되지 않는 타입이기 때문에, 일반 델리게이트로 선언해 사용해야 한다. 콜백 함수는 UFUNCTION() 매크로를 사용하지 않는다. 다이나믹 델리게이트와 일반 델리게이트는 인자 선언 시 콤마(,)에 차이가 있으므로 주의한다. 각각의 델리게이트와 콜백 함수를 선언한다. 헤더를 포함한다. 생성자에서 각 기능..

article thumbnail
멀티 플레이어 플러그인 제작: 위젯 바인딩 3

Unreal Engine 5 C++ Multiplayer Shooter 델리게이트를 통해 종속성을 유지하는 건 좋은 방법이다. 델리게이트에 누가 함수를 등록했는지 알 필요가 없다. 다이나믹 델리게이트는 직렬화가 가능해서 BP 그래프에서 저장, 로드될 수 있다. BP에서 델리게이트는 이벤트 디스패처이다. Menu 위젯에서 Host 버튼을 눌러 MultiplayerSessionsSubsystem의 CreateSession() 함수를 호출하고 난 후, 세션 생성이 완료되면 다시 Menu 클래스에 알리기 위해 FMultiplayerOnCreateSessionComplete라는 새로운 델리게이트 타입을 선언한다. 델리게이트 타입 선언 후 빨간 줄이 생길 때는 VS 파일을 재생성해주면 된다. 방금 Multiplay..

검색 태그