游戏服务器概述
系统初始化
配置文件读取,读取的是文件配置?数据库配置?远程配置?
配置的修改是否需要重启服务器?
游戏逻辑
底层通信要好,
NIO
框架:Netty
协议层: 处理与客户端交互时,协议的解析与返回数据,这层不要放业务逻辑实现,与客户端交互的数据在这一层开始,也在这一层结束
业务逻辑层: 协议层将参数传入逻辑层,在逻辑层处理业务逻辑(计算价格,通关,记时,数据的逻辑运算);
业务逻辑是游戏的核心,一定要保证正确性,尽量采用面向对象的方法去思考实现,不要重复代码!还要考虑每个方法都是可以单独测试的。
数据库系统
游戏的数据要存储到数据库,存储时要考虑
建立数据库连接->存储数据->释放连接
这一过程的造成的高延时解决方法是使用
数据库连接池
技术,开源的产品有:Mybatis
缓存系统
客户端与服务器的交互要求是低延迟的,客户端一个请求过来,最低不能超过
500ms
去响应,网络传输耗时在100-200 ms
,超过700ms
玩家就会觉得卡了直接从数据库中取数据,处理完再存回数据库,这个操作是满足不了低延时的要求的,这里就要使用缓存技术,将正在交互的数据放入内存中,这里推荐使用
Redis
游戏日志
日志是玩家在整个游戏中的行为记录,有了这个记录,我们就可以分析玩家的行为,查找游戏的不足,在处理玩家在游戏中的问题时,日志也是良好凭证和快速处理方式
系统日志: 主要记录游戏服务器的系统情况,比如:数据库是否正常连接,服务器是否正常启动,数据是否正常加载
玩家行为日志: 比如玩家发送了什么请求,得到了什么物品,消费了多少货币
统计日志: 针对游戏中玩家某种行为的一种统计,根据这个统计来分析大部分玩家的行为,得出一些共性和不同之处,以方法运营做不同的活动吸引用户消费
日志要设计一种良好的格式,易于读取和分解。
游戏管理工具
服务器管理: 主要负责服务器的开启,关闭,服务器配置信息,玩家信息查询
玩家管理:比如踢人,封号
统计查询: 玩家行为日志查询,统计查询,次日留存率查询,邮件服务,修改玩家数据等
公共服务组件
充值服务器
运营搞活动的礼包码
注册用户的管理,玩家注册一个账号可以进所有的游戏服务器区
SDK登录验证,这个一般是
http
请求,阻塞且延迟高,单独拿出来做