《摩尔庄园》前段时间上线, 持续超出市场预期,相信也有不错的收益。游戏好玩,所有玩家看到了前端,但是做一款游戏,离不开后台游戏服务器的支持,服务器都要做什么,服务器的架构是什么,需要哪些技术,一系列的问题有没有思考过?下面讲下作为做服务器开发中需要做的事。
游戏开发中常见的玩法模块,一般的游戏都会包含这些玩法
新手引导、任务系统、背包系统、装备系统、副本、战斗系统、活动、商店、充值,竞技场,公会系统,好友系统、聊天系统、邮件系统、红点系统等等
一般游戏服务器使用C++,nodejs,photon, JAVA等语言开发,端游戏一般选择C++,因为端游对服务器的性能要求相对比较高一些,语言各有利弊,C++效率高,但是掌握起来难些,JAVA易于掌握,开发效率高,目前对于追求快速上线率的页游和手游来说,JAVA成了一个不错的选择,下面主要以JAVA项目来讲述服务器各模块之间如何交互,如何分工合作。项目采用maven框架构建,简化了项目依赖管理, jar包便于与持续集成工具(jenkins)整合一键打包发布svn,一般地,游戏服务器的架构划分如下三层:网络接入层、游戏逻辑层、数据存储层
通信方面使用Netty框架,主要封装各种物理底层通讯机制,让应用程序员关注业务逻辑。协议数据使用protobuff, Protobuf有更高的消息压缩率,时间效率和空间效率都有很大的提升,支持多语言,跨平台
市面用的游戏用到的数据库大多是下面这几种:
MySQL,MongoDB, Redis
游戏服务器都配备了数据库,是因为游戏越来越复杂,数据量也越来越多,而且采用数据库也方便对数据的管理和备份。mysql主要存储一些游戏中玩家数据,redis主要存储一些跨服数据,比如跨服排行榜数据实时排名,或者数据的缓存。
游戏中玩家数据需要及时响应,及时反馈,一般游戏中绝大部分的数据是有缓存的,游戏中玩家产生的数据变化,一般先修改玩家缓存数据,一定时间后,缓存数据定时批量写入数据库,长期使用不到的缓存将会被清理,减少内存空间使用。
服务器各类模块介绍 :
模块名 | 功能类型 | 功能说明 |
---|---|---|
yyds-all | maven父功能 | 管理模块关系,maven的一些配置 |
yyds-core | 公共模块 | 游戏业务无关的公共代码。 |
yyds-common | 基础模块 | 游戏业务相关的公共代码。 |
yyds-game | 游戏服 | 处理游戏业务逻辑(游戏和聊天业务,聊天消息通过网关进行转发) |
yyds-gate | 网关服 | 负责维护客户端连接,转发消息。 |
yyds-scene | 场景服 | 处理地图相关业务(移动、视野同步) |
yyds-web | WEB服 | 登录、创角、充值、GM命令、运营后台操作入口。 |
yyds-platform | 跨服 | 游戏服之间的消息中转,跨服类玩法。 |
yyds-fighter | 战斗服 | 处理战斗逻辑 |
服务器架构 :
注:platform 和多个游戏服相连接。
流程说明:
游戏服务器因为需要面向所有的玩家,所以对服务器的稳定性要求比较高,不能总是出现问题《需要在开发中细心。
策划的设计经常天马行空,所以也要考虑到服务器的功能扩展性,争取在尽量少写代码的情况下完成功能。
服务端程序的开发速度很重要,需要考虑模块的通用性,功能的扩展性,尽量的降低bug可能性,合理设计。
服务端同学任重道远,需要不断的学习和积累经验,才能做好游戏的支撑。
加油吧,希望各位同学做出自己喜欢的游戏
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。