工程参考/登录器配置

来自天龙知识库
跳到导航跳到搜索

首页 · 服务端外网设置 · 配置文件索引

本篇说明如何修改客户端的 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 启动游戏。

  1. 在玩家电脑打开 Client/Patch/LoginServer.txt,确认区服记录是自己的登录地址。格式与内外网地址设置见 服务端外网设置
  2. 打开同一份客户端根目录下的 Launch.ini,将 [Launch] 对应项目改为下面的值。
  3. 保存后运行 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。

第四步:启动并核对下载结果

  1. 运行 Launch.exe,确认内嵌公告是自己的内容。
  2. 等待版本信息读取完成;本例本地与远端版本相同,不应下载游戏补丁。
  3. 列表下载成功时,会出现“下载最新服务器负载信息成功!”。关闭登录器,打开 Client/Patch/LoginServer.txt,核对内容是否与网站上的文件一致。
  4. 重新运行登录器并进入游戏,检查目标区服、账号登录和进入场景。

列表下载会重写本地文件。Windows 常规文件系统中 loginserver.txt 与 LoginServer.txt 是同一个文件。以后需要改统一下发的 IP,应修改网站上的源文件。只改玩家本地文件,下一次成功下载时可能被覆盖。

这段下载代码不校验区服列表的内容格式;HTTP 成功返回的错误网页也可能写入本地列表。因此登录器提示下载成功后,仍要核对文件正文和游戏中的区服显示。

配置项详解

下面是当前源码实际读取的 10 个 [Launch] 配置项。“省略”表示不写这一行,“留空”表示保留键名与等号,但右侧没有值;两者对有默认网址的项目效果不同。修改 Launch.ini 后关闭并重新打开登录器。

配置项 作用与填写规则
Help_URL
公告网页
登录器中间的内嵌网页地址。填写网页完整 URL。留空时不导航;省略此项会使用源码内置的旧公告地址。
GameExe
32 位游戏程序
默认 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.cppLaunch/Common.cpp 客户端根目录、Launch.bin 启动、路径拼接与 Launch.log。
Launch/ZipArchive.cppPatchCore/PatchCore.cpp 登录器 ZIP 条目读取、版本比较及游戏补丁格式校验。
Launch/README.md 配套运行约定与 CP936 文本约定。

字段与流程已按源码核对。配置示例的格式、网页链接和显示应随文档维护验证;真实公告显示、HTTP(S) 下载、补丁安装、登录器替换、修复和游戏登录效果仍需要在对应程序及目标环境实测。不要仅凭同名 Launch.exe 或配置中存在某个键,就认定其他实现具有相同行为。