CliToolkit 工具
CliToolkit 工具
目标 & 背景
在游戏开发过程中,通常我们会为了更好的测试、校验逻辑正确性等,开发很多工具,最常见的就是 GM[^1] 指令,以及一些为运营同学开发的运营工具,如:发送邮件,开启活动等等
这样我们就可以将工具分为两大类
- 游戏内建 GM 指令
- 部分工具可以直接丢进 Unity Editor 开发
- 运营工具(Web)
但是在实际开发过程中,我总是会碰到一些工具放在哪里都不合适,比如:正式服的 AB 差分上传工具、技能描述工具(帮助策划理解自己技能配置是否正确),为了解决这个问题,我在我们项目中引入了第三种工具分类,CliToolkit (已开源)
最初做技术选型时非常纠结,首先工具的开发必须使用
C#
,这样组内任意其他开发人员都可以快速上手,而且开发成本要低,同时要提供相对便利的交互
基于上述原因,最后决定基于 Spectre.Console 设计了现有的 CliToolkit
实际业务展示
git 上已经展示了针对 YooAsset [^2] 的 Sftp 差分上传,这里展示我们项目中给策划开发的技能描述工具
这里也是在 CliToolkit 的基础上,对游戏所有技能相关的配表,挨个增加了树形解释,整体开发成本很低,策划也很爱用
这里的技能系统设计,争取今年开几篇文章介绍一下
CliToolkit 设计思路
在设计时,主要考虑了如下内容:
- 参数
- 不同用户不同配置
- 命令行透传参数
- 运行模式
- 手动模式
- CI/CD 自动模式
参数
我们以 YooAsset[^2] 的差分工具为例,比如当前游戏中存在 A、B 两个渠道,每个渠道有自己的 CDN 资源服务器,那么此时上传的服务器配置也应当是两份,同时会有部分参数是需要通过命令行运行时 args 透传进行赋值的
为了解决这些问题,我们将参数分为 AutoConfig
和 CommandSettings
两种,AutoConfig
用于存放不同渠道的 Sftp 配置,而 CommandSettings
用于存放 args 透传参数,如在 README 中介绍到的 --yooasset_local_dir
参数就是存放在 CommandSettings
中的
而不同渠道不同配置,在 CommandSettings
中有一个默认的 -u
参数,用于存放到底使用哪一个 Sftp 配置
所有需要外部传入的参数,都要增加缺省判断,如果没有配置,就需要手动输入
运行模式
利用 Spectre.Cli
库,来解决多种运行模式的问题
var app = new CommandApp();
app.SetDefaultCommand<MenuCommand>();
app.Configure(
config =>
{
config.AddCommand<MenuCommand>("Menu");
config.AddCommand<CliCommand>("Cli");
}
);
return await app.RunAsync(args);
这里将手动模式标记为默认命令,这样就完成了多模式的区分
最后
希望 CliToolkit 能帮你在工具开发过程中提供一个新的解题思路
参考
[^1]: InGameDebugConsole https://github.com/yasirkula/UnityIngameDebugConsole
- 感谢你赐予我前进的力量