Learn · modules

Minecraft 客户端中什么是 DevTest??

DevTest是某些客户遗留的开发者模块,用于测试未完成的代码,而非为玩家提供真正的功能或设置.

TRtrolPublished 1 min read

什么是 Minecraft 中的 DevTest?

DevTest 是一个模块,你偶尔会在客户端的模块列表中发现它,但没有明确的职责描述。它既不是 KillAura 的变体,也不是伪装的 aimbot:它是一个开发者用来在构建客户端时试验正在进行的代码的残留钩子。由于它是为发布软件的人而不是玩游戏的人编写的,因此 DevTest 没有一致的行为。它在特定构建中会做什么完全取决于开发者上次修改它时正在调试的内容,并且这可能会在版本之间或同一版本的两次构建之间发生变化。

大多数时候,DevTest 只是模块列表中的一个占位符,要么什么也不做,要么做一些没人觉得有必要标记的事情。它就像一个“TODO: 发布前删除”注释,成功地通过了 QA 流程。

DevTest 是如何工作的

DevTest 没有固定的面向玩家的功能,因为那根本就不是它的目的。开发者会将模块连接到他们当前正在处理的内容:一个新的渲染路径、一个数据包处理程序、移动代码,或者仅仅是一个确认某些内容在不崩溃客户端的情况下运行的临时空间.

這也是它經常以簡陋狀態發佈的原因。沒有設置,沒有描述,或者在實際模塊應該解釋的地方使用佔位符文本。在發佈版本中啟用它可能一無所獲。它也可能運行開發人員在發佈前忘記刪除的任何測試代碼。

客戶開發人員會依賴像這樣的模塊槽,因為他們正在測試的很多內容只有在真實伺服器上才能正確運行,而不是在沙箱環境中。客戶運行時的快速開關/關閉功能比為每個實驗建立單獨的版本更方便。當客戶發佈時,該槽有時會保留在列表中,僅僅是因為刪除它需要額外的工作,或者因為團隊計劃在下一個開發週期中重用它

它为什么会存在?

大多数客户端工作都是针对真实服务器进行的。测试新的移动模块或渲染钩子,需要观察它在实际反作弊检测和真实玩家行为下的表现,而不仅仅是加载代码并期望它能正常工作。DevTest 正是为此而设。开发者将其连接到他们正在构建的任何内容,启动客户端,并针对实时服务器进行测试。

当构建发布时,DevTest 要么会被清理掉,要么会保留下来,因为将其保留在原位进行下一次测试周期比将其移除、下周重新添加并重新配置要快

安全吗?

这里没有一个简单的答案,因为 DevTest 并非一个具有单一行为的特性,而是一个占位符。如果它在你的构建中处于非活动状态,启用它没有任何作用,风险与任何其他未使用的设置没有区别。如果它被配置为测试诸如数据包处理或半成品的移动作弊之类的代码,启用它可能会触发未经真实服务器反作弊系统测试的行为,因为它原本并不打算在真实比赛中运行。

将未标记的开发者模块视为不可预测。不要假设它是一个无害的失效开关,也不要假设它是一个秘密功能。除非你知道构建将其指向了什么,否则它既非如此,也非那样。

生产客户端的做法

一个完整的客户端会发布具有意义的名称、匹配其实际功能的描述以及行为与其标签相符的设置的模块。如果某个功能尚未准备好,则不会将其包含在构建中。如果它确实发布,那是因为开发者对其功能充满信心,并愿意记录它。

常见问题解答