Skip to content

feature

walon edited this page Dec 24, 2021 · 5 revisions

特性说明


多种数据源支持

支持excel族、json、xml、lua、yaml、unity asset 多种数据格式,基本统一了游戏常见的配置数据。

增强的excel格式

可以在excel里比较简洁填写出任意复杂的嵌套数据。

强大完备的类型系统

可以优雅表达任意复杂的数据结构。

  • 基础内置类型

    • bool,byte,short,fshort,int,fint,long,flong,float,double,string,text,bytes
    • vector2, vector3,vector4
    • datetime
  • 可空类型

    除了容器类型以外的类型,都支持相应的可空数据结构。如 bool?, string?, MyEnum? MyBean? 。

  • 自定义枚举 enum

  • 自定义结构 bean

    • 可以定义所有类型的字段
    • 支持无限制的结构继承,对于表达中大型项目的复杂数据(技能,buff,ai 等等) 极其有用。 (比如基类Shape, 子类 Circle,Rectangle
  • 支持容器类型 array。 value 可以为内置类型,也可以为自定义类型

  • 支持容器类型 list。 value 可以为内置类型,也可以为自定义类型

  • 支持容器类型 set。 value 只能为内置类型或者enum类型,不支持 bean 类型

  • 支持容器类型 map。 key 只能为内置类型或者enum类型,不支持 bean 类型。 value 可以为内置类型,也可以为自定义类型

支持多种导出数据格式

  • 支持生成protobufmsgpackflatbuffers相应的定义文件及相应的数据文件(直接反射导出,高效,并不需要生成代码后再利用生成的代码加载导出)
  • 多种导出数据格式支持。支持binary、json、protobufmsgpackflatbuffers、lua、xml、erlang、xlsx 及自定义的导出数据格式
  • 支持xlsx与json、lua、xml、yaml等格式之间互转
  • 导出配置中所有资源字符串列表

灵活的配置文件组织形式

支持以下几种组织形式,允许开发者根据情况灵活组织配置文件结构。例如可以一个表对应一个xlsx文件;可以多个表都放到同个xlsx文件;可以一个表对应多个xlsx文件;可以一个表对应一个目录。

  • 来自某个excel文件的所有单元薄
  • 来自某个excel文件的指定单元薄
  • 来自json、xml、lua、yaml文件
  • 来自json、xml、lua、yaml子字段 (如root.a.b)
  • 来自目录树下所有文件,每个文件对应一个记录
  • 以上的随意组合

分组导出

灵活的分组定义,不仅仅是client和server分组。支持以下分组粒度:

  • 表级别分组
  • 字段级别分组(任意bean字段粒度,而不仅限于顶层字段)

强大的数据校验器

  • ref 。id合法性检查
  • path 。资源合法性检查
  • range 。 数据范围检查
  • set 。 数据集合检查
  • size 。 容器大小检查

支持多种常见数据表模式

  • singleton(单例表)

  • map(常规key-value表)

  • list(支持无索引、多主键联合索引、多主键独立索引)

支持external type,即外部类

  • 支持外部enum类型。你可以在配置中引用现成的enum类,比如UnityEngine.AudioType。
  • 支持外部class类型。你可以在配置中引用现成的class类,比如 UnityEngine.Color。

数据标签

支持数据标签。 可以选择导出符合要求的数据,发布正式数据时策划不必手动注释掉那些测试数据了

代码与数据模板,强大灵活的定制能力

  • 支持代码模板,可以用自定义模板定制生成的代码格式

  • 支持数据模板,可以用模板文件定制导出格式。意味着可以在不改动现有程序代码的情况下,把luban当作配置处理前端,生成自定义格式的数据与自己项目的配置加载代码配合工作。开发已久的项目或者已经上线的老项目,也能从luban强大的数据处理工作流中获益

完善的本地化支持

  • 支持时间本地化。datetime类型数据会根据指定的timezone,转换为目标地区该时刻的UTC时间,方便程序使用。

  • 支持文本静态本地化。导出时所有text类型数据正确替换为最终的本地化字符串。绝大多数的业务功能不再需要运行根据本地化id去查找文本的内容,简化程序员的工作。

  • 支持文本动态本地化。运行时动态切换所有text类型数据为目标本地化字符串。

  • 支持 main + patches 数据合并。在基础数据上,施加差分数据,生成最终完整数据,适用于制作有细微不同的多地区的配置数据。

  • [TODO] 【独创】 支持任意粒度和任意类型数据(如int,bean,list,map)的本地化。

极高的生成性能

  • 支持云生成。 利用远程生成缓存,MMORPG这样大型项目也能秒内生成,日志增量生成基本在300ms以内。

  • 支持本地生成。支持常规的本地缓存增量生成模式。

  • 支持watch监测模式,数据目录变化立即重新生成。

支持主流的游戏开发语言

  • c++ (11+)
  • c# (.net framework 4+. dotnet core 3+)
  • java (1.6+)
  • go (1.10+)
  • lua (5.1+)
  • js 和 typescript (3.0+)
  • python (2.7,3.0+)
  • erlang (18+)
  • rust (1.5+)
  • 其他protobuf、msgpack、flatbuffers支持的语言

支持主流引擎和平台