언리얼 엔진 - 네트워크 Player Index

싱글 게임에서 네트워크으로 전환 시 당황하게 하는 요소 중 하나가 플레이어 인덱스 기능이며, 플레이중인 게임에서 캐릭터들이 움직이지 않는 원인 중 하나이다.

플레이어 인덱스는 게임에서 자동으로 부여되는 번호이다.

자세한 사항은 아래 언리얼 팁 강좌를 살펴보자.

Unreal Engine
Blogs, tutorials and tips

네트워크 모드 - Client

클라이언트모드는 플레이어컨트롤러, 로컬플레이어어로 캐릭터 하나를 조종한다.
상대방 캐릭터는 플레이어컨트롤러를 갖고 있을 필요가 없다.

그렇다면 상대방 캐릭터는 어떻게 정보를 주고 PlayerState 정보를 갖고 있다.

  • PlayerController 1개
    • 플레이어가 조종하는 컨트롤러
    • 플레이어 인덱스 0번이 로컬 플레이어가 된다
  • PlayerState 3개
    • 맵에 있는 자기와 상대방 액터

네트워크 모드 - Listen Server

클라이언트와 비슷하다. 하지만 접속하는 사용자가 많을 수록 PlayerContoller 이 늘어난다. 각자의 PlayerController로 각자의 캐릭터를 조종할 수 있다.

  • PlayerController 1개 * 접속자 수
    • 플레이어가 조종하는 컨트롤러
    • 플레이어 인덱스 0번이 로컬 플레이어가 된다
    • 로컬 플레이어는 서버 역할을 겸직하게 된다.
  • PlayerState 3개
    • 맵에 있는 자기와 상대방 액터

네트워크 모드 - Dedicated Server

데디케이트 서버는 로컬 플레이어가 사라진다. 모든 플레이가 서버에 참여한다.

  • PlayerController 1개 * 접속자 수
    • 플레이어가 조종하는 컨트롤러
    • 서버와 겸직하는 로컬 플레이어가 없다.
  • PlayerState 3개
    • 맵에 있는 자기와 상대방 액터

Dedicated Server는 플레이어인덱스가 랜덤으로 부여하기 때문에 사용하는 것을 자제해야한다.


데디 서버에서는 Player Index 대체 함수들

Player Index로 사용하지 않고 언리얼 엔진에서 함수를 상황에 따라 맞춰서 사용해야한다.

Player Index 사용하는 함수

  • Get Player Controller
  • Get Player Character
  • Get Player Pawn
  • Get Player State
  • Get Player Camera Manager

Player Index 대체하는 함수

  • Get Owner
  • Get Owning Player
  • Get Owning Player Controller
  • Get Controller
  • Get Owning Player Controller
  • Get Controller Pawn
  • Get Player Controller