Better Genshin Impact项目中卡维邀约事件的文本修正分析

Better Genshin Impact项目中卡维邀约事件的文本修正分析

引言:自动化邀约系统的技术挑战

在原神(Genshin Impact)这款开放世界角色扮演游戏中,邀约事件(Hangout Event)是玩家与特定角色互动的重要方式。Better Genshin Impact项目作为一个自动化辅助工具,面临着准确识别和处理邀约选项的技术挑战。本文将以卡维(Kaveh)角色的邀约事件为例,深入分析项目中文本识别与修正的技术实现。

卡维邀约事件的技术架构

邀约配置系统的核心设计

Better Genshin Impact项目采用JSON配置文件来管理所有角色的邀约选项,具体实现位于 GameTask/AutoSkip/Assets/hangout.json 文件中。卡维角色的邀约配置如下:

"卡维结局1:未来蓝图": [
    "一起去说服刚刚的委托人吧",
    "尝试一下新的风格"
],
"卡维结局2:契约达成": [
    "一起去说服刚刚的委托人吧",
    "可以找其他商人筹款"
],
"卡维结局3:闲时小聚": [
    "做些别的事转换心情",
    "卡维为什么当设计师呢",
    "去找熟人问问"
],
"卡维结局4:群星之下": [
    "做些别的事转换心情",
    "卡维为什么当设计师呢",
    "还是先别管这个了"
],
"卡维结局5:第1堂课": [
    "做些别的事转换心情",
    "找份其他工作赚钱"
]

文本识别技术栈

项目采用多模态技术方案进行文本识别:

技术组件功能描述应用场景
PaddleOCR光学字符识别引擎选项文字提取
OpenCV图像处理库区域检测与预处理
模板匹配图标识别选项框定位
颜色识别特殊文字检测橙色优先级选项

文本修正的关键技术实现

1. 区域定位算法

// 选项文字区域计算算法
Rect r = default;
var captureArea = TaskContext.Instance().SystemInfo.ScaleMax1080PCaptureRect;
var assetScale = TaskContext.Instance().SystemInfo.AssetScale;

if (IconRect.Left > captureArea.Width / 2) {
    // 右边的选项
    r = new Rect(IconRect.Right, IconRect.Top - IconRect.Height * 2 / 3, 
                captureArea.Width - IconRect.Right - (int)(10 * assetScale), 
                IconRect.Height + IconRect.Height * 4 / 3);
} else if (IconRect.Right < captureArea.Width / 2) {
    // 左边的选项
    r = new Rect((int)(10 * assetScale), IconRect.Top - IconRect.Height * 2 / 3, 
                IconRect.Left - (int)(10 * assetScale), 
                IconRect.Height + IconRect.Height * 4 / 3);
}

2. 文本匹配与修正流程

mermaid

3. 多语言支持与编码处理

项目采用统一的文本处理工具类:

// 文本预处理工具方法
public static string RemoveAllEnter(string text) {
    return text.Replace("\r", "").Replace("\n", "");
}

// OCR识别结果处理
var text = OcrFactory.Paddle.Ocr(hangoutOption.TextRect!.SrcMat);
hangoutOption.OptionTextSrc = StringUtils.RemoveAllEnter(text);

卡维邀约的具体修正案例

分支选项的关键词匹配策略

卡维邀约包含5个不同结局,每个结局对应特定的对话选项组合。系统通过精确的关键词匹配来实现自动化选择:

结局名称关键词组合选择逻辑
未来蓝图"说服委托人" + "新风格"建筑设计师路线
契约达成"说服委托人" + "其他商人"商业合作路线
闲时小聚"转换心情" + "设计师原因" + "找熟人"社交互动路线
群星之下"转换心情" + "设计师原因" + "不管了"浪漫结局路线
第1堂课"转换心情" + "其他工作"职业转变路线

文本相似度处理技术

为了解决OCR识别可能出现的误差,项目实现了智能匹配算法:

// 关键词模糊匹配实现
foreach (var hangoutOption in hangoutOptionList) {
    foreach (var str in chooseList) {
        if (hangoutOption.OptionTextSrc.Contains(str)) {
            // 执行选择逻辑
            HangoutOptionClick(hangoutOption);
            _logger.LogInformation("邀约分支[{Text}]关键词[{Str}]命中", 
                                  _config.AutoHangoutEndChoose, str);
            return;
        }
    }
}

技术优化与性能考量

1. 识别准确率提升策略

  • 区域自适应计算:根据屏幕分辨率和UI缩放比例动态调整识别区域
  • 多帧验证机制:对关键选项进行多次识别以确保准确性
  • 错误处理机制:当识别到异常位置选项时记录日志并跳过

2. 性能优化措施

// 邀约选项选择频率控制
if ((DateTime.Now - _prevHangoutExecute).TotalMilliseconds < 1200) {
    return; // 避免频繁执行
}
_prevHangoutExecute = DateTime.Now;

3. 用户体验优化

  • 可配置延迟:用户可设置选择选项前的等待时间
  • 背景运行支持:游戏最小化时仍可执行自动化
  • 详细日志记录:所有操作都有完整的日志追踪

技术挑战与解决方案

挑战1:多分辨率适配

问题:不同设备和分辨率下UI元素位置变化 解决方案:基于相对坐标和缩放系数的动态计算

挑战2:文本识别误差

问题:OCR识别可能存在字符错误 解决方案:关键词模糊匹配和多次验证机制

挑战3:实时性要求

问题:游戏画面变化快速,需要实时响应 解决方案:高效的图像处理算法和频率控制

总结与展望

Better Genshin Impact项目在卡维邀约事件的文本处理上展现了成熟的技术方案:

  1. 配置驱动设计:通过JSON文件管理所有邀约选项,便于维护和扩展
  2. 多技术融合:结合OCR、图像处理和模板匹配等多种技术
  3. 智能匹配算法:支持关键词模糊匹配,提高识别容错率
  4. 性能优化:合理的频率控制和资源管理确保流畅运行

未来可进一步优化的方向包括:

  • 深度学习模型的应用提高文本识别准确率
  • 多语言支持的扩展
  • 更智能的选项预测算法

通过持续的技术迭代,Better Genshin Impact项目为游戏自动化领域提供了有价值的实践经验和技术参考。

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值