Unity NetworkServerSimple 이해하기
Unity의 NetworkServerSimple 클래스는 멀티플레이어 게임에서 여러 클라이언트의 접속을 관리하는 고수준 API(HLAPI)를 제공합니다. 아래에서는 이 클래스의 주요 기능과 속성을 설명하고, 추가적인 활용 사례를 다루겠습니다.
중요 내용
Unity는 UNet 솔루션의 지원을 중단했으며, 대신 새로운 멀티플레이어 및 네트워킹 솔루션인 Netcode for GameObjects를 개발 중입니다. 더 많은 정보는 Unity의 공식 웹사이트에서 확인할 수 있습니다.
NetworkServerSimple 클래스 개요
NetworkServerSimple 클래스는 네트워크 서버의 기본적인 기능을 사용할 수 있게 해주는 클래스입니다. 이 클래스는 게임과 관련된 기능이 없으며, 여러 인스턴스를 지원하는 구조로 되어 있습니다.
주요 속성
| 속성 | 설명 |
|---|---|
| connections | 원격 클라이언트에 대한 활성화된 연결 세트를 나타냅니다. 최근 종료된 연결이 있는 경우 null 값이 포함될 수 있습니다. |
| handlers | 등록된 메시지 핸들러 함수의 세트를 나타냅니다. |
| networkConnectionClass | 새로운 연결을 생성하기 위한 NetworkConnection 객체의 타입입니다. |
| hostTopology | 서버가 전송 계층을 설정하기 위해 사용한 호스트 토폴로지 객체입니다. |
| listenPort | 서버가 접속 요청을 대기하고 있는 네트워크 포트입니다. |
| serverHostId | 서버 인스턴스와 관련된 전송 계층 hostId입니다. |
활용 및 응용 예제
예제 1: 클라이언트 연결 관리
객체를 생성하고 클라이언트를 서버에 연결할 수 있습니다.
NetworkServerSimple myServer = new NetworkServerSimple();
myServer.listenPort = 7777;
myServer.Start();
예제 2: 메시지 핸들러 등록
클라이언트로부터의 특정 메시지를 처리하기 위한 핸들러를 등록할 수 있습니다.
myServer.handlers.Add(yourMessageId, OnMessageReceived);
예제 3: 연결 상태 확인
활성화된 연결 상태를 쉽게 확인할 수 있습니다.
foreach (var connection in myServer.connections)
{
if (connection != null)
{
Debug.Log("Connected to client ID: " + connectionId);
}
}
결론
NetworkServerSimple 클래스는 Unity를 사용한 멀티플레이어 게임 개발에 매우 유용한 도구입니다. 향후 Netcode for GameObjects가 도입될 예정이므로, 플레이어 관리와 네트워크 연결 관련하여 최신 정보를 지속적으로 확인하는 것이 중요합니다.