讲师简介:张正,腾讯互娱北极光工作室群专家工程师,拥有12年游戏后台开发经验,主导和参与了《天涯明月刀》、《轩辕传奇》等自研大型MMORPG项目的后台开发,现担任《天涯明月刀》项目后台技术总监,北极光后台技术总监。
下文为课程《游戏服务器概述》内容节选 进入小程序可查看系列课程完整内容
游戏程序入门第一课:游戏服务器了解下
什么是游戏服务器?
从字面上来看,游戏服务器其实是一个硬件的概念,常见游戏服务器类型有机架式服务器、刀片机、小型机等,不同的服务器在CPU、内存、磁盘上有所侧重,依据游戏需要运行的程序而定。和一般的电脑不同,游戏服务器只需要CPU、内存和主板,经过标准化的封装以后被统一放置在机架上。这种设计一方面可以节省存放空间,另一方面也易于管理。
我们一般选用的服务器机型都是内部的定制型号,比方说A服务器的CPU内存很一般,但是它的磁盘很大,我们用它来做存储;比如说C服务器的CPU内存也比较一般,磁盘也很小,但是它的主频比较高,我们会用来做网络接入。 在游戏服务器开发上,单机游戏一般分为图形程序员和游戏逻辑程序员,其中图形程序员负责图形渲染,需要的技术比较深;而游戏逻辑的难度则更多地在于软件工程上,并不是在游戏渲染技术这个方面;联网游戏一般分为游戏程序员和网络程序员,后者相对边缘,主要存在于一些比较专业的游戏工作室中;在网络游戏里面,分工则更加明确,像前台开发涵盖了图形逻辑相关的内容,后台开发其实就是游戏服务器开发。
游戏程序入门第一课:游戏服务器了解下
所以当说起“游戏服务器”的时候它到底指什么?这三种都可能有:它可能指代硬件,可能是软件,也可能是一些人。
游戏服务的特点及应对
游戏服务需要解决的核心问题是满足海量游戏用户的要求——稳定和高质。稳定是相对于不稳定的情况而言的,用户常说的卡顿即是典型的不稳定。但实际上我们从技术实现的角度来看还可以细分为几种不同的类型。从服务器软件这个角度去看,一般会有计算的卡顿,比如存在一个死循环的BUG,或者是进入一个大循环的BUG里面很长时间出不来,无法响应用户操作。再一个要求就是高质量,也就是要求快速、逻辑严谨、更新频率高且及时。
游戏程序入门第一课:游戏服务器了解下
游戏服务跟其他互联网服务有什么区别呢? 首先游戏对延迟是比较敏感的,当然这不是指所有游戏。在一些实时交互的游戏里面,延迟超过三百毫秒是无法正常运行的,像格斗类和射击类游戏延迟一般都要求在一百毫秒以内。
第二是实时的高烈度交互,单个终端发送请求的频率是非常高的。我们玩一些对战游戏的时候,一个手势每秒钟玩家可能会点击多次,另外单次请求往往会引发多处数据改变,这在实时大范围交互的场景下很容易出现,比如城战。
第三就是业务逻辑复杂,内部耦合度高。复杂游戏服务的代码可以达到百万行的量级,像《天涯明月刀》这个MMORPG,代码到现在为止,应该是一百五十万行左右。
第四是变更的频度高、幅度大。变更的幅度,这里面包含很多内容,比如游戏资源,可能是一些配置表、图标、贴图等等;有些时候还需要做逻辑的更新,比如说脚本,甚至是一个完整的patch。
怎么去应对复杂度?最常见的方法就是分治,就是把大问题拆分为小问题,最终在一个合适的纬度上去解决。而对于内部复杂度高的,就需要在软件内部设计上去下功夫了。
游戏程序入门第一课:游戏服务器了解下
再一个方法就是灰度,灰度是相对于黑白而言的一个概念。我们认为在各种各样的事情里面,并不是非黑即白的,它们有很多中间状态。对一个服务而言也是这样子。当我们不能百分之百提供一个服务的时候,我们不是直接把它关掉,我们可以给玩家提供部分的服务,或者我们给部分玩家提供服务,另外一部分玩家先等一下。
游戏服务器开发技术
游戏程序入门第一课:游戏服务器了解下
以上是游戏服务器的开发技术的总图,这里分了几层:最核心的就是算法和数据结构,外面一些是操作系统,再往外的是编程语言、工具链、存储、网络等一些专有的技术,然后再往外其实还有一些软件工程方面的东西。
|