Games104——网络游戏的进阶架构

前言

在这里插入图片描述

位移移动

插值

在这里插入图片描述
内插适用于玩家会突然瞬移加速的情况,相对比较稳定(FPS,MOBA)
外插适用于整个运动符合物理学规律的情况,预测他的速度是比较准确的
游戏内通常会都使用,人物使用内插,载具使用外插

内插(Interpolation)

会加剧延迟,对高速移动的游戏应用是会产生偏差,尤其涉及到玩家碰撞的情况下

外插(Extrapolation)

考虑信息在传播时的延迟,预判对方的行动
PVB
不会看到物体的位置瞬间改变,而是逐步的变化
在这里插入图片描述
在这里插入图片描述
外插值的问题,会导致碰撞的两个物体相互穿到一起,物理引擎会将他们弹飞
解决:
当检测到两个物体重叠了就会将位置控制器转换到物理来控制,然后再转回去
在这里插入图片描述

命中判定

如何判定敌人的距离,怎么判断是否命中他?
在这里插入图片描述

Hit Registration

在不确定的网络环境下有无命中目标没有一个确定的解

在这里插入图片描述

在客户端去判定

符合人的直觉,高效,精确,手感好,但不安全,一旦客户端被破解就可以作弊
开枪瞬间发出一条射线,只要敌人在射线上则判定为被击中
在这里插入图片描述
服务器会对这个结果进行检验
在这里插入图片描述
客户端发送包含完整射线信息的碰撞事件到服务器
(StartPoint、HitPoint和HitObject)
验证StartPoint是否真的足够接近射击者
验证HitPoint是否真的属于HitOject
从StartPoint和HitPoint投射光线,确保路径上没有障碍物。

在服务器端去判定

会因为网络延迟造成误差,很难打中正在运动的物体
在这里插入图片描述

延迟补偿

猜测在每一个开枪者开枪的瞬间是什么情况
前提是要对目前的情况做一个快照,从而找到过去的情况
如果客户端进行攻击(如断网)就可以无视,防止作弊
在这里插入图片描述
在这里插入图片描述

掩体问题

躲进掩体

如果躲到掩体后还是被打死了
因为延迟的问题,被击中人已经躲进掩体,但开枪人视角里被击中人没有躲进掩体,服务器端以开枪人的世界为准,所以会出现这种情况

走出掩体

走出掩体瞄准敌人时,尽管狙击手已经走出掩体,会因为网络延迟的原因,敌人还没看到射击手走出掩体时就被击毙

技能前摇

能够给网络同步争取时间
在这里插入图片描述

本地暴击效果

在本地检测到命中时播放特效,但结算还是以服务器的计算为准,观感上会变好
在这里插入图片描述

基础MMO框架

在这里插入图片描述

  • Link层:负责玩家登录和拦截恶意攻击
  • Lobby:大厅,一个特殊的游戏模式,作为一个缓冲池
  • Character Server:管理计算玩家的信息
  • 交易系统:要保证数据的安全性足够高,全部都可以RollBack
  • 社交系统:玩家之间的交流,邮件
  • Matching:匹配同类型的玩家(玩家的段位,网络延迟相似)
  • 数据的存储:关系数据库,非关系数据库(速度更快,游戏里很多GameState,Loging数据都使用了这个数据库),内存数据库
    当玩家过多时服务器承载不了怎么办

分布式架构

在这里插入图片描述
解决附载均衡
在这里插入图片描述

一致性哈希

使用哈希算法把用户分配到服务器上
在这里插入图片描述

服务管理

在这里插入图片描述
注册唯一标识后可以随时检查服务状态并给所有观察者发送信息

带宽优化

计算带宽
在这里插入图片描述
数据压缩
将浮点数转换为定点数记录,有时为了配合这个算法还会对地图进行分割,很高效,有时能将数据压缩到一半以上
在这里插入图片描述

AOI

以自己为中心只关注距离自己一段距离内的情况
在这里插入图片描述

画格子

空间换时间,将空间划分为格子,当物体在玩家的范围内时将其加入观察列表
在这里插入图片描述

十字链表

将所有物体的x,y轴分别排序,如果该物体在xy轴的位置都与玩家观测的范围相交,则说明在观察范围内
在这里插入图片描述

PVS

根据目前玩家的位置设置潜在的可视范围,其他的位置不关注
在这里插入图片描述
根据引用主体的远近去调整信息同步的频率

反作弊

查内存Obfuscation Memory

对单机游戏比较有用

  • 把客户端加密
  • 内存混淆,把高度敏感的数据在内存中进行加密,只有读写的时候解除

确认本地文件哈希值

客户端检测本地文件的哈希值和服务器端的是否相同,如果篡改了直接将玩家下线

网络包进行加密

在这里插入图片描述
非对称加密
客户端只有一个公钥,服务器端有一个私钥,客户端的公钥被破解了也无法获取到信息,因为没有私钥

防范软件注入作弊

扫描内存中的文件签名,检查是否被修改过,检查到就进行报警

防范AI作弊

根据用户大数据模型进行比较检测是否作弊
在这里插入图片描述

构建可扩展的游戏世界

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值