gpt4 book ai didi

不看后悔!揭秘游戏服务器开发

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 32 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章不看后悔!揭秘游戏服务器开发由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

前言

《摩尔庄园》前段时间上线, 持续超出市场预期,相信也有不错的收益。游戏好玩,所有玩家看到了前端,但是做一款游戏,离不开后台游戏服务器的支持,服务器都要做什么,服务器的架构是什么,需要哪些技术,一系列的问题有没有思考过?下面讲下作为做服务器开发中需要做的事.

  。

1、常见游戏模块

游戏玩法 。

游戏开发中常见的玩法模块,一般的游戏都会包含这些玩法 。

新手引导、任务系统、背包系统、装备系统、副本、战斗系统、活动、商店、充值,竞技场,公会系统,好友系统、聊天系统、邮件系统、红点系统等等 。

通用模块 。

  1. 定时job,处理一些定期活动重置,排名发奖励等
  2. 登录,顶号,离线,断线重连处理
  3. 敏感词检测,版署需要
  4. 日志系统,记录玩家行为日志,奖励日志等
  5. 功能开启关闭,有时候游戏出问题后(比如刷奖励)指定功能需要及时关闭
  6. 掉落,奖励随机规则
  7. 防沉迷系统,主要是未成年人保护规则
  8. 聊天监控,
  9. 错误上报机制
  10. 道具卡兑换,邀请码
  11. 夏令时问题处理
  12. 不停服热更线上代码
  13. 紧急下家运营活动
  14. 合服

运营后台管理系统 。

  1. 发布下架活动
  2. 发布公告
  3. 发送邮件
  4. 游戏资源冻结
  5. 账号封号,解封,禁言
  6. 查询当前在线人数

  。

2、开发语言与项目构建发布

一般游戏服务器使用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 和多个游戏服相连接.

流程说明:

登陆流程:玩家登陆时首先连接web服,进行登陆,验证成功后,会将玩家登陆的token 放到Gate服。然后玩家连接Gate服登陆到Game服.

战斗流程:玩家在Game服发起战斗,比如匹配战斗,则在Game服上匹配,然后送入Fighter 战斗服进行战斗,此时所有的战斗消息从Gate服直接路由到Fighter服,战斗结果发送给Game服,然后进行发奖等逻辑 。

玩家移动流程:玩家移动消息同步给Scene服,Scene服每一帧同步给所有的玩家 。

  。

3、JAVA游戏服务器,需要掌握的技术

  1. Java基础知识
  2. JavaNIO编程
  3. 多线程编程,并发集合的掌握,游戏中有很多并发事件,安全性尤为重要
  4. 热更新,内存,CPU性能分析
  5. Netty,Mina网络框架精通一种
  6. Redis,memcache,MongoDB等单用或者组合使用
  7. SQL语言,数据库:如mysql
  8. 数据库操作,比如mybatis,Hibernate
  9. spring,springMvc主要用于http协议的WEB服务器
  10. tomcat,Nginx
  11. Linux常用的基本命令及shell脚本(服务器发布,启动关闭)

  。

4、总结

游戏服务器因为需要面向所有的玩家,所以对服务器的稳定性要求比较高,不能总是出现问题,需要在开发中细心.

策划的设计经常天马行空,所以也要考虑到服务器的功能扩展性,争取在尽量少写代码的情况下完成功能.

服务端程序的开发速度很重要,需要考虑模块的通用性,功能的扩展性,尽量的降低bug可能性,合理设计.

服务端同学任重道远,需要不断的学习和积累经验,才能做好游戏的支撑.

加油吧,希望各位同学做出自己喜欢的游戏,这篇文章就到这里了,希望能帮到你,请多多关注我的更多内容! 。

原文链接:https://blog.csdn.net/perfect2011/article/details/117870153 。

最后此篇关于不看后悔!揭秘游戏服务器开发的文章就讲到这里了,如果你想了解更多关于不看后悔!揭秘游戏服务器开发的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com