[发明专利]一种玩家列表更新、查询的方法及系统在审
申请号: | 202010867841.8 | 申请日: | 2020-08-26 |
公开(公告)号: | CN112044081A | 公开(公告)日: | 2020-12-08 |
发明(设计)人: | 周天涯 | 申请(专利权)人: | 杭州电魂网络科技股份有限公司 |
主分类号: | A63F13/79 | 分类号: | A63F13/79;A63F13/795;G06F16/23;G06F16/2455 |
代理公司: | 浙江千克知识产权代理有限公司 33246 | 代理人: | 吴辉辉 |
地址: | 310051 浙*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 玩家 列表 更新 查询 方法 系统 | ||
本发明公开了一种玩家列表更新、查询的方法,包括:S1.获取每个玩家的玩家信息,并将每个玩家的信息用结构体表示,得到玩家信息的玩家结构体;S2.初始化玩家列表的数组,并将数组中的每个元素与一个映射槽相对应,每个映射槽存储多个玩家结构体的链表头节点;S3.判断是否有玩家上线,若是,则计算当前玩家的信息所处的映射槽;S4.判断计算得到的映射槽中是否存在当前玩家的信息,若否,则对所处的映射槽进行扩充,并将当前玩家结构体的链表头节点存储于所处的映射槽中;S5.判断当前玩家是否下线,若是,则计算当前玩家的信息所处的映射槽,并遍历计算得到的所处的映射槽中玩家结构体的链表头节点,得到当前玩家的信息,将所述当前玩家的信息删除。
技术领域
本发明涉及计算机技术领域,尤其涉及一种玩家列表更新、查询的方法及系统。
背景技术
网络游戏开发过程中,不免会涉及到玩家和玩家之间的交互,这时候就需要实现一个玩家列表,客户端请求每个玩家的信息,服务器返回对应玩家的信息,这时候服务器需要维护一个数据结构,考虑如下几种情况:
a)玩家上线;
b)玩家下线;
c)玩家信息变更;
d)玩家请求获取全服玩家列表;
e)玩家请求某个玩家信息;
一般的玩家列表实现方式采用的是数组,在实现以上操作的时候,时间复杂度基本都是O(n)的,随着玩家数的增加呈现线性复杂度,会大大提升服务器的CPU占用率;
a)玩家上线:插入到数组尾部,时间复杂度O(1);
b)玩家下线:遍历玩家列表,找到对应玩家,进行删除;遍历时间复杂度O(n),删除时间复杂度O(n);
c)玩家信息变更:遍历玩家列表,找到对应玩家,进行信息变更;遍历时间复杂度O(n),更新时间复杂度O(1);
d)玩家请求获取全服玩家列表:一般采用分页下发,但是服务器存储只有一个数组,所以需要下标索引到对应分页,请求数C,复杂度O(C);
e)玩家请求某个玩家信息:遍历玩家列表,找到对应玩家,下发玩家信息;遍历时间复杂度O(n);
当玩家数到达一定量级,就会对服务器的承载产生巨大影响。
因此,现有技术中遍历玩家列表需要遍历整个列表,会对服务器的承载产生巨大影响。
发明内容
本发明的目的是针对现有技术的缺陷,提供了一种玩家列表更新、查询的方法及系统,利用这种高效更新查找技术来对玩家信息进行存储,查找,平均时间复杂度都能达到O(log n)。
为了实现以上目的,本发明采用以下技术方案:
一种玩家列表更新、查询的方法,包括:
S1.获取每个玩家的玩家信息,并将每个玩家的信息用结构体表示,得到玩家信息的玩家结构体;
S2.初始化玩家列表的数组,并将数组中的每个元素与一个映射槽相对应,每个映射槽存储多个玩家结构体的链表头节点;
S3.判断是否有玩家上线,若是,则计算当前玩家的信息所处的映射槽,并执行步骤S4;
S4.判断计算得到的映射槽中是否存在当前玩家的信息,若否,则对所处的映射槽进行扩充,并将当前玩家结构体的链表头节点存储于所处的映射槽中;若是,则执行步骤S5;
S5.判断当前玩家是否下线,若是,则计算当前玩家的信息所处的映射槽,并遍历计算得到的所处的映射槽中玩家结构体的链表头节点,得到当前玩家的信息,将所述当前玩家的信息删除;若否,则不做处理。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州电魂网络科技股份有限公司,未经杭州电魂网络科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010867841.8/2.html,转载请声明来源钻瓜专利网。