当前课程知识点:游戏程序设计 >  第十七章 《游戏逻辑服务器和反外挂》 >  17.1 游戏逻辑服务器(上) >  17.1 游戏逻辑服务器(上)

返回《游戏程序设计》慕课在线视频课程列表

17.1 游戏逻辑服务器(上)在线视频

下一节:17.1 游戏逻辑服务器(下)

返回《游戏程序设计》慕课在线视频列表

17.1 游戏逻辑服务器(上)课程教案、知识点、字幕

大家好

我先自我介绍一下我叫赵永伟

在腾讯里面的英文名叫winson

下面我来给大家带来这个游戏逻辑

服务器反外挂的一个课程的分享

今天的课程主要是分成三个部分

第一个部分

我首先会讲一下游戏逻辑服务器

这一部分第一部分因为它是一个和计算机

程序比较

偏计算器程序专业的一个主题

所以我到时候讲的时候

如果涉及到一些

计算机程序方面的问题的概念的话

我先简单的说明一下

我就希望大家都能够很好的能够理解到

我一会讲到的内容

第二部分

我会讲一下外挂与反外挂

最后就是一个答疑环节

这个就像我接触过了MMRPG

阴阳师

逆水寒

这些都是网易的都是是腾讯的

今天我们主要是以这款游戏御龙在天

这一款游戏来进行讲解

这一款游戏可以说是天美工作室

自研的首款MMORPG游戏

它以三国为题材的2012年上线

我们先来看一看

这个御龙在天是一款怎样的游戏

第一部分游戏逻辑服务器

首先我来说一下

这个这图都在大家能看到吗

下面椭圆的我们在这客户端

客户端大家不用说了

就是我们再在电脑上打开了那个游戏客户端

下载在手机上打开游戏app进入客户端

这个两个椭圆形的

在上面的是

这是矩形的

就是在各个游戏机房里面

默默为各个游戏服务的游戏服务器模块

例如这边左边鉴权服务器是什么

就我们登陆用的

在腾讯就是什么QQ

微信登陆用的

然后这边是版本服务器版本服务器什么了

看到这个大家都很熟悉了版本更新

版本服务器

然后目录服务器

目录服务器是什么呢,就是选区,这个就是选区的界面

这个目录服务器

但是左右两边

这个都不是今天重点

你们要看到我这里用的虚线

虚线画出来意思说

他们鉴权和更新的版本

选了区之后

他们就会断开了

就是一个短暂的临时的一个服务

中间这一块才是最重要的比如说

客户端登录到具体的游戏里面

真正起作用的就是中间的这个模块

一般中间这个游戏服务器

我们会一般都会做成三层

底层叫链接层

链接层它是负责管理和客户端的网络连接

客户端发送来的请求包

它负责解包、解密

然后保留一个完整的消息

传送到这个逻辑服务器来处理

然后逻辑服务器处理完之后

他把一个消息往下发

发到链接层

链接层会给它解密

解密打包以后发给客户端

它就是链接层所管理所做的事情

然后这个游戏数据库就是存储层

那么我们可以概括一下

游戏服务器主要有什么作用呢

第一存储刚才说了

存储就不用说的

第二

与其他玩家的一个中转

例如A玩家A和玩家B在里面打架

那肯定要通过一个中转服务器

互相中转才我能看到你出招

你也看到我出招

或者我看到你在跑步或者你再跑或者

你在做什么我都能看到

就说也要通过服务器中转

第三就是它还要负责玩法的驱动

和逻辑怎么说呢

例如那个比武大会

今晚八点钟开始干嘛

那么

逻辑服务器较复杂

八点钟的时候要发通知给大家开始啦

大家来报名

它负责通知大家报名

判断哪个玩家有资格报名

要扣钱进入

然后比赛的结果胜负发奖是吧

都是这个逻辑服务器来处理的工作

然后最后一条就是反外挂和防作弊

不过大家注意一下

反外挂和防作弊并不是说

所有服务器都有这个功能的

例如韩国

韩国的服务器例如韩国的游戏

因为在韩国

它上网是实名制的

所以在韩国

他用挂在韩国网游用挂那成本就很高了

所以韩国的可以让那些没有外挂了

所以韩国游戏它基本上

都不在服务器做逻辑

它很多都把那个逻辑就放在客户端

例如客户端说我把他打了

服务器相信了或者

我把这批怪都杀死了服务器相信了

它就直接

相信你客户端发上来的结果我就相信了

但是在国内做游戏这样是不行的

在国内

这游戏如果这样的话

这游戏没办法运行

没办法运营了

肯定死掉的

所以在国内服务做游戏

他第一个我们第一个原则就是

不能相信客户端的数据

我们所有关键的计算都由服务器来做

所以

我们可以认为

服务器是游戏的大脑,存储加运算,这就是大脑的功能

所以就是大脑的功能

我们认为是服务器是一个游戏大脑

我现在就开始重点来讲

这个逻辑服务器

逻辑服务器好像是一个很高大上的东西

但是并不是他其实做的东西

很简单

第一它初始化

首先进行启动的时候

它只能执行初始化的工作

就是我要该读的配置

该初始化的工作例如加载的文件它读进来

然后它以后他就会一直在进行一个死循环

它不停的在收消息

收了消息

然后再看看这个消息是哪个模块注册了

例如可能是一个很多模块

例如我没们有走路

战斗

复活

什么国家玩法相关的操作

可能它有很多模块注册了

我就分发给你

你这个系统给处理处理完

那就发给客户端会广播出去

然后不停的战术就消息不停的处理

但是它除了收消息之外

它中间还有个中断

每一百毫秒会中断一次

进行时间的驱动

就是我刚才说的

几点钟有个什么比武大会

它就是要靠这个时间中断

中断不停的检查

看看这个时间到了

到了它就开始相关的逻辑

以及信号处理信号处理

例如

例如我发个信号给它(逻辑服务器)

让它重新加载一下配置 配置发出去后

例如我们发现这个配置有bug

或者修正了一把配置

配置发出去了

我发个信号给它(逻辑服务器)

它就会重新执行下这个读配置的操作

把配置重新加载进来

在不停的不停的进行

它的这个逻辑

其实服务器它做的东西就是这么多

好了那么

今天的课题

那这样就还有这么多的一个系统

那今天的课题主要

讲哪些内容呢

我这里有一个例子

我们就举一个这个例子

以这个例子来展开讲

这个例子是这样的

是一个A玩家向B玩家跑过去

他跑过去把他打死了

然后他就在身上掉落了一些箱子

我就把它捡了

就是以这么一个

这样的一个例子来进行讲解

那这个例子里面

我会将解到以下的各个各个内容点

第一我会讲一下游戏对象是怎么管理的呢

首先

我刚才说到了里面有人英雄

有拿着武器

有马

有别人掉落的箱子

这些其实都是在游戏服务器里面

它是一个怎么样的存在的就是这些对象

第二我会讲解一下

在游戏后台

它的地图是怎样描述的

以及他怎样管理它

他地图上了一些

它地图上有哪些玩家

怎么管理它上面的玩家

以后我会讲一下视野管理

其实刚才上节课朱老师也讲到有

视野管理的这些概念

以后会讲玩家在后台玩家的移动

在后台是一个怎么样的逻辑

并且讲一下玩家之间的相互攻击

以及物品的掉落和拾取

我先来讲一下

游戏对象管理

在游戏里面

我们一般会用一个actor的类

它来表示一下具有生命的类

然后你看它有个XYZ

就是表示它的坐标

它由v表示玩家的速度

有HP表示它的血量例如它的方法

move表示它运动

然后我们刚才的player

这就是我们的英雄

英雄就是从刚才的actor类

派生出来了一个更特别的类

假设这里记录了背包的一个数组

他身上有哪些背包

然后还有个就是背包的一个类

然后它会派生出一些例如EquipBag

在刚才的游戏里面,EquipBag就是装备包

装备包就是你穿在身上的那些装备

就是拿着这剑拿着剑穿的衣服

戴的防甲之类的,就是存在装备包里面

你存在装备包里面的东西

就是你已经生效的东西

然后这个PopBag就是玩家的那个背包

就是一个可以随身放东西的

一个背包

一个BoxBag

就是我们刚才看到的一个掉落的箱子

BoxBag就是用来辅助实现掉落的逻辑的

一会我会讲

物品我们在游戏里面

我们分成了一个道具和装备两类

为什么要分两类呢

就是因为他们有些属性是不一样的

有些方法不一样的例如道具

我们一些血瓶

回城符

道具他用了之后他就消失了

而且用的时候它会产生一定的效果

它就以后就就把它扣掉

然后但是装备不一样

装备它用了之后才是穿到身上去

穿到Equipbig

然后然后它就身上会有一些加成

一些要属性加成之类的

所以我们因为它们两个有共同的属性

所以它们都从item里面派生出来

但是他们有很大的操作上有很大的差异

所以

它们又分别生成两个不同的一个类

我说一下

各个类之间是一个怎样的一个关系

你看一下英雄

这是玩家身上他有个数组

就是记录下他有哪些背包

这些背包上面都会记录着

我这个背包里面有哪些物品

我背包上面放了哪些物品

而这些物品就是这些它们其实关联起来

就是这个找到这个或者这个

这个根据这个数组

在找到找到对应的物品是这样

其实这些就是在服务器后台

在逻辑服务器里面

他们就是以这样一个类的对象方式存在

然后我们是使用内存池的方式来管理

各种游戏对象了

其实刚才上一节课

朱老师最后那时候讲共享内存池的时候

共享内存的时候有讲到

这些就是我们一般的的游戏都会这样

启动的时候

我会分配一大块共享内存

只可能就就是十几个G

还可能要把这个内存划分成不同的类别

有这一块用来存玩家了

这一块用来存NPC的

这一块是用来储存物品呢

这样就分成不同的类别

然后呢

然后就是

隔开一个格子

你那大家就分呗

就在里面存着了

为什么要共享内存呢

刚才朱老师要有说到了

就是程序崩溃的时候就是崩溃的时候

共享内存不会被回收

重新拉起的时候

你关联到共享内存上面去

你就这款游戏可以继续恢复完

另外一点就是

因为我们做服务器有时候经常会发现

有些bug或者有些要调整数值

又调整了我们需要热更一下

什么叫热更就是不停机更新

不停机更新

我们就是让进程很快的

重启一遍

它那么这些对象全都给恢复回来

那玩家不会掉线

就是这个原理

就是我们就是用了内存池

游戏程序设计课程列表:

第一章 《游戏开发导论》

-1. 1什么是游戏(上)

--1.1 什么是游戏(上)

--选择题

-1.2 什么是游戏(下)

--1.2 什么是游戏(下)

--选择题

-1.3 游戏是如何开发出来的

--1.3 游戏是如何开发出来的

-1.4 游戏引擎(上)

--1.4 游戏引擎(上)

-1.5 游戏引擎(下)

--1.5 游戏引擎(下)

--单选题

-1.6 如何成为一个游戏开发者

--1.6 如何成为一个游戏开发者

--多选题

第二章 《游戏服务器概述 》

-2.1 什么是游戏服务器

--2.1 什么是游戏服务器

--单选题

-2.2 游戏服务器的和分类发展

--2.2 游戏服务器的和分类发展

--单选题

-2.3 核心技术和实现难点

--2.3 核心技术和实现难点

--单选题

-2.4 设计原理与方法论

--2.4 设计原理与方法论

--单选题

第三章 《《三维几何学基础》 》

-3.1 三维坐标系统

--3.1 三维坐标系统

--多选题

-3.2 向量与运算

--3.2 向量与运算

--单选题

-3.3 矩阵与线性变换

--3.3 矩阵与线性变换

--双选题

-3.4 四元数

--3.4 四元数

--多选题

第四章 《游戏循环及实时模拟》

-4.1 游戏循环概述(上)

--4.1 游戏循环概述(上)

--多选题

-4.2 游戏循环概述(下)

--4.2 游戏循环概述(下)

--单选题

-4.3 《无尽之路》的实现

--4.3 《无尽之路》的实现

--单选题

-4.4 支撑游戏的功能

--4.4 支撑游戏的功能

--选择题

-4.5 支撑游戏的机制与系统

--4.5 支撑游戏的机制与系统

--多选题

第五章 《随机数在游戏中的应用》

-5.1 基本介绍

--5.1 基本介绍

--单选题

-5.2 随机数生成器

--5.2 随机数生成器

--单选题

-5.3 随机数分布与应用

--5.3 随机数分布与应用

--单选题

第六章 《游戏性系统》

-6.1 什么是游戏玩法开发

--6.1 什么是游戏玩法开发

--单选题

-6.2 建立愿景 Vision

--6.2 建立愿景 Vision

--单选题

-6.3 划定边界 Scope

--6.3 划定边界 Scope

-6.4 迭代 Iteration

--6.4 迭代 Iteration

--单选题

-6.5 迭代 Iteration+抛光Polish

--6.5 迭代 Iteration+抛光Polish

--单选题

第七章 《实时图形渲染管道》

-7.1实时图形渲染管道 宏观渲染系统

--7.1实时图形渲染管道 宏观渲染系统

--单选题

-7.2实时图形渲染管道 应用阶段

--7.2实时图形渲染管道 应用阶段

--单选题

-7.3实时图形渲染管道 几何阶段

--7.3实时图形渲染管道 几何阶段

--单选题

-7.4实时图形渲染管道 光栅化阶段

--7.4实时图形渲染管道 光栅化阶段

--单选题

-7.5实时图形渲染管道 总结 参考

--7.5实时图形渲染管道 总结 参考

第八章 《材质着色与光照》

-8.1 物理回顾1

--8.1 物理回顾1

--单选题

-8.2 物理回顾2

--8.2 物理回顾2

--单选题

-8.3 材质 1

--8.3 材质 1

-8.4 材质 2

--8.4 材质 2

-8.5 材质3

--8.5 材质3

-8.6局部光照

--8.6局部光照

--单选题

-8.7 全局光照

--8.7 全局光照

--单选题

第九章 《游戏动画》

-9.1 动画介绍

--9.1 动画介绍

--多选题

-9.2 游戏动画介绍

--9.2 游戏动画介绍

-9.3 动画技术类型

--9.3 动画技术类型

--多选题

-9.4 骨骼蒙皮动画

--9.4 骨骼蒙皮动画

--多选题

-9.5 动画流水线

--9.5 动画流水线

--多选题

-9.6 动画前沿趋势

--9.6 动画前沿趋势

--多选题

第十章 《网络同步技术》

-10.1 .基本概念

--10.1 .基本概念

--多选题

-10.2 设计目标

--10.2 设计目标

--多选题

-10.3 传输数据分析

--10.3 传输数据分析

--多选题

-10.4 常用同步方案 1

--10.4 常用同步方案 1

-10.4 常用同步方案 2

--10.4 常用同步方案 2

-10.4 常用同步方案 3

--10.4 常用同步方案 3

-10.4 常用同步方案 4

--10.4 常用同步方案 4

--多选题

-10.5 方案对比

--10.5 方案对比

--多选题

第十一章 《游戏常用几何学》

-11.1 基本图元

--11.1 基本图元

--单选题

-11.2 图元距离(上)

--11.2 图元距离(上)

--单选题

-11.2 图元距离(下)

--11.2 图元距离(下)

--单选题

-11.3 图元相交测试+ 其他几何方法

--11.3 图元相交测试+ 其他几何方法

--单选题

第十二章 《游戏物理模拟》

-12.1 著名物理引擎介绍

--12.1 著名物理引擎介绍

--单选题

-12.2 物理引擎原理(上)

--12.2 物理引擎原理(上)

--单选题

-12.3 物理引擎原理(下)

--12.3 物理引擎原理(下)

--单选题

-12.4 游戏中的物理体

--12.4 游戏中的物理体

--单选题

-12.5 物理引擎使用入门

--12.5 物理引擎使用入门

--单选题

第十三章 《开发工具 》

-13.1开发语言

--13.1开发语言

--单选题

-13.2 开发环境

--13.2 开发环境

--单选题

-13.3 腾讯开发组件介绍

--13.3 腾讯开发组件介绍

--单选题

-13.4 网络通信+业务框架介绍

--13.4 网络通信+业务框架介绍

--多选题

第十四章 《分布式系统设计 》

-14.1 进程间通信(上)

--14.1 进程间通信(上)

-14.2 进程间通信(下)

--14.2 进程间通信(下)

-14.3 通信格式

--14.3 通信格式

-14.4 并发模型

--14.4 并发模型

-14.5 超时处理

--14.5 超时处理

-14.6 大系统小做(上)

--14.6 大系统小做(上)

--多选题

-14.7 大系统小做(下)

--14.7 大系统小做(下)

-14.8 架构层面的技术支持(上)

--14.8 架构层面的技术支持(上)

--单选题

-14.9 架构层面的技术支持(下)

--14.9 架构层面的技术支持(下)

-14.10 分布系统的关键能力

--14.10 分布系统的关键能力

--多选题

第十五章 《游戏人工智能》

-15.1 游戏人工智能综述

--15.1 游戏人工智能综述

-15.2 人工智能在游戏中主要方法 上

--15.2 人工智能在游戏中主要方法 上

--多选题

-15.3人工智能在游戏中主要方法 (下)

--15.3人工智能在游戏中主要方法 (下)

-15.4 人工智能在游戏制作中的应用领域1

--15.4 人工智能在游戏制作中的应用领域1

--多选题

-15.5 人工智能在游戏制作中的应用领域2

--15.5 人工智能在游戏制作中的应用领域2

-15.6 人工智能在游戏制作中的应用领域3

--15.6 人工智能在游戏制作中的应用领域3

--多选题

-15.7 人工智能在游戏运营中的应用实践(上)

--15.7 人工智能在游戏运营中的应用实践(上)

-15.8 人工智能在游戏运营中的应用实践(下)

--15.8 人工智能在游戏运营中的应用实践(下)

--多选题

第十六章 《游戏支撑系统 》

-16.1 游戏支撑系统(1)

--16.1 游戏支撑系统(1)

--单选题

-16.2 游戏支撑系统(2)

--16.2 游戏支撑系统(2)

--单选题

-16.3 游戏支撑系统(3)

--16.3 游戏支撑系统(3)

--单选题

-16.4 游戏支撑系统(4)

--16.4 游戏支撑系统(4)

--单选题

-16.5 游戏支撑系统(5)

--16.5 游戏支撑系统(5)

第十七章 《游戏逻辑服务器和反外挂》

-17.1 游戏逻辑服务器(上)

--17.1 游戏逻辑服务器(上)

--单选题

-17.1 游戏逻辑服务器(下)

--17.1 游戏逻辑服务器(下)

-17.2 外挂与反外挂(上)

--17.2 外挂与反外挂(上)

-17.2 外挂与反外挂(下)

--17.2 外挂与反外挂(下)

--多选题

第十八章 《运行环境和运维 》

-18.1运行环境

--18.1运行环境

--多选题

-18.2物理部署

--18.2物理部署

--多选题

-18.3系统的可运维性

--18.3系统的可运维性

--多选题

-18.4运维案列分析

--18.4运维案列分析

--多选题

17.1 游戏逻辑服务器(上)笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。