diff --git a/README.md b/README.md index aff707e..2eabe63 100644 --- a/README.md +++ b/README.md @@ -17,16 +17,16 @@ ## 介绍 -luban是一个通用型对象生成与缓存方案, 在此基础上实现了一个功能**完备强大灵活易用**的 **游戏配置解决方案**。 +luban是一个通用型对象生成与缓存方案, 在此基础上实现了一个功能**完备强大灵活易用**的**游戏配置解决方案**。 -luban基于 **meta定义 + 数据源** 的设计,实现了**完备的类型系统**,增强了excel格式,同时提供json、xml、lua等丰富的数据源支持。既可以处理常规的简单配置,也完美处理**AI、技能、副本**等复杂配置,真正实现了统一数据定义、加载、检验、数据导出及代码生成的游戏配置工作流,彻底解决了中大型项目中需要程序员手动处理复杂配置的问题。 +luban基于 **meta定义 + 数据源** 的设计,实现了**完备的类型系统**,增强了excel格式,同时提供json、xml、lua、yaml等丰富的数据源支持。既可以处理常规的简单配置,也完美处理**AI、技能、副本**等复杂配置,真正实现了统一数据定义、加载、检验、数据导出及代码生成的游戏配置工作流,彻底解决了中大型项目中需要程序员手动处理复杂配置的问题。 -Luban生成过程极快。对于普通的导表工具,一个典型的MMORPG项目后期全量生成配置往往需要几十秒。Luban使用client/server的云生成模型,通过多线程并发生成+对象缓存机制,大多数情况下可以1s内完成整个生成过程。 +**luban功能极为丰富,支持游戏行业几乎所有主流的前后端语言和客户端引擎**。luban目前由专业团队维护,保持活跃的特性补充及功能优化,并有客服及时跟进反馈和提供开发指导。 Luban适合有以下需求的开发者: -1. 希望找一个快速强大经受过上线项目检验的满足**中大型**游戏项目配置需求的游戏配置解决方案 -2. 希望针对项目需求方便地定制配置、消息等生成,满足更严苛的内存和性能的要求 -3. 希望做其他自定义生成或者缓存 +- 希望找一个快速强大经受过上线项目检验的满足**中大型**游戏项目配置需求的游戏配置解决方案 +- 希望针对项目需求方便地定制配置、消息等生成,满足更严苛的内存和性能的要求 +- 希望做其他自定义生成或者缓存 ====**如果觉得不错,烦请点个star,你的支持会给予我们巨大动力 ^_^**==== @@ -48,9 +48,11 @@ Luban适合有以下需求的开发者: ## 特性 -- 支持增强的excel格式,可以在excel里比较简洁填写出任意复杂的数据 -- 支持excel族、json、xml、lua 多种数据格式,基本统一了游戏内的配置数据 -- 强大完备的类型系统。支持所有常见原生类型、datetime类型、容器类型list,set,map、枚举和结构、**多态结构**以及**可空类型** +- 支持excel族、json、xml、lua、yaml 多种数据格式,基本统一了游戏常见的配置数据 +- **强大完备的类型系统**。**可以优雅表达任意复杂的数据结构**。支持所有常见原生类型、datetime类型、容器类型list,set,map、枚举和结构、**多态结构**以及**可空类型**。 +- 支持增强的excel格式。可以在excel里比较简洁填写出任意复杂的数据,就算只用excel,也能比较简洁自然地配出技能、AI之类的复杂数据。 +- 生成代码清晰易读、良好模块化。特地支持运行时原子性热更新配置。 +- 使用云生成模式。生成极快,MMORPG这样大型项目也能秒内生成。日常增量生成基本在300ms以内。节省迭代时间。支持watch监测模式,数据目录变化立即重新生成。 - 灵活的数据源定义。一个表可以来自多个文件或者一个文件内定义多个表或者一个目录下所有文件甚至来自云表格,以及以上的组合 - 支持表与字段级别分组。可以选择性地导出客户端或者服务器所用的表及字段 - 多种导出数据格式支持。支持binary、json、lua 等导出数据格式 @@ -60,12 +62,12 @@ Luban适合有以下需求的开发者: - 支持多种常见数据表模式。 one(单例表)、map(常规key-value表) - 支持emmylua anntations。生成的lua包含符合emmylua 格式anntations信息。配合emmylua有良好的配置代码提示能力 - 支持res资源标记。可以一键导出配置中引用的所有资源列表(icon,ui,assetbundle等等) -- 生成代码清晰易读、良好模块化 - **本地化支持** - 支持时间本地化。datetime类型数据会根据指定的timezone,转换为目标地区该时刻的UTC时间,方便程序使用。 - - **支持文本静态本地化。导出时所有text类型数据正确替换为最终的本地化字符串。** + - 支持文本静态本地化。导出时所有text类型数据正确替换为最终的本地化字符串。绝大多数的业务功能不再需要运行根据本地化id去查找文本的内容,简化程序员的工作。 + - 支持 main + patches 数据合并。在基础数据上,施加差分数据,生成最终完整数据,适用于制作有细微不同的多地区的配置数据。 - [TODO] 支持文本动态本地化。运行时动态切换所有text类型数据为目标本地化字符串。 - - **支持 main + patches 数据合并。在基础数据上,施加差分数据,生成最终完整数据,适用于制作有细微不同的多地区的配置数据。** + - [TODO] 【独创】 支持任意粒度和任意类型数据(如int,bean,list,map)的本地化。 - 支持主流的游戏开发语言 - c++ (11+) - c# (.net framework 4+. dotnet core 3+) @@ -97,9 +99,9 @@ Luban适合有以下需求的开发者: ## 快速预览 -**luban兼容传统的excel导表工具,可以在excel定义完整的数据表**。与常见的专注于excel的导表工具不同,由于luban支持强大的类型系统以及支持json、xml、lua等文件类型,luban原生做法为定义与数据分离,使用单独的xml定义 **表和结构**,数据文件只包含数据。 +**luban兼容传统的excel导表工具,可以在excel定义完整的数据表**。与常见的专注于excel的导表工具不同,luban传统做法为定义与数据分离,使用单独的xml定义 **表和结构**,数据文件只包含数据。 -下面展示完普通兼容例子后,剩余例子都是**定义与数据分离**的luban风格。使用者自己选择是定义与数据混合的方式还是定义与数据分离的方式或者混用两种方式。目前luban_examples项目中大多数示例使用定义与数据分离的方式。 +下面展示完普通兼容例子后,剩余例子都是**定义与数据分离**的传统风格。使用者自己选择是定义与数据混合的方式还是定义与数据分离的方式或者混用两种方式。目前luban_examples项目中大多数示例使用定义与数据分离的方式。 ----- @@ -754,6 +756,76 @@ return } ``` +### yaml 数据源 +定义 + +```xml + +