오늘은 언리얼로 멀티플레이를 실습하다가 NetMode가 뭔지 궁금해졌다.
- NetMode
- 해당 게임 프로그램이 네트워크 상에서 어떤 역할을 수행하고 있는지를 의미
- 싱글(NM_StandAlone), 서버(NM_ListenServer, NM_DedicatedServer), 클라이언트(NM_Client)
- NetMode의 필요성
- 멀티플레이 개발할 때, 같은 코드가 여러 pc에서 동작함. 그래서 디버깅할 때, 어떤 pc에서 동작하고 있는지 살펴보는 것이 가장 중요 그래서 이 때 NetMode를 활용하면 데디서버에서 실행 중인지, 클라이언트에서 실행 중인지 분간이 가능함.
- 멀티플레이 개발할 때, 같은 코드가 여러 pc에서 동작함. 그래서 디버깅할 때, 어떤 pc에서 동작하고 있는지 살펴보는 것이 가장 중요 그래서 이 때 NetMode를 활용하면 데디서버에서 실행 중인지, 클라이언트에서 실행 중인지 분간이 가능함.
- NetConnection
- 다른 pc와 연결이 발생할 때, 생성됨
- 다른 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: 깃으로 받은 언리얼 빌드를 하다가 중간에 꼬여서 그냥 내 프로젝트 서버 빌드를 했는데 더더 꼬여버린 경우..
해결한 방법:
아직 해결 못했다.. 문제가 될 상황들이 너무 많은지라 오류를 자세히 들여다보고 다시 해결해야겠다..
'Unreal Engine' 카테고리의 다른 글
[ UE, C++ ] Listen Server를 활용한 숫자 야구 게임 만들기 (1) (0) | 2025.03.19 |
---|---|
[ UE ] 데디케이트 서버 환경 만들기 (0) | 2025.03.17 |
[ UE ] FIntPoint가 뭘까? (0) | 2025.03.12 |
[ UE ] 언리얼의 네트워크 개념 (0) | 2025.03.11 |
[KPT 회고] HelloWorld TPS 슈터게임 (0) | 2025.03.07 |