Unity에서의 네트워크 관리자(Network Manager) 사용 가이드
개요
Unity의 네트워크 관리자(Network Manager)는 멀티플레이어 게임의 네트워크 관련 요소를 관리하는 핵심 컴포넌트입니다. 이 가이드는 Network Manager의 주요 기능 및 활용 방법에 대해 설명합니다.
주요 기능
기능 | 설명 |
---|---|
게임 상태 관리 | 클라이언트, 서버 및 호스트 모드에서 게임을 실행하는 방법 제공 |
스폰 관리 | 네트워크로 연결된 게임 오브젝트의 스폰 관리 |
씬 관리 | 네트워크 씬 및 오프라인 씬 전환 자동 관리 |
디버깅 정보 | 다양한 디버깅 정보를 제공 |
매치메이킹 | 플레이어가 인터넷 매치를 찾을 수 있는 기능 제공 |
커스터마이징 | 사용자 정의 로직으로 Network Manager의 동작 변경 가능 |
Network Manager 시작하기
- 빈 게임 오브젝트를 생성합니다.
- 생성한 오브젝트에 NetworkManager 컴포넌트를 추가합니다.
주의: 각 씬에는 하나의 액티브 Network Manager만 있어야 합니다.
게임 상태 관리
Network Manager는 클라이언트, 서버 또는 호스트 모드에서 게임을 실행할 수 있습니다. 여러 모드에서 시작하려면 아래의 메서드를 호출합니다:
NetworkManager.StartClient()
NetworkManager.StartServer()
NetworkManager.StartHost()
네트워크 주소 및 포트
모드에 따라 Network Address
및 Network Port
프로퍼티를 사용합니다. 각 모드에서 해당 프로퍼티는 다음과 같은 역할을 합니다:
- 클라이언트 모드: 지정된 주소와 포트에 연결을 시도합니다.
- 서버 및 호스트 모드: 해당 포트에서 들어오는 연결을 수신합니다.
스폰 관리
Network Manager는 네트워크로 연결된 게임 오브젝트의 스폰을 관리합니다. 플레이어 프리팹을 Network Manager에 등록해야 하며, 이렇게 하면 각 사용자의 게임 오브젝트가 자동으로 스폰됩니다.
스폰 정보 등록
프리팹을 등록하는 방법은 두 가지가 있습니다:
- 인스펙터에서
Registered Spawnable Prefabs
에 추가합니다. - 코드에서
ClientScene.RegisterPrefab()
메서드를 사용합니다.
public virtual void OnServerAddPlayer(NetworkConnection conn, short playerControllerId)
{
var player = (GameObject)GameObject.Instantiate(playerPrefab, playerSpawnPos, Quaternion.identity);
NetworkServer.AddPlayerForConnection(conn, player, playerControllerId);
}
씬 관리
Network Manager는 멀티플레이어 게임의 씬 상태와 전환을 자동으로 관리합니다. Offline Scene
과 Online Scene
슬롯에 씬 에셋을 드래그하여 씬 관리를 활성화합니다.
- 서버 또는 호스트 시작 시: Online Scene 로드
- 클라이언트 연결 해제 시: Offline Scene 로드
커스터마이징
네트워크 관리자는 다양한 가상 함수를 제공하여 커스터마이징할 수 있습니다. 예를 들어 OnServerAddPlayer()
를 오버라이드하여 플레이어 게임 오브젝트의 생성 방식을 변경할 수 있습니다.
public override void OnServerAddPlayer(NetworkConnection conn, short playerControllerId)
{
var player = (GameObject)GameObject.Instantiate(playerPrefab, Vector3.zero, Quaternion.identity);
NetworkServer.AddPlayerForConnection(conn, player, playerControllerId);
}
결론
Network Manager는 Unity에서 멀티플레이어 게임을 개발하는 데 필요한 강력한 도구입니다. 기능을 잘 활용하면 게임의 네트워크 요소를 효율적으로 관리할 수 있습니다. 다양한 사용 사례와 커스터마이징을 통해 더욱 효과적으로 게임을 개발할 수 있습니다.
추가 활용 예시
- 상태 태스크 생성: 게임의 시작 상태를 외부 API와 통합하여 사용자의 접속을 관리합니다.
- 전략 게임 믹스 및 매치메이킹: 사용자가 서로 대결할 수 있도록 로비 시스템을 개발합니다.
- 디버깅 툴: 사용자 연결, 오류 발생 시 로깅 시스템을 구축하여 서버의 안정성을 높입니다.
이 가이드를 통해 Network Manager에 대한 이해와 실용적인 활용이 되길 바랍니다!