工程参考/登录器配置
本篇说明如何修改客户端的 Launch.ini,让 Launch.exe 使用自己的公告、区服列表和更新地址。适用于采用本文所核对 Launch 源码的登录器;其他同名登录器应先核对实现。
先选一种用法:客户端已能正常游戏,只想保留手工设置的区服列表,按“本地启动”操作;需要把服务器上的列表统一下发给玩家,按“网站下发”操作。后面的补丁、登录器升级与修复可在基础配置验证后再启用。
文件位置 · 本地启动 · 网站下发 · 配置项 · 游戏补丁 · 常见问题
文件在哪里
本文的 Client 指玩家实际运行的那份游戏客户端目录,可以叫其他名字。应打开 与 Launch.exe 同一目录的 Launch.ini,不是源码中的 Launch.ini.template。
Client\Launch.exe Client\Launch.ini Client\(version) Client\Patch\LoginServer.txt Client\Bin\Game.exe Client\Bin\tConfig.exe Client\Bin64\Game.exe Client\Accounts\System.cfg
| 文件 | 用途 |
|---|---|
Launch.ini
|
指定下载地址、按钮网页和部分程序路径。配置放在 [Launch] 节。 |
Patch/LoginServer.txt
|
客户端读取的本地区服列表,里面才是区服名和登录地址。联网更新可能重写此文件。 |
(version)
|
客户端本地版本和文件校验清单。文件名带英文括号,没有 .txt 后缀。 |
Accounts/System.cfg
|
记录默认启动 32 位还是 64 位客户端,相关项目在 [Variable] 节。 |
修改前关闭登录器和游戏,备份 Launch.ini、Patch/LoginServer.txt;涉及更新或修复时,另备份完整测试客户端。用文本编辑器打开文件,保留原编码。示例配置使用 ASCII 字符;有中文的现有文件通常沿用客户端的 ANSI/GBK 编码,不要随意改为 UTF-8 BOM。
下面两个 Launch.ini 片段是两种不同方案。在原文件的 [Launch] 节修改对应键,每个键保留一份,不重复添加 [Launch]。等号右侧空着代表显式空值;注释另起一行用英文分号开头,不把解释文字接到 URL 后面。每位玩家都需要自己的 Launch.ini;修改你电脑上的文件,不会自动修改别人的客户端。
本地启动
适合已备好客户端和区服列表,暂不通过网站更新的情况。此方案仍然通过 Launch.exe 启动游戏。
- 在玩家电脑打开 Client/Patch/LoginServer.txt,确认区服记录是自己的登录地址。格式与内外网地址设置见 服务端外网设置。
- 打开同一份客户端根目录下的 Launch.ini,将 [Launch] 对应项目改为下面的值。
- 保存后运行 Launch.exe,选择与客户端文件相符的 32 位或 64 位设置,再点击开始游戏。
[Launch] Help_URL = GameExe = Bin\Game.exe GameConfig = Bin\tConfig.exe PatchInfo = LoginServer = NewLauncher = NewLauncherDir = RepairServer = RegURL = ChoiceURL =
验证结果:正常通过资源初始化和磁盘检查后,更新阶段使用本地版本,可以开始游戏。PatchInfo 为空时会提前结束普通更新流程,即使 LoginServer 写了网址,也不会下载区服列表。本例同时将两项留空,使配置用途清楚。
此配置不生成缺失的游戏资源或区服列表,也不修正服务端网络地址。修复按钮是另一条流程;不要把 PatchInfo 留空理解为整个登录器永远不会联网。需要完全绕过登录器时,可参考 服务端外网设置 中的 Game.exe -fl 快捷方式说明。
选择 32 位或 64 位
通常点击登录器的游戏设置按钮,在设置工具中选择客户端版本并保存。也可在关闭游戏后,修改 Client/Accounts/System.cfg 的 [Variable] 节中这一项,保留其他设置:
[Variable] Launch_GameVersion01 = 0
值为 0 时使用 Launch.ini 的 GameExe,通常是 Bin/Game.exe。需要 64 位时改为:
[Variable] Launch_GameVersion01 = 1
只有去掉首尾空白后恰好等于 0 才选 32 位;缺失、空值或其他值都会选 64 位。64 位路径固定为 Bin64/Game.exe。因此“改了 GameExe,为什么仍启动 Bin64”通常是这个选择项造成的。
登录器每次开始游戏前会重新读取该选择。所选程序不存在、或选择 64 位但系统不支持时,会提示并停止,不会自动换另一种客户端。两种程序都自动带 -fl 参数,工作目录设为游戏程序所在目录。
网站下发
本例先完成“下载自己的公告和区服列表”,暂不安装新补丁、不升级登录器。先用与服务器同一版本的测试客户端验证。
示例假设你已有一台可提供静态文件的 Web 服务器,局域网 IP 是 192.168.50.10,网站端口是 8080。将示例中的 IP、端口和目录换成你实际使用的值;端口 8080 是示例网站端口,不是游戏登录端口。
第一步:在网站服务器放置文件
在 Web 服务配置的“网站根目录”下建立以下文件;目录名可以自定,但必须与 URL 对应:
notice.html tlbb/patchinfo.txt tlbb/LoginServer.txt
- notice.html:自己的公告网页。登录器内嵌的是旧式 WebBrowser 控件,先用简单 HTML 页面验证显示,再增加样式和脚本。
- LoginServer.txt:一份完整、已验证的区服列表。先复制正常客户端 Patch/LoginServer.txt,再修改对应区服;保留原有分段标记、编码、逗号及每条记录的单行结构。详细字段见 服务端外网设置。
- patchinfo.txt:版本信息,即使这次只下发区服列表,也需要一份能通过版本检查的文件。
在测试客户端打开 Client/(version),查看第一行第一个英文竖线之前的版本号。例如第一行以 0.0.0.1| 开头,版本号就是 0.0.0.1。然后在网站服务器的 tlbb/patchinfo.txt 写入:
[Version] Latest = 0.0.0.1 LatestDownload = 0.0.0.1 NewLaunch =
0.0.0.1 是演示值。必须把 Latest 和 LatestDownload 都换成这批测试客户端的真实版本号。不要为通过检查而手工改写客户端 (version)。如果玩家版本低于 Latest,且网站没有对应补丁链,更新会失败,后面的列表下载也不会执行。
NewLaunch 显式留空,表示本例不要求更新登录器。客户端保留完整 (version) 清单;上述片段是服务器上的 patchinfo.txt,不是本地版本清单的替代品。
第二步:在玩家电脑验证网站地址
用玩家电脑的浏览器逐个打开以下地址,确认公告是自己的页面,两个 .txt 返回的是刚放入的文本内容:
http://192.168.50.10:8080/notice.html http://192.168.50.10:8080/tlbb/patchinfo.txt http://192.168.50.10:8080/tlbb/LoginServer.txt
只看到“网站首页能打开”还不够;逐项检查实际文件路径,避免下载到 404 页面、登录页面或分享页面。Windows 本地路径用反斜杠,URL 用正斜杠。服务器端文件名可能区分大小写,LoginServer.txt 的拼写应与 URL 一致。
公网使用时改成玩家可访问的公网地址或域名,并按网站服务设置防火墙及端口转发。127.0.0.1 在玩家电脑上指玩家自己,不能作为统一下发的网站地址。网页可达和游戏可达分别验证,游戏登录、进入场景的地址仍按 服务端外网设置 配置。
第三步:在玩家电脑修改 Launch.ini
确认上面的文件地址可达后,在玩家实际运行的客户端根目录修改 [Launch]:
[Launch] Help_URL = http://192.168.50.10:8080/notice.html GameExe = Bin\Game.exe GameConfig = Bin\tConfig.exe PatchInfo = http://192.168.50.10:8080/tlbb/patchinfo.txt LoginServer = http://192.168.50.10:8080/tlbb/LoginServer.txt NewLauncher = NewLauncherDir = RepairServer = RegURL = ChoiceURL =
NewLauncher、NewLauncherDir、RepairServer 暂留空;注册和充值网页尚未部署时,RegURL、ChoiceURL 也显式留空,避免省略后回退到内置旧地址。以后部署好自己的网页,再分别填入完整 URL。
第四步:启动并核对下载结果
- 运行 Launch.exe,确认内嵌公告是自己的内容。
- 等待版本信息读取完成;本例本地与远端版本相同,不应下载游戏补丁。
- 列表下载成功时,会出现“下载最新服务器负载信息成功!”。关闭登录器,打开 Client/Patch/LoginServer.txt,核对内容是否与网站上的文件一致。
- 重新运行登录器并进入游戏,检查目标区服、账号登录和进入场景。
列表下载会重写本地文件。Windows 常规文件系统中 loginserver.txt 与 LoginServer.txt 是同一个文件。以后需要改统一下发的 IP,应修改网站上的源文件。只改玩家本地文件,下一次成功下载时可能被覆盖。
这段下载代码不校验区服列表的内容格式;HTTP 成功返回的错误网页也可能写入本地列表。因此登录器提示下载成功后,仍要核对文件正文和游戏中的区服显示。
配置项详解
下面是当前源码实际读取的 10 个 [Launch] 配置项。“省略”表示不写这一行,“留空”表示保留键名与等号,但右侧没有值;两者对有默认网址的项目效果不同。修改 Launch.ini 后关闭并重新打开登录器。
| 配置项 | 作用与填写规则 |
|---|---|
Help_URL公告网页 |
登录器中间的内嵌网页地址。填写网页完整 URL。留空时不导航;省略此项会使用源码内置的旧公告地址。 |
GameExe32 位游戏程序 |
默认 Bin\Game.exe,按客户端根目录拼接。只填写程序路径,不加 -fl;登录器自动加启动参数。留空会导致配置加载失败。此项不改变 64 位路径。 |
GameConfig游戏设置工具 |
默认 Bin\tConfig.exe,按客户端根目录拼接。点击设置按钮时运行;留空不能当作关闭设置按钮的方法。 |
PatchInfo补丁信息文件 |
填写 patchinfo.txt 的完整下载 URL。省略或留空时,普通启动流程跳过版本信息、登录器更新、游戏补丁及服务器列表下载,直接使用本地文件。 |
LoginServer区服列表文件 |
填写 LoginServer.txt 的完整下载 URL,不能只写游戏 IP 或 IP:登录端口。下载发生在版本检查和补丁处理通过之后,并写入 Client/Patch/loginserver.txt。留空时跳过这个下载步骤。 |
NewLauncher登录器更新的备用地址 |
NewLauncherDir 为空时才使用。兼容形如 http://域名/tlbb/newlaunch.zip 的旧写法:程序取 newlaunch.zip 前面的部分作为目录,再拼接带版本号的新包名;不是直接下载这份 newlaunch.zip。 |
NewLauncherDir登录器更新目录 |
优先于 NewLauncher。填写目录 URL,例如 http://域名/tlbb/launcher/。仅在 patchinfo.txt 声明的 NewLaunch 高于当前登录器文件版本时下载。两项都空而远端要求升级时,更新失败。 |
RepairServer修复文件目录 |
点击修复后按本地 (version) 清单检查文件。发现损坏时,在此目录后拼接编码后的逻辑文件路径下载,并检查长度和 CRC。留空仍可检查,发现需要下载的损坏文件时无法修复。 |
RegURL注册按钮网页 |
点击注册按钮时,用系统关联程序打开此 URL。只负责打开网页,不创建账号服务。留空时不打开;省略会使用内置旧注册地址。 |
ChoiceURL充值按钮网页 |
点击充值按钮时打开此 URL。只负责网页跳转,不配置支付功能。留空时不打开;省略会使用内置旧充值地址。 |
旧文件里还有的三个字段
| 字段 | 当前源码的处理 |
|---|---|
RefrenceUpdateServer
|
未找到读取位置,不能依靠它配置备用下载服务器。保留原拼写进行识别,不要自行改成另一个拼法并期待生效。 |
RegisterURL
|
未找到读取位置。注册按钮实际使用 RegURL;这两个名字不是别名。 |
DisableSoda
|
未找到读取位置,不能据此宣称 0 或 1 会启用或关闭某项功能。 |
这些结论仅针对本文所核对的 Launch 源码。保留旧项不会让当前读取逻辑新增功能;混用其他登录器前需重新核对。某些旧 Launch.ini 没有 GameConfig 和 NewLauncherDir,但本实现支持这两项。
游戏补丁更新
准备安装补丁时,修改的是网站服务器上的 patchinfo.txt。下面演示从 0.0.0.1 更新到 0.0.0.2;实际版本和文件名应来自你生成并验证的补丁:
[Version] Latest = 0.0.0.2 LatestDownload = 0.0.0.2 NewLaunch = [Patch_1] VersionFrom = 0.0.0.1 VersionTo = 0.0.0.2 URL_1 = http://192.168.50.10:8080/tlbb/patch_0.0.0.2.zip
| 字段 | 含义 |
|---|---|
[Version] Latest
|
本轮必须达到的游戏版本。必需且不能为空;登录器会在安装后重新读取本地 (version) 确认版本。 |
[Version] LatestDownload
|
下载目标。省略时使用 Latest;小于 Latest 时按 Latest 处理。初次配置建议与 Latest 相同。 |
[Version] NewLaunch
|
要求的登录器文件版本,不是游戏版本。不更新登录器时留空。 |
[Patch_1]
|
补丁记录的节名,当前代码识别以 Patch_ 开头的节。多个记录可使用 Patch_2 等不同节名。 |
VersionFrom / VersionTo
|
补丁的起始与目标游戏版本。必须能从玩家当前版本衔接到目标版本,目标必须高于起点。 |
URL_1
|
补丁包完整 URL。也兼容“说明文字;URL”形式,读取第一个分号后面的部分;初次配置直接写 URL。这里未实现 URL_2 等多镜像轮换。 |
不能把普通压缩包改个名字就当游戏补丁。当前安装代码要求包尾 CRC、(command) 指令以及安装 (version) 的命令;补丁必须由匹配的制作工具生成并在测试客户端验证。本文说明地址与版本的配置,不把一个演示 URL 当作可用补丁下载。
推荐发布顺序:先上传已验证的补丁文件,确认可下载,再更新网站的 patchinfo.txt,最后用旧版本测试客户端完整更新并进入游戏。不要先把 Latest 提高,却还没提供补丁。
同一个起始版本有多个补丁时,当前选择逻辑优先取 VersionTo 最大的记录,不会在失败后自动搜索另一条可行路径。基础部署应使用清楚、连续的版本链。LatestDownload 高于 Latest 时,部分未来补丁可以先下载而暂不安装;这类预下载配置需单独验证,不直接套用基础示例。
登录器自动更新
登录器自身升级与游戏补丁是两件事。触发条件是:成功取得 patchinfo.txt 后,其中 [Version] 的 NewLaunch 高于当前运行登录器的 Windows 文件版本。比较来源不是客户端 (version)。
先在网站放好更新包,再分别修改以下两处。示例文件版本 1.0.1.5 仅用于展示命名规则,应换成实际发布的登录器版本。
玩家客户端的 Launch.ini,修改 [Launch] 下的两项:
[Launch] NewLauncherDir = http://192.168.50.10:8080/tlbb/launcher/ NewLauncher =
网站服务器的 patchinfo.txt,在原有 [Version] 下修改这一项,保留 Latest 等已有字段:
[Version] NewLaunch = 1.0.1.5
由此拼出的实际请求地址是:
http://192.168.50.10:8080/tlbb/launcher/NewLaunch_1.0.1.5.zip
ZIP 根目录应直接包含 launch.exe,不能额外套一层文件夹。这条流程只取出该文件并替换客户端根目录的 Launch.exe,不负责替换 Launch.ini、皮肤或其他依赖。部署前验证新旧配套资源是否兼容。
若使用旧写法 NewLauncher=http://192.168.50.10:8080/tlbb/launcher/newlaunch.zip 且 NewLauncherDir 为空,程序会取 newlaunch.zip 前面的目录,再拼接上面的 NewLaunch_版本号.zip。新配置优先填写明确的 NewLauncherDir。
更新成功后会提示重新运行程序;本次开始按钮将用于重启 Launch.exe,下一次再完成更新检查并启动游戏。正常从 Launch.exe 启动时,程序复制并运行 Launch.bin,使磁盘上的 Launch.exe 可以被替换。不要把调试用 -direct 当作日常自动更新启动方式。
客户端修复
RepairServer 填的是文件下载目录。点击修复按钮后,程序根据本地 (version) 的文件清单比较大小和 CRC,发现损坏才从目录下载对应内容。
例如在 Launch.ini 的 [Launch] 下设置:
[Launch] RepairServer = http://192.168.50.10:8080/repair/
如果清单中的逻辑路径是 Bin/Game.exe,源码连分隔符也会编码,实际拼接出的 URL 是 http://192.168.50.10:8080/repair/Bin%2FGame.exe;逻辑路径中的反斜杠则会编码为 %5C。网站如何接受和映射这些编码路径,需要结合实际 Web 服务配置验证,不能只凭普通目录地址能打开就判定修复可用。
网站提供的字节内容必须匹配本地清单的长度和 CRC。对于 AXP 内部资源,请求的是其逻辑文件内容,再由程序写回清单指定的 AXP 容器,不能一概替换成下载整个 AXP。
RepairServer 不是随便能访问的网站地址,也不是 ZIP 包地址。没有匹配的修复文件时先留空;留空不隐藏修复按钮,检查中如发现损坏,会报告无法修复。修复前关闭游戏,并使用完整备份的测试客户端验证。
常见问题
| 现象 | 检查顺序 |
|---|---|
| 修改配置后没有变化 | 确认改的是实际运行的 Client/Launch.ini,配置位于 [Launch],没有重复键或额外 .txt 后缀;关闭并重新打开登录器。不要修改源码模板后期待已部署文件自动变化。 |
| 启动时提示无法读取 Launch.ini | 检查文件是否存在、位置是否正确,以及 GameExe 是否显式为空。本实现配置加载也会因空 GameExe 返回失败。 |
| 填了 LoginServer,但列表没有下载 | 先检查 PatchInfo 是否为空。它非空时,再检查 patchinfo 下载、本地 (version)、Latest、登录器版本检查和补丁链是否都通过;列表在后面才下载。 |
| 手工设置的区服 IP 又变回去 | 对照 Launch.ini 的 LoginServer 下载源,修改网站上的列表;若暂时只用本地文件,按本地启动方案配置。联网更新但仅跳过列表时可将 LoginServer 留空,补丁中仍应避免改动该文件。 |
| 自动更新失败,开始按钮不能用 | 检查网站上的 patchinfo.txt 正文、本地 (version)、版本链和实际下载文件;远端要求升级登录器但未配置对应目录或包也会失败。不能仅因为网络可通就判定补丁有效。 |
| 下载成功但游戏没有区服 | 查看 Client/Patch/LoginServer.txt 是否变成 HTML 错误页,核对分段标记、编码、登录地址、半角逗号及行尾字段,参照服务端外网设置。 |
| GameExe 改成 Bin/Game.exe,仍提示找不到 Bin64 | 检查 Accounts/System.cfg 的 [Variable] Launch_GameVersion01。只有 0 选 32 位,其他或缺失选 64 位;64 位路径固定。 |
| 公告在浏览器正常,登录器内空白 | Help_URL 使用旧式内嵌浏览器控件。先测试简单 HTML,核对页面脚本、系统浏览器组件及 HTTPS/TLS 兼容性;这些显示效果需要在目标电脑实测。 |
| 注册或充值仍打开旧网址 | 实际键名为 RegURL 和 ChoiceURL。省略会使用默认旧地址,显式留空才不打开;RegisterURL 在本实现不生效。 |
| 更新时磁盘不足或无法写入 | 更新前会检查登录器所在盘可用空间大于 100 MiB,但这不代表足够容纳实际补丁。另确认客户端目录、Patch 缓存和 Launch.exe 可写,磁盘空间按实际包体及解包需求准备。 |
| 网页能打开,但无法进入游戏 | 网站 HTTP 连接、账号登录连接和进入场景连接各自使用对应服务地址。继续按服务端外网设置检查登录端口和游戏端口。 |
补丁下载、补丁应用失败和损坏文件等信息会写入客户端根目录的 Launch.log;它不是完整网络抓包,也不保证每次请求都记录。排查时结合界面提示、Patch 中的文件及网站访问日志,不能以“日志没有报错”代替实际验证。
核对依据与验证范围
本文按当前工程的以下源码核对。路径相对于 Prj/GameCode/Client/Client,不依赖读者电脑的磁盘路径。
| 源码 | 核对内容 |
|---|---|
Launch/PatchSystem.cpp
|
LaunchConfig::Load、RefreshGameSelection:10 个有效配置项、默认值与架构选择;RunUpdate:空 PatchInfo、版本检查及列表下载顺序;补丁链、登录器升级与修复。 |
Launch/LaunchDialog.cpp
|
公告控件、设置/注册/充值按钮、开始游戏时的 -fl 参数与工作目录、失败状态。 |
Launch/Downloader.cpp
|
HTTP(S) 下载、系统网络设置、下载文件的写入方式。 |
Launch/LaunchApp.cpp、Launch/Common.cpp
|
客户端根目录、Launch.bin 启动、路径拼接与 Launch.log。 |
Launch/ZipArchive.cpp、PatchCore/PatchCore.cpp
|
登录器 ZIP 条目读取、版本比较及游戏补丁格式校验。 |
Launch/README.md
|
配套运行约定与 CP936 文本约定。 |
字段与流程已按源码核对。配置示例的格式、网页链接和显示应随文档维护验证;真实公告显示、HTTP(S) 下载、补丁安装、登录器替换、修复和游戏登录效果仍需要在对应程序及目标环境实测。不要仅凭同名 Launch.exe 或配置中存在某个键,就认定其他实现具有相同行为。