game《星光》通讯部分构架
根据相关功能将中间层与网络层分成以下五个功能层:游戏逻辑层(接收用户输入,处理并反馈),服务器镜像层(查询本地数据及状态,并及时调整本地数据与服务器同步),数据管理层(统一的服务器数据镜像管理),网络事物层(处理断线重连、网络超时等事物),网络传输层(与服务器的实际连接及数据传输)。
游戏逻辑层:
中间层最初的功能之一。
设计目的:为了解决客户端所设计的网络接口与服务器所提供的接口不一致的问题。产生这个问题是因为客户端在设计网络接口时是通过自身游戏特点的角度出发,而服务器在提供接口时同时考虑了通用性、服务器拓扑与服务器承载量等问题。
解决方案:将用户的一个操作根据服务器的接口拆成若干个步骤来操作。
难点:因为在项目中期,客户端的网络接口还在不断的变化,导致最初的程序设计无法跟上变化。最后采用事物管理的方式重写了中间层。
服务器镜像层:
中间层最初的功能之一。
设计目的:分担服务器的压力。将服务器的数据在本地缓存下来,避免客户端去服务器重复获取数据。产生的原因在于客户端设计时功能缺失。
解决方案:在本地缓存数据,并注意在必要时更新数据。从而加快了服务器响应的速度,同时降低了服务器的压力。
难点:目前还有多余的数据更新过程,计划在以后的工作中加入更完善的数据更新管理机制。
数据管理层:
设计目的:便于数据的最优化管理。产生的原因是服务器为了传输速度,往往将数据分散开来传输,先传必要数据,然后再传详细数据。这就需要专门的管理器去重新组合数据。
结局方案:尽量将数据统一管理。同时避免了数据在不同表中反复存储的情况。
难点:统一数据的存储样式设计。
网络事物层:
设计目的:为每次用户涉及网络的操作提供某种程度的保障。接手网络层后,把网络层的超时、重连等功能剥离出来,重新划分层次。使之能更好的适应事物管理器,并且大大减轻了程序的复杂度。
解决方案:重新划分网络事物层。
难点:目前房间内的操作太多,还没有完全更改过来,这部分的工作需要继续下去。