主站
道具百科
触发器百科
脚本API百科
创作手册
创作功能
其他
Studio百科
数据储存
Cloud 更新时间: 2022-08-11 14:28:35

一、概览

数据存储功能将满足平台开发者游戏数据存档的需求。该服务提供持久化存取游戏玩家数据的能力。比如游戏玩家的等级、经验、技能点等,不论何时(先后多次进出游戏)、何地(在游戏哪个房间)都能访问和修改已保存的玩家数据或游戏全局数据(如战力排行榜、竞速时间排行榜等)。

 

可以存取的数据分为普通数据集(表)和有序数据集(排行榜),每个游戏可以存在多个不同名称的数据集。

 

开发者可以通过新增的全局变量使用该功能:

  • 排行榜

也可通过Lua脚本直接调用有关接口来使用。

 

注意:

  1. 仅云服房间支持该功能。
  2. 所有保存的数据在地图已上传续存期间会一直存在,除非主动调用删除接口或者把地图删除下线。取消上传地图后,数据会保留30天,30天内未重新上传地图数据将被彻底清除,无法恢复。

在联机或单机情况下,该功能只能实现当前地图当前房间数据的临时存储,且联机房间关闭后数据就会一起消失。

 

二、普通数据集(表)

数据存储中的每个值(value)都由一个独特的键(key)索引,可以往里面添加任意值,一个key只能对应一个value,value可以是数值,可以是字符串,也可以是json字符串等。例如玩家玩家相关数据可如下所示存取:

键(KEY) 值(VALUE)
level 50
attr { "flowers": 100, "level": 6, "vip": 3,"played_count": 13, "label": "超神"}
coin 78000

通过相同的数据集名称和键,就可以访问和修改特定的数据。

 

三、有序数据集(排行榜)

  • 排行榜变量可以存地图排名前1000位玩家的数据,实现全图排行榜功能
  • 排行榜默认排序方式为(升序)从小到大,取值时可以使用负数从排行榜尾端从大到小取值
  • 排行榜变量只能存整数,存入小数只会取整数部分

 

格式

仅能往里面添加数值(整数),且一个key仅对应一个value.

 

四、触发器(动作):

  • 在排行榜中设置玩家的数值
  • 在排行榜中设置指定名称的数值
  • 在排行榜中删除玩家的
  • 在排行榜中删除指定名称的
  • 使排行榜中指定玩家的值自运算
  • 使排行榜中指定名称的值自运算
  • 获取排行榜中指定排名的
  • 获取排行榜中指定玩家的
  • 获取排行榜中指定名称的
  • 在表中设置指定名称的任意
  • 在表中删除指定名称的
  • 获取表中指定名称的
  • 清空表
  • 清空排行榜

 

五、使用限制

数据存储是存在限制的,如果超出这些限制,服务就会自动限制游戏的数据存储使用量,从而导致数据保存失败。

 

服务器限制

每个游戏内的请求服务器会根据同时在线的玩家数量来允许一定数量的数据存储请求(更多的玩家意味有更高的配额更多的数据)。

请求类型 函数 每分钟请求数
获取 getDataListByKey 30 + numPlayers × 10
设置(限制与所有列出的函数共享)
removeDataListByKey
30 + numPlayers × 10
有序数据集(排行榜) getOrderDataByKey getOrderDataIndexValue getOrderDataIndexArea getOrderDataValueArea ClearOrderData 5 + numPlayers × 2
请求类型 函数 冷却时间
设置(相同的键) 所有设置修改数据类接口,对于同一个KEY的操作都有冷却时间 请求间隔6秒

 

体验限制

整个游戏/地图(其所有活跃的房间服务器)能够调用数据存储的频率也有限制。特别是在过多服务器同时请求特定键时,请求可能会被限制。为了避免超出限制,开发者应该只在两种情况下使用数据存储:

  • 保存玩家数据 — 所请求的键对于每个玩家(UserId 在此很有用)而言都是唯一的,因此不太可能达到全局限制。
  • 管理全局配置 — 如果每个服务器只是读取不经常更改的值,则几乎没有机会达到阈值。

 

数据长度限制

除了请求频率,数据存储同时也会限制每个KEY-VALUE条目可使用的数据量。键、名称都需要在一定的字符长度内,存储的数据量也有限制。

由于键、名称是字符串,因此可以使用Lua脚本语言的 string.len() 检查它们的长度。数据也保存为数据存储中的字符串,而不管其初始类型如何。可以使用将 Lua 数据转换为序列化 JSON 表的 JSONEncode() 函数检查数据的大小。

组成部分 最大字符数
50
名称 50
数据 2,000,000

 

六、脚本API接口

Lua脚本提供更高的灵活性能实现更复杂的逻辑,具体接口参考:云服数据存储接口 CloudSever

站点有内容要更新是否更新。
更新
忽略