跳到主要内容
正在加载页面…
Myths' Valley

创作方向 · 6 / 7

规则与表现分离,用名称而不用坐标,没有门禁,什么都不放进来。

3D 版是单一的 Godot 4.7.2 Standard 项目,使用 GDScript 和 Forward+ 渲染器,在自身仓库的根目录打开,无需检出任何其他仓库即可运行。GLB 模型和 WAV 音频使用 Git LFS;纳入版本管理的 .import 和 .gd.uid 参数保证资源标识不变。从 2D 版继承的游戏规则放在 scripts/compartilhado/(物品栏、体力、生命、天赋、信仰、卡牌、收藏、食谱、建造项目、出售、好感度、存档),其中没有引用任何一个 2D 类型;山谷的服务放在 scripts/autoload/;界面放在 scripts/ui/。

2026年9月29日,对 2D 到 3D 的迁移做了逐个文件的评估,结果表明几乎所有东西都能沿用,因为 2D 版一直把规则放在 autoload 里、把绘制放在场景里:30 个逻辑 autoload 中,有 25 个没有引用任何 2D 类型。把一条规则绑死在 2D 上的,几乎从来不是类型,而是输入(由哪个键触发)——而这是可以拆开的。统领一切的规则是:3D 版不重写。迁移意味着增加,绝不重做已经立起来的东西。

10 条原则

不容商量的事

一个项目,一个引擎,大文件交给 LFS

Godot 4.7.2 Standard、GDScript 和 Forward+(不支持该配置的 GPU 可用 Compatibility 模式);根目录的 project.godot 注册了 40 个 autoload,并以 inicio.tscn 启动。除非确有必要,Jam 期间既不更换引擎,也不升级引擎。GLB、历史遗留的 FBX 和 WAV 放在 Git LFS 中;缓存、Build、原始文件和凭据都不进 Git;游戏运行不需要任何密钥。

规则与表现分离

动作做什么,可以跨项目沿用;由哪个键触发、哪些界面会屏蔽这个键,则留在各自游戏的项目里。正因如此,手持键从 Inventario 中移出,归入输入控制器;2D 版的界面(CanvasLayer 和 Control)也能直接画在 3D 之上,而不必知道底下是 3D。玩家文本以数据(JSON)的形式诞生,绝不写成 GDScript 常量,因为常量没法翻译。

3D 版不重写

3D 资产绝不用 2D 美术替代(精灵图不能取代 GLB;2D 美术只以图标的形式进入界面)。在 3D 中已经能用的机制,继续主管自己的那一块:时钟是 Dia,讲述者是 GuiaPedro,HUD 是 prototype_hud,地图是 mapa_jogo。只有 3D 里没有的东西,才从零做起。如果一个切片删掉、重做或淘汰了已经在运行的东西,那它就切错了,需要换一种切法。

名称是契约,锚点是实现

Lugares 这个 autoload 把地名转换成位置——2D 中是 Vector2,3D 中是 Vector3——调用方看不出区别。山谷里还没有的地名会返回 NENHUM,而且什么都不会出错:任务照常打开,只是没有指南针;系统在缺少该地点的情况下照常运行;等到区域扩展的那一天,这个名称就能解析出来,不必改动任何任务。类型注解和函数调用一样,是实实在在的耦合,而且按名称搜索是搜不出来的。

没有门禁,什么都不放进来

每个切片都要在 tests/ 中新增或调整一项行为测试,并证明它能发现缺陷(证伪)。运行器 tools/prototipo_3d/testar.ps1 会以每项门禁独立的配置目录、超时上限和编译错误检查来运行整套测试:编译错误和卡死都判为失败,而仅凭退出码为零,并不能证明游戏真的打开了。只允许结束由运行器启动的 PID。截至 2026年10月2日,整套测试共有 51 项门禁通过。

欠账写在明处,不被遗忘

缺失内容都列成清单,并写明原因:Lugares 中的 FALTAM_NO_VALE(潟湖)、语言门禁中的 FALTAM_TRADUCAO、2D 的屋顶任务链,以及目录中尚未导出的 Tripo 模型。门禁会读取这些清单,检查没有写错的条目;即使某个模型缺失,系统仍可运行——与素材目录采用同一原则。

性能在参考电脑上实测,而非估算

参考配置是 GeForce GTX 1660 Ti(Max-Q)。改变过决策的几次测量:未压缩的纹理占用 2.49 GB 显存 → 改用 VRAM Compressed 后为 0.74 GB;树林原本每个物种一个 MultiMesh,始终在画面内、无法剔除 → 改为 40 单位的区块,并按距离切换 LOD(远景三角面从 17.33 M 降到 5.65 M);山谷的构建时间从约 29 秒降到约 5 秒——把每个点逐一对照所有线段测距的做法,换成了网格单元查询,结果逐位一致。

数据在 res://,存档在 user://,版本号只有一个来源

数据从 res://data/ 读取,存档使用 user:// 下独立的 MythsValleyPrototype3D 目录,与 2D 版分开。存档格式是 Godot 的 Variant(能原生保存 Vector3),采用原子写入和逐级迁移;新增的公开字段要么列入 O_QUE_GUARDAR,要么列入 FORA_DO_SAVE,并写明原因,门禁对两者都会检查。版本号和 Build 号只在 data/historico_3d.json 中声明一次,菜单页脚和存档上的版本戳都从那里读取。

密钥不进仓库;生成须经明确请求

凭据保存在由 tools/comum/chaves.ps1 读取的本地文件和 Tripo 的本地配置中;任何密钥都不会进入仓库、可执行文件或 Build。美术和音频生成会消耗积分,只在明确提出时进行,每个资产都保留来源和署名。对于规划中的 LLM 对话,服务商的密钥作为 secret 存放在服务端,绝不放在客户端;藏在游戏里的秘密,不等于身份验证。

三种储备与一个交互焦点

体力支持劳动、跑步和跳跃;气息支持游泳;生命承受伤害。E 每次作用于身体前方的一个目标;对话和提示暂停时钟。Build 9 降低加载、阴影、树林与物理开销,小地图改用静态照片。

9 条规则

落到实处,体现在日常

  • 动手实现之前,先读相关的 issue 和门禁,并核对当前代码:旧的 issue 可能把已经并入的功能描述成缺失。
  • 每个切片:实现功能,新增或调整行为检查,证明它能发现缺陷,用隔离的配置运行整套测试,记入 CHANGELOG_3D,并在 commit 正文中引用 issue。新工作放在 feature/<nome> 分支上,再向 main 提 PR。
  • 整套测试:.\tools\prototipo_3d\testar.ps1(或 -Teste salvamento)。测试以无头模式运行;截图以及依赖鼠标的测试(smoke_opening、mapa_fluxo、smoke_test)使用常规渲染器。
  • 首次导入前先执行 git lfs pull:如果模型或 WAV 仍是 LFS 指针文件,预检会判定失败。
  • Windows 导出通过 export_presets.cfg 输出到 build/windows/(需先创建该文件夹),使用与 Godot 版本一致的导出模板。
  • 按键写在代码里,而不是 Input Map:teclas_movimento.gd(WASD、方向键或两者兼用)和 atalhos.gd(字母键可重新映射,冲突时自动互换;W、A、S、D 为保留键),保存在 user://controles.cfg 中。
  • 共享规则是由门禁逐字节核对的副本;分叉文件清单(截至 2026年10月1日为 catalogo、inventario、equipamento、mochila)在任何同步之前,都要等作者做出决定。
  • 位置和视觉决策不以 Vector3 的形式留在 world_builder 里:生成器读取的是已保存的编排。
  • 调试:JOGAR_3D.cmd -Lugar igreja 会直接从山谷中的指定地点开始;-Compatibility 切换渲染器;-Godot CAMINHO.exe 指定另一个可执行文件。

体现在哪里

  • 代码规模
    游戏脚本、测试和工具各有自己的文件夹。文件数、代码行数、自动加载项、场景、着色器和 JSON 数据从统计中记录的 Git 快照测量;项目页面展示当前代码、测试和数据的数量。
  • 一行未改就迁移过来的 Salvamento
    它看起来是最盘根错节的一个,迁移时却一行都没改,因为它处处使用 get_node_or_null,在某个系统不存在的地方会自行降级;只有 Versao 需要在本地重新实现,改为读取 historico_3d.json。
  • CadernoDoVale 与 CadeiaDeMissoes
    山谷独立的任务机制:每项任务有一条进度记录,任务链关联村民并读取各自的数据文件。目标包括材料、交付、对话、事件、计数、建造、访问和供奉;测试门禁检查任务链及完成任务所需的资源。
  • 小地图门禁
    任务目标原本指向刚刚说过话的人,而不是玩家在面板上固定的那一项——这个毛病能存在那么久,是因为小地图从来没有门禁。现在有了,共七个问题。
  • 菜单的飞越镜头
    依据山谷真实的三角面离线规划,记录在 data/sobrevoo_menu.json 中,并由 tests/sobrevoo_livre.gd 逐帧检查;如果锚点或比例发生变化,菜单会发出警告,并退回原来的椭圆轨迹。

出处

这一领域的文档

以上方针概括自这些游戏方向文档。
  • 架构 — 游戏的场景、自动加载与目录
  • 游戏愿景 — 游戏是什么、包含什么
  • 验证 — 项目导入后如何检查
  • 3D 计划 — 游戏方向与后续步骤
  • 游戏简介 — Myths' Valley 3D 概览
  • 开发历程 — 独立仓库之前的各个阶段
  • DECISOES_PROTOTIPO_3D
  • VALE_VIVO_3D
  • CHANGELOG_3D
  • 地点 — 每个地点的名称与位置
  • 游戏版本 — 每个版本的编号
  • 键盘快捷键 — 玩家可重新绑定的按键