下载 App

服务端云存档的迁移

精华03/24128 浏览开发交流
踩过的坑
1. clientCloud 与 serverCloud 是两套独立存储这是整个迁移过程中代价最大的一个坑。旧版单机架构使用 clientCloud(客户端云存储)保存玩家进度,迁移到服务端权威架构后改用 serverCloud。我们最初以为切换 API 就行了,结果发现:serverCloud 根本读不到 clientCloud 里的数据——它们是完全独立的存储空间,key 相同也不互通。上线后玩家登录直接变成新档,之前几十小时的进度"消失"了。教训:切换存储后端时,必须设计数据迁移层。我们最终的方案是双层迁移:
  • 服务端 serverLoad() 读取所有历史 key 格式(sv_all、sv_core/sv_military/sv_progress、save_data)做兜底
  • 客户端首次连接时从 clientCloud 读取旧存档,通过 MIGRATE_SAVE action 发送给服务端,用 _saveSeq 序列号比较决定是否覆盖
所有对 UIMain 的引用改为 getUIMain().Build(),保证实际调用时模块已完成初始化。
3. 存档格式的历史包袱——三种 key 格式并存SaveManager.lua 在迭代过程中用过三种存储 key 格式:
1. clientClou
  • 最早期的 save_data(单 key 存全量数据)
  • 中期的分片方案 sv_core / sv_military / sv_progress(解决单 key 超出大小限制)
  • 最终的 sv_all(优化后恢复单 key)
  • 最终的 sv_all(优化后恢复单 key)
  • 迁移时如果只读 sv_all,那些用旧版本存档的玩家数据就丢了。必须按优先级逐个尝试所有格式,还要处理"sv_all 存在但是空白新档、旧分片有真实数据"的边界情况
4. Manager 层的耦合设计增加迁移难度旧的 Manager(如 BuildingManager、TechManager)内部直接调用 SaveManager.Save() 做持久化。迁移到服务端架构后,持久化应该由 Server 统一管控。需要把所有 Manager 改为无副作用的纯逻辑计算:只修改传入的 game state,不主动触发存档。这涉及到对 13 个 Manager 文件的逐一审查和修改。
5. 远程事件的序列化限制UrhoX 的远程事件通过 VariantMap 传递数据,value 类型有限(String、Int、Bool 等),不能直接传 Lua table。所有游戏状态和操作参数都需要手动用 cjson.encode/decode 序列化为 JSON 字符串。同时需要注意单次传输的数据量限制,全量状态同步(STATE_SYNC)在游戏后期数据量较大时需要关注。
6. LSP 对引擎全局变量的误报IsServerMode、serverCloud、clientCloud、SERVER_MAX_PLAYERS 等是引擎在运行时注入的全局变量,LSP 无法感知它们的存在,会产生大量 undefined-global 警告。需要在文件头部用 ---@diagnostic disable-next-line: undefined-global 或 ---@type 注解手动声明。
猜你想搜
taptap 制造服务端云存档迁移
别再烧积分了!从每次 2000 到每次 50 的血泪经验截图
别再烧积分了!从每次 2000 到每次 50 的血泪经验
适用场景:所有在用 TapTap Code 开发游戏的小白 难度:★☆☆☆☆ 背景最近群里总有人"炫耀"一次操作花了几千积分,说实话这不是值得高兴的事——这是在告诉所有人你的开发方式有根本性问题。我也走过这条弯路,所以来说说怎么改。 积分消耗的本质是什么积分 = AI 处理的 token 数量 = 你发给 AI 的内容 + AI 回给你的内容所以烧积分的本质只有两种: 你让 AI 做了大量无效/重
精华
82 赞
23 回复
如何提升你游戏中的UI美术水平截图
如何提升你游戏中的UI美术水平
一、请为你的游戏挑选一款合适的字体 很多开发者没有注意到其实UI界面中最重要的元素是字体,一款合适的字体能给整个游戏的界面感官带来蜕变。 请看案例 那么如何挑选适合自己的字体呢? 我总结出了一些小经验可供参考: 黑体:通用 宋体:古风、武侠、修仙 楷体:古风、武侠、修仙 圆体:卡通、动漫、Q版 科技:科幻、未来、电子 顺手分享一个免费可商用字体网站: 当然 如果你不知道自己的游戏适合什么风格
精华
126 赞
44 回复
2D 等轴测视角:完整理论截图
2D 等轴测视角:完整理论
2D 等轴测视角:完整理论 一、视角的本质 什么是等轴测 人站在高处斜着往下看地面,地面上的方格子不再是正方形,而变成了菱形。这就是等轴测的视觉本质。 俯视(正上方看下去): 等轴测(斜上方看下去): ┌──┬──┬──┐ ◇ ├──┼──┼──┤ ◇ ◇ ├──┼──┼──┤ ◇ ◇ ◇ └──┴──┴──┘ ◇ ◇ ◇ 正方形网格经过旋转 + 压缩,变成了菱形网格。 为什么是 2:1
6 赞
永恒虚空持续开发日记1——关于游戏中的新名词:场频截图
永恒虚空持续开发日记1——关于游戏中的新名词:场频
写在前边:首先感谢TapTap制造版主大大@汪崽 对于作品潜力的肯定,给与了我积分计划二的权限[表情_不好意思]。这边也在加紧开发改进各种功能中,期望尽快给大家带来成熟的版本。[表情_猫咪举手] 大家好,我是永恒虚空的制作人黑猫不详,大家叫我黑猫就好。从今天开始我将以后置开发日记的形式给大家分享我在TapTap制造中制作的游戏永恒虚空的开发过程,新人希望大家多多关照! 今天先给大家介绍我作品中最重
投票
3 赞
【UI教程】如何将已有的效果图应用为实际的UI界面截图
【UI教程】如何将已有的效果图应用为实际的UI界面
在经过了一些折腾和比较折磨的尝试后,我总算是摸清楚了嗒啦啦怎么把UI效果图转换为实际游戏中的UI组件,今天就给大家带来这部分的经验分享。 tips:1.本篇教程需要各位掌握最基本的ps使用,具体的操作部分我会大致讲解,但仍需各位自行学习ps的基本操作,部分可以由ai代劳的环节我会注明。 2.本篇教程需要在以我前两篇教程作为前置环节,请在阅读这两篇前置教程后再进行本篇教程内容的学习 在按照前
12 赞
5 回复
开发日志(day3)今天的积分也是成功归零了截图
开发日志(day3)今天的积分也是成功归零了
一眨眼就到了周一,周一有很多活要干啊,所以也给ai安排了很多的活,一不小心就把积分用没了😂,可惜就是积分用完了也没有改好,所以实质内容改的怎么样了,还得等到明天,不过也是记录一下到底做了什么吧。 修复了装备店只有出售没有购买的按键,导致变成装备展览店了(笑) 增加了背包上限和道具的堆叠上限规则 修复了新手教程因为还没教程就把怪打死了,导致了按钮一直存在的bug 增加了道具拾取背包满了可以切换到背包
1 赞
关于制作出质量很高的横版战斗角色的方法截图
关于制作出质量很高的横版战斗角色的方法
其实全篇就一句话,角色为啥做起来这么好看,因为我一帧一帧K的。 在做角色之前,我们需要一个角色的设计稿,这个东西很简单,你把人设写好剩下的交给AI就行了,所有图片,序列帧都可以让AI绘制和处理,学会绘图是你要制作高质量游戏的第一课。 这里拿我在做的角色举例,他的参考图是这样: 当你拥有了一个角色以后,就要想办法让她动起来了。 那么如何让她动起来,答案是序列帧。 在此之前你需要知道,最容易出现一个误
42 赞
12 回复
01:29
官方阅,申请积分计划2,希望官方继续支持我完成这款游戏,截图
官方阅,申请积分计划2,希望官方继续支持我完成这款游戏,
视频内容只是一部分, 本游戏耗时3个月,目前完成进度百分之80, 是生存游戏,进入修仙界,走剧情找到宗门加入, 这时游戏才是真正开始, 提升实力境界后就可以变强,获取功法法术法宝, @视频内是游戏里挑战妖族入侵一种主流玩法,游戏就是围绕着这个来进行, 还有很多地方可以战斗,获得资源修炼变强,比如去藏书阁学习功法, 去法宝楼抽法宝,每一个宗门数十个法宝抽取 去修仙界探索,获得各自的资源,可能遇见妖兽
1 赞
3 回复
自己做的一款游戏截图
自己做的一款游戏
完整游戏设定(严格按你全部要求整理,无修改原版台词、猛虎大招、隐藏捷径路线) 基础总设定 写实第三人称3D剧情格斗,流畅打斗动作,主角大招:猛虎变身(匹配泰格先锋军虎机甲) 场景:郊外空地、牢狱 角色:兽=荒野行动泰格先锋军机甲;主人格=纯白简约白衣 核心规则:玩家自由选择常规主线/隐藏捷径路线 第一章:分离宿命(第1关) 隐藏捷径触发条件(隐藏路线) 地图4个石墩点位,站石墩
5 赞
2 回复
01:13
【游戏自荐】《王朝崛起》——一个人做的2D骑马砍杀,但真的上头截图
【游戏自荐】《王朝崛起》——一个人做的2D骑马砍杀,但真的上头
略沙盒,玩法硬核,还在修bug,但真的上头 先声明:我不是托,是开发者自己来安利的。如果你喜欢《骑马与砍杀》那种从零拉起部队、跑商、招降将领、攻城叛变的玩法,那这款游戏大概率会对你的胃口。 一、这游戏玩什么? · 超大的2D沙盒地图:64座城市 + 128个村庄,四大势力割据,满地图的蛮族部落。· 动态世界 & AI:AI势力之间会自己宣战、结盟、叛变;武将忠诚度低了会自立为王,最多能冒出8个新势
13 赞
7 回复