ITADN
p0358/black_market_edition
p0358/black_market_edition · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

Black Market Edition

Black Market Edition 是一款针对 Titanfall 游戏的客户端多功能社区增强模组,包含大量提升游戏体验的改进与优化。

请注意,该模组仅适用于原版游戏,不包含游戏服务器。

安装

Windows

只需从 Releases 页面获取最新版本的安装程序并运行,即可安装 BME。

安装程序使用 Inno Setup 构建,基于 installer/ 文件夹中的脚本,并会自动检测游戏安装目录以解压文件。

Linux

你也可以在任何 WINE 前缀中直接运行 bme_installer.exe,并手动指定正确的游戏文件夹(因为该安装程序不会修改游戏安装文件以外的任何内容,也不需要更改 WINE 前缀配置)。

或者,你可以在终端中运行以下命令手动安装(需要 curl jq libarchive),并将第一行中的 GAME_DIR 调整为你实际的游戏安装目录:

## Adjust the line below!
GAME_DIR="$HOME/.local/share/Steam/steamapps/common/Titanfall"

[[ -d "$GAME_DIR" && -f "$GAME_DIR"/Titanfall.exe ]] || echo "ERROR: Invalid game dir specified! ($GAME_DIR)"

[ ! -f "$GAME_DIR"/bin/x64_retail/launcher.org.dll ] && mv -v "$GAME_DIR"/bin/x64_retail/launcher.{dll,org.dll}

BME_ZIP=$(curl -sS https://api.github.com/repos/p0358/black_market_edition/releases | jq --raw-output '[.[0].assets[] | select(.name=="bme.zip")][0].browser_download_url')

curl -sSL "$BME_ZIP" | bsdtar -xvf- -C "$GAME_DIR"

功能

  • 比赛中途编辑装备配置
  • 非常详细的 Discord 富媒体状态 + 基础邀请/加入支持
  • Origin 本身的基础富媒体状态
  • 图形设置中更大的最大视野(FOV)缩放;将鼠标悬停在视野选项上时会播放一段视频,帮助了解该设置带来的差异(缩放范围为 70 到 90)
  • 私人比赛设置的实时同步(即时应用和刷新):不再有人互相争夺并覆盖彼此的设置
  • 您可以在任意关卡开始飞行员/泰坦训练
  • 用于竞技 CTF(PUG/锦标赛)的私人比赛设置预设,两次点击即可设置所有选项
  • 公告提示已缩小,以免遮挡玩家视野,但仍保持醒目(根据众多玩家的反馈)
  • 移除了“RETURN TO BATTLEFIELD”文本,计数器稍微移开屏幕中心,以便您正常瞄准(但请记住在计时器耗尽前返回战场!)
  • 通常已失效的列表(即:非 attrition、frontier defense 或 campaign)如果恰好有玩家,左侧会显示一个感叹号,以便在查看时轻松注意到这一事实
  • 修复了脚本中的各种小 bug(这些 bug 可能导致您因错误而被踢回主菜单)
  • 如果曾使用过游戏模式,最后使用的游戏模式装备将正确获得焦点(而不是始终选择通用装备 1);最后使用的装备将始终获得焦点,即使使用键盘也是如此(因此你可以像使用手柄上的 A 键一样,使用 Enter 键确认它)
  • 启用可通过 ` 键访问的游戏内控制台(增强了来自 Squirrel 的 print 和 svc_Print 网络消息的输出)
  • 使用 script_clientscript_ui 控制台命令执行 Squirrel 代码
  • 当你成为队伍队长时,将默认的离开游戏内选项从“随队离开”更改为“单独离开”,以防止在你想单独离开时意外将队友带出
  • 在鼠标/键盘设置中查看原始鼠标灵敏度值
  • 移除最低鼠标灵敏度限制
  • 独自开始私人比赛
  • 在公开匹配中查看谁与谁在同一队伍中
  • 卡顿警报,用于指示类似于 Titanfall 2 和 Apex 的各种连接问题(例如:“OUT OF SNAPSHOTS”、“NET CHOKED”)(需要启用 cl_showfps
  • 独立的启动器 exe,缓解 Origin 出现异常且拒绝启动游戏的问题
  • 在文字聊天中启用 Unicode 输入(因此你可以输入非英语字符;注意:某些游戏区域使用的字体无法显示许多非拉丁字符)
  • 修复游戏邀请中的“XSS”问题(恶意的加入密钥可以执行任意客户端命令)
  • 修复游戏中的其他各种安全问题
  • 解锁 fps_max cvar,并允许默认检测到的显示器刷新率高于 144 Hz
    • fps_max -1 (默认) 默认为显示器的刷新率上限
    • fps_max 0 将帧率上限解除为无限制(不推荐,会对网络上传产生不利影响,并导致客户端卡顿和出现各种故障)
    • fps_max <value> 将帧率限制为指定值
  • 通过覆盖 hudwarp_chopsize60120 来扭曲 HUD,从而缓解因在 CPU 中浪费过多时间(并导致 GPU 空闲)而使游戏 FPS 下降的性能问题
    • 通过设置 hudwarp_use_gpu 1 使扭曲效果在 GPU 而非 CPU 上运行,可以在对 HUD 视觉质量损失最小的情况下完全避免性能惩罚
    • 通过将该 cvar 值设置得更高,可以进一步改善性能
    • 通过设置 hudwarp_disable 1 可以获得最佳性能,但这会产生不再在视觉上扭曲 HUD 的不利影响
  • 允许在未拥有 DLC 的情况下加入 DLC 播放列表(通过在播放列表对话框中添加忽略按钮)
    • 这允许你(大致上)玩游戏,即使你无法获取豪华版或季票密钥
    • 一旦轮换中出现 DLC 地图,你将在其启动时被踢出大厅:即便如此,这总比完全无法在该播放列表上玩游戏要好
  • 使游戏自动跟随默认声音输出设备(例如连接蓝牙耳机时;但由于某些引擎 bug,可能并不总是有效,届时仍需重启游戏)
  • 如果游戏内计数器损坏,则添加来自 titanfall.p0358.net 的自定义播放列表玩家数量(回退的 BME 计数器以绿色显示,而来自 Stryder 的原始游戏计数器以琥珀色显示)
  • 对于基于交换阵营的游戏模式,在 HUD 中显示你正在玩上半场还是下半场
  • 允许在不制作修补版 VPK 文件的情况下替换 VPK 文件,只需将你的修改文件放入游戏安装目录下的 r1_mod 目录
    • 使用 concommand fs_replacements_cache_refresh 在不重启游戏的情况下刷新文件列表
  • 允许在比赛结束后自动将游戏记分板保存为 JSON 文件
    • 使用 cvar bme_cl_save_scoreboards 1 启用此功能
    • 文件将保存到 <game dir>/bme/saved_scoreboards 目录,名称格式如 2024-05-28_11_40_04-private_match-ctf-mp_relic-5v5.json(时间为 UTC)
    • 你可以通过 bme_cl_save_scoreboards_upload_url <URL> 启用上述文件的自动远程上传,通过 HTTP POST 将它们上传到你的自定义端点

已知问题

  • 按下 M 键激活燃烧卡牌时,不知何故似乎会激活全屏地图
  • 将私人比赛设置滑块设置到边缘时,不精确的操作可能会应用错误的设置(该设置将在一秒内显示)

截图

主菜单:

Main Menu

Discord 富媒体状态:

Discord rich presence

具有扩展范围和背景预览视频的 FOV 缩放设置:

FOV scale settings with extended range and background preview video

地图加载期间的游戏内控制台(使用 ` 激活):

In-game console during map loading

在游戏中途编辑装备配置的可能性(在控制器上按 Y 键,或用鼠标右键点击装备配置):

Possibility to edit loadouts mid-match

在对局中编辑飞行员载具配置:

Editing a pilot loadout mid-match

移除了“RETURN TO BATTLEFIELD”文本,并将计数器移至侧面,以免遮挡瞄准视野:

"RETURN TO BATTLEFIELD" text removed and counter moved to the side to not obstruct the aim view

公告文本已缩小,以减少其干扰性和突兀感:

Announcement text made smaller to make it less annoying and obtrusive

“邀请好友”按钮会打开一个对话框,允许您选择邀请好友的平台:

"Invite friends" dialog

允许在私人匹配中快速将设置更改为预设的一组(在此情况下用于竞技性 CTF 游戏)的预设:

Private match presets

私人比赛设置中缺少“应用”按钮,因为设置现在实时同步,这防止了人们在同时编辑时相互覆盖对方的设置:

Private match settings

训练可以完整进行,也可以从任意阶段开始:

Training dialog

任意训练阶段选择:

Training dialog

设置中可见的鼠标灵敏度值:

Training dialog

回退播放列表播放器计数器:

BME playlist counts

在换边制游戏模式(如 CTF)中,显示你正在上半场还是下半场:

Playing first half of the game

编译

  1. 使用 git clone --recursive --depth 1 https://github.com/p0358/black_market_edition.git 克隆仓库
  2. 运行 generate.bat 以生成 Visual Studio 项目文件
  3. 运行 copy_scripts_to_r1_modsrc.bat 将所需文件从 bme_scripts 复制到 r1_modsrc
  4. 运行 build_assets.batr1_modsrc 目录内容打包到 installer/source/bme/bme.bsp 并生成文件列表头文件
  5. 在 VS 2022 中构建解决方案(./build/bme.sln)(或者运行 msbuild build\bme.sln -m)。
  6. 查看 installer/installer_simple2.iss 以确定哪些文件应放置在哪里(最重要的是复制 bme.dllTitanfall_alt.exe)。
  7. 可选地构建安装程序(说明见下文)。

注意:如果你在 r1_modsrc 中添加/删除文件,你也需要重新编译 DLL(因为它包含可用文件的列表)。

构建安装程序

要为完整模组构建安装程序,在完成上述步骤后,你需要查看文件 installer/installer_simple2.iss 并手动将所需文件复制到 installer/source 目录。

  1. installer/source/bme/ 下,复制编译好的 bme.dll(来自 build/x64-<CHANNEL>/bin/bme.dll)。
  2. 还创建 bme_channel.txt,其值为 staging(或 release)。
  3. bme.bsp 在上面的编译步骤 #4 之后应该已经存在(此文件包含文件系统替换内容,即脚本和一些 UI 元素,作为 bsp 格式中的 lump 40 放入 PakFile,可以很容易地在引擎中挂载)。
  4. 将构建好的 launcher.dll 复制到 installer/source/bin/x64_retail/,将 Titanfall_alt.exe 复制到 installer/source/
  5. 使用 Inno Setup 编译出 installer/installer_simple2.iss(如果你的路径中有 iscc,则使用 build_installer.bat 脚本)。生成的安装程序将在 installer/bme_installer.exe 中。

致谢

部分代码来自 TTF2SDK by James Wilkinson and Will Donohoe 被使用。

Black Market Edition 使用了以下第三方库:

包名称URL
crashpadhttps://chromium.googlesource.com/crashpad/crashpad/+/master/LICENSE
curlhttps://curl.se/docs/copyright.html
discord-rpchttps://github.com/harmonytf/discord-rpc/blob/master/LICENSE
imguihttps://github.com/ocornut/imgui/blob/master/LICENSE.txt
InnoDependencyInstallerhttps://github.com/DomGries/InnoDependencyInstaller/blob/master/LICENSE.md
MinHookhttps://github.com/TFORevive/minhook/blob/master/LICENSE.txt
nghttp2https://github.com/nghttp2/nghttp2/blob/master/COPYING
sentry-nativehttps://github.com/getsentry/sentry-native/blob/master/LICENSE
spdloghttps://github.com/gabime/spdlog/blob/v1.x/LICENSE
rapidjsonhttps://github.com/Tencent/rapidjson/blob/master/license.txt

TITANFALL™ 是 Respawn Entertainment, LLC 的商标。