站务联系

1 游戏服务器开发的基本体系与服务器端开发的一些建议(3)

发布时间:2021-04-08   来源:网络整理    
字号:

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

七,公共组件

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

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

还有SDK的登入验证,现在手游比较多,与渠道对接里要进行验证游戏服务器,这常常是这些http请求,速度慢,所以这个也要拿出来单独做,不要在游戏逻辑中去验证,因为网路IO的访问时间是不可控制的,http是阻塞的恳求。

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

游戏逻辑安装工程;日志处理安装工程;充值安装工程;游戏管理工具安装工程;用户登录安装工程;公共活动安装工程等。

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

服务器端开发的一些建议

本文作为游戏服务器端开发的基本大纲,是游戏实践开发中的小结。

第一部分 —— 专业基础,用于指导应聘跟见习考评;第二部份 —— 游戏入门,讲述游戏服务器端开发的基本要领;第三部份 —— 服务端构架,介绍构架设计中的一些基本原则。

希望能帮至你们!

一、专业基础1.1网路1.1.1理解TCP/IP协议

思考:

请解释DOS防御与DRDOS防御的基本原理一个100Byte数据包,精简至50Byte, 其传输效率增加了50%TIMEWAIT状态如何解释?1.1.2把握常用的网路通讯模型1.2储存1.3程序二、游戏开发入门2.1防御式编程

不要坚信客户端数据,一定要检测。作为服务器端你没法确定你的客户端是谁,你也不能假设它是善意的,请做好自我保护。(这是辨别一个服务器端程序员是否入门的基本标准)务必对于函数的传人参数跟返回值进行合法性判定,内部子系统,功能模块之间不要很过信任,要求低耦合,高内聚。插件式的模块设计,模块功能的健壮性应当是内建的,尽量降低模块间耦合。

2.2设计方式

道法自然。不要迷信,迷恋设计方式,更不要生搬硬套简化,简化,再简化,用最简略的方法解决问题借大宝一句话:设计本天成,妙手偶得之

2.3网路模型2.4数据持久化2.5内存管理2.6日志系统2.7通讯合同2.8全局惟一Key(GUID)2.9多线程与同步2.10状态机2.11数据包操作2.12状态监控2.13包速率控制2.14继电器控制2.15反外挂反作弊2.16热更新2.17防刷2.18防崩溃2.19功耗优化2.20营运支持2.21容灾与故障预案

三、服务器端构架3.1哪些是好的构架?3.2构架实践的探讨

游戏服务器的设计是一项毫无挑战性的工作,游戏服务器的发展也由原先的单服结构转变为多服机构,甚至出现了bigworld引擎的分布式解决方案,最近了解到Unreal的服务器解决方案atlas只是基于集群的形式。

负载均衡是一个很复杂的课题,这里暂不谈bigworld跟atlas的这类服务器的设计,更多的是基于功能跟场景界定服务器结构。

首先说一下思路,服务器界定基于以下原则:

分离游戏中占用系统资源(cpu,内存,IO等)较多的功能,独立成服务器。在同一服务器构架下的不同游戏,应尽可能的复用这些服务器(进程级别的复用)。以多线程并发的编程方法适应多核处理器。宁可在服务器之间多复制数据,也要保持清晰的数据流向。主要根据场景界定进程,若需按功能界定,必须保持整个逻辑足够的简略,并满足以上1,2点。服务器结构图:各个服务器的简略说明:

Gateway 是应用网段,主要适于保持跟client的连结,该服务器还要2种IO:

对client选用高并发连结,低吞吐量的网路模型,如IOCP等对服务器选用高吞吐量连结,如阻塞或异步IO。

图说天下

×
二维码生成