开发语言与项目构建发布
所谓的游戏服务器编程语言其实有很多,基本上任何一种语言都可以作为游戏服务器的编程语言。这需要根据自己游戏的类型和要求加以选择,比如C++,Java ,Erlang,go等等。语言各有利弊,C++效率高,但是掌握起来难些,JAVA易于掌握,开发效率高,目前对于追求快速上线率的页游和手游来说,JAVA成了一个不错的选择,下面主要以JAVA项目来讲述服务器各模块之间如何交互,如何分工合作。项目采用maven框架构建,简化了项目依赖管理, jar包便于与持续集成工具(jenkins)整合一键打包发布svn。
一般地游戏服务器的架构划分如下三层:网络接入层、数据存储层、游戏逻辑层
网络接入层
通信方面使用Netty框架,主要封装各种物理底层通讯机制,让应用程序员关注业务逻辑。协议数据使用protobuff, Protobuf有更高的消息压缩率,时间效率和空间效率都有很大的提升,支持多语言,跨平台。
数据缓存以及存储
市面用的游戏用到的数据库大多是下面这几种:
MySQL,MongoDB, Redis
游戏服务器都配备了数据库,是因为游戏越来越复杂,数据量也越来越多,而且采用数据库也方便对数据的管理和备份。mysql主要存储一些游戏中玩家数据,redis主要存储一些跨服数据,比如跨服排行榜数据实时排名,或者数据的缓存。
游戏中玩家数据需要及时响应,及时反馈,一般游戏中绝大部分的数据是有缓存的,游戏中玩家产生的数据变化,一般先修改玩家缓存数据,一定时间后,缓存数据定时批量写入数据库,长期使用不到的缓存将会被清理,减少内存空间使用。
游戏逻辑层
服务器各类模块介绍 :
服务器架构 :
注:platform 和多个游戏服相连接。
流程说明:
登陆流程:玩家登陆时首先连接web服,进行登陆,验证成功后,会将玩家登陆的token 放到Gate服。然后玩家连接Gate服登陆到Game服。
战斗流程:玩家在Game服发起战斗,比如匹配战斗,则在Game服上匹配,然后送入Fighter 战斗服进行战斗,此时所有的战斗消息从Gate服直接路由到Fighter服,战斗结果发送给Game服,然后进行发奖等逻辑
玩家移动流程:玩家移动消息同步给Scene服,Scene服每一帧同步给所有的玩家
JAVA游戏服务器,需要掌握的技术
- Java基础知识
- JavaNIO编程
- 多线程编程,并发集合的掌握,游戏中有很多并发事件,安全性尤为重要
- 热更新,内存,CPU性能分析
- Netty,Mina网络框架精通一种
- Redis,memcache,MongoDB等单用或者组合使用
- SQL语言,数据库:如mysql
- 数据库操作,比如mybatis,Hibernate
- spring,springMvc主要用于http协议的WEB服务器
- tomcat,Nginx
- Linux常用的基本命令及shell脚本(服务器发布,启动关闭)
以Java为服务器编程语言来说,掌握Java的基本知识就不必说了,是必不可少的。可以参考《Java编程思想》,《Java核心技术》等书。根据游戏通信协议的不同,大致有两种实现方式:Socket和http。先说简单些的http协议,这个协议已经很成熟的应用到了网站上。而Java语言也可以用于网站开发,所以相当就简单些。现在有很多开源的服务器软件,比如:tomcat ,resin等。游戏前端不管是页游flash,还是手游的Android,IOS都支持http协议,只要把游戏的逻辑数据按post方法向服务器发出请求即可了。
总结
游戏服务器因为需要面向所有的玩家,所以对服务器的稳定性要求比较高,不能总是出现问题。
策划的设计经常天马行空,所以也要考虑到服务器的功能扩展性,争取在尽量少写代码的情况下完成功能。
服务端程序的开发速度很重要,需要考虑模块的通用性,功能的扩展性,尽量的降低bug可能性,合理设计。
立即租用服务器
如果您准备开始租用服务器,我们的业务经理可以帮助您以最优惠的价格找到合适的服务器。立即致电我们,获取服务器报价以了解更多信息。立即与我们联系,开始使用服务器托管或服务器租用。
版权声明:上述内容由互联网用户贡献,该文观点仅代表作者,本站不拥有所有权,不承担相关法律责任。如发现有侵权/违规的内容,请联系我们lin@k23.cn。