本发明提供的技术方案涉及网络游戏中不同玩家集合的管理,尤其涉及大型网络游戏中及时、准确地将玩家发送的聊天信息发送给其当时所在集合中的所有玩家。
背景技术:
1、随着互联网技术的普及,互联网游戏已经成为了公众娱乐的重要部分。目前大部分的互联网游戏为了方便玩家间的交流,都设有聊天功能。游戏服务商提供服务器、利用互联网作为媒介,以游戏客户端软件作为信息窗口实现玩家与玩家之间的聊天交互。起初玩家只要与指定的其他玩家进行交互即可,随着游戏玩法的不断深入、各种玩家群体不断出现(例如玩家之间可以组建队伍、行会),为了加强游戏中玩家的交互体验,游戏玩家不但需要和其他个体玩家进行通信,也需要与一些玩家集合进行通信,广播自己的发言给集合内的所有玩家。向一组玩家群发消息,需要搜索出所有满足条件的玩家并依次发送消息,例如、要给一个队伍、行会或地图场景中的玩家集合发消息时,需要查找到这个队伍、行会或地图场景中拥有哪些玩家。为此、队伍系统、行会系统或地图系统需要提供列出罗列具体队伍、行会或者地图场景(即具体的频道)中所有玩家的功能。由于各个子系统功能实现不同、并没有有效的统一的接口,这就导致查找或搜索频道困难、同时也降低了搜寻频道内玩家的效率。
2、为了满足上述需求、现有技术需要在游戏服务器上设计一个聊天模块,自动管理聊天服务器上频道的创建、销毁、添加和移除玩家标识符等工作。如图1所示、现有技术中当玩家需要给其他人发送聊天消息时,该玩家所在的客户端向游戏服务器发送聊天消息并指出接收者所在的集合(例如一个队伍、一个行会);游戏服务器接收到聊天消息后,通过接收者所在集合查找出该集合中所有的玩家,并依次向这些玩家所在的客户端转发该聊天消息。上述方案通过在游戏服务器上增设一个聊天模块来实现聊天功能,这样做会增大游戏服务器上运行开销,造成游戏运行延时或者聊天消息发送不及时。为此,现有技术中有些方案将聊天功能单独实现在专门的服务器上。
3、然而、当玩家集合过多时现有技术中仍然存在以下不足:
4、1.游戏服务器或专门设置的服务器上的频道缺乏有效的管理方式(频道这里指游戏中玩家的集合,例如、一个行会、一个队伍、一个场景内的玩家均在一个频道中),难以及时地对各频道进行创建、销毁、加入玩家id等操作,导致存在多余的残留频道,玩家所处频道不能实时、准确地确定(例如,某个玩家当前时刻可能在某个队伍中,同时也在某个行会、某个聊天室中,此时该玩家既需要收到来自队伍的广播消息,又需要收到来自行会、聊天室的广播消息;在下一时刻该玩家则可能退出了之前的某个队伍、行会或者其他玩家集合,此时游戏服务器对该玩家所处的玩家集合/频道更新不及时)。
5、2.游戏服务器对玩家集合内的玩家进行列举时将造成游戏服务器资源消耗过大,从而影响服务器的整体性能、给玩家带来不良的游戏体验。
技术实现思路
1、为了解决现有游戏聊天系统存在的上述不足,本发明提供一种游戏聊天方案。该方案通过新增一个与游戏服务器相连接,同时也与各个客户端建立单独的连接的聊天服务器;聊天服务器与游戏服务器配合以实现动态、实时地管理游戏中产生的各种频道。该方案把查询玩家所在频道的工作放在游戏服务器执行、而将转发消息的工作放在聊天服务器上执行达到降低游戏服务器的负担,确保聊天消息处理的实时性的技术效果。
2、本发明的第一方面提供一种游戏聊天方法。该方法包括:分别设置接收玩家聊天消息的游戏服务器,以及转发聊天消息的聊天服务器;所述游戏服务器接收到玩家客户端发送的聊天消息时、实时在本地找出该聊天消息对应的目标频道后,将该聊天消息投递到所述聊天服务器中的所述目标频道,由聊天服务器转发给所述目标频道内的所有玩家客户端。
3、进一步地,该方法还包括:在所述游戏服务器上设置聊天模块,所述聊天模块用于监听与玩家集合操作相关的事件,当所述聊天模块监听到游戏服务器上接收到与玩家集合相关的操作时,识别具体的操作类型、并发送对应的消息触发所述聊天服务器对自身维护的聊天频道进行相应调整。
4、所述聊天服务器对自身维护的聊天频道进行相应调整,包括:当所述事件为一个新玩家集合产生时,创建一个对应该集合的频道;而当一个玩家集合消失时,删除其对应的聊天频道;当一个玩家集合内的玩家变动时,在对应聊天频道增加/移除所述变动玩家的玩家id。
5、进一步地,该方法还包括:所述游戏服务器上动态维护存储有玩家id以及每个玩家id对应聊天频道的频道列表,所述聊天模块通过查询所述频道列表找出具体玩家发送的聊天消息对应的目标频道。
6、与上述方法相对应、本发明的第二方面提供一种游戏聊天系统。该系统包括:游戏服务器,聊天服务器;所述游戏服务器接收到玩家客户端发送的聊天消息时、在本地找出该聊天消息对应的目标频道后,将该消息投递到所述聊天服务器中的所述目标频道,由聊天服务器转发给所述目标频道内的所有玩家客户端。所述聊天服务器与各玩家客户端之间建立tcp连接。所述聊天服务器动态维护存储有每个聊天频道中所有玩家id与该玩家对应tcp连接的映射关系。
7、进一步地、所述游戏服务器上设有聊天模块,所述聊天模块用于监听游戏服务器上与玩家集合操作相关的事件以动态维护所述聊天服务器上的聊天频道;当所述聊天模块监听到游戏服务器上接收到与玩家集合相关的操作时,识别具体的操作类型、并发送对应的消息触发所述聊天服务器对自身维护的聊天频道进行相应调整。
8、所述聊天模块在游戏服务器上动态维护存储有玩家id以及每个玩家id对应聊天频道的频道列表,通过查询所述频道列表找出具体玩家发送的聊天消息对应的目标频道。
9、与上述方法相对应、本发明的第三方面提供一种计算机可读存储介质,所述计算机可读存储介质上存储有可执行代码,计算机的处理器在执行所述可执行代码实现上述游戏聊天的方法。
1.一种游戏聊天系统,其特征在于,该系统包括:游戏服务器,聊天服务器;所述游戏服务器接收到玩家客户端发送的聊天消息时、在本地找出该聊天消息对应的目标频道后,将该聊天消息投递到所述聊天服务器、由聊天服务器转发给自身管理的所述目标频道内的所有玩家客户端。
2.如权利要求1所述的系统,其特征在于,所述游戏服务器上设有聊天模块;所述聊天模块用于监听与玩家集合操作相关的事件、以实时调整所述聊天服务器上的聊天频道。
3.如权利要求2所述的系统,其特征在于,所述聊天模块实时调整所述聊天服务器上的聊天频道,实现为:当所述聊天模块监听到游戏服务器上接收到与玩家集合相关的操作时,识别具体的操作类型、并发送对应的消息触发所述聊天服务器对自身维护的聊天频道进行相应调整。
4.如权利要求3所述的系统,其特征在于,所述聊天服务器对自身管理的聊天频道进行相应调整,包括:当所述事件为一个新玩家集合产生时,所述聊天服务器创建一个对应该集合的频道;而当一个玩家集合消失时,所述聊天服务器删除其对应的聊天频道;当一个玩家集合内的玩家变动时,所述聊天服务器在对应聊天频道增加/移除所述变动玩家的玩家id。
5.如权利要求1-3中任一项所述的系统,其特征在于,所述聊天模块通过查询游戏服务器上实时存储的频道列表找出具体玩家发送的聊天消息对应的目标频道,所述频道列表存储有每个玩家id以及其对应聊天频道。
6.如权利要求5所述的系统,其特征在于,所述聊天服务器与各玩家客户端之间建立tcp连接;所述聊天服务器存储有实时的每个聊天频道中所有玩家id与该玩家对应tcp连接的映射关系。
7.一种游戏聊天方法,其特征在于,该方法包括:分别设置接收玩家聊天消息的游戏服务器,以及转发聊天消息的聊天服务器;所述游戏服务器接收到玩家客户端发送的聊天消息时、在本地找出该聊天消息对应的目标频道后,将该聊天消息投递到所述聊天服务器、由所述聊天服务器转发给自身管理的所述目标频道内的所有玩家客户端。
8.如权利要求7所述的方法,其特征在于,该方法包括:在所述游戏服务器设置有用于监听与玩家集合操作相关的事件以实时调整所述聊天服务器上的聊天频道。
9.如权利要求8所述的方法,其特征在于,所述聊天模块实时调整所述聊天服务器上的聊天频道,实现为:当所述聊天模块监听到游戏服务器上接收到与玩家集合相关的操作时,识别具体的操作类型、并发送对应的消息触发所述聊天服务器对自身维护的聊天频道进行相应调整。
10.如权利要求9所述的方法,其特征在于,所述聊天服务器对自身维护的聊天频道进行相应调整,包括:当所述事件为一个新玩家集合产生时,所述聊天服务器创建一个对应该集合的频道;而当一个玩家集合消失时,所述聊天服务器删除其对应的聊天频道;当一个玩家集合内的玩家变动时,所述聊天服务器在对应聊天频道增加/移除所述变动玩家的玩家id。
11.如权利要求7-10中任一项所述的方法,其特征在于,该方法还包括:所述聊天模块通过查询游戏服务器上实时存储的频道列表找出具体玩家发送的聊天消息对应的目标频道,所述频道列表存储有每个玩家id以及其对应聊天频道。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有可执行代码,计算机的处理器在执行所述可执行代码实现如权利要求7-11中任一项所述的游戏聊天方法。