Skip to content

你的最佳游戏配置解决方案 {excel, csv, xls, xlsx, json, bson, xml, yaml, lua, unity scriptobject} => {json, bson, xml, lua, yaml, protobuf(pb), msgpack, flatbuffers, erlang, custom template} data + {c++, java, c#, go(golang), lua, javascript(js), typescript(ts), erlang, rust, protobuf schema, flatbuffers schema, custom template} code。 不仅仅是导表工具。支持unity , ue4,…

License

Notifications You must be signed in to change notification settings

this-is-kiki/luban

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Luban

license Build Status
Docker Auto Docker Build

icon


links


介绍

luban是你的最佳游戏配置解决方案

luban高效地处理游戏开发中常见的excel、json、xml之类的数据,检查数据错误,生成c#等各种语言的代码,导出成bytes或json等多种格式。

luban统一了游戏配置开发工作流,极大提升了策划和程序的工作效率。

核心特性

  • 强大的数据解析和转换能力 {excel(csv,xls,xlsx), json, bson, xml, yaml, lua, unity ScriptableObject} => {binary, json, bson, xml, lua, yaml, erlang}
  • 支持生成c#,java,go,c++,lua,python,javascript,typescript,erlang,rust代码
  • 增强的excel格式,可以简洁地配置出像简单列表、子结构、结构列表,以及任意复杂的深层次的嵌套结构。
  • 支持json、lua、xml等格式的数据来表达行为树、技能、剧情、副本之类复杂GamePlay数据
  • 支持生成 protobuf(schema + binary + json)、flatbuffers(schema + json)、msgpack(binary)
  • 强大的数据校验能力。ref引用检查,path资源路径检查等等。
  • 支持unity、unreal、cocos2x、微信小游戏等主流引擎及 win、linux、mac等平台。
  • 支持xLua、toLua、ILRuntime、Puerts、unLua、sLuaUnreal、XIL等等主流热更新方案
  • 支持skynet、ET、GameFramework、QFramework、xlua-famework、KSFramework等第三方框架
  • 完善的本地化支持。
  • 强大灵活的自定义能力,支持代码模板和数据模板
  • ==通用型生成和缓存工具==。也可以用于生成协议、数据库之类的代码,甚至可以用作对象缓存服务。

完整特性请参见 feature

文档

  • 快速上手

  • Document ,比较完善,有使用疑问,请先查看此文档。

  • 示例项目 (github) (gitee)

  • 版本变更记录

  • 支持与联系

    • QQ群: 692890842 (Luban开发交流群)。有使用方面的疑问请及时加QQ群询问,随时有人帮助解决。
    • 邮箱: taojingjian#gmail.com

excel格式速览

完整示例请详见 excel格式介绍

普通表

##var id x1 x5 x6 s1 s2 v3 t1
##type int bool long float string text#sep=| vector3 datetime
## id desc1 desc2 desc3 desc4 desc7 desc1 time
1 false 1000 1.2 hello key1|world1 1,2,3 1999-10-10 11:12:13
2 true 1000 2.4 world key2|world2 2,4,5 1999-10-12 11:12:13

原生数据列表

##var id arr1 arr2 arr3 arr4
##type int array,int list,int (list#sep=|),string list,string
## id desc1 desc2 desc3 desc4
1 1,2,3 12 xx|yy xxxzzz
2 2;4 345 aaaa|bbbb|cccc aaabbbccc
3 2|4|6 3456 aaaa|bbbb|cccc aaabbbccc

结构列表

##var id rewards1 rewards2
##type int list,Reward list,Reward#sep=,
## id reward list desc1 reward list desc2
1 10011desc110022desc2 1001,1,desc11002,2,desc21003,3,desc3
2 10011desc1 1001,1,desc11002,2,desc2

多行表 1

##var id name stages
##type int string list,Stage
##var id name desc location item_id num
## id desc1 desc1 desc2 desc3 desc4 desc5 desc6
1 task1 1stage1stage desc11,2,310011
2stage2stage desc21,2,310011
3stage3stage desc31,2,310021
2 task2 1stage1stage desc11,2,310011
2stage2stage desc21,2,310021

多行表 2

##var id name rewards
##type int string list,Reward
##var 0 1 2
##var item_idnumdesc item_idnumdesc item_idnumdesc
1task1100110desc1100212desc2100313desc3
2task1100330desc3100440desc4
3task1100550desc5

map 类型的多级子标题

##varidlans
##typeintmap,string,string
##varch-znenjpfr
1苹果appleaaaaaa
2香蕉bananabbbbbb

类型继承(适合技能、buff相关配置)

##varidshapeshape2
##typeintShapeShape
##var__type__radiuswidthheight
1Circle10Circle100
2Rectangle1020矩形1020
310Triangle151515
4Circle10Rectangle3020

多主键表(联合索引)

多个key构成联合唯一主键。

##var key1 key2 key3 num
##type int long string int
1 1 aaa 123
1 1 bbb 124
1 2 aaa 134
2 1 aaa 124
5 6 xxx 898

多主键表(独立索引)

多个key独立索引。

##var key1 key2 key3 num
##type int long string int
1 2 aaa 123
2 4 bbb 124
3 6 ccc 134
4 8 ddd 124
5 10 eee 898

单例表

有一些配置全局只有一份,比如 公会模块的开启等级,背包初始大小,背包上限。此时使用单例表来配置这些数据比较合适。

##var guild_open_level bag_init_capacity bag_max_capacity newbie_tasks
##type int int int list,int
## desc1 desc 2 desc 3 desc 4
10 100 500 10001,10002

纵表

##var&column ##type ##
guild_open_levelintdesc110
bag_init_capacityintdesc2100
bag_max_capacityintdesc3500
newbie_taskslist,intdesc410001,10002

json、lua、xml、yaml 格式速览

以行为树为例,展示json格式下如何配置行为树配置。xml、lua、yaml等等格式请参见 详细文档

{
  "id": 10002,
  "name": "random move",
  "desc": "demo behaviour tree",
  "executor": "SERVER",
  "blackboard_id": "demo",
  "root": {
    "__type__": "Sequence",
    "id": 1,
    "node_name": "test",
    "desc": "root",
    "services": [],
    "decorators": [
      {
        "__type__": "UeLoop",
        "id": 3,
        "node_name": "",
        "flow_abort_mode": "SELF",
        "num_loops": 0,
        "infinite_loop": true,
        "infinite_loop_timeout_time": -1
      }
    ],
    "children": [
      {
        "__type__": "UeWait",
        "id": 30,
        "node_name": "",
        "ignore_restart_self": false,
        "wait_time": 1,
        "random_deviation": 0.5,
        "services": [],
        "decorators": []
      },
      {
        "__type__": "MoveToRandomLocation",
        "id": 75,
        "node_name": "",
        "ignore_restart_self": false,
        "origin_position_key": "x5",
        "radius": 30,
        "services": [],
        "decorators": []
      }
    ]
  }
}

代码使用预览

这儿只简略展示c#、typescript、go语言在开发中的用法,更多语言以及更详细的使用范例和代码见示例项目

  • C# 使用示例
// 一行代码可以加载所有配置。 cfg.Tables 包含所有表的一个实例字段。
var tables = new cfg.Tables(file => return new ByteBuf(File.ReadAllBytes(gameConfDir + "/" + file + ".bytes")));
// 访问一个单例表
Console.WriteLine(tables.TbGlobal.Name);
// 访问普通的 key-value 表
Console.WriteLine(tables.TbItem.Get(12).Name);
// 支持 operator []用法
Console.WriteLine(tables.TbMail[1001].Desc);
  • typescript 使用示例
// 一行代码可以加载所有配置。 cfg.Tables 包含所有表的一个实例字段。
let tables = new cfg.Tables(f => JsHelpers.LoadFromFile(gameConfDir, f))
// 访问一个单例表
console.log(tables.TbGlobal.name)
// 访问普通的 key-value 表
console.log(tables.TbItem.get(12).Name)
  • go 使用示例
// 一行代码可以加载所有配置。 cfg.Tables 包含所有表的一个实例字段。
if tables , err := cfg.NewTables(loader) ; err != nil {
 println(err.Error())
 return
}
// 访问一个单例表
println(tables.TbGlobal.Name)
// 访问普通的 key-value 表
println(tables.TbItem.Get(12).Name)

路线图

  • 新增 unity 内置编辑器
  • 新增 unreal 内置编辑器
  • 补充单元测试

License

Luban is licensed under the MIT license.

About

你的最佳游戏配置解决方案 {excel, csv, xls, xlsx, json, bson, xml, yaml, lua, unity scriptobject} => {json, bson, xml, lua, yaml, protobuf(pb), msgpack, flatbuffers, erlang, custom template} data + {c++, java, c#, go(golang), lua, javascript(js), typescript(ts), erlang, rust, protobuf schema, flatbuffers schema, custom template} code。 不仅仅是导表工具。支持unity , ue4,…

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C# 88.8%
  • Smarty 11.0%
  • Other 0.2%