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

前言:

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

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

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

相关推荐
爱搞虚幻的阿恺3 天前
Niagara粒子系统-超炫酷的闪电特效(加餐 纸牌螺旋上升效果)
游戏·游戏引擎
智算菩萨3 天前
儿童游乐空间的双维建构:室内淘气堡与室外亲子乐园的发展学理、功能分野与协同育人机制研究
游戏·游戏策划
marteker3 天前
房地产市场平台Zillow与《魔兽世界》合作展示游戏内房屋
游戏
wanhengidc3 天前
云手机 打造云端算力
运维·服务器·网络·游戏·智能手机
henry1010103 天前
DeepSeek生成的HTML5小游戏 -- 黑8台球
前端·javascript·css·游戏·html
yuanmenghao4 天前
从零开始:使用 Claude Code 打造字母消除游戏
游戏·glm·claudecode
阿甘编程点滴4 天前
2026年推荐以下5款游戏直播提词器
游戏
PieroPc4 天前
HTML5 Canvas 平台跳跃游戏
前端·游戏·html5
Swift社区4 天前
LeetCode 390 消除游戏 - Swift 题解
leetcode·游戏·swift
技术策划Boring4 天前
2025年工作复盘:开放世界3A项目配置管线与性能监控的探索
游戏·ue5·虚幻·p4·perforce