导语
FPS相关技术在端游上已经非常的成熟,端游积累的同步技术为手游开发提供了技术基础,但是手机移动网络的特点决定了手机游戏的实时同步技术需要有一些不同,如果想让手游有良好的移动环境兼容性,需要重点关注和优化的指标有所不同。
另外手游具有用户爆发性的特点,上线前对在线人数不太好预估。而目前了解到的几款成功的FPS端游后台,因为基于FPS游戏的实时性和安全性等原因,承载一般都在千人左右,对于后台我们希望是在保证同步的实时性和安全性的同时,承载上能具备一定的伸缩性,而不是依赖过多的备用机器来应对这个问题。
解决方案
移动平台实时对战的同步技术
目前存在单人闯关、单人挑战、多人PVE、PVP等多种游戏模式,多人模式都需要玩家间实时交互,我们所有多人模式因为玩家体验和设计的需要,都是强同步模式,也就是说不存在两个客户端出现较大差异的情况,在有些手游里会采用弱同步模式以降低网络流量。
为了尽可能的在不同客户端表现出较小差异的结果,客户端和服务器之间要先进行时间同步,进行时间同步后,客户端和服务器各自就有了一套几乎相同的时间轴,每个客户端及服务器之间本来都是异步关系,利用这个时间轴做参照,可以对位置和动作、技能等做时序修正,来弥补网络延迟带来的差异,使各端表现和运算尽可能一致,这一块原理上比较简单,但因为有时序和异步存在,在逻辑实现上需要非常的细心
同步技术经过端游时代的沉淀,已经非常成熟,移动游戏因为运行环境的差异,有着不同的特点,我们可以看到移动游戏最大的问题是弱网络问题,那么在弱网络下,我们如何做同步呢?
移动游戏和端游网络环境现状对比
移动游戏和端游(PC游戏)在网络环境现状上存在一些显著的差异,这些差异主要体现在网络基础设施、用户设备、游戏类型、玩家需求、网络安全等方面。以下是对这两者网络环境现状的对比分析:
1. 网络基础设施
-
移动游戏:
- 5G网络的普及:随着5G网络的推广,移动游戏的网络速度和稳定性显著提升,降低了延迟,增强了实时互动的体验。
- Wi-Fi的广泛使用:许多玩家在家中或公共场所使用Wi-Fi网络,通常比移动数据网络更稳定。
-
端游:
- 宽带网络的普及:大多数PC用户使用宽带网络,通常提供更高的带宽和更低的延迟,适合高要求的游戏。
- 光纤网络的应用:在一些地区,光纤网络的普及使得端游的网络体验更加流畅。
2. 用户设备
-
移动游戏:
- 设备多样性:移动设备种类繁多,性能差异较大,开发者需要考虑不同设备的兼容性和性能优化。
- 便携性:移动设备的便携性使得玩家可以随时随地进行游戏,但这也可能导致网络环境的不稳定。
-
端游:
- 高性能设备:PC通常具有更强的处理能力和图形性能,能够支持更复杂的游戏和更高质量的图形。
- 固定使用环境:PC游戏通常在固定的环境中进行,网络连接相对稳定。
3. 游戏类型
-
移动游戏:
- 休闲与社交游戏:移动游戏市场以休闲和社交游戏为主,通常对网络延迟的要求较低。
- 云游戏的兴起:云游戏在移动端逐渐流行,但对网络带宽和延迟的要求较高。
-
端游:
- 竞技与高要求游戏:端游中有大量竞技类游戏,对网络延迟和稳定性要求较高。
- 复杂的多人在线游戏:许多端游支持大规模的多人在线游戏,网络负载较大。
4. 玩家需求
-
移动游戏:
- 低延迟与高稳定性:玩家对低延迟和高稳定性的需求逐渐增加,尤其是在竞技类移动游戏中。
- 社交互动:玩家越来越重视社交互动,许多移动游戏集成了社交功能。
-
端游:
- 高质量体验:玩家对图形质量和游戏体验的要求较高,尤其是在大型3D游戏中。
- 社区与竞争:端游玩家通常更注重社区互动和竞争性,参与在线比赛和活动。
5. 网络安全与隐私
-
移动游戏:
- 安全威胁:移动游戏面临的安全威胁包括个人信息和支付信息的盗取,开发者需要加强安全措施。
- 数据隐私:玩家对个人数据的隐私保护意识增强,开发者需遵循相关法律法规。
-
端游:
- 更复杂的安全问题:端游可能面临更复杂的安全问题,如作弊、黑客攻击等,开发者需要采取更严格的安全措施。
- 用户账户安全:端游通常需要用户注册账户,账户安全和数据保护成为重要问题。
结论
移动游戏和端游在网络环境现状上各有特点。移动游戏受益于5G和Wi-Fi的普及,但面临设备多样性和网络不稳定的挑战;而端游则依赖于更强大的硬件和稳定的网络环境,但对玩家的设备要求较高。随着技术的进步和玩家需求的变化,这两者的网络环境将继续演变,开发者需要根据不同平台的特点进行相应的优化和调整。
移动网络的通信质量由信号强度、分流量、网络制式等因素决定。如果是想解决这些问题–难,因为这些都是外部限制,我们只能让自己的游戏尽量的适应这种外部限制,再好的网络,即使是WIFI,如果信号强度弱,丢包多,有效流量仍然会低,其他情况也是如此,所以在游戏过程中的流量优化是关键,端游FPS单局流量一般在10KB/S左右,甚至更多,手游我们希望做到1KB左右,这样2G网络只要不是太差也可以玩我们游戏。
我们针对不同模式的特点,设计同步方案、单独处理流量优化的细节。能不在游戏过程中使用网络的模式,尽量不在游戏过程中使用网络,这样在游戏结束时才上传游戏过程数据,弱网络时对游戏过程的影响才能降到最低。在必须要实时交互的游戏模式里,我们尽量减少网络流量,包括较为底层的服务器并包优化、协议字节降低精度优化等等,也包括从逻辑层面找优化点,比如下行数据的优化(因为下行数据量是N*N,所以下行数据优化非常有意义)、AI优化等,如果按传统FPS,在多人PVE模式下流量消耗是比较大的,因为除了有角色的同步外还有很多AI需要同步,AI的移动需要进行专项的同步优化,把这块同步流量降到最低。
FPS单局服务器承载优化
统的FPS单局服务器后台是一局游戏一个进程,有和客户端一样的引擎、一样的处理逻辑,来验证客户端逻辑的合法性,因为服务器和客户端是一套逻辑,保证了服务器容易验算客户端的结果,当然即使是同一套代码在客户端和服务器不同的硬件和OS上运行的运算结果,是不一定能保证完全一致的,除非前后台共用一套平台无关的确定性的数学库,并且在逻辑上不依赖一些本地相关的信息等等。
优化后的单局服务器能实现比传统FPS更多的承载,优化后游戏逻辑和3D相关的验算分开,游戏逻辑做成了一个进程可以服务多局游戏的单进程架构,而3D相关验算这块做成了一个单进程的无状态的服务,我们的3D验算服务器专门用来验算射击的有效性(是否被3D物件遮挡)和移动的有效性(是否路线不可行走),由于FPS单局后台由多进程的单局架构优化成了即使有很多个房间、但仍只有少数进程的架构,极大的释放了CPU,所以能有更高的承载这样改动架构后,需要解决一些比较棘手的问题。
在第一人称射击(FPS)游戏中,单局服务器的承载优化是确保游戏流畅性和玩家体验的关键因素。随着玩家数量的增加和游戏复杂性的提升,优化服务器性能变得尤为重要。以下是一些常见的FPS单局服务器承载优化策略:
1. 网络带宽优化
- 数据压缩:对发送到客户端的数据进行压缩,减少网络带宽的使用。例如,可以使用压缩算法对位置、状态等信息进行压缩。
- 状态更新频率调整:根据游戏的需求,调整状态更新的频率。例如,重要的状态(如玩家位置、射击事件)可以更频繁地更新,而不那么重要的状态(如环境变化)可以减少更新频率。
2. 客户端预测与插值
- 客户端预测:允许客户端根据玩家的输入和历史数据预测游戏状态,减少对服务器的依赖。这可以降低延迟,提高玩家的响应速度。
- 状态插值:在客户端使用插值技术平滑状态变化,即使服务器的更新不够频繁,玩家仍然可以体验到相对流畅的游戏过程。
3. 区域划分与负载均衡
- 地图分区:将游戏地图划分为多个区域,服务器只处理玩家所在区域的状态。这可以减少服务器的计算负担。
- 负载均衡:在多个服务器之间分配玩家,确保每个服务器的负载均衡,避免某个服务器过载。
4. 事件驱动架构
- 事件系统:使用事件驱动的架构来处理游戏中的各种事件(如射击、移动、死亡等),减少服务器的计算负担。只有在事件发生时,服务器才会进行相应的计算和状态更新。
5. 优化游戏逻辑
- 简化物理计算:在服务器端优化物理计算,使用简化的物理模型或减少物理计算的频率,以降低服务器负担。
- 状态管理:合理管理游戏状态,避免不必要的状态更新和计算。例如,只有在玩家进入某个区域时才更新该区域的状态。
6. 使用合适的同步模式
- 弱同步模式:在适当的情况下,采用弱同步模式,允许客户端在一定程度上预测和计算状态,减少对服务器的依赖。
- 强同步模式:在需要高度一致性的情况下,使用强同步模式,确保所有玩家在同一时间看到相同的游戏状态。
7. 监控与调优
- 性能监控:实时监控服务器的性能指标(如CPU、内存、网络带宽等),及时发现并解决性能瓶颈。
- 负载测试:进行负载测试,模拟高并发情况下的服务器性能,找出潜在的优化点。
8. 使用云服务与分布式架构
- 云服务器:利用云服务提供商的弹性计算能力,根据需求动态调整服务器资源。
- 分布式架构:将游戏逻辑分布到多个服务器上,利用微服务架构提高系统的可扩展性和容错性。
结论
FPS单局服务器的承载优化是一个复杂的过程,需要综合考虑网络带宽、游戏逻辑、服务器架构等多个方面。通过合理的优化策略,可以显著提高服务器的性能,提升玩家的游戏体验。开发团队应根据具体的游戏需求和技术条件,选择合适的优化方案,并进行持续的监控和调整。