Skip to content

feat(start): 支持通过 windows.args 配置游戏启动参数 - #96

Open
AliceJump wants to merge 1 commit into
ok-oldking:masterfrom
AliceJump:windows-launch-args
Open

AliceJump wants to merge 1 commit into
ok-oldking:masterfrom
AliceJump:windows-launch-args

Conversation

@AliceJump

Copy link
Copy Markdown
Contributor

背景

下游脚本需要给游戏传启动参数时,目前只能靠猴子补丁改写 StartController.start_device
(例如 longer-sausage/OK-AzurPromilia#13 的做法)。本 PR 把该能力下沉到框架,脚本侧只需要在
config.py 里声明,不再需要打补丁:

"windows": {
    "exe": ["AzurPromilia.exe"],
    "args": ["-start=azurpromilia_launcher"],  # 启动参数,支持多个
}

改动

ok/core/start_controller.py

  • 新增 _build_launch_arguments():合并全局 Launch with DX11 开关与项目配置
    config['windows']['args']。原有 DX11 判断逻辑一字未改,只是从 start_device 内联抽成方法。
  • 新增 _normalize_launch_args():兼容列表(['-start=launcher'])与字符串
    '-start=launcher -popupwindow')两种写法,空值收敛为 None,不会在命令行尾部产生多余空格。
  • 仅在启动 Windows 客户端时附加参数device['device'] == 'windows')。start_device
    启动模拟器 exe 走的是同一条路径,若像原补丁那样无条件附加,会把游戏参数误传给模拟器可执行文件。

文档docs/quick_start/README.mddocs/en/quick_start.md 补充 args 说明。

测试

tests/test_start_controller.py 新增 5 个用例:

  • 列表写法
  • 字符串写法
  • 与 DX11 合并,结果为 -dx11 -d3d11 -force-d3d11 -start=launcher
  • args 不改变原有启动命令(仍为 arguments=None
  • 模拟器场景不附加参数

pytest tests/test_start_controller.py 全绿(12 passed)。完整套件 392 passed, 8 failed
8 个失败全部位于 test_web_server.py,原因是本地环境缺少 fastapi / uvicorn,与本改动无关。

AI 使用声明

本改动由 AI 辅助生成(WorkBuddy),已人工复核逻辑与测试。

下游脚本此前需要用猴子补丁改写 start_device 才能给游戏传启动参数
(例:longer-sausage/OK-AzurPromilia#13),改为框架原生支持:

- 新增 _build_launch_arguments(),合并全局 Launch with DX11 开关与项目
  配置 config['windows']['args'],原 DX11 逻辑保持不变
- args 支持列表(['-start=launcher'])或字符串写法,空值不产生多余空格
- 仅在启动 Windows 客户端时附加,启动模拟器时不附加,避免参数误传给模拟器
- 补充 5 个单元测试,并更新中英文快速开始文档
@sonarqubecloud

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant