当前课程知识点:游戏程序设计 > 第十六章 《游戏支撑系统 》 > 16.1 游戏支撑系统(1) > 16.1 游戏支撑系统(1)
今天咱们这节课是讲游戏的支撑系统
那简单做一下自我介绍
我是09年在北邮毕业
在腾讯做了十年的后台开发
现在是后台的开发经理
我拿到这个课题的时候其实是很迷茫的
然后说我要讲一个支撑系统
到底什么是支撑系统
然后跟学院的老师去讨论学院老师告我
不是核心玩法的系统都叫支撑系统
什么支撑系统就你这个体系放在A游戏上
也可以用放在B游戏上也可以用
那我就想一想
那我可以讲东西
那就多去了对不对
那今天是讲不完的啊
然后呢
我打开
那个和平精英
一分钟
我截了几张图
然后我就放在这里了
我突然发现要每张图上可能涵盖
一两个支撑系统
这就登录系统
这个也属于登录系统
但登录的时候可能有一个登录的公告
会告你
热更新技术非常好
语音体系对不对语音支撑体系
这是一个帮会体系有工会的一个体系
这几个页面里我们能看到的这些支撑体系
有什么呢
有登录有热更新有公告
有网页运营对吧排行榜关系链
工会组队VIP我们的聊天翻译
还有我们的分享以及平台能力
但是实际上
我们看不到的背后有更多的运营支撑系统
在腾讯就是毫不夸张的说
有几千人在为这个游戏的一个支撑系统
再去服务
他们就在做一些底层的基础的建设
来帮助咱们这个游戏能运行得更好
所以今天想跟大家说的
就是说未来你们想做一个游戏
其实你只需要关心你们的GAME PLAY就可以了
核心的东西如果上完这门课
你能知道我还有这么这么多体系
并且都是现成的
无论是腾讯
网易还是市面上流行的SDK
它都是一些现成的东西
是可以节约你的时间呢
你要找到你的发力点
向这些东西都可以找到
很多现成的开源的东西
直接应用比如日志
AI
匹配算法
视野管理
交易充值支付
没必要都从底层开始写
所以那我觉得上了这门课
如果上到这里
其实我觉得我这门课已经完成80%了
为什么呢
因为我主要的目的是想跟大家介绍一下
这门课的目的就是想让大家知道
有哪些支撑体系
你们在做游戏或者设计游戏的时候
需要考虑哪些内容
如果要进更高阶一点
因为我这个PPT做了一个大的改版
是因为我发现咱们的同学们有一半是
非计算机或IT专业的
所以我又重新做了一下
整个我这个PPT应该有三分之一的技术
其他三分之二就是非技术的
大家都可以听得明白
所以这里我觉得就已经大概完成了
百分之七八十了
如果想再跟高进阶一点呢
大家就跟着我的思路去了解一下
每一个支撑体系模块背后的一个核心逻辑
就你最重要
最主要考虑的那几个point
那几个点
如果大家还有余力
那我在PPT的每页后面
都有一个参考的资料
你可以去深入的去研究一下
好吧
那这就是我们今天上课的目的
所以比较轻松
大家可以放下一个包袱
简单一点
因为大家都可以听得懂
虽然我们讲的是第一个体系
第一个体系可能稍微枯燥一点
我尽量板书给大家讲
这样的话会讲得明白
就登陆体系是我们
按上游戏遇到的第一个体系
一个手机
如果要想登陆
我们面临的第一步是什么事
QQ微信的授权对吧
或者FacebookGmail的授权
首先我们应该我们的第一步
是会和我们的健全系统
一个健全的server去交互
这是第一步
因为这个健全的体系
无论是腾讯
你以后做游戏接入腾讯
腾讯不会开放给你的QQ密码
微信密码那是核心机密对不对
所以你只能到这去健全
健全以后他会给你反馈一个什么呢 K
这个K就是你曾经登陆过的一个凭证
我们叫K1
其实这个K1会在这里存起来
一会来进行校验
那它第二步拿到如果授权登录
通过了以后
你们可能就会看到一个的界面
但这个界面
我给大家讲一下背后
其实背后的逻辑很复杂
就是我要讲的那个login server
这个login server
他会拿着这个K第二步
到这里去健全下看一下
因为它过来健全的时候
它是要到之前这边去问一下的
可不可以通过
然后其实到这一步才是跟我们未来
因为这不是要大家自己写的
因为这一步有业务的逻辑
没有一个通用的模块可以代替的
到这一步以后呢
其实你就可以证明他的微信或者QQ
或者FacebookGmail验证已经通过了
但后面整个登录系统背后呢
还有很多复杂的事情要去做
我们看一下第一个事情
因为接下来它的登陆最终目的
是要为后面的那个对不对
我们叫gs gameserver
要为这个服务
那它为了要上到这个gameserver服务上
它和gameserver信息是要加密的
对不对
要在再以密文的形式在传播
就是密码学的知识
一般这就是未来客户端
跟咱们的服务器再去沟通的时候
是用一种就是对称的一种密码来沟通
就是我拿的密钥和你拿的密钥是一样的
那就引出了一个问题
这个密钥是不能公开的
密钥是不能传播的
如果密钥钥传播
就被人截获了
所以这里面会有一个一会咱们去讲
有个DH算法交换密钥
这有同学听过吗
交换密钥算法
一会我给大家讲
好走到这,其实loginsever远没有结束
其实后面就涉及到一个
一些腾讯的一些海量服务的一些思想
比如说login这一块呢
要返回服务器列表
它不会自己做它一定会问DRR服务器
就是目录服务器
这个DRR服务器是负责干什么呢
是负责我来告诉你
你有哪些角色已经在服上了
我有哪些服可以让你玩
对吧
你的好友在哪里玩
我推荐你去哪里玩
这个就都会反馈回来
那同样也有黑名单和白名单
黑名单是干嘛呢
你违规了
我不让你登陆了
WB黑名单
你违规了
我肯定不让你登陆了
但是有些是超级名单
我们还要叫白名单
为什么就涉及到腾讯的一个灰度体系
腾讯海量计算里面有三门重要的课
其中一门课叫灰度计算
另一门课叫做大系统小做
就这些东西我不会做在login
我一定把它拆出来小系统
第三门要有损服务
就构成了整个腾讯的一个
海量计算的一个体系
大家时间比较有限
今天就可以学两门
一个是大系统小做
一个是这要做灰度
所以这个白名单是在很多时候
我们有一些功能
在特定的服上才有
它只开放给少部分玩家才能看
因为只有这个小部分
玩家在这里验证通过了
我才会让你去看到这个服
这是一个授权体系
同样也有热更新
刚才有同学说更新了up D服务器
这热更新服务器也是一个灰度的服务器
不会立刻让所有的玩家去更新了
一般会10%
1%看一小时没问题
10%又没问题
80%还没问题
这百分百这样话整个体系出现问题
能在及早过程去的发现
我的整个在课程里面
大概就有两个是和这种架构相关的
但这种东西很好理解
大概有三个算法
三个方法也是比较简单的
所以这个logion server
我主要从板书的形式
给大家讲明白了整个登录流程
然后这个就是我刚才提到的密钥
密钥是需要在是不能在公网上传播的
所以他们需要有一个机制
把这个密钥传过去
所以行业内有一个
非常有名的算法叫DH密钥交换
这个密钥交换可能是
基于这种质数的离散数学
就很难破解了一个原理
背后的数学原理
大家可以根据我PPT上面
那些小资也去去看
但它的计算非常简单
那我给大家捋一下
说爱丽丝和鲍伯他们俩之间
要想换一个要想达成一个密钥
那爱丽丝
他其实他想了一个数A
他谁都没告诉我
这是个大数A
可能是一百位以上的
鲍伯想了一个数B
他也是又没告诉我
就在他心里
那有一个非秘密的东西就是一个质数P
一般我们要求三百位以上
非常大的一个质数P和一个g
这个g一般就取2和5
这个大小跟这个密码破解的复杂都没关系
那爱丽丝就把IPg的一个模拟层
发给了鲍伯
鲍伯就拿到了一个运算结果
它拿到A没没有拿到
返回来求取A的代价是非常高的
因为这数是非常大
那鲍伯把PGB的
一个模拟层发给A
发给了爱丽丝
也就到我们这一步爱丽丝给鲍伯一个8
鲍伯给爱丽丝一个19
他俩拿到对方那个数以后
反向的又在做一遍
根据自己想的那个数
又做了下模拟层
他得到二
他也做一个模拟层也得到2
这个二就是我们的公共的一个密码
交换的过程非常简单
但背后的数学理论大家有兴趣
可以去研究一下
我们在这里就不阐述了
那样咱们登录成功以后
现在游戏
大家都会去捏脸
有人捏过没有非常难的
一般情况下
你没有艺术细胞捏不成的
如果大家是美院
就忽略我这句话
在我们的后台数据统计中
一个玩家很有可能
它都不玩后面
捏了五个小时就在捏脸
就在这捏个丑八怪
他还原不回去
还没有初始脸漂亮
所以现在逆水寒的手游那个网页版
QQ炫舞都已经有了这个技术
就是一键捏脸
这一键捏脸是一个我给大家看个小视频
大家知道这个整个思路
是你传一张照片上来
然后呢
我给你生成接近你的一个
比较接近你的一个形象
但你很可能不会传自己
一般的传一个女性上来
那现在这个一键捏脸技术主要有两个
现在腾讯就三个部门在做
网易也在做
但是这个技术
到现在没有太大的突破
但现在大家主要从这三个基础点来走
如果从大类上来说
一般是基于图像的一个分析
或者一个基于3Dmax的一个分析
基于图像呢
一般这个方式一就很简单
它基于这种正太分布
让游戏自己
随机生成五千万张照片
就是根据它自己的随机生成的
但这个随机生成是有侧重点呢
它一定会选那个概率分布比较集中的地方
那个多一些
这个就是这个捏脸大家知道
其实最像的就三部分
只要捏对这三部分
你就会觉得很神像
一个是眼部
包括眉毛
一个嘴巴
一个是脸型
把这三步到位了
他就感觉神像因为你在给他换个胡子
换个头发是很简单的
像胡子
头发可选择性也不多
丑女就可以十几个二十几种情况
第一种方式
它是随机生成了五千万张图片
就是利用咱们现成的人脸识别技术
如果你上传一个照片
它去背后对比一下和哪一个更像
但它如果和这个比如说
我再上传一个我同事的照片和这个更像
它就会把他背后的那个
对应的那个3D的文件拿出来对应上
因为那第二个思路其实就是
一个基于AI学习的一个思路
这个捏脸因为它不是凭空让你
随便可以捏的
大概一个人脸上
有一百个左右的一个控制点
其实就是在调这一百个的参数
但是一百个参数
这种密集的平方是是非常大的
是无法穷举的
所以呢
还有一种思路就是需要美术同学
捏出来几百个和照片很像的脸
他一般
他不会让美术同学真正捏
一般会
做一个捏脸比赛给玩家
push给十万个玩家选出来前三百个最像的
然后把它作为咱们机器学习的一个样本
然后以后你再上传一个照片
其实背后是机器学习来给你算出来这脸
这个脸是我们的秦时明月的一个
一个捏脸的
在研的一个成果
这些这游戏都没有上线
这个是天涯明月刀手游的一个捏脸的称呼
但未来上下肯定比较好
因为在这过程中的
第三种方法是基于3D这种max
他就真的是可开放性的
你给一个脸
他给你升成了三D的骨骼
但这就会更难一些
但是这种它比较适用于一个什么样条件呢
这是
QQ飞车的好像是QQ飞车的
它像卡通画渲染一下
比如说咱们看最后一个
它那个有点那个下巴有点尖
它就会让你卡通渲染得更坚韧一些
你的眼睛有些大
他就会更大一些
做的一些像卡通一样的渲染
排行榜技术刚才有同学也讲到了排行榜
排行榜技术
比较简单
因为绝大部分情况下就这两个吧
其实
什么叫榜 top N
top N代表着我只需要看前一百名就可以了
对不对
如果简单一点
我就看前三名学计算机的同学就知道
你只要在内存里存上这一百个数
或三个数就行了
只要后面的数超过前面的数
就把他替换掉
如果超过不了
根本就不理会它
这个top N算法就会很简单
还有一种叫做模糊排名
当你打完一个副本以后
他会给你提示
你超过了65.1%的玩家对不对
但他只会句具体到可能零点一这个量级上
所以这个算法的一般是用桶排序来做的
桶排序学计算机的同学数据结构学过吧
我大概给大概讲一下
这个是怎么做到的呢
我们如果这个排名肯定是要有一个数值
按照一个积分来排名
它在我们的一个这种曲线的分布上
如果他肯定是基于一种这种
正太分布的对不对
或者这个大部分玩家应该集中在这上面
所以呢
它把它按到它的面积分成一千份
对吧
如果这是第一份第二份
第三份可能会越来越窄
第四份好分一千份
每千份里面肯定生成一个刻度
如果你打完
这个副本砰生成个积分
六十分算一算
你命中在哪个刻度里
命中在第一个刻度代表什么
你超过了百分之零点一
命中第二刻度都代表超过了百分之零点二
这个算法也很简单
也不会占内存
但是
当我们遇到
几千万量级的时候
这种说法可能就不行了
因为要要实时排名很具体的
第多少多少名的时候
所以除了
就是咱们在数据结构里有各种洪徽树
平衡术是很容易去做这种排名的
大家真正的工业用上一般用的是跳表
因为跳表时间更简单
包括数据库用的都是跳表来去做这个
排行的
-1. 1什么是游戏(上)
--选择题
-1.2 什么是游戏(下)
--选择题
-1.3 游戏是如何开发出来的
-1.4 游戏引擎(上)
-1.5 游戏引擎(下)
--单选题
-1.6 如何成为一个游戏开发者
--多选题
-2.1 什么是游戏服务器
--单选题
-2.2 游戏服务器的和分类发展
--单选题
-2.3 核心技术和实现难点
--单选题
-2.4 设计原理与方法论
--单选题
-3.1 三维坐标系统
--多选题
-3.2 向量与运算
--单选题
-3.3 矩阵与线性变换
--双选题
-3.4 四元数
--3.4 四元数
--多选题
-4.1 游戏循环概述(上)
--多选题
-4.2 游戏循环概述(下)
--单选题
-4.3 《无尽之路》的实现
--单选题
-4.4 支撑游戏的功能
--选择题
-4.5 支撑游戏的机制与系统
--多选题
-5.1 基本介绍
--5.1 基本介绍
--单选题
-5.2 随机数生成器
--单选题
-5.3 随机数分布与应用
--单选题
-6.1 什么是游戏玩法开发
--单选题
-6.2 建立愿景 Vision
--单选题
-6.3 划定边界 Scope
-6.4 迭代 Iteration
--单选题
-6.5 迭代 Iteration+抛光Polish
--单选题
-7.1实时图形渲染管道 宏观渲染系统
--单选题
-7.2实时图形渲染管道 应用阶段
--单选题
-7.3实时图形渲染管道 几何阶段
--单选题
-7.4实时图形渲染管道 光栅化阶段
--单选题
-7.5实时图形渲染管道 总结 参考
-8.1 物理回顾1
--单选题
-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.3 动画技术类型
--多选题
-9.4 骨骼蒙皮动画
--多选题
-9.5 动画流水线
--多选题
-9.6 动画前沿趋势
--多选题
-10.1 .基本概念
--多选题
-10.2 设计目标
--多选题
-10.3 传输数据分析
--多选题
-10.4 常用同步方案 1
-10.4 常用同步方案 2
-10.4 常用同步方案 3
-10.4 常用同步方案 4
--多选题
-10.5 方案对比
--多选题
-11.1 基本图元
--单选题
-11.2 图元距离(上)
--单选题
-11.2 图元距离(下)
--单选题
-11.3 图元相交测试+ 其他几何方法
--单选题
-12.1 著名物理引擎介绍
--单选题
-12.2 物理引擎原理(上)
--单选题
-12.3 物理引擎原理(下)
--单选题
-12.4 游戏中的物理体
--单选题
-12.5 物理引擎使用入门
--单选题
-13.1开发语言
--13.1开发语言
--单选题
-13.2 开发环境
--单选题
-13.3 腾讯开发组件介绍
--单选题
-13.4 网络通信+业务框架介绍
--多选题
-14.1 进程间通信(上)
-14.2 进程间通信(下)
-14.3 通信格式
-14.4 并发模型
-14.5 超时处理
-14.6 大系统小做(上)
--多选题
-14.7 大系统小做(下)
-14.8 架构层面的技术支持(上)
--单选题
-14.9 架构层面的技术支持(下)
-14.10 分布系统的关键能力
--多选题
-15.1 游戏人工智能综述
-15.2 人工智能在游戏中主要方法 上
--多选题
-15.3人工智能在游戏中主要方法 (下)
-15.4 人工智能在游戏制作中的应用领域1
--多选题
-15.5 人工智能在游戏制作中的应用领域2
-15.6 人工智能在游戏制作中的应用领域3
--多选题
-15.7 人工智能在游戏运营中的应用实践(上)
-15.8 人工智能在游戏运营中的应用实践(下)
--多选题
-16.1 游戏支撑系统(1)
--单选题
-16.2 游戏支撑系统(2)
--单选题
-16.3 游戏支撑系统(3)
--单选题
-16.4 游戏支撑系统(4)
--单选题
-16.5 游戏支撑系统(5)
-17.1 游戏逻辑服务器(上)
--单选题
-17.1 游戏逻辑服务器(下)
-17.2 外挂与反外挂(上)
-17.2 外挂与反外挂(下)
--多选题
-18.1运行环境
--18.1运行环境
--多选题
-18.2物理部署
--18.2物理部署
--多选题
-18.3系统的可运维性
--多选题
-18.4运维案列分析
--多选题