ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 이득우의 Multi-Player Framework
    Unreal Engine 2024. 4. 15. 19:13
     

    Networking Overview for Unreal Engine

    Learn about networking in Unreal Engine including fundamental concepts and the available replication systems.

    dev.epicgames.com

     

    클라이언트는 자신이 소유한 폰을 원격 제어하여 게임 내 동작을 수행하도록 서버에 프로시저 호출을 보낸다.

    서버는 어떤 액터가 존재하야 하는지, 해당 액터가 어떻게 동작해야 하는지, 다양한 변수가 어떤 값을 가져야 하는지 등 게임 상태에 대한 정보를 각 클라이언트로 복제한다.

     

    Standalone 원격 연결을 허용하지 않는 상태로, 로컬 플레이에 사용됨
    Client 네트워크에 연결된 상태에서 서버에서 받은 정보를 프록시로 보여 줌
    Listen Server 서버의 역할을 수행하며 원격 클라이언트의 연결을 수락하고 로컬 플레이어를 서버에 직접 배치
    -> 자기 자신도 플레이어로서 게임에 참여하며 소규모 멀티 게임에 적합함
    Dedicated Server 원격 클라이언트의 연결을 수락하지만 로컬 플레이어를 서버에 직접 배치하지 않음
    -> 보다 많은 접속을 처리하며 대규모 멀티 게임에 적합함

     

     

    게임 모드의 주요 함수

     

     

    게임 스테이트는 서버와 클라이언트에 모두 존재하며 변화로 다른 액터들에 지시를 내림.

    AGameStateBase::HandleBeginPlay()는 액터들에게 BeginPlay()를 실행하라고 알리는 함수

     

    PostInitializeComponent() -> PlayerController가 생성되기 전 실행되는 함수

    PostNetInit() -> PostInitializeComponent()로 서버에서 정보를 받은 다음 실행되는 함수

    이후 BeginPlay()가 실행됨

     

     

    PlayerController: 하이 레벨에서 네트워크 커넥션을 관리하는 콘텐츠를 대표하는 액터

    UNetConnetion: 주고받는 패킷 데이터의 인코딩 디코딩, 네트워크 통신량 조절, 채널 관리

    UNetDriver: 로우 레벨에서의 소켓 관리와 패킷 처리, 네트워크 통신 설정

     

    NetDriver는 다수의 커넥션을 관리하고 있으며 서버와 클라이언트에 따라 다르게 동작함

    클라이언트에서 NetDriver는 항상 하나의 서버 커넥션을 가지며, 서버에서 NetDriver는 다수의 클라이언트 커넥션을 가짐

     

    Connection: 모든 데이터를 전달하는 네트워크 통로

    Packet: 네트워크를 통해 전달되는 단위 데이터(숫자 혹은 문자로 구성)

    Channel: 언리얼 엔진 아키텍처에 따라 구분된 데이터를 전달하는 논리적인 통로

    Bunch: 언리얼 엔진 아키텍처에 사용되는 데이터. 하나의 명령에 대응하는 데이터 묶음

    커넥션을 담당하는 대표 액터는 커넥션에 대한 오너십을 가진다고 표현한

     

    플레이어 컨트롤러가 캐릭터에 빙의하면, 캐릭터의 오너로 설정됨

    이때, 캐릭터가 무기 액터를 소유하면 무기 액터는 통신 가능한 상태가 됨

     

    OnRep_Owner(): 액터의 오너 속성이 변경되면 이 함수가 호출됨 

     

     

     

    'Unreal Engine' 카테고리의 다른 글

    Unreal Insight  (0) 2024.04.20
    1초마다 실행하는 함수  (0) 2024.04.18
    Actor Replication  (0) 2024.04.18
    Connection Handshaking  (0) 2024.04.17
    네트워크 환경에서 액터의 역할 - ROLE -  (0) 2024.04.17
Designed by Tistory.