这里是全站文章的归档入口,下面是按时间倒序排列的全部文章。若想按主题浏览,请从首页的专题分类进入。
Godot 联机客户端预测与回滚:让操作先响应,再把误差收回来
背景:客户端预测与校正不是一个孤立功能 联网动作游戏里,如果每次移动都等服务器确认,操作会像隔着一层棉。客户端预测让玩家按下移动后本地立刻响应,再等服务器快照回来校正。听起来简单,真正做起来会遇到输入序号、重复模拟、碰撞差异、校正抖动、动画状态和特效回滚。
posts
这里是全站文章的归档入口,下面是按时间倒序排列的全部文章。若想按主题浏览,请从首页的专题分类进入。
背景:客户端预测与校正不是一个孤立功能 联网动作游戏里,如果每次移动都等服务器确认,操作会像隔着一层棉。客户端预测让玩家按下移动后本地立刻响应,再等服务器快照回来校正。听起来简单,真正做起来会遇到输入序号、重复模拟、碰撞差异、校正抖动、动画状态和特效回滚。
记录《孢子三部曲》为什么不能只写灾难、设定和真相,还必须写人物在危机之外的生活纹理,让世界和人物真正可信。
抽卡动画不能决定结果 商店和抽卡是很多 H5 游戏的商业核心。Phaser 做奖励展示很容易:按钮、转场、卡面翻开、光效、稀有度音效。但越是表现华丽,越要记住边界:本地动画不能决定奖励结果。奖励结果必须来自权威逻辑,本地只负责把结果清楚、稳定、可恢复地展示出来。
背景:触觉反馈系统为什么值得单独设计 触觉反馈做得好,按钮确认、命中、受伤、技能蓄力都会更有重量;做得不好,它会变成吵闹的背景噪声。我们第一次接震动时,很多地方直接调用平台 vibrate:按钮点一下震,抽卡震,战斗命中震,开宝箱震。
深入讲解Envoy代理的核心概念与高级配置,详解Listener、Cluster、Route、Filter等组件,提供流量管理、故障注入、访问日志、gRPC转码等生产级配置示例。
从一个真实问题开始 测试机上 60 帧,线上用户反馈卡。这个场景太常见了:开发机 Chrome 很顺,低端安卓 WebView 里一开技能雨就掉到 25 帧。性能问题不是上线前压一遍 profiler 就能解决,它需要从玩法设计阶段就有预算。
为什么要单独治理 主城同屏 80 个角色时,帧率主要花在动画采样和骨骼更新上。团队把远处角色动画更新频率降到每秒 5 次,帧率上来了,但玩家看到远处 NPC 像卡顿的木偶,靠近时还会突然补动作。动画 LOD 不是粗暴降频,而是要按距离、屏幕占比、动作重要度和镜头焦点调度。
作为《孢子三部曲》创作手记阶段性总结,记录这个故事跨越17年仍然值得继续写完的具体原因、低谷、回返和自我对话。
背景:运行时画质动态缩放不是一个孤立功能 画质设置不是设置页里几个下拉框那么简单。低端设备进入战斗后掉帧,玩家不会去逐项研究阴影、粒子和后处理;高端设备又不希望被保守默认浪费。我们在做移动端 3D 场景时,最初只提供低中高三档,结果同一档在不同机型表现差异很大。
复制 Scene 是最快的技术债 活动小游戏团队经常同时维护多个 Phaser 项目。第一个项目写了 Loading、音频、弹窗、埋点、广告奖励和调试面板。第二个项目为了赶时间,直接复制一份。第三个项目又从第二个复制,顺手改了几个字段。半年后,三个项目都有类似系统,但 Bug 修复要改三遍,接口还不完全一样。
动作游戏里,很多体验差异藏在几帧之内。攻击命中窗口早两帧,手感会飘;音效晚一帧,打击感会空;特效挂点不对,角色动作再好也显得廉价。Godot 的 AnimationPlayer 能在时间轴上调用方法,但如果团队完全靠手动插 Call Method Track,后期维护会非常辛苦。
记录《孢子三部曲》从早期润色式修改到后来结构化重写的方法变化,梳理主线、人物动机、信息释放和章节目标的具体做法。
从 Phaser H5 游戏的本地存档、IndexedDB、localStorage、版本迁移和云同步冲突入手,讨论可靠存档设计。
背景:运行时配置中心为什么值得单独设计 运营活动、数值调节、入口开关、广告频控、下载地址、公告策略都希望不发版就能调整。远程配置因此很快进入 Godot 客户端。刚开始大家只是在启动时拉一个 JSON,解析后全局使用。
为什么要单独治理 美术导出了一批 ASTC 纹理,测试机表现正常,线上某些低端 Android 设备却显示紫色材质或黑块。客户端日志只记录资源加载失败,没有说明设备支持什么格式、选择了哪个变体、fallback 是否存在。纹理压缩不是导入设置里的一个选项,而是资源分发、设备能力探测和运行时选择共同决定的系统。
小地图不是把场景缩小 很多 Phaser 项目第一次做小地图,会想到把整个地图截图缩小放到角落。这样能快速看到布局,但很快会遇到问题:未探索区域不该显示,动态敌人要更新,宝箱开过要变状态,地图太大时截图成本高,移动端小地图还会挡住操作。真正可上线的小地图不是缩略图,而是地图状态的可视化。
记录《孢子三部曲》创作中如何面对读者期待和作者表达之间的拉扯,尤其是节奏、答案、人物和商业可读性的取舍。
剧情系统不是把文字打出来 很多 Phaser 小游戏最初只需要一句提示:“公主被困住了,去救她。”于是工程写一个半透明框、一个 Text、一个点击下一句。后来项目加了角色立绘、打字机效果、镜头移动、角色入场、屏幕震动、选项分支、跳过按钮和断线恢复,原来的对话框就开始撑不住了。
Godot 的 文本格式是协作优势,也是评审难点。它能进 git,能做 diff,但真实 review 时经常像盲盒:一堆节点顺序变化、资源 id 重排、导出字段移动,reviewer 很难判断到底改了什么。尤其当关卡、美术和程序同时改一个场景,冲突解决就更痛苦。
记录《孢子三部曲》在科学感、想象力和小说叙事之间的平衡过程,尤其是孢子设定如何避免变成说明书或空洞奇观。