mir3思考

游戏服务器收到客户端的消息,怎么转发到对应的对象上?

答:在SockMsg_GateComm.cpp中一个专门处理网关消息的线程,网关和GameSvr之间维护一个用户的id,消息头带上Id,当网关消息传来,并且判断处于游戏中时,通过ID(也是用户信息数组的索引)取得【用户信息对象】,消息交由【用户信息对象】,该对象判断消息类型,并作适当的参数构造后,交由它引用的CCharObject的消息队列中。

 

游戏服务器如何驱动所有的游戏对象更新自己的逻辑?

答:服务器在开启时,启动了4个线程,分别为登入、玩家、怪物、NPC,后三个线程都在while循环中一直调用游戏对象的Operate,相当于Unity的Update。

 

游戏服务器怎么向指定客户端发消息?

答:由每个具体的服务器游戏对象维护的,如上述,当客户端的消息传发给对应的服务器游戏对象后,消息消亡了,用于逻辑处理了,逻辑处理中可能会产生新的消息需要通知客户端,将调用SendSocket方法,字节(肯定包含用户id标识)被加入到对应的网关信息对象(CGateInfo)的消息队列中,网关信息对象在玩家线程中更新,发送消息队列的消息。

未完待续...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值