본 튜토리얼에서는 LAN 환경에서 네트워크 객체(유니티 애플리케이션)들이 서로의 존재를 인식하고, 접속하여 네트워크 메시지를 주고받고, 각종 콜백처리를 하기 위한 기본 틀을 구현해보겠습니다. 그리고 간단한 UI 구성을 위해 NGUI 를 사용하겠습니다.
유니티가 5.1 버전 이후로 새로운 네트워킹 시스템을 발표하여 이전보다 더 간편하고 쉽게 좋은 성능을 가진 멀티플레이를 구현할 수 있게 되었습니다.
NetworkManager 와 HLAPI(High-Level) 를 사용하여 시작할 수 있습니다.
간단하게 위의 한글 매뉴얼을 흝어보고 오시면 더 이해가 쉽습니다.
먼저 새 프로젝트를 만들고, 빈 게임 오브젝트 하나를 생성합니다.
원래는 'Add Component' 버튼을 눌러 NetworkManager 컴퍼넌트를 추가하는 것으로 끝나지만, 입맛대로 커스터마이징하기 위해 NetworkManager 를 상속한 사용자 정의 스크립트를 생성하겠습니다.
새로운 C# 스크립트를 생성하여 MyNetManager 로 이름을 변경한 후 빈 게임 오브젝트에 붙입니다.
그리고 아래처럼 코딩해주세요.
using UnityEngine; using System.Collections; using UnityEngine.Networking; /* 유니티 네트워킹 API 입니다. */ public class MyNetManager : NetworkManager /* NetworkManager 를 상속합니다. */ { NetworkClient myClient; /* 확장 함수 */ public override void OnStartServer() { Debug.Log("OnStartServer( )"); } public override void OnStartClient(NetworkClient client) { Debug.Log("OnStartClient( )"); } public override void OnStopClient() { Debug.Log("OnStopClient( )"); } /* 사용자 정의 함수 */ public void SetupServer() { Debug.Log("SetupServer()"); StartServer(); NetworkServer.Listen(4444); NetworkServer.RegisterHandler(MsgType.Connect, OnConnected); } public void SetupClient() { Debug.Log("SetupClient()"); StartClient(); myClient = new NetworkClient (); myClient.Connect("127.0.0.1", 4444); } public void OnConnected(NetworkMessage netMsg) { Debug.Log("Connected to server"); } }
OnStartServer( ), OnStartClient( ),OnStopClient( ) 는NetworkManager 를 확장한 메서드들입니다. 나중에 이 부분에서 서버를 구동시켰을 때, 클라이언트가 접속했을 때의 처리를 할 것입니다. 이 외의 여러 네트워크 이벤트를 처리할 수 있는 가상 함수들은 공식문서를 참조하시기 바랍니다.
아래의 SetupServer( ), SetupClient( ) 메서드는 본 튜토리얼에서 NetworkManagerHUD(기본 GUI) 를 사용하지 않을 것이기 때문에 사용자 정의로 직접 서버를 구동하고 클라이언트를 접속시키는 코드를 작성하기 위해 만든 것입니다.
NetworkServer.RegisterHandler 메서드는 서버측에서 네트워크 이벤트를 처리할 처리기를 등록하고 있습니다. 위 코드는 클라이언트 접속시 발생할 이벤트를 처리합니다.
마지막으로 아래와 같이 각각 서버, 클라이언트 모드로 구동하기 위한 버튼을 두 개 배치합니다. 한쪽엔 버튼 클릭시 MyNetManager 의 SetupSever( )를, 다른 하나는 SetupClient( ) 가 실행되도록 클릭 이벤트를 연결합시다.
접속이 이루어졌는지 확인하기 위해, 유니티 에디터에서 서버를 실행하고, PC 버전으로 빌드하여 클라이언트로 실행해봅니다.
그러면 다음과 같이 클라이언트로 접속했을 때 콘솔창에 메시지가 뜨는 것을 볼 수 있습니다.
2편에서는 서버와 클라이언트가 연결 된 상태에서 서로 메시지를 주고받는 기능을 구현해보겠습니다.
댓글 없음:
댓글 쓰기
댓글