|
|
1
4
从您的问题陈述来看,似乎需要实现分布式观察者模式或分布式发布/订阅。PubSub是一种消息传递范例,可以使用MOM(面向消息的中间件)轻松实现(请参阅RabbitMQ、ActiveMQ、OpenMQ),MOM在其中完成繁重的工作。 XMPP也可以正确地为您服务(参见 XEP-0060 你只需要一个Jabver服务器和一个C++ XMPP库(GOLOX是一个很好的,支持XEP -0600)。 您可能也对以下内容感兴趣: pubsubhubbub . |
|
|
2
3
如果您真的想这样做,那么让您的具体观察者也实现代理模式。代理处理发送/接收数据,基本上将本地方法调用转换为远程方法调用。 因为您处理的是异步数据,所以可能需要查找一个称为“发布/订阅”的观察者变体。其中的观察是由具体的观察者倾听事件,然后在需要交流时提出事件。例如,接收数据可能引发事件。
|
|
|
3
0
看起来您使用Observer模式有双重目的。您的游戏客户端将“观察”服务器,但这还不是全部。他们还将把玩家信息传回服务器。所以他们所做的不仅仅是观察。也许只需要使用基本的客户机/服务器模式,而不用担心“设计模式”。或者,如果您想要一种设计模式的方法,可以查看中介模式,其中服务器是中介。就个人而言,我坚持客户机/服务器方法。 对不起,我知道这并不能回答你的具体问题,但请把它当作思考的食物。 |
|
|
4
0
对于您的第一个问题:是的,它是每个客户端服务器游戏都使用的模型。 关于第二个问题:“推送”方法在定时同步和带切换方面更好。使用RPC库(远程过程调用)模拟函数调用。如果你使用C++,我推荐Raknet。如果您使用的是Java,我建议使用Jnag或proto缓冲区。 |