View Code? Open in Web Editor
NEW
luban是一个强大、易用、优雅、稳定的游戏配置解决方案。luban is a powerful, easy-to-use, elegant and stable game configuration solution.
Home Page: https://code-philosophy.com/
License: MIT License
C# 99.99%
Batchfile 0.01%
Shell 0.01%
luban's People
luban's Issues
在 M1 芯片 Mac 上执行 MiniTemplate 中的 gen.sh 会报错,报错信息如下:
./gen.sh:4: exec format error: ../Tools/Luban.ClientServer/Luban.ClientServer.dll
请问是什么问题
luban 生成文件 会先删除文件夹里的所有文件,如果有非luban 需要生成的文件在文件夹 会被删除,希望改成 覆盖追加的形式!
浏览日志发现data_erlang已经移除了, 想问下移除data_erlang格式的原因?
问题
修改路径Luban.ClientServer\Templates\config\cs_unity_json\
下的table.tpl
文件后,使用LuaClientServer.exe重新生成的CS代码仍然是旧模板的代码。
尝试
删除.cache.meta
缓存重试,仍然出现相同的问题。
尝试使用自定义模板搜索路径,无法识别参数。
尝试使用 --disable_cache 参数失败,因为该参数仅对Server.exe生效。
其他
Bat脚本如下
set WORKSPACE = .
set GEN_CLIENT = " %WORKSPACE% /Luban.ClientServer/Luban.ClientServer"
set CONF_ROOT = " %WORKSPACE% /DesignerConfigs"
%GEN_CLIENT% -j cfg --^
-d %CONF_ROOT% /Defines/__root__.xml ^
--input_data_dir %CONF_ROOT% \Datas ^
--output_code_dir ../UnityProject/Assets/Script/Data/Excel/Gen ^
--output_data_dir ../UnityProject/Assets/StreamingAssets/ExcelData/Json ^
--gen_types code_cs_unity_json,data_json ^
-s all ^
--template_search_path ./Luban.ClientServer/Templates/config/cs_unity_json
pause
工具版本为这个commit 提交的版本
type=int?!我测试了下没效果,不填数据和填null都可以通过
支持cocos creator吗,使用nodejs版本的导出给cocos creator使用好像有一些问题
按照文档中的介绍,如果bean中的List字段想配置为空列表,需要使用}
占位,我这样做了之后,还是会有报错。我的定义和数据如下:
报错是:
缺少数据
MyBean.testBean => {TestBean}.b
我debug了一下,发现是读取TestBean的时候,读取到字段l时,ExcelStreamDataCreator.ReadList方法中,在循环读取元素之前,调用了一次TrySep,这次调用中,将}
读取出去了,然后把2
作为列表的元素了,所以在读取字段b的时候,就没有数据了。
我尝试了将本地语言切到 **繁体,但好像没有乱码,只不过打印出来的都是简体中文。 如有可能,请注册QQ或者微信 跟我们保持联系,方便反馈和解决问题。 我们很快会考虑解决语言本地化的问题,至少提供(简体,繁体和英文)
Originally posted by @pirunxi in #2 (comment)
生成的pb和相应语言代码是要自己在代码库里管理,程序里进行本地文件读取么?可否做成lubanserver 生成数据文件后,数据文件自动同步到etcd之类的配置中心,游戏server启动后自动在本地内存缓存所有配置数据并利用watch机制订阅etcd里得数据变化,实现数据热更。这种比较适合游戏服务端的使用场景。
你好,请问一下luban是否支持设置单个字段过滤导出?
比如说一个怪物表我们配置了资源路径,这个字段后端不需要,是否能导出的时候过滤掉
比如说怪物表我们有一个后端的AI配置项,前端不需要,是否能导出的时候过滤掉
感谢
背景说明
多人开发的情况下,甲 开发 A 功能,乙 开发 B 功能。
有 2 个 git 仓库,分别是 程序代码 和 策划配置。
甲 做 A 功能,修改删除了部分字段,提交 程序代码仓库 和 策划配置仓库。
乙 做 B 功能,本地修改了程序代码,如果此时更新了策划配置仓库,因为本地改动较多暂未更新程序代码仓库。
此时,乙导出策划配置,会发现代码编译错误。
因为本地改动较多,不方便马上更新程序代码仓库。
此时,要么导出策划配置,手动将 A 功能模块相关的改动 discard,保证编译正确。
要么将策划配置仓库 reset 到甲的修改之前(和本地代码保持一致)。
无论哪种,都会对开发过程的行为有一定的限制。
期望
因此,希望鲁班工具可以增加“是否清空 output_dir”的选项,以此来解决上述的问题。
(这样 乙导出策划配置时,只选择导出 B 功能相关的策划配置,由于没有清空 output_dir,A 功能相关的程序代码还保持之前的状态。以此来规避该问题。)
或者,对于这种情况,有其他处理方式的话,也请指教一下。
目前的一个思路是将策划配置和程序代码放到同个 git 仓库,程序代码和策划配置总是对应的。
这种思路的问题:策划配置会合程序代码在同个仓库,没有那么独立,无法限制策划不小心提交不必要的改动。即便在同个仓库,程序代码和策划配置仍旧可能不匹配。当然整体来说是个可接受的方案。想看看还有没有其他思路。
Lunban已经很好很强大了,策划的需求总是多种多样的,所以鲁班有打算支持类似protoBuff的oneof这种数据格式吗?
同一个字段里放入不同格式的复杂类型,这个很有帮助求求了~
自定义的结构体作为表的list类型生成之后TranslateText和Resolve方法报错,补上这两个方法后因为是结构体所以?.错误
表现为自动生成的继承自Luban.BeanBase的类的ToString接口返回的字符串不符合json格式
具体接口:CollectionToString<TK, TV>(IDictionary<TK, TV> dic)
定义如下
<bean name="PeopleAge" valueType="1" >
生成的代码
namespace cfg
{
public partial struct PeopleAge
...
public PeopleAge GetOrDefault(string key) => _dataMap.TryGetValue(key, out var v) ? v : null;
值类型没有null
新版本luban,忽略空白值的引用不会再生成代码
比如example中,ai.xml里的BehaviorTree,其中的blackboard_id因为加了ref,生成的代码里会自动生成一个BlackboardId_Ref。但是如果我把他改成可以忽略空白值的引用,生成的代码里就不会再生成BlackboardId_Ref了。
调试了下模版,发现如果用field.ctype.tags['ref']拿到的引用名称是ai.TbBlackboard?,名称里是带着问号的。
看了下源码,在源码TypeTemplateExtension.cs里的GetRefTable接口是这样的,估计GetTag("ref")的返回值带着问号,作为table名去GetCfgTable就失败了,不知道是不是一个BUG
另外,为啥不直接把java中的mapper功能实现出来呀?上面这个错误,是我给java补充mapper的时候看到的。
作者您好:
在实际业务中,可能存在一个excel中的多个sheet中的数据结构可能一样,所以表全名和类名会一样
按照文档,我们可以在 table .xlsx 的 input 项以逗号分隔的形式将这些页签联合起来
此时的 group 项只能管理该项定义的所有页签
但是在某些情况下,如果我不想导出一部分页签的内容,又不能在excel中删除它,该如何定义呢?
主要有以下好处
当我将程序集定义文件放在同文件下的时候,可以避免重复创建
可以减少"生成文件必须独立存放"的特性
文本末尾是']'结尾时,必须至少用一个等号[=[ ]=]来括住文本。
语法错误
local str = [[ 我是文本[我自己是有括号结尾]] ]
正确
local str = [=[ 我是文本[我自己是有括号结尾]]=]
因为配置表格里面有做宏功能的比较多,试了下好像不支持xlsm格式,后续会支持吗?
希望日常中的数据都保存在文本文件中,每次用都读回到xlsx编辑,这样xlsx就不必每次变化都上传到git了。
git上保存的都是文本的数据,xlsx就是一个编辑工具,请问这种思路可行吗,该如何操作呢?
对于Unity中导出JsonC#类,如果需要code_target支持newtonsoft-json或者JsonUtility对应的数据模型,请问有扩展的可能吗?
rt 原来的classic版本是有的,现在新版是否有计划添加typescript_bin呢
unreal工程读取test_tbdatafrommisc时会崩溃,我将test/misc_datas文件夹下所有文件中的t1变量改为其它时间后程序可以正常运行
如图(list#sep=;),((list#sep=|),int),数据2|30|1000;3|30 生成的java没问题,生成的typescript有编译问题
感谢大佬分享
我想将配置类直接作为运行时的类使用. 比如说我配置一个行为树节点,我希望这个节点有自己的运行时数据.但是如果配置两个相同节点就会导致运行时数据共用.
这样的一个结构
数据导出的时候, 如果 arr_1 和 arr_2 里的字段是一个字段一个格子的话, 会出现配置在 arr_2 的数据, 导出的时候解析到 arr_1 里
演示个极端的例子, arr_1 和 arr_2 稍微调整一下
导出的数据就会有问题
目前要保证数据导出没问题, 只能在 bean 里定义 sep 才能规避
然后某天,那个项目消失了.
所以诸葛DB 还搞不.
我是这样定义的/<var name="NormalBodyId" type="int" ref="role.TbBodyPart",但是在把NormalBodyId设置了一个TbBodyPart表中不存在的值时,在导出.bin文件的时候并没有警告
For example, the current use of json, want to further reduce the memory overhead, ready to use bin, found not supported
example默认命名空间为 'item', 我将其改成 'Item', 日志显示生成成功, 实际上生成失败了.
删除代码生成目录下的 'item' 文件夹后, 生成成功.
预期1: 提示失败
预期2: 不提示失败, 并成功生成
工具很好用,但是交由其他习惯在一个配置表中定义所有结构和内容的小伙伴来说,表示多表配置有点复杂,而且在版本管理工具环境下,tables .xlsx 文件容易冲突。
请问是否有方法不定义 三个 tables,enum,bean .xlsx 表,在业务表中就把配置内容搞定呀~
非常感谢。
例如A表,有两套数据,分别放在不同SHEET里结构相同,接口调用时支持全局的FALLBACK规则或者单表的FALLBACK规则 进行ABTEST
例如某一物品表,有字段 id, itemType, itemValue, ... ,itemValue是多态字段,可以根据itemType确定itemValue的具体类型,按现在的做法需要策划在表中新加一列标明类型,或者在itemValue前面附上类型 如 ListOfInt:1,2,3 这两种写法都需要策划了解并填入正确的多态类型名。
希望在表格schema中可以配置一个映射表,设置不同的ItemType对应的ItemValue类型,而不需要策划在每行数据中填入。
比如id,itemid+level这种格式,现在这样写会变成id,itemid,level都变成了独立查询
输出的json文件,可以不要格式化吗?格式化的json文件大了很多,可以的话要如何设置