언리얼 게임 모드와 로그인

2024. 10. 3. 03:41·공부/Unreal C++

네트워크 모드

컴퓨터와 네트워크 멀티 플레이어 세션의 관계를 설명한다.

어플리 케이션을 담당하는 게임 인스턴스는 스탠드 언론, 클라이언트, 리슨 서버, 데디케이티드 서버의 네트워크 모드 중 하나를 사용할 수 있다.

 

스탠드 언론

  • 원격 클라이언트의 연결을 허용하지 않는 서버로 실행 중에 있는 것을 의미한다.

 

클라이언트

  • 클라이언트는 네트워크 멀티플레이어에서 서버에 연결된 클라이언트로 실행된다. 즉, 서버로 부터 받은 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
'공부/Unreal C++' 카테고리의 다른 글
  • 언리얼 네트워크 환경에서 액터의 역할과 커넥션 핸드셰이킹
  • 언리얼 커넥션과 오너십
  • 언리얼 네트웍 멀티플레이어 프레임워크
  • 언리얼 행동트리 모델의 구현
Coding2018180044
Coding2018180044
  • Coding2018180044
    더 멋진 개발자를 꿈꾸는 나
    Coding2018180044
  • 전체
    오늘
    어제
    • 프로젝트 & 공부 기록
      • Unreal Engine 프로젝트
        • 개인 공부 프로젝트(RPG 전투, Multipla..
        • SuperSoldier
        • 파닥파닥 바다로
      • DirectX 12 프로젝트
        • Rampage
      • 공부
        • 코딩 테스트 대비반
        • 멀티코어프로그래밍
        • Unreal C++
  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
Coding2018180044
언리얼 게임 모드와 로그인
상단으로

티스토리툴바