네트워크 모드
컴퓨터와 네트워크 멀티 플레이어 세션의 관계를 설명한다.
어플리 케이션을 담당하는 게임 인스턴스는 스탠드 언론, 클라이언트, 리슨 서버, 데디케이티드 서버의 네트워크 모드 중 하나를 사용할 수 있다.
스탠드 언론
- 원격 클라이언트의 연결을 허용하지 않는 서버로 실행 중에 있는 것을 의미한다.
클라이언트
- 클라이언트는 네트워크 멀티플레이어에서 서버에 연결된 클라이언트로 실행된다. 즉, 서버로 부터 받은 Proxy만 보여주는 역할을 담당한다.
리슨 서버
- 네트워크 멀티플레이어 세션을 호스팅하는 서버의 역할을 한다. 원격 클라이언트의 연결을 수락하고 로컬 플레이어를 서버에 배치한다.
- 게임을 가지고 있는 사용자라면 누구나 Listen 서버를 시작하고 플레이할 수 있다.
- 리슨 서버를 호스팅하는 플레이어는 다른 플레이어보다 유리한 위치에 있다.
- 서버 기능뿐만 아니라 클라이언트 기능도 같이 실행되어 부하가 많다.
데디케이티드 서버
- 원격 클라이언트의 연결을 허용하지만 로컬 플레이어가 없다.
- 효율적으로 실행하기 위해 그래픽, 사운드, 입력 등의 기능을 삭제해서 돌린다.
- 보다 많은 접속을 처리할 수 있고 대규모 멀티 플레이어, MMORPG 같은 게임에 주로 사용된다.
- 데디케이티드 서버는 클라우드 시스템 같은 것이 필요해 비싸고 구성하기 어렵다.
게임 모드 기반의 로그인 플로우 (PIE)
서버에만 존재하는 액터인 게임 모드가 로그인을 담당한다!
- 서버의 초기화 단계에서 서버를 담당할 어플리케이션을 실행되었지만 게임은 시작되지 않았다.
- 이때는 네트워크 기능도 활성화 되지 않은 상태로 스탠드 얼론 상태다.
- 스탠드 언론이나 서버의 경우 게임에서 중요한 심판 역할을 담당하는 게임모드 액터가 존재한다.
- 리슨 서버는 클라이언트와 서버의 기능이 함께 공존하는 방식으로 동작하기 때문에 게임에 참여해야한다.
- 이를 위해 게임모드를 사용해 플레이어를 대표하는 액터인 플레이어 컨트롤러를 생성한다.
- 자기 자신이 게임에 참여할 때도 게임 모드가 제공하는 로그인 과정을 통해 진행된다.
- 어플리케이션의 네트워크 모드는 스탠드 언론에서 리슨 서버로 변경되었으며, 클라이언트가 서버에 접속해 게임에 참가한다고 신호를 보낸다.
- 이때, 서버는 클라이언트의 접속 요청을 거부할 수 있다.
- 접속 요청을 받아들이면, 서버에서는 접속할 클라이언트를 담당하는 플레이어 컨트롤러를 생성해준다.
- 클라이언트를 대표하는 플레이어 컨트롤러는 클라이언트에 복제된다.
- 클라이언트에 복제된 플레이어 컨트롤러는 클라이언트에서는 0번으로 관리된다.
게임 모드 주요 함수
PreLogin 클라이언트의 접속 요청을 처리한다. 접속을 받을지 말지를 결정한다.
Login | 접속을 허용한 클라이언트에 대응하는 플레이어 컨트롤러를 만든다. |
PostLogin | 플레이어 입장을 위해 플레이어에 필요한 기본 설정을 모두 마무리한다. |
StartPlay | 게임의 시작을 지시한다. |
BeginPlay | 게임 모드의 StartPlay를 통해 게임이 시작될 때 모든 액터에서 호출한다. |
- 클라이언트에 있는 액터가 서버로부터 신호를 받아 게임을 시작하기 위해서 GameState라는 특별한 액터를 사용한다.
- GameState 액터는 서버와 클라이언트에 모두 존재하며, 게임 모드는 게임을 시작할 때 본인이 직접 게임을 시작하지 않고 GameState에 명령을 내려 게임을 시작하도록 간접적으로 지시한다.
- 게임 모드에 명령을 받은 GameState는 월드에 속한 모든 액터들에게 BeginPlay를 호출하도록 지시하게 된다.
- GameState는 클라이언트에게도 복제가 되며, 게임이 시작되었다는 정보가 복제된다.
- 게임 모드와 로그인
'공부 > Unreal C++' 카테고리의 다른 글
언리얼 네트워크 환경에서 액터의 역할과 커넥션 핸드셰이킹 (0) | 2024.10.03 |
---|---|
언리얼 커넥션과 오너십 (0) | 2024.10.03 |
언리얼 네트웍 멀티플레이어 프레임워크 (0) | 2024.10.03 |
언리얼 행동트리 모델의 구현 (0) | 2024.10.02 |
언리얼 행동 트리 모델의 이해 (0) | 2024.10.02 |