游戏服务端在整个游戏业务中扮演着提供服务的角色。所谓的“服务”总结下来基本就是三种:网络通信,计算,存储。
网络通信是基础。不管是什么类型的游戏(即时战斗,回合制;卡牌,RPG;滚服,大通服)都需要进行网络通信。网络通信包括客户端-服务端的通信,服务器之间的通信,服务器-外部服务器的通信。
客户端和服务端的通信很好理解,网络游戏中玩家数据都是保存在服务端的数据库中的,客户端所展示的所有的数据,模型等都是从服务端取到的,并且客户端修改玩家数据也是要和服务端进行通信。
服务端之间的通信,服务端的架构可能会存在网关服务器,登陆服务器,聊天服务器,游戏服务器,支付服务器,战斗服务器等多个进程存在,当某个消息到达后会在多个服务器进程之间进行流转才能完成一个操作,因为服务器之间也要进行通信。
服务器和外部服务器的通信,这里所说的外部服务器指sdk服务器等,这些服务器不是游戏开发者管理的,他们之间存在一些数据的传输和确认等操作,因此也会有网路通信。
计算:这里所说的计算泛指业务逻辑执行。
比如战斗。战斗的过程是根据玩家释放的某个英雄的技能,以及基础属性和其他装备,阵容,称号,等属性值或者buff计算出伤害,和一系列的客户端用于展示的数据。这个过程就是在服务端进行一系列的逻辑计算,然后将这些计算出来的数据发给客户端用于展示战斗过程。
再比如购买一个道具,在服务端是先计算是否有足够的货币,如果足够的话,就要将货币减去道具价格对应的货币数量,对剩余货币数量进行保存并给玩家发一个道具。
存储:是指永久性的存储玩家数据。不管玩家下线,或者服务器关闭,都要保证玩家下次进入游戏后,玩家数据(包括货币,装备,阵容,英雄等)都是玩家最后一次操作后的数据,不能被改动。当然要排除一些不需要保存的数据。
综上:不管是多么复杂的游戏业务,基本都是基于这三种基本的服务上发展起来的。理解了服务端的本质后,可以跳出具体的游戏业务玩法,在更高层次上看待如何为游戏业务提供服务。从而在做服务端技术选型以及做架构方案的设计时心中就有了大方向和思路。