跳到主要内容

game_server.rank

简介

组件接口

FRankBoard.gs

为排行榜对象提供启动、收集参与者数据等接口,所有排行榜对象都应该包含本组件

函数原型函数作用
string get_board_id()获取排行榜id
string get_group_id()获取排行榜的分组id
string get_board_name()获取排行榜的名字(跟排行榜服务器中存储排行数据的KEY相关)
bool start()启动排行榜
float calc_time_score(mixed t)将时间值转换城一个介于0和1之间的浮点数(用来辅助排名权重计算,时间越小,值越大)
string desc()排行榜对象的描述对象(本函数用于调试)
RankRequest new_request(string cmd)新建一个对排行榜进行操作的排行服务器请求
bool drop()删除排行服务器上的排行数据并切析构自己

FRankPlayer.gs

为排行榜参与者提供一组更新排行榜上排名和数据接口的组件 所有排行榜参与者都应该包含该组件

函数原型函数作用
void refresh_rank(string board_id)立刻刷新指定排行榜
void refresh_all_ranks()刷新所有和参与者类型一致的排行榜
void refresh_rank_fields(string board_id, map fields)只更新指定排行榜数据但不更新排名
void refresh_all_rank_fields(map fields)所有排行榜只更新指定排行榜数据但不更新排名
void heartbeat_rank()排行榜心跳函数,定时刷新参与的带有指定刷新间隔的排行榜排名(可在参与者的心跳函数中执行)

rank.gs

基于engine层实现的排行榜功能模块 由三方组成:

  1. 排行榜对象,排行榜对象必须包含FRankBoard组件
  2. 参与排行的实体对象,实体对象必须包含本模块提供的FRankPlayer组件
  3. 排行榜管理对象(rank.gs) 流程简要概括:
  4. 加载排行榜管理对象 a. rank_board.xlsx表配置 b. rank_server的连接配置(通过cfg.get_config读取) c. 加载排行榜对象的静态对象(rank.load_all_entry方式加载)
  5. 排行榜管理对象启动服务 管理对象将为rank_board.xlsx表中指定的所有排行榜逐一创建排行榜对象(new_object)并执行 启动操作;需要自行确保所有排行榜对象都创建并且启动
  6. 一般的,参与排行的实体对象,通过在心跳函数中执行heartbeat_rank()函数更新自己所有的排行榜数据; 同时也可以调用refresh_all_ranks()/reresh_rank()立刻更新所有或者指定的排行榜数据
函数原型函数作用
map get_config(string board_id)获取指定id的排行榜配置
array get_rank_list_by_type(string player_type)获取指定参与者类别的排行榜id列表
map get_auto_refresh_rank_dict_by_type(string player_type)获取指定参与者类别的需要定时自动更新数据的排行榜id列表
object get_rank_ob(string board_id)根据排行榜id获取排行榜对象
bool start()启动服务
void stop()停止服务
bool ok()排行榜是否已经启动
RankRequest new_request(string cmd)新建一个排行服请求
array get_rank_list(string board_id, int from, int to, string special_group_id = nil)获取指定排行榜id从from到to区间的排行信息列表
int get_rank(string board_id, string who_rid, string special_group_id = nil)获取特定参与者在指定排行榜的名次
map get_rank_info(string board_id, string who_rid, string special_group_id = nil)获取特定参与者在指定排行榜的排行信息
void flush_board(string board_id)请求排行服务器立刻更新指定的排行榜(异步)
array flush_board_request(string board_id)请求排行服务器立刻更新指定的排行榜(阻塞模式)
void clear_board(string board_id)请求排行服务器清空指定的排行榜
void refresh_rank(string board_id, object who)收集参与者排行数据并请求排行服务器更新排名(异步)
array refresh_rank_request(string board_id, object who)收集参与者排行数据并请求排行服务器更新排名(阻塞模式)
void refresh_fields(string board_id, object who, map fields)仅刷新参与者在排行服务器上的特定数据不更新排名

样例

public void pkg_sample()
{
write("sample");
}