游戏服务器开发一般用什么语言(游戏服务器开发是做什么的)
导语:游戏服务器开发(一)
从事游戏服务器开发10多年了,经历过大大小小五六款游戏,谈得上成功游戏的却是没有。
心血来潮,想把这么多年的服务器的开发经历写出来,给自己一个总结,给后来人一个参考,水平有限口下留情。
本系列以中小型游戏服务器作为例子。
游戏服务器按层次分可以分为:
数据库层;网络层;业务层;GM后台。
按功能可以分为:
网关进程;逻辑进程;全局进程;路由进程。
下面展开来说:
数据库层:
顾名思义,数据库层就是用来存储数据用的,包括游戏数据和日志数据,游戏数据比如角色自身的数据(装备,属性等)、全局数据(帮派,排行榜等)。
日志数据是为了运营查询方便而存储的一些角色行为,比如角色注册,元宝道具流水,留存,充值等。
这里面涉及到数据库选择,数据存储策略,数据备份策略,数据缓存策略,这里列一下通常的做法。
1.数据库选择:
游戏数据:可选的有MySQL、MongoDB、Redis、SSDB,本人比较偏向SSDB,因为占用内存少,自带缓存功能,读写速度也不错,缺点是没有binlog回滚功能。
日志数据:为了联合查询方便,通常选用MySQL作为存储数据库。
2.数据存储策略:
游戏数据包括角色数据和全局数据。
角色数据:角色登录的时候从数据库中加载到内存,然后定时保存(通常5分钟左右)游戏过程中修改过的数据(脏数据)。
全局数据:游戏启动的时候全部加载进内存,也是定时保存游戏过程中修改过的数据。
通常做法:数据按不同模块以key value方式存储到数据库,key为对应模块的名字,value为将模块数据打包成json格式后的json数据。
3.数据备份策略:
游戏数据:
选项1:定时用数据库备份工具热备份出来放到一个安全的地方,比如备份机器,或者挂载个硬盘上去(云服务器都有这个功能)。
选项2:数据库做主从库同步。
日志数据:同上。
数据库层篇完结。
本文内容由小纳整理编辑!