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

前言:

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

把数据库内用到放到游戏的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:如果觉得有用,麻烦点个赞,加个收藏

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

相关推荐
x-cmd1 小时前
[x-cmd] Wine 11.0 史诗级发布:Linux 运行 Windows 应用和游戏进入“完全体”时代
linux·windows·游戏
●VON1 小时前
React Native for OpenHarmony:井字棋游戏的开发与跨平台适配实践
学习·react native·react.js·游戏·性能优化·交互
一起养小猫2 小时前
Flutter for OpenHarmony 实战:2048游戏算法与优化深度解析
算法·flutter·游戏
开开心心_Every2 小时前
音频视频转文字工具,离线语音识别免费
人工智能·游戏·微信·pdf·excel·语音识别·memcache
开开心心_Every2 小时前
电脑网速加速工具,无线有线叠加网络
网络·游戏·微信·pdf·电脑·excel·语音识别
一起养小猫3 小时前
Flutter for OpenHarmony 实战:扫雷游戏算法深度解析与优化
算法·flutter·游戏
子春一13 小时前
Flutter for OpenHarmony:构建一个 Flutter 记忆翻牌游戏,深入解析状态管理、动画交互与经典配对逻辑
flutter·游戏·交互
小贺儿开发1 天前
Unity3D 八大菜系连连看
游戏·unity·互动·传统文化
Anastasiozzzz1 天前
LeetCode hot100 45 跳跃游戏2
算法·leetcode·游戏
ujainu1 天前
Flutter + OpenHarmony 游戏开发进阶:虚拟摄像机系统——平滑跟随与坐标偏移
开发语言·flutter·游戏·swift·openharmony