前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >游戏服务器开发基本体系与建议

游戏服务器开发基本体系与建议

作者头像
jtti
发布2024-05-23 15:02:09
1330
发布2024-05-23 15:02:09
举报
文章被收录于专栏:jttijtti

首先,明确游戏服务器开发和做传统的web开发有区别。游戏服务器开发不像web那样,有些明确的MVC架构,往往就是为了尽快满足策划的需求,尽快的实现功能,尽快能让游戏跑起来。随着功能越来越多,在老代码上面修改的越来越频繁,游戏测试时暴露出来的一堆bug。 游戏的构架设计非常重要,好的构架代码清析,责任明确,扩展性强,易调试。每个游戏都不一样,但是本质上还是差不多的。 对于游戏服务器的构架设计,要了解游戏的服务器构架都有什么组成的?**一款游戏到上线,**需要具备哪些功能?**游戏构架本身代表的是一个体系,它包括:

  1. 系统初始化
  2. 游戏逻辑
  3. 数据库系统
  4. 缓存系统
  5. 游戏日志
  6. 游戏管理工具
  7. 公共服务组件

这一系统的东西都是不可少的,它们共同服务于游戏的整个运营过程。我们一点点来介绍各个系统的功能。

一,系统初始化

系统初始化是在没有客户端连接的时候,服务器启动时所需要做的工作。基本上就是配置文件的读取,初始化系统参数。

但是我们必须要考虑的是:

  • 系统初始化需要的参数配置在哪儿,是配置在本地服务器,还是配置在数据库;
  • 服务器启动的时候去数据库取;
  • 配置的修改需不需要重启服务器等。

二,游戏逻辑

游戏逻辑是游戏的核心功能实现,也是整个游戏的服务中心,它被开发的好坏,直接决定了游戏服务器在运行中的性能。那在游戏逻辑的开发中我们要注意些什么呢? 游戏是一种网络交互比较强的业务,好的底层通信,可以最大化游戏的性能,增加单台服务器处理的同时在线人数,给游戏带来更好的体验,至少不容易出现因为网络层导致的数据交互卡顿的现象。在这里我推荐使用Netty,它是目前最流行的NIO框架,它的用法可以在我之前的文章中查看,这里不再多说了。 有人疑问,代码也需要分层次?这个是当然了,不同的代码,代表了不同的功能实现。现在的开发语言都是面向对象的,如果我们不加思考,不加整理的把功能代码乱堆一起,起始看起来是快速实现了功能,但是到后期,如果要修改需求,或在原来的代码上增加新的需求,那真是被自己打败了。所以代码一定要分层。

三,数据库系统

数据库是存储数据库的核心,但是游戏数据在存储到数据库的时候会经过网络和磁盘的IO,它的访问速度相对于内存来说是很慢的。一般来说,每次访问数据库都要和数据库建立连接,访问完成之后,为了节省数据库的连接资源,要再把连接断开。

四,缓存系统

游戏中,客户端与服务器的交互是要求低延迟的,延迟越低,用户体验越好。像之前说过的一样,低延迟就是要求服务器处理业务尽量的快,客户端一个请求过来,要在最短的时间内响应结果,最低不得超过500ms,因为加上来回的网络传输耗时,基本上就是600ms-到700ms了,再长玩家就会觉得游戏卡了。

游戏中常见的缓存有两种:

  1. 直接把数据存储在jvm或服务器内存中
  2. 使用第三方的缓存工具,这里推荐Redis,详细的用法可以自己去查询。(本公号内有系列文章,详情见【菜单栏】- 【技术文章】 - 【基础系列】 - 【实战R1,实战R2】)

五,游戏日志

日志是个好东西呀,**一个游戏中更不能少了日志,而且日志一定要记录的详细。**它是玩家在整个游戏中的行为记录,有了这个记录,我们就可以分析玩家的行为,查找游戏的不足,在处理玩家在游戏中的问题时,日志也是一个良好的凭证和快速处理方式。 在游戏中,日志分为:

  1. 系统日志,主要记录游戏服务器的系统情况。比如:数据库能否正常连接,服务器是否正常启动,数据是否正常加载;
  2. 玩家行为日志,比如玩家发送了什么请求,得到了什么物品,消费了多少货币等等;
  3. **统计日志,**这种日志是对游戏中所有玩家某种行为的一种统计,根据这个统计来分析大部分玩家的行为,得出一些共性或不同之处,以方法运营做不同的活动吸引用户消费。

构架设计中,日志记录一定要做为一种强制行为,因为不强制的话,可能由于某种原因某个功能忘记加日志了,那么当这个功能出问题了,或者运营跟我们要这个功能的一些数据库,就傻眼了。又得加需求,改代码了。

六, 游戏管理工具

游戏管理工具是一个不断增涨的系统,因为它很多时候是伴随着游戏中遇到的问题而实现的。

但是根据经验,有一些功能是必须有的,比如:

  • 服务器管理,主要负责服务器的开启,关闭,服务器配置信息,玩家信息查询;
  • 玩家管理,比如踢人,封号;
  • 统计查询,玩家行为日志查询,统计查询,次留率查询,邮件服务,修改玩家数据等。

一个好的,全的游戏管理工具,可以提高游戏运营中遇到问题处理的效率,为玩家提供更好的服务。

七,公共组件

公共组件是为游戏运行中提供公共的服务。例如:

  • 充值服务器,我们没必须一个服用一个充值,而且你也不能对外提供多个充值服务器地址,和第三方公司对接,他们绝对不干,这是要疯呀;
  • 还有运营搞活动时的礼包码;
  • 还有注册用户的管理,玩家一个注册账号可以进不同的区等。

这些都是针对所有区服提供的服务,所以要单独做,与游戏逻辑分开,这样方便管理,部署和负载均衡。

所以,综上来看,一个游戏服务器起码有几个大的功能模块组成

  1. 游戏逻辑工程;
  2. 日志处理工程;
  3. 充值工程;
  4. 游戏管理工具工程;
  5. 用户登陆工程;
  6. 公共活动工程等。

根据游戏的不同需要,可能还有其它的。所在构架的设计中,一定要考虑到系统的分布式部署,尽量把公共的功能拆出来做,这样可以增强系统的可扩展性。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一,系统初始化
  • 二,游戏逻辑
  • 三,数据库系统
  • 四,缓存系统
  • 五,游戏日志
  • 六, 游戏管理工具
  • 七,公共组件
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档