大家好!
如多数玩家所知,Fortnite版本v32.00推出后,出现了几个稳定性和软件退化方面的问题。这些问题对玩家体验和正常功能运作造成了不小的影响,例如,UEFN (Unreal Editor Fortnite特别版) 和FNC内容无法访问,创作者无法使用UEFN (Unreal Editor Fortnite特别版) 和创作者门户,部分功能出现故障等。
版本32.10推出后,UEFN (Unreal Editor Fortnite特别版) 内容和工具依旧出现了几个小时的不稳定情况,为玩家和创作者带来了困扰。
这些发布未能满足我们的工作标准,因此我们也在内部开展了大量讨论,调查这些问题为何未能在发布前及时解决,以及如何改善工作流程,以避免此类问题再次发生。
要在快速演进Fortnite生态系统的同时,确保大量不同功能和体验稳定、兼容,是一项相当艰巨的任务。但我们一定会坚持不懈,朝着目标不断迈进。我们将对自己的错误负责,并从中汲取经验和教训。我们也希望保持公开透明,分享创作者最近遇到的重大问题和困难,以及我们计划采取的措施和调整。
因此在本文中,我们就将概述版本v32中最严重的问题。每一条概述中都包含问题、导致问题的原因、所带来的影响,以及我们根据已知情报采取的措施和调整。
版本v32.00和v32.10中的故障不止这些,但此处列出的问题均对整个生态产生了影响,并触发了Epic内部的重大事件工作流程。
问题:内容服务降级(版本32.00和32.10)
内容服务(Content Service)是我们的内部系统,会跟踪FNC和UEFN (Unreal Editor Fortnite特别版) 中创建的所有内容,包括版本、发布状态等元数据。该系统相当于我们的“元宇宙索引”,对Fortnite和UEFN (Unreal Editor Fortnite特别版) 正常运作至关重要。
随着UEFN (Unreal Editor Fortnite特别版) 在Epic使用的拓展,内容服务也出现了增长。
在v32.00更新中,我们对Fortnite客户端和服务器进行了调整,但无意中导致内容服务流量激增,系统负荷一度超过正常水平的10倍。为应对流量激增,内容服务试图提升处理规模,但也因此暴露了一个会导致报错的问题,最终对UEFN (Unreal Editor Fortnite特别版) 和FNC功能的多个方面造成了影响。
我们曾尝试重新配置和扩大服务规模,但均未能收到效果。我们也无法立刻修改客户端或服务器行为。所幸我们的生态安全团队对防火墙进行了配置,将流量成功降到了可控水平,帮助服务恢复了正常。
在版本v32.10中,我们解决了客户端和服务器流量过大的问题,但该版本发布当天,自然流量的激增依旧导致了内容服务性能的下降。此次,虽然内容服务没有崩溃,但创作者岛屿和UEFN (Unreal Editor Fortnite特别版) 功能出现了不稳定现象,且持续了数个小时。在此期间,Fortnite火力全开也无法访问。
影响:11月2日版本32.00发布后,北京时间11月3日下午3点至4日凌晨2点,火力全开、即兴曲目、创作者岛屿等Fortnite内容均无法访问。
11月13日版本32.10发布后,从北京时间约下午8点至14日凌晨2点,创作者岛屿和UEFN (Unreal Editor Fortnite特别版) 功能出现降级,玩家成功加入岛屿的几率只有约70%。在此期间,Fortnite火力全开也无法访问。
调整:我们正开足马力,解决上述服务拓展问题。解决后,全年应当不会再出现故障。
我们还增加了客户端和服务器流量发布前分析,及时发现意外故障,避免未来的发布出现类似问题。
问题:系统持久化中断(版本32.00)
内容服务功能恢复正常后,我们很快又收到了多位创作者的报告,称在使用系统持久化时,玩家遇到了物品栏中特定类型物品缺失的问题。
调查发现,为准备即将到来的调整,部分Fortnite内容已被重新整理归类。由于内容的重新归类,钻石等跟踪物品采用了新的资产路径,因此在玩家物品栏中显示成了新物品,且数量为零。虽然虚幻引擎拥有处理资产移动的机制(即重定向器),但我们的持久化代码中存在错误,导致重定向未能应用。
在解决该问题时,我们重点关注两项要务:
- 避免新玩家的数据丢失。
- 为已受到故障影响的玩家还原物品栏。
第一项要务需要我们创建、测试并部署新的服务器。该流程一般不到24小时就能完成,但我们希望能同时推出针对其他问题的补丁,同时基于其他多个因素,最终在三天后——也就是11月5日才完成新服务器的部署。回顾问题时间线我们认为,对于如此严重的故障,这种延迟是完全不能接受的。
在第二项重要工作中,我们针对版本v32.00发布后进行过岛屿游戏的玩家创建了脚本,还原他们的物品栏。不同岛屿受到的影响不同,根据具体影响和还原可能需要的时间,有些岛屿适合还原数据,有些则适合使用新数据继续。而还原数据是两难相较的抉择。
北京时间11月7日凌晨3点至8日凌晨4点,我们还原了报告问题的创作者的岛屿,并完成了这些岛屿玩家数据的恢复
调整:我们的系统拥有自动化功能,但只会在资产被移除——而非被移动时发送报告。例如,如果创作者岛屿上的物品并未缺失,只是发生了移动,那么该功能就不会发送报告。我们将对此进行调整,加入资产移动报告功能。
此外,我们还在调查自动化选项,争取在Fortnite未来发布新版本时加入加载失败报告功能。这样,如果玩家存储在物品栏中的物品加载失败,我们就能及时了解情况。不过这项工作难度更高,需要更多的时间。
我们在此重申:本次服务器和补丁部署耗费的时间过长,这是完全不可接受的。我们将全力改善这一工作流程,感谢大家的耐心和理解。
问题:通用客户端不稳定(版本32.00)
我们很快注意到,所有平台客户端崩溃的次数急剧增加。
这主要是由于我们为修复错误,在版本32.00更新中进行了变更,以解决变化区武器伤害禁用的问题。这一变更导致了竞争条件的发生,也就是说,两个线程能够不分先后、同时访问阵列资源。根据不同时机和玩家重生时的操作,上述问题可能导致游戏崩溃。
此类崩溃发生在客户端,无法通过服务器调整解决,因此,我们面向所有平台发布了客户端补丁。客户端补丁编写时间更长,且需要针对特定平台提供证书,因此更新在11月16日星期三才发布。
影响:版本v32.00更新后,所有平台的客户端稳定性都有所下降。
调整:在每个Fortnite更新的开发过程中,我们都会跟踪并解决已知的崩溃问题。开展了大量、详实的测试后,我们并没有发现本次崩溃的先例。虽然找到了故障的原因,但我们无法内部重现这一故障。
我们之前也遇到过“规模触发问题”的挑战。例如,假设某个崩溃问题的发生率只有0.01%,在开发和测试期间并没有出现;但发布后,每日活跃用户的规模达到了100万,这个崩溃问题每天就可能出现1万次。
为解决这一问题,我们计划在测试期间更多地采用“净化”版本。“净化”版本能够更敏锐地检测到内存读取问题,及时发现可能在发布后导致崩溃的故障。我们无法确知,如果本次发布前采用了净化版本,是否一定能避免此次崩溃问题发生;但我们坚信,这一举措将大大降低未来类似问题出现的概率。
问题:项目加载时编辑器崩溃(版本32.00)
版本32.00发布后,我们很快收到创作者的报告,称他们在尝试打开项目时,编辑器发生了崩溃。最初我们推断,这很可能与当时的内容服务降级有关;但很快意识到,编辑器崩溃是一个独立的故障。
这一问题涉及显卡驱动器中的崩溃,原因相关信息很少,因此问题诊断的难度非常高。发现问题后,我们立刻建议创作者暂时不要使用UEFN (Unreal Editor Fortnite特别版),而是切换到Direct3D 11。
经过调查我们发现,项目右下角小消息(toast)启动报警弹窗的大量弹出,是导致故障最根本的原因。每条报警弹窗的渲染都会消耗大量内存,如果弹窗过多,就会超出内存使用负荷上限,导致崩溃发生。
所幸我们可以在Fortnite之外单独更新UEFN (Unreal Editor Fortnite特别版),因此在第二天就推送了补丁。
其实在v32.00的早期版本中,一位内部UEFN (Unreal Editor Fortnite特别版) 用户曾经遇到了这一故障,但遗憾的是,该问题未能被成功重现,开发者无法及时解决。
影响:发布后8小时内,UEFN (Unreal Editor Fortnite特别版) 出现了上百次崩溃问题。
调整:在事故后调查工作中我们意识到,开发所用的硬件配置比普通消费者的设备高出许多,显存方面尤其如此。
我们之前的兼容性测试主要聚焦于“新用户体验”,对UEFN大型项目缺乏足够的重视。未来,我们将更多地使用中等和普通消费者水平配置设备测试更大的内部项目,更好地找到并解决潜在问题。
希望这篇文章帮助大家更好地理解了版本32.00发布后你可以遇到的问题,以及导致问题的原因。为创作者打造稳定的环境,构建和支持玩家喜爱、期待的体验,是我们工作的重中之重。
我们将不懈努力,持续改进系统和流程,用心聆听用户反馈,了解大家遇到的问题并及时加以解决,并定期阐述我们的工作方式和情况,为每个人呈现更优秀的UEFN (Unreal Editor Fortnite特别版) 和FNC。
谢谢!
Andrew