****本人能力有限, 大家有什么好的想法,及建议 麻烦告诉我一声; 实现代码 有机会 粘上;
1> 一个人物可以带N 宠物
2>技能得分计算 int FUN(level,skill,....),需要考虑 不同技能 但同分;
3> 最基本的功能 <1>查看某宠物实时排名 <2>查看宠物实时排行榜;
基本服务器结构 场景服务器(N) <----------------> 控制中心(1)
以下 只代表个人: 不会在这上面画图,所以只能文字表达;
那么 宠物的排行应该在 控制中心;
1 查找宠物基本信息 最好的当然是HASH ,根据PET ID 做hash; 记为 HASH_INFO_LIST;
2 先分块 根据技能分数 范围 分块
以1快分8个 2块为,2块分64 个 3块 ( 根据实际情况 分块)
1级块 |N0 |....... .................... |Nk |.................... ****块深 与块 数量 可能需要 根据不同的 量 去测试 再确定;
2级块 |n0 n1 n2 ..... n7|....... ................... |n8k....n8k+7|....................
3级块 |e0,e1,e2,e3,e4...e63|.........................................................................
块内使用map (自己实现个类式multimap ), hash
排行用 mymultimap<分数,petid ,greater<分数>> 这样 得到排行榜 ,增加,删除 都很方便 ;
问题出来了,给你petid 怎么得到这个 petid 排名呢 ?
这里再根据 petid 做个hash,记录块内排名 ;
查找 petid总 排名 = 块排名+块内排名
删除,增加,更新 操作, mymultimap 重新调整时,同时更新 hash 的pet排名值;