Unity多人游戏:独立客户端

时间:2017-12-01 07:46:33

标签: unity3d networking multiplayer

我正在研究Unity多人游戏支持。从所有文档看来,似乎主要模型是游戏能够同时作为服务器和客户端,以及用于两者的相同二进制文件。

是否有可能制作一个游戏,其中客户端和服务器是两个不同的二进制文件:客户端更轻量级,只做客户端部分,而服务器负责处理开放世界/游戏/状态等?

作为一个简化的例子,想象一个由人物填充的巨大世界,而客户端是一个移动应用程序,只需要显示他们的健康/统计数据并渲染他们的头像。在服务器上,这些角色在大型环境中过着复杂的生活。

2 个答案:

答案 0 :(得分:1)

您可以使用类似SmartFoxServer(支持unity3d)的服务器操作,完全独立于客户端逻辑。这将是客户端上的C#Unity和SmartFoxServer的Java。在服务器中配置扩展,管理房间,大厅,用户事件,聊天等非常容易,并在客户端获取事件。您可以构建一个完整的MMO系统并在移动设备上运行它。

答案 1 :(得分:0)

所以我相信我找到了一种方法,至少它对我有用。 我需要的是使用NetworkClient和NetworkServer类。所以现在我有两个独立的项目,服务器和客户端。 服务器有一个非常多的脚本:

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;
}
}

这将侦听端口4444上的消息。

然后客户端是这样的: 公共类NetworkManager: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);
}

}

现在,在服务器端,我们可以将text连接到标签,并将客户端SendNetworkMessage连接到一个按钮,我们可以从客户端发送消息以显示在服务器上。

现在只需要定义一个协议,我们就去了。