본문 바로가기

일기

NGO 적용

통신에 관한 설정을 위해 NetworkManger가 있는 프리펩에 스크립트를 추가해주자. 

원래는 NerworkManager를 상속받으려고 했는데, 다행히 인터페이스가 잘 되어 있어 다른 스크립트를 통해 관리 할 수 있을 것 같다. 

-> connection handler 추가. 연결, 연결끊김시 콜백 처리 

 

NetworkTransform을 상속받아 접속한 플레이어의 역할과 권한을 설정할 수 있도록 NetworkUser를 생성. 

해당 오브젝트에 카메라만 부착하여 오퍼레이터들의 player prefab으로 설정 할 예정. 

 

NetworUser에 public요소가 inspector에 나오지 않는다. 

-> Netcode의 컴포넌트는 NetcodeEditorBase를 상속받아 에디터 GUI를 설정해줘야 하는구조. 

-> NetworkTransformEditor를 상속받아 프로퍼티가 노출되도록 작성 

 

역할에 따라 다른 씬으로 이동 X -> 같은 씬으로 이동하고, UI종류만 달라진다. 
오퍼레이터 화면은 카메라 컴포넌트의 Viewport Rect값을 수정하여 제작 

 

역할에 따라 다른 아바타를 생성해야하는데 어떻게 할까? 

-> ConnectionApprovalCallback을 이용해서 기본 생성 프리펩을 지정하자. 

-> Request의 payload를 통해 바이트 값을 받을 수 있음. 이때, 아티스트와 스테프를 구별하자. 

-> Artist의 경우는 기본 아바타 생성 

 

아티스트별로 별개의 아바타를 생성해줘야 하는데, 어떻게 구분하지? 

-> NetworkManager.Singleton.NetworkConfig.ConnectionData 이용 

-> NetworkConfig.ConnectionData가 payload와 같은 값이었다. 

 

Payload는 비밀번호 용도로 사용. 권한 레벨에 따라 비밀번호를 다르게 설정하여 접속시 권한 부여. (서버에서 관리) 

접속 완료 후 ID와 PlayerRole을 받아와서 player prefab 생성. 접속시점에는 생성X 

 

생성된 NetworkObject들을 어떻게 관리할까. 

-> NetworkObjectManager에서 관리. 내 아바타, 전체 오브젝트 리스트 등을 관리. 

-> PlayerManager 에서 현재 조종중인 포커싱 오브젝트와 조작 API를 제공. 

 

빌드해서 테스트 했더니 GPU 공회전 뭐지? 

-> 프레임 제한이 없어서 그랬다 

 

클라이언트와 서버가 같은 프로젝트를 사용하는데, 데디케이트 서버로 빌드 했을때, 자동으로 서버로 실행되게 하는 방법은? 

-> 빌드시 설정을 변경하는 방법밖에는 없을 듯. SERVER 플레그로 구분하도록 설정. 

 

하나의 컴퓨터에서 여러 아티스트가 접속 했을 때, 각 아바타를 구분해서 처리 할 수 있어야함. 

-> Role이 Artist 일 경우에 서버 접속 후에 장비 종류와 인원수를 선택할 수 있는 UI를 제공 

    인원수에 따라 기본 아바타를 생성해주고, 실제 동기화된 아바타를 내부에서 구분하여 오퍼레이터가 개인 아바타로 변경 

 

OP가 접속 했을때 오브젝트 종류별로 볼 수 있게 하려면? 오브젝트 타입으로 정렬된 Dectionary 필요 

'일기' 카테고리의 다른 글

유니티 에디터에 로그 띄우기 메모  (0) 2025.04.11
일기  (0) 2025.04.07