# 介绍 ## Luban.Client 、Luban.Server和 Luban.ClientServer的功能和区别 Luban 默认的工作模型为 云生成模型,也就是 Luban.Client 将生成请求提交到远程的 Luban.Server,Luban.Server将生成结果返回给Luban.Client。 对于使用Luban云生成工作模型的项目,需要在一个服务器上部属 Luban.Server (当然也可以直接在本地化运行),然后将 Luban.Client的 -h 参数改为 该服务器的IP。 Luban.ClientServer为Luban.Client+Luban.Server一体的程序,内嵌了Luban.Client和Luban.Server,其工作原理与云生成的模式一致。 有些项目规模较小,或者为个人开发者,不想部属Luban.Server,则可以采用Luban.ClientServer工具。 ## 云生成的优点 云生成模式下,Luban.Server会缓存生成结果,对于定义和数据没有变化的配置表,直接返回生成结果。日常开发中,经常只改动了个别表,使用了云生成后,只会生成改变的表的数据, 极大缩短了生成时间,日常生成时间基本在300ms量级。 对于MMORPG这样的大项目,日常生成基本了1s以内,节省非常可观的时间。 ## 部属 Luban工具有两种部属方式。 ### 方法1: Luban.Client与Luban.Server独立部属,云生成模式 #### 部属 luban-server - 基于 docker (强烈推荐以这种方式在服务器上部属luban-server,因为可以充分利用缓存机制大幅缩短生成时间) docker run -d --rm --name luban-server -p 8899:8899 focuscreativegames/luban-server:latest - 基于 .net 6 runtime (可跨平台,不需要重新编译) - 自行安装 .net 6 runtime. - 从[示例项目](https://github.com/focus-creative-games/luban_examples/tree/main/Tools/Luban.ClientServer)拷贝整个Luban.ClientServer目录(**可跨平台,即使在linux、mac平台也不需要重新编译**) - 在Luban.ClientServer目录下运行 dotnet Luban.Server.dll (提示:Win平台可以直接运行 Luban.Server.exe) #### 安装 luban-client - 基于 docker (只推荐与jenkins之类devops工具配合使用,因为docker容器启动会增加一定的延迟) docker run --rm -v $PWD/.cache.meta:/bin/.cache.meta focuscreativegames/luban-client <参数> 提醒! .cache.meta这个文件用于保存本地生成或者提交到远程的文件md5缓存,**强烈推荐** 添加-v $PWD/.cache.meta:/bin/.cache.meta 映射,不然每次重新计算所有涉及文件的md5,这可能在项目后期会造成多达几秒的延迟。 - 基于 .net 6 runtime (推荐win平台使用,可跨平台,不需要重新编译) - 自行安装 .net 6 runtime. - 从[示例项目](https://github.com/focus-creative-games/luban_examples/tree/main/Tools/Luban.Client)拷贝 Luban.Client(**可跨平台,即使在linux、mac平台也不需要重新编译**) ### 方法2: Client与Server一体模式 Client与Server在同个进程内运行,不需要单独部属Luban.Server。 将运行脚本中%LUBAN_CLIENT%变量由 Luban.Client/Luban.Client 改为 Luban.ClientServer/Luban.ClientServer,同时**删除 -h (--host ) 选项及其参数**。 Luban.ClientServer是Luban.Client的功能超集,可以完全替代Luban.Client。 ----- ## 使用 ### luban-server 使用介绍 命令行使用 dotnet Luban.Server.dll [-p ] [-l ] 参数介绍: -p, --port 可选参数。 监听端口 ,默认为8899。 -l, --loglevel 可选参数。 日志级别。默认为INFO。 有效值有: TRACE,DEBUG,INFO,WARN,ERROR,FATAL,OFF -t, --template_search_path 可选参数。模板的额外搜索路径。优先从此路径,再从Templates目录搜索模板文件。 --disable_cache 可选参数。禁用生成中间过程的缓存,但保留了源文件缓存。在模板调试时比较有用。 --i10n:default_timezone 可选参数。 datetime时间所在的时区。如果未设置则会尝试用"Asia/Shangehai"和"China Standard Time"。 关于时区,win下可使用命令"tzutil /l" 查看本机时区列表。 也可查阅MS文档[default-time-zones列表](https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/default-time-zones?view=windows-11) ### luban-client 使用介绍 命令行使用 dotnet Luban.Client.dll [-h ] [-p ] [-l ] [-c ] [-w ] [-h ] -j cfg -- 参数介绍: -h,--host 可选参数。 luban-server的地址。默认为 127.0.0.1 -p,--port 可选参数。 luban-server的端口。默认为 8899 -j,--job 必选参数。 生成类型。目前支持的生成类型有: cfg,proto,db。 生成配置请取cfg。 -l,--loglevel 可选参数。 日志级别。默认为INFO。有效值有: TRACE,DEBUG,INFO,WARN,ERROR,FATAL,OFF -c,--cachemetafile 可选参数。 meta缓存文件名。 默认为 .cache.meta -w,--watch 可选参数。 监测目录或者目录列表,以逗号';'分隔。当开启此选项后,生成结束后不会退出程序,而是进入自动生成模式。监听到目标目录发生变化后,自动重新运行生成。省去改动后手动运行生成脚本的麻烦。 --generateonly 可选参数。 仅生成。不从服务器下载生成结果。可以用于检查服务器是否能成功生成。 -h,--help 可选参数。显示帮助信息 -- 必选参数。 从此参数起,便是 不同job的特有选项 ----- cfg的介绍: -d,--define_file 必选参数。 根定义文件名。 --input_data_dir 必选参数。 配置数据文件根目录。 --input:convert:dir 可选参数。 执行json、lua、xlsx之类数据格式转换时,提供的数据源,覆盖table中默认的input参数。 -c,--output_code_dir 可选参数。 生成代码文件的目录。 -s,--service 必选参数。生成分组目标。一般来说,会定义client,server,editor等好几个目标,不同目标的生成内容不同。 --gen_types 必选参数。生成任务类型。既可以是生成代码也可以是生成数据或者其他。目前支持的有 code_cs_bin,code_cs_unity_bin,code_cs_dotnet_json,code_cs_unity_json,code_cs_unity_editor_json,code_lua_bin,code_java_bin,code_go_bin,code_go_json,code_cpp_bin,code_cpp_ue_editor_json,code_python27_json,code_python3_json,code_typescript_bin,code_typescript_json,code_rust_json,code_protobuf2,code_protobuf3,code_template,code_flatbuffers,data_bin,data_lua,data_json,data_json_monolithic,data_yaml,data_template,data_protobuf_bin,data_protobuf_json,data_flatbuffers_json,convert_json,convert_lua,convert_xlsx,convert_template --validate_root_dir . 可选参数。 配置path检查的根目录。 --output_data_dir 可选参数。 导出的数据文件的目录。只生成代码时可不指定。 --output:data:compact_json 可选参数。默认导出的json格式为对齐后的优雅格式,使用此参数后导出紧凑的不带空格和换行的格式。 --output:data:file_extension 可选参数。 导出数据文件的后缀。默认按照生成类型自动选择。 --output:exclude_tags 可选参数。 导出时排除包含这些tag的数据 --output:tables 可选参数。手动指定导出哪些表。覆盖group中设置 --output:include_tables 可选参数。除了group中设置外,额外新增表。 --output:exclude_tables 可选参数。排除group中指定的表。 --output:convert:file_extension 可选参数。 convert数据文件的后缀。默认按照模板名猜测。 --template:code:dir 可选参数。自定义额外代码模板的目录名 --template:data:file