Unity Fishnet[1] 네트워크 연결 및 플레이어 스폰
Unity Fishnet[0] 소개 및 설치
에셋스토어 FishNet: Networking Evolved | 네트워크 | Unity Asset StoreGet the FishNet: Networking Evolved package from FirstGearGames and speed up your game development process. Find this & other 네트워크 options on the Unity Asset Store.assets
gamecoke.tistory.com
저번 강의에 이어서 계속됩니다.
Unity 6000.0.51f 환경에서 진행했고 멀티를 테스트할 수 있는 에셋은 ParrelSync를 사용했습니다.
NetworkManager
서버를 열고 클라이언트를 연결하려면 우선 NetworkManager를 만들어야 합니다.
NetworkManager는 서버와 클라이언트 연결, 네트워크 연결 설정 등 Fishnet에서 가장 중요한 컴포넌트입니다.
직접 만들어도 되지만 Fishnet에서 미리 만들어둔 NetworkManager 프리팹이 있으니 이걸 사용해 보겠습니다.
NetworkManager를 Hierarchy에 넣어줍니다.
그러면 위 사진처럼 게임 뷰 좌측 상단에 UI가 뜨게 됩니다.
이건 NetworkManager 안에 있는 NetworkHudCanvas인데 나중에 삭제해서 직접 연결해도 됩니다.
이제 플레이 버튼을 눌러서 좌측 상단 Start Server를 누르면 서버가 시작되고
Start Client을 누르면 Local Client is Started for Tugboat라는 메시지가 뜨면서 서버에 연결이 됩니다.
여기서 Player prefab is empty and cannot be spawned for connection 0라는 경고문이 뜨는데 아래 사진처럼 NetworkManager 오브젝트 안에 PlayerSpawner의 Player Prefab이 비어 있어서 그렇습니다.
플레이어 스폰
우선 플레이어 오브젝트를 만듭니다
그리고 Add Component를 통해 Network Object를 붙여줍니다.
Network Object는 네트워크를 통해 동기화를 해야 하거나 컨트롤해야 하는 오브젝트에 필요하다고 합니다.
Component를 추가한 뒤에 플레이어 오브젝트를 Prefab으로 만들어주고 Hierarchy에서 플레이어 오브젝트를 삭제합니다.
만약 Hierarchy에 남아 있으면 Scene Object가 되어서 플레이어 오브젝트의 Ownership이 없어진 채 스폰하게 됩니다.
Ownership은 추후 다른 포스팅에서 설명할 건데 간단하게 설명하자면
Network Object를 컨트롤할 수 있는 권한이고 이 권한은 각 클라이언트들에게 할당할 수 있습니다.
다시 PlayerSpawner로 돌아와서 Player Prefab에 아까 만든 Player Prefab을 넣어줍니다.
Spawns는 Player Prefab이 스폰되는 위치입니다.
클라이언트가 스폰 포인트에 스폰되는 순서는
1번 클라이언트 -> Spawn1, 2번 클라이언트 -> Spawn2, 3번 클라이언트 -> Spawn1, 4번 클라이언트 -> Spawn2..
이런 식으로 순환하게 됩니다.
테스트
이제 Parrel Sync로 테스트해보겠습니다.
우선 상단에 ParrelSync -> Clones Manager에 들어가 줍니다.
그다음에 Create new clone을 눌러서 프로젝트 클론을 만들어줍니다.
이게 근데 원본 프로젝트와 똑같은 프로젝트를 만드는 셈이어서 원본 프로젝트의 용량이 크면 용량 확보가 충분히 되어 있어야 합니다.
다 되면 이런 식으로 창이 생기게 되고 Open in New Editor를 눌러 클론 프로젝트를 열어줍니다.
클론 프로젝트와 원본 프로젝트를 구분하는 방법은 클론은 프로젝트 이름에 clone_n이라고 붙어 있습니다.
이제 원본 프로젝트에서 Server를 켜줍니다.
아직 서버를 따로 분리하지 않았으므로 Host인 격이니 Client도 같이 켜서 테스트할 수 있습니다.
그리고 클론 프로젝트에서 Start Client를 누르면 이런 식으로 두 플레이어가 스폰되어 있는 걸 확인할 수 있습니다.