下载 App
【taptap聚光灯gamejam】开发者日志2: 第二天,把世界做像样
10/1422 次播放综合
第一篇日志发出时,我们手里已经有一个能跑的最小闭环。第二天没有急着铺新星球,而是干了一整天"从能玩到像样"的活:水面、开场叙事、探索交互、性能、美术样板。全天 30 次构建,收在版本 1.0.42。
- 水面:先抓根因,再动手
移动端水面一直是"看起来不对"。我们没有直接调参数,而是先把 15 个真实水域网格翻了一遍,找到了根因:网格只有位置、法线和 UV,没有顶点色,而旧的水面 Shader 用顶点 alpha 判断水深和泡沫——按引擎文档,缺少这个输入时数据是未定义的,之前的效果等于是"碰运气"。
重构后的 WaterSurface.lua 统一了河流、湖泊、瀑布的水面:一次透明前向绘制里完成双相流动波纹、菲涅耳天空色反射、日照高光、浅水透底和岸边泡沫。水深和岸线数据全部按真实网格离线烘焙成纹理,不增加反射相机、屏幕纹理或后处理,每个像素最多四次采样。开源合规也照做了:借鉴 Waterways 的双相流动思路,保留 MIT 许可和参考版本号。
教训记下来:渲染不对先查数据源,别先调参数。
- 开场有戏:飞行序章与旁白
玩家第一次进入游戏,不能再是"一张 UI 弹出来"。开场接入飞行三段式:序章镜头、星航号飞行、过渡入港;初始三选一改为飞船实验室里的正式交接,镜头完成才推进存档。
配音也是这天落地的。开场字幕和飞行序章配上中文旁白,音色用零样本克隆自参考音频,保证新旧旁白是同一个人——"星航日志旁白",冷静克制的远征叙述者。技术上给 Soundscape.lua 加了旁白专属通道:旁白播出时音乐自动压低到 35%,切镜、跳过、结束都会停。有一个细节:镜头时长必须容纳语音,最长的语音 6.61 秒,对应镜头拉到 7.2 秒。
- 探索交互:抓宠变成手上的动作
第一天的捕捉还停留在"面板里点按钮"。第二天把抓宠翻译成探索语言:野外投掷装置(横竖屏共用一套触控)、情境交互按钮、采集工具,伙伴部署后跟随、留轨迹,收回也绝不把精灵从图鉴里移除。出生地做了生成清障:在玩家落点周围划出安全范围,草丛和摆件不会长在玩家脸上。
- 性能:给浏览器划预算
这是移动端和网页端绕不开的一天。资产生命周期接入流式加载;场景加 LOD 与静态渲染副本(只保留有内容的子网格,源资产不动);草改成了按区域混合草种、以世界格子采样——重访同一片草地不会重新洗牌,视觉连续且不用逐帧重掷。所有降级比例写入统一预算表:PerformanceBudget 里的比例只影响面数保留,从不偷偷缩放模型,避免"远处模型变小"这种假优化。
- 晚间攻坚:溪谷样板、头部精修、战斗重表现
晚上是当天最大的一批(一次提交改了 20 多个模块、500 多个资源),三件事:
溪谷样板先行。先把溪谷样板做对,再扩展地图。"青岚溪谷出了正式设计稿和场景契约 JSON,布局按批准的样例执行——米制、+Z 为北,装饰布局永远不拥有玩法 ID;河道按真实网格烘焙成五列凹槽,树根支撑和接触单独成模块,不走"随机圆丘+整圈岩墙"的省事路线。地形高度重新烘焙进 p1.dat,五域和探索环线一条没动。
头部精修。精灵头部校准与替换网格落地,附带两套新动作包(头部精修版 267 个动画、初始伙伴活泼版 63 个)。原则写在文件头:战斗时序和状态切换不动,资源替换放最后一步。
战斗重表现。战斗 HUD、镜头、招式运动和 UI 表现整体过了一遍——数值规则还是第一天定死的那些,但打击感换了新皮。
- 数字与坑
- 全天 30 次构建,最长一次构建 2 分 18 秒,收在版本 1.0.42,构建全绿。
- 遗留一个 LSP 类型警告(MotionCatalog.lua 一处赋值类型不匹配),已列入收工清单,不带着报错过夜——好吧,其实过夜了,明天第一件事就是它。
- 踩坑回归:模块拆分的好处第二天就兑现了——水面、配音、草种、溪谷样板四条线并行,没有一次需要动别人的旧代码。
- 接下来
溪谷样板验收通过后,把这套"布局契约 + 网格烘焙 + 树根支撑"的流程复制到其余五颗星球;战斗重表现要过移动端帧率实测。下一篇日志见。











