启动器命令行参数
启动器支持哪些启动参数、它给游戏进程注入了什么环境变量,以及哪两个参数千万别乱用。
01基本用法
StartRide.exe [options]
不带参数就是正常打开界面。参数主要给三种场景用:自动化脚本、桌面快捷方式、以及技术支持时让你复现某个状态。
启动器读这些参数决定自己要做什么;至于游戏进程拿到什么,是启动器决定的(见「注入的环境变量」)。
02三种启动方式
| 方式 | 怎么起 | 典型用途 |
|---|---|---|
| 正常启动 | 双击程序 | 日常使用 |
| 带参数启动 | 命令行 / 脚本 | 自动化、批量、复现问题 |
| 快捷方式启动 | 桌面快捷方式(目标 + 参数) | 给不同用途各配一个入口 |
给它配一个带参数的快捷方式,比自己每次敲命令省事,也比写脚本更不容易出错。
03参数:-level
| 项 | 值 |
|---|---|
| 写法 | -level <地图> |
| 作用 | 启动游戏时直接载入指定地图 |
| 前置条件 | 该地图必须已经装在本机 |
- 地图名要和本机已安装的地图标识对得上,写错不会自动回退到默认地图,而是加载失败。
- 联机时地图由房间决定,这个参数主要用于单人 / 回放场景。
- 排查「地图加载不出来」时,先用游戏自己启动一次确认地图是好的,再回到启动器试。
04参数:--userpath
| 项 | 值 |
|---|---|
| 写法 | --userpath <目录> |
| 作用 | 指定游戏的用户目录 |
| 建议 | 实机一般不要传 |
游戏会在你指定的目录下再追加一层版本目录。手工传了之后,你以为模组在 A,实际被读写的在 A/版本号/ —— 结果就是「模组和存档凭空消失」。实机上一律不传,让游戏自己决定。
如果真的需要传(比如做隔离测试),那就要连最后一层版本目录一起算进去,并且清楚自己在做什么:
--userpath D:\BeamNG-Test
↓ 实际生效
D:\BeamNG-Test\<版本号>\mods <-- 模组真正被读写的位置
它会去读游戏的配置文件(BeamNG.drive.ini),从中取出 userFolder,再拼上版本目录。所以「不传参数」时的行为是可靠的,别去手工覆盖它。
05参数:--dir=
| 项 | 值 |
|---|---|
| 写法 | --dir=<目录> |
| 作用 | 指定安装目录 |
| 谁在用 | 仅安装 / 卸载程序 |
卸载程序按固定的注册表键名清理,不校验目录归属。用 --dir= 指一个不对的目录,它照样照着固定键名去删,可能误删无关内容。这是不可逆的。
自动化测试需要一个「干净环境 → 安装 → 卸载」的闭环,没有它就测不了。它的价值在于测试,风险在于误用 —— 所以它必须被明确标记成危险参数。
06注入的环境变量
启动器在拉起游戏进程时,会注入两个 Steam 身份变量,让游戏把这次运行当成 Steam 启动,从而正常记录游玩时长。
| 变量 | 值 | 作用域 |
|---|---|---|
SteamAppId | 284160 | 仅该子进程 |
SteamGameId | 284160 | 仅该子进程 |
284160 是 BeamNG.drive 在 Steam 上的应用 ID。这两个变量只在启动器拉起的那个子进程里生效,不改动系统环境,也不影响 Steam 客户端本身。
为什么要这么做
- 游戏直接双击运行时,Steam 不认为它被启动了,时长就不会被记录。
- 注入这两个变量后,游戏把这次运行当成一次正常的 Steam 启动,时长能正常同步。
- 这是进程级注入,退出即失效,不留任何常驻改动。
进游戏玩几分钟,退出后等一会儿再去看 Steam 上的时长有没有变化。刚退出就去看,往往会因为缓存而看不到更新,等一小会儿再刷新。
07退出码与日志
| 情况 | 退出码 | 看哪里 |
|---|---|---|
| 正常退出 | 0 | — |
| 路径配置有问题 | 非 0 | 启动器自己的日志 |
| 游戏进程被结束 | 非 0 | 游戏日志 + 启动器日志,两边都要看 |
| 参数写错 | 非 0 | 启动器日志里通常会有提示信息 |
两个进程各有各的日志。混在一起看会得出错误的结论 —— 这是排错时最容易走弯路的一步。
08自动化脚本示例
给日常最常用的两个场景各写一段。注意路径按自己的安装位置改:
# PowerShell:指定地图启动一次
Start-Process -FilePath "D:\StartRide\StartRide.exe" -ArgumentList "-level","gridmap_v2"
# 等游戏退出后再继续
Start-Process -FilePath "D:\StartRide\StartRide.exe" -Wait
#!/usr/bin/env bash
# 用指定地图启动(Windows 上的 Git Bash 里也能用)
"D:/StartRide/StartRide.exe" -level gridmap_v2 &
自动化脚本会被复用、会被复制给别人。把 --dir= 这类参数写进脚本,风险会跟着脚本一起传播。
09排错表
| 现象 | 可能原因 | 怎么办 |
|---|---|---|
| 参数没生效 | 参数名拼错,或没被识别的参数被忽略 | 对照参数表逐字确认;看启动器日志 |
| 地图加载失败 | 地图没装,或名字对不上 | 先进游戏确认该地图可用 |
| 模组 / 存档不见了 | 手工传了 --userpath,被追加了版本目录 | 去掉该参数,去 版本号/ 子目录里找找 |
| 时长没记上 | 注入变量没生效,或还没同步 | 等一会儿刷新 Steam;确认是从启动器启动的 |
| 卸载删了不该删的东西 | --dir= 指错了目录 | 不可逆;从备份恢复,并停止使用该参数 |
| 游戏 40 ~ 60 秒后消失 | 内存上限限制杀掉了进程 | 见 开发概览 · 一个真实案例 |