下载 App
《蠹痕》开发日志 #4 | 让叙事、空间与性能保持在同一条线上
修改于10/2021 浏览综合
大家好这里是月桂工作室,《蠹痕》是一款女性向微恐视觉小说游戏,开发正在如火如荼地进行中,希望得到大家的喜爱~

《蠹痕》当前由 2D 探索章节与 3D 病房章节共同组成,项目统一使用 Godot 4.7.2 和 1920×1080 的 16:9 画幅。随着内容量增加,开发重点逐渐从“把场景做出来”转向“让不同章节能够稳定协作,让内容方便修改,让演出效果在各种交互状态下保持一致”。
用章节隔离控制复杂度
项目根目录保留统一工程入口,core/ 负责调试菜单、全局设置、章节切换与跨章节状态,2d/ 和 3d/ 分别管理各自的场景、脚本、素材与数据。
章节之间通过 SceneRouter 完成切换,通过 GameState 传递文字速度、运镜灵敏度、全屏状态和章节数据,这样可以让 2D 与 3D 保持相对独立,后续修改某个章节时不会轻易影响另一套交互系统。
这种结构也改善了调试效率:开发过程中可以直接运行单独场景,快速检查某一段对白、某个交互点或某个镜头,而完整流程仍然可以通过统一入口验证。
让内容和代码分开迭代
对白、选项、章节节点、交互文本以及部分布局参数都采用 JSON 保存,剧情控制器主要负责读取节点、推进流程、等待输入和处理分支,具体文字则交给数据文件维护。
这样做的好处在于,文案调整、分页长度修改和分支连线检查不必频繁修改核心脚本;当章节内容继续扩展时,也可以沿用现有的数据结构,减少重复实现。
3D 剧情使用节点类型区分普通对白、事件、等待交互、选择和姓名输入,控制器通过统一的 go_to() 流程推进节点,从而把剧情顺序、演出动作和玩家输入集中到一套可追踪的状态管理中,避免多个动画和输入事件同时修改剧情进度。
对话显示需要同时适应屏幕和空间
3D 对话存在两个显示阶段:视角受限时使用屏幕界面,玩家可以环顾房间后,文字与对话框又需要跟随空间位置产生透视关系。
为此,对话组件统一处理打字机效果、分页、手动换行、标点分屏和文字速度,屏幕文字与空间文字共用同一套分页结果,避免相机切换后出现换行不一致的情况。
空间对白框仍然保留在 3D 场景中,屏幕文字通过相机投影重新计算显示区域,这样既保留了空间感,也避免直接依赖动态投影来完成所有排版;文字宽度与布局参数固定后,玩家转头、低头或切换界面时不会因为投影变化而重新分行,画面稳定性也更容易控制。
把渲染顺序当成构图的一部分
病房章节同时包含 3D 房间、桌面前景、人物立绘、对话框、文字、按钮和特效,如果完全依赖默认深度关系,桌沿遮挡和透明素材的显示顺序很容易出现问题。
目前项目对桌面前景、倒影、选项背景、桌面文字和空间对白分别设置渲染优先级,并对需要始终可见的 UI 使用关闭深度测试的方式处理,使这些元素在镜头移动、相机俯视和透明贴图叠加时仍然保持稳定层次。
这类优化没有改变模型结构,却显著减少了为了修复遮挡而重复调整场景节点的工作量,也让后续增加按钮、回忆界面和设置面板时拥有明确的绘制顺序。
用贴图图集降低动态素材开销
部分选项背景与特效需要循环播放短动画,项目将连续画面整理为图集,再通过 Shader 控制帧序和透明区域,避免为每一帧创建独立节点,也减少大量动画资源同时参与场景管理的压力。
类似的思路也用于人物呼吸和部分视觉差分:素材保持原始文件不变,程序在运行时根据当前帧调整采样区域,让不同透明边界的图片仍然能够保持人物位置一致,减少逐帧手工校准造成的漂移。
把可访问性设置做成全局能力
文字速度、运镜灵敏度和全屏模式由公共状态管理,并保存到用户配置目录,2D 对话组件与 3D 章节可以读取同一套设置。
其中,文字速度会影响打字机显示和部分文字演出时长,运镜灵敏度则限制在合理范围内,避免玩家输入极端值后导致镜头难以控制。全局设置由公共模块统一写入,也减少了不同章节各自保存、互相覆盖的风险。
接下来会继续优化什么
后续优化会继续围绕三个方向展开:第一是进一步统一 2D 与 3D 的章节状态接口,让完整流程拥有更清晰的存档边界;第二是继续减少剧情控制器中的表现细节,把可复用的演出拆分成更小的组件;第三是完善低配置设备上的资源加载、场景切换和透明材质表现,确保视觉层次增加后,运行稳定性仍然能够保持。
《蠹痕》的技术目标始终与叙事目标绑定:场景结构要足够清晰,方便开发者快速修改;表现系统要足够稳定,让镜头、文字和交互能够互相配合;优化则尽量隐藏在体验背后,让玩家感受到的是连续的空间与节奏,而不是系统本身的存在。













