首页 > 其他分享 >CliToolkit 工具

CliToolkit 工具

时间:2023-04-12 15:48:09浏览次数:40  
标签:CommandSettings app 开发 参数 工具 CliToolkit

目标 & 背景

在游戏开发过程中,通常我们会为了更好的测试、校验逻辑正确性等,开发很多工具,最常见的就是 GM1 指令,以及一些为运营同学开发的运营工具,如:发送邮件,开启活动等等

这样我们就可以将工具分为两大类

  • 游戏内建 GM 指令
    • 部分工具可以直接丢进 Unity Editor 开发
  • 运营工具(Web)

但是在实际开发过程中,我总是会碰到一些工具放在哪里都不合适,比如:正式服的 AB 差分上传工具、技能描述工具(帮助策划理解自己技能配置是否正确),为了解决这个问题,我在我们项目中引入了第三种工具分类,CliToolkit (已开源)

最初做技术选型时非常纠结,首先工具的开发必须使用 C#,这样组内任意其他开发人员都可以快速上手,而且开发成本要低,同时要提供相对便利的交互

基于上述原因,最后决定基于 Spectre.Console 设计了现有的 CliToolkit

实际业务展示

git 上已经展示了针对 YooAsset 2 的 Sftp 差分上传,这里展示我们项目中给策划开发的技能描述工具

iShot_2022-11-20_10.45.59

这里也是在 CliToolkit 的基础上,对游戏所有技能相关的配表,挨个增加了树形解释,整体开发成本很低,策划也很爱用

这里的技能系统设计,争取今年开几篇文章介绍一下

CliToolkit 设计思路

在设计时,主要考虑了如下内容:

  • 参数
    • 不同用户不同配置
    • 命令行透传参数
  • 运行模式
    • 手动模式
    • CI/CD 自动模式

参数

我们以 YooAsset2 的差分工具为例,比如当前游戏中存在 A、B 两个渠道,每个渠道有自己的 CDN 资源服务器,那么此时上传的服务器配置也应当是两份,同时会有部分参数是需要通过命令行运行时 args 透传进行赋值的

为了解决这些问题,我们将参数分为 AutoConfigCommandSettings 两种,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

  2. YooAsset https://github.com/tuyoogame/YooAsset 2

标签:CommandSettings,app,开发,参数,工具,CliToolkit
From: https://www.cnblogs.com/LiuOcean-Blog/p/clitoolkit-gong-ju.html

相关文章

  • 78、扣水果—钢笔工具
    1、用钢笔工具把桃子抠出来之后,然后添加蒙版2、shift+点击蒙版(关闭蒙版),然后再用钢笔扣下一个桃子,然后ctrl+回车关闭路径,  再打开关闭的蒙版,然后给关闭的路径填充白色,这样第二个桃子就出来了    ......
  • 武汉万象奥科:内存压力测试工具memtester使用指南
    测试目的内存压力测试的目的是测试系统内存的稳定性和可靠性,以便确定系统是否能够在各种负载情况下正常运行。其主要目的有:测试内存的正确性:通过模拟各种内存负载情况,例如写入随机数据、重复写入相同数据、使用指定的模式写入数据等,并检测和报告内存错误。测试内存的性能:通过测......
  • 【工具类】-Map
    MapentrySet遍历,在键和值都需要时使用(最常用)Map<Integer,Integer>map=newHashMap<Integer,Integer>();map.put(1,2);for(Map.Entry<Integer,Integer>entry:map.entrySet()){System.out.println("key="......
  • 【工具类】-日志、项目启动
    项目启动-Dspring.profiles.active=dev日志log.error("[滴滴取消订单]-leecancelDidiOrder-订单编号:{},异常信息:{}",orderNo,Throwables.getStackTraceAsString(e));<dependency><groupId>com.google.guava</groupId><a......
  • Java:使用hutool工具类UrlBuilder、urlQuery构建url查询参数
    依赖<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.4.6</version></dependency>url查询参数构建packagecom.example;importcn.hutool.core.net.url.UrlQuery;im......
  • 编程语言和编程工具
    使用过的语言:C、C++、Java、PythonC语言的优势:C语言编写的代码效率高,运行速度快。C语言的语法和功能简单,易于学习和理解。C语言具有很高的可移植性,可以在多种不同的平台上运行。C++语言的优势:C++语言是一种强类型的面向对象编程语言,可以方便地进行模块化的设计和开发。C......
  • CodeGeeX论文发表:揭秘AI辅助编程工具背后的大模型
    近日,CodeGeeX模型迭代v1.5版本上线,用户反馈模型效果和使用效率较之前有大幅提升。恰逢CodeGeeX团队在arxiv上发布了论文,详细介绍了CodeGeeXAI编程辅助工具背后的代码生成大模型的架构、训练过程及推理加速等工作。今天我们对这篇论文的核心信息进行解读,让更多的开发者了解Cod......
  • java判断字符串是否包含汉字工具类
       /***判断字符串中是否包含中文**@paramstr待校验字符串*@return是否为中文*@warn不能校验是否为中文标点符号*/publicstaticbooleanisContainsChinese(Stringstr){if(str==null){returnfalse;}P......
  • Scheme语言在线代码运行编译工具推荐
    Scheme语言在线运行编译,是一款可在线编程编辑器,在编辑器上输入Scheme语言代码,点击运行,可在线编译运行Scheme语言,Scheme语言代码在线运行调试,Scheme语言在线编译,可快速在线测试您的Scheme语言代码,在线编译Scheme语言代码发现是否存在错误,如果代码测试通过,将会输出编译后的......
  • 多通道振弦传感器无线采集仪参数配置工具SETP简单介绍
    多通道振弦传感器无线采集仪参数配置工具SETP简单介绍参数配置工具SETP是专门为VS系列多通道振弦采发仪开发的软件程序,可完成设备内部所有参数的读取和修改工作,也可当做简单的通道数据读取工具来使用。运行配置工具双击SETP.exe运行程序,如下图所示。界面组成如上图所示,......