2017-12-01 2 views
0

Unity 멀티 플레이어 지원을 찾고 있습니다. 모든 문서에서 주 모델처럼 보이는 게임은 서버와 클라이언트가 될 수있는 게임이고, 두 가지 모두에 사용되는 동일한 이진 파일입니다.Unity Multiplayer : 독립 실행 형 클라이언트

클라이언트와 서버가 서로 다른 바이너리 인 게임을 만들 수 있습니까? 클라이언트는 더 가벼우 며 클라이언트 부분 만 수행하고 서버는 개방 된 세계/게임 플레이/상태를 처리하는 중 무거운 작업을 수행합니다. ?

단순한 예로, 캐릭터로 채워진 거대한 세계를 상상해보십시오. 클라이언트는 건강/통계를 표시하고 아바타를 렌더링해야하는 모바일 앱입니다. 서버에서 이러한 문자는 큰 환경에서 복잡한 생활을합니다.

+0

예 UNET (Unity 멀티 플레이 서비스)를 사용할 수도 있습니다. 또한 유니티와 공식적인 관계가없는 다른 서비스를 사용할 수도 있습니다. – Lestat

+0

그럴 것입니다. 이 접근법을 시작하는 데 도움이 될만한 자료를 가르쳐 주시겠습니까? –

답변

1

클라이언트 측 로직과 완전히 독립적 인 서버 작업을 위해 SmartFoxServer (unity3d 지원)와 같은 것을 사용할 수 있습니다. 이것은 클라이언트의 C# Unity와 SmartFoxServer의 Java가 될 것입니다. 확장 기능을 구성하고, 룸, 로비, 사용자 이벤트, 채팅 등을 서버에서 관리하고 클라이언트 측에서 이벤트를 얻는 것은 꽤 쉽습니다. 완벽한 MMO 시스템을 구축하고 모바일에서도 실행할 수 있습니다.

+0

그러면 NetworkManager/Identity 등을 사용하지 않고 완전히 사용자 지정 네트워킹을 구현할 수 있습니까? –

+0

서버 쪽에서는 Unity3D와 관련이 없습니다. SmartFoxServer가 제공하는 기본 확장을 상속 받아야하지만, 원하는대로 원하는대로 확장 할 수 있습니다. – Ajjo

0

나는 길을 찾았다 고 생각한다. 적어도 그것은 나를 위해 일하고있다. 필요한 것은 NetworkClient 및 NetworkServer 클래스를 사용하여 가능합니다. 이제 두 개의 별도 프로젝트 인 서버와 클라이언트가 있습니다. 공용 클래스 네트워크 매니저 :이 4444.

그런 다음 클라이언트 측이처럼 포트에서 메시지를 수신

public class Server : MonoBehaviour { 
public Text text; 
public class HelloMessage : MessageBase 
{ 
    public string helloText; 
} 

void Start() { 
    NetworkServer.Listen(4444); 
    NetworkServer.RegisterHandler(333, onHelloMessage); 

} 

public void onHelloMessage(NetworkMessage msg) 
{ 
    text.text = msg.ReadMessage<HelloMessage>().helloText; 
} 
} 

: 서버 꽤 많이 스크립트가 MonoBehaviour { NetworkClient 클라이언트;

public class HelloMessage : MessageBase 
{ 
    public string helloText; 
} 

// Use this for initialization 
void Start() { 
    client = new NetworkClient(); 
    client.Connect("127.0.0.1", 4444); 

} 

public void SendNetworkMessage() 
{ 
    HelloMessage msg = new HelloMessage(); 
    msg.helloText = "Hello"; 
    client.Send(333, msg); 
} 

}

이제 서버 측에서 우리는 레이블과 버튼에 클라이언트 측 SendNetworkMessagetext를 연결 할 수 있으며 우리는 서버에 표시 클라이언트에서 메시지를 보낼 수 있습니다.

이제 프로토콜을 정의하고 해제해야합니다.