오늘은 언리얼로 멀티플레이를 실습하다가 NetMode가 뭔지 궁금해졌다.

 

  •  NetMode
    • 해당 게임 프로그램이 네트워크 상에서 어떤 역할을 수행하고 있는지를 의미
    • 싱글(NM_StandAlone), 서버(NM_ListenServer, NM_DedicatedServer), 클라이언트(NM_Client)
  • NetMode의 필요성
    • 멀티플레이 개발할 때, 같은 코드가 여러 pc에서 동작함. 그래서 디버깅할 때, 어떤 pc에서 동작하고 있는지 살펴보는 것이 가장 중요 그래서 이 때 NetMode를 활용하면 데디서버에서 실행 중인지, 클라이언트에서 실행 중인지 분간이 가능함.

  • NetConnection
    • 다른 pc와 연결이 발생할 때, 생성됨

  • NetDriver
    • 언리얼 네트워크 통신에서 로우레벨 동작들을 관리하는 클래스
    • 싱글플레이에서는 UNetDriver 개체가 생성되지 않음
    • 멀티플레이에서만 생성되고, UWorld::Listen() 함수를 통해 UNetDriver 개체 생성됨 (멀티플레이에 참여하는 각 PC마다 UNetDruver 개체 생성됨)
    • UNetDriver는 생성된 UNetConnection 개체를 소유하고 관리함
    • 서버 pc에 생성된 UNetDriver는 접속하는 클라이언트 수만큼 UConnection 관리
    • 클라 pc에 생성된 UNetDriver는 ServerConnection 하나만 관리

 

 

트러블 슈팅

문제상황 1. 뭔가 코드 intellisence가 다 깨져있고, 빌드를 했을 때 파일이 손상되었다는 에러창이 떴다.

이렇게 다 깨져있고

데디케이트 서버 실험을 하기 위해 내 비주얼스튜디오의 타겟파일을 복사해서 Server로 변경해주고, Development Editor에서 빌드한 후, Development Server로 바꾸고 빌드를 해줬다.

빌드는 정상적으로 잘 된 것 같았는데, 실행해보니 파일이 손상되었다는 오류가 떴고, 실행이 되지않았다..

 

예상 문제 1 : git으로 언리얼을 받아놓고 소스빌드를 한 상태인데, 습관적으로 언리얼 런처로 프로젝트를 켰다가 이 난리가 난 것 같다고 예상한다.(왜냐면 같은 팀의 다른 팀원도 이 상황에서 겪었다고 하셨다..)

예상 문제 2: 깃으로 받은 언리얼 빌드를 하다가 중간에 꼬여서 그냥 내 프로젝트 서버 빌드를 했는데 더더 꼬여버린 경우..

 

해결한 방법:

아직 해결 못했다.. 문제가 될 상황들이 너무 많은지라 오류를 자세히 들여다보고 다시 해결해야겠다..