游戏逻辑_垂直拆分_增量更新

前言:

本章主要讲述 游戏逻辑中_垂直拆分_增量更新 的优化

把数据库内用到放到游戏的AOI上用

基于MMORPG讲述,温故而知新

1: 人物/宠物/其他对象 属性

最小6件装备 外加时装 可能还有宠物,武魂,翅膀 变身卡 坐骑 称号 BUFF等等

这里所谓的垂直拆分_增量更新 就是 更新了 某装备,先减去这装备的属性,再增加新的 装备的 属性,这样更换/脱下 某装备 只需要更新这件 装备属性就行,有百分比 基本的算完了,再计算一次。

也可以说是也空间换时间。拆的越细,计算效率越高,但是空间需求越大;

2:AOI

一般AOI 的基本接口如下

enter:对象进入地图;

leave:对象离开地图;

move:对象在地图内移动。

这里以一般的MMORPG为例,一般 分主城与野外

先可以想象下,现在是一张世界地图,就是主城与野外 本来就是一张大地图,不过垂直拆分后,才有了主城与野外 2张地图,传送点相当于 从一个 九宫格的 一格 跑到 另外一格(灯塔也差不多,一个灯塔到另外一个 )

这里以 传送点1 与传送点2 可以相互传送为例 讲述

垂直 拆分后,如果有对象(玩家) 来回跑,2个传送点附近还有大量可视对象,

按enter leave 流程 ,

1 >进入 ,把自己广播给其他对象,同时把其他可视的对象 发送给自己,

2>离开 ,告诉其它玩家,自己消失

从后端来说,消息量太大 (出现的消息 体量大,消失还好 体量很小)

从前端来说,如果加载 再删除,再加载地图及其他对象,耗时,卡

如果在一张大地图里呢,玩家进入与离开不过是 类试于 从一大格 瞬移到另外 一大格里,

结合 延迟 消失 的策略,后端的消息量会大大减少,前端的也不需要加载,释放,反复来回,

以九宫格讲述 一般来说 九宫格 G = V ,再跨 1、2G(有飞行速度快的,可以3G,根据实际来) 就可以通知消失了

具体可以根据配置表 配置

两张图里怎么搞呢,简单,(假如设定,延迟删除为跨2G )

从传送点1 传送 到 出现点1,相当于 移动到 缓冲带,根据后面的移动情况再决定是否删除,

1> 记录上格地图ID

2>到 出现点1 再跨2个G,再删除 (到野外 后,跨到黑色框外再删除)

3>到出现点1后,直接进入传送点2,又回来了,可以当移动处理

优化enter/move 消息,主要是优化 出现的消息(这个消息量大,一般包含 对象外观 状态 特效,宠物 等等)

怎么优化呢,增量更新

对象 有1 件装备 1 个坐骑 一个出战宠物(简化版,根据实际情况自行扩展)

当前装备(坐骑,宠物类试) 版本号 当装备有更新时,更新属性的同时,更新版本号

1>在视野范围内,自己更换了,广播给其他对象时,只广播 更新的及其影响的可视属性

2>在视野范围内,

1>>自己更换了, 某对象从缓冲列表里重新回来视野时,对比装备版本号,如果什么也没变,只更新坐标,如果版本号 不相同,更新位置时,同时更新 装备及其影响的可视属性

其他的坐骑 宠物 同样如此

2>> 别的对象换装备后,别的对象的 装备版本号 与自己缓冲区里的这个对象的 装备版本号 对象,有差异,更新,没差异,只更新位置

3>可以增加一总版本号,先对比总版本号,有差异,再比较具体的 版本号,再增量更新

3:其他的垂直拆分

可以把玩家数据保存到单独的一个子进程/线程里 ,跟场景分开,还可以拆分到 计算 线程(CPU密集型)

专用用于计算任务,比如 对象更新装备,重新计算属性,可以分派 到计算 计算线程 去处理,数据进程 只等结果出来后更新,越单一职责,效率越高,

4:水平拆分

场景多线,副本等等都是水平拆分了,这里就不介绍了

5:如果觉得有用,麻烦点个赞,加个收藏

游戏逻辑的拆分上 可以 参考下 数据库 ,毕竟数据库 很成熟了,有各种解决方案

相关推荐
微祎_38 分钟前
Flutter for OpenHarmony:构建一个 Flutter 镜像绘图游戏,对称性认知、空间推理与生成式交互设计
flutter·游戏·交互
前端不太难2 小时前
HarmonyOS 游戏项目,从 Demo 到可上线要跨过哪些坑
游戏·状态模式·harmonyos
子春一2 小时前
Flutter for OpenHarmony:色彩捕手:基于 CIELAB 色差模型与人眼感知的高保真色彩匹配游戏架构解析
flutter·游戏·架构
前端不太难6 小时前
在 HarmonyOS 上,游戏状态该怎么“死而复生”
游戏·状态模式·harmonyos
ujainu15 小时前
Flutter + OpenHarmony 游戏开发进阶:用户输入响应——GestureDetector 实现点击发射
flutter·游戏·openharmony
ujainu15 小时前
Flutter + OpenHarmony 实现无限跑酷游戏开发实战—— 对象池化、性能优化与流畅控制
flutter·游戏·性能优化·openharmony·endless runner
呆呆敲代码的小Y17 小时前
【Unity工具篇】| 超实用工具LuBan,快速上手使用
游戏·unity·游戏引擎·unity插件·luban·免费游戏·游戏配置表
我的offer在哪里17 小时前
用 Unity 从 0 做一个「可以玩的」游戏,需要哪些步骤和流程
游戏·unity·游戏引擎
串流游戏联盟18 小时前
启程!手机也能邂逅暖暖万相奇观
游戏·远程工作
User_芊芊君子18 小时前
HCCL高性能通信库编程指南:构建多卡并行训练系统
人工智能·游戏·ai·agent·测评