下载 App

天空盒bug,内置资源不存在?求官方帮忙瞅瞅

修改于05/0990 浏览互助提问
# BUG-001: 天空盒 BrightDay1 纹理缺失
# 对话连接:TapTap 制造
| 字段 | 值 |
|------|-----|
| 状态 | ✅ 已修复 |
| 严重程度 | 中(不影响功能,但每次启动报 6 个错误) |
| 影响版本 | Engine build 1e93ef1e |
| 修复日期 | 2026-05-09 |
| 关联任务 | P0-T1 场景搭建 |
---
## 现象
每次启动游戏,控制台固定输出 6 个错误:
```
ERROR: Could not find resource Textures/BrightDay1_PosX.dds
ERROR: Could not find resource Textures/BrightDay1_NegX.dds
ERROR: Could not find resource Textures/BrightDay1_PosY.dds
ERROR: Could not find resource Textures/BrightDay1_NegY.dds
ERROR: Could not find resource Textures/BrightDay1_PosZ.dds
ERROR: Could not find resource Textures/BrightDay1_NegZ.dds
```
无论游戏代码是否引用这些资源,错误始终存在。
## 根因
引擎内置资源 `Textures/Skybox.xml` 被标记为 `#blocking`(启动时强制预加载)。该 XML 是一个 cubemap 定义,引用了 6 个 `BrightDay1_*.dds` 面贴图,但**这些 DDS 文件在引擎资源包中不存在**。
加载链路:
```
引擎启动
  → 预加载 Textures/Skybox.xml (#blocking)
  → 解析 XML,发现 6 个 <face> 引用 BrightDay1_*.dds
  → 6 个文件均不存在 → 6 个 ERROR
同时:
  Materials/Skybox.xml (#blocking) → 引用 Textures/Skybox.xml → 触发相同链路
  Materials/SingleLayerWater.xml(水面材质) → 内部也引用 Materials/Skybox.xml
```
这是**引擎自身的资源缺失问题**,与用户代码无关。
## 排查过程
| # | 尝试方案 | 结果 | 失败原因 |
|---|---------|------|---------|
| 1 | 代码中不引用 `Materials/Skybox.xml` | ❌ 6 错误不变 | 引擎预加载与用户代码无关 |
| 2 | 去掉 `SingleLayerWater.xml`,改用 PBR 材质 | ❌ 6 错误不变 | 同上,但丢失了水面波光效果 |
| 3 | 提供自制 `BrightDay1_*.dds` 文件放入 `assets/Textures/` | ❌ 6 个 CDN 404 | 构建系统将文件上传 CDN 后路径解析异常 |
| 4 | 覆盖 `Skybox.xml`,face 引用自制 PNG 面贴图 | ❌ 6 个 CDN 404 + 1 解析错误 | 同上,cubemap XML 的 face 引用在 CDN 环境下不可靠 |
| 5 | 将 DDS cubemap 数据直接命名为 `Skybox.xml` | ❌ 3 个 XML 解析错误 | WASM 引擎严格按扩展名解析,`.xml` 必须是合法 XML |
| 6 | 空 cubemap XML `<cubemap />` | ⚠️ 降到 1 个错误 | 引擎回退路径将目录名 "Textures" 当资源加载 |
| 7 | cubemap XML 引用引擎内置 `DefaultNormal.tga` | ✅ 0 错误 | 该纹理存在且可正常加载 |
**核心发现**:cubemap XML 中 `<face>` 引用的文件,经构建系统 CDN 化后路径解析异常,导致自提供的面贴图(无论 DDS 还是 PNG)均无法加载。只有引用引擎已有的内置资源才能正常工作。
## 修复方案
用两个覆盖文件切断引擎的错误加载链:
### 文件 1: `assets/Textures/Skybox.xml`
覆盖引擎内置的 cubemap 定义,将 6 个 face 指向引擎自带的小纹理(47 字节,确保存在):
```xml
<cubemap>
    <face name="Textures/DefaultNormal.tga" />
    <face name="Textures/DefaultNormal.tga" />
    <face name="Textures/DefaultNormal.tga" />
    <face name="Textures/DefaultNormal.tga" />
    <face name="Textures/DefaultNormal.tga" />
    <face name="Textures/DefaultNormal.tga" />
</cubemap>
```
### 文件 2: `assets/Materials/Skybox.xml`
覆盖引擎内置的天空盒材质,不引用 cubemap 纹理:
```xml
<material>
    <technique name="Techniques/DiffSkybox.xml" />
    <cull value="none" />
</material>
```
### 实际天空渲染
游戏的天空渲染完全不依赖上述两个文件,而是在 `DayNight.lua` 中程序化创建:
```lua
local skyMat = Material:new()
skyMat:SetTechnique(0, cache:GetResource("Technique", "Techniques/DiffSkybox.xml"))
skyMat:SetTexture(0, cache:GetResource("TextureCube", "Textures/Skybox.dds"))
```
`Skybox.dds` 是通过 AI 生成蓝天白云全景图,再用 `convert-panorama` 工具转换的 cubemap 文件。
## 关键经验
1. **引擎 `#blocking` 资源无法通过代码规避** — 即使不在代码中引用,引擎启动时仍会强制加载
2. **CDN 环境下 cubemap face 引用不可靠** — 自提供的面贴图文件上传 CDN 后路径解析失败,只能引用引擎已内置的资源
3. **WASM 引擎严格按扩展名解析** — `.xml` 扩展名的文件必须是合法 XML,不能塞入二进制数据
4. **资源覆盖优先级** — `assets/` 目录下同名文件可覆盖引擎内置资源,这是解决引擎资源缺陷的有效手段
@天一 求天哥帮忙瞅瞅
别再烧积分了!从每次 2000 到每次 50 的血泪经验截图
别再烧积分了!从每次 2000 到每次 50 的血泪经验
适用场景:所有在用 TapTap Code 开发游戏的小白 难度:★☆☆☆☆ 背景最近群里总有人"炫耀"一次操作花了几千积分,说实话这不是值得高兴的事——这是在告诉所有人你的开发方式有根本性问题。我也走过这条弯路,所以来说说怎么改。 积分消耗的本质是什么积分 = AI 处理的 token 数量 = 你发给 AI 的内容 + AI 回给你的内容所以烧积分的本质只有两种: 你让 AI 做了大量无效/重
精华
68 赞
21 回复
03:06
为了不被斩杀,我只能做到这些了截图
为了不被斩杀,我只能做到这些了
之前一直申请不到计划3,之前说太花哨,后面说体量完成度不足,在我一番小作文下,编辑终于给了我解答,什么原生质感,玩家开局体验啥的。 本来计划2也够用,准备以后再优化了,结果计划2赠送的积分要砍半了,学生党实在消费不起,于是只能再冲一波计划3了 从周六中午到现在一天半时间,优化了一遍角色卡,战斗卡,还有抽卡界面,优化了新手教程,该说不说确实比之前要舒服些。 前半部分为新版,后半部分为旧版。 明天再次
32 赞
6 回复
01:27
《大二暑假,我用AI做了一款属于自己的游戏》截图
《大二暑假,我用AI做了一款属于自己的游戏》
本人自制游戏现已加入taptap封闭测试(仅适配安卓机型)欢迎大家前来尝试(八月十号可以正式开始游玩) 如果有建议或者bug反馈可以加入qq群928501443 #发现好游戏 #游戏日常 #浅评一下 #今天游戏圈发生了啥
3 赞
如何提升你游戏中的UI美术水平截图
如何提升你游戏中的UI美术水平
一、请为你的游戏挑选一款合适的字体 很多开发者没有注意到其实UI界面中最重要的元素是字体,一款合适的字体能给整个游戏的界面感官带来蜕变。 请看案例 那么如何挑选适合自己的字体呢? 我总结出了一些小经验可供参考: 黑体:通用 宋体:古风、武侠、修仙 楷体:古风、武侠、修仙 圆体:卡通、动漫、Q版 科技:科幻、未来、电子 顺手分享一个免费可商用字体网站: 当然 如果你不知道自己的游戏适合什么风格
精华
122 赞
44 回复
「游戏上新」秦王的游戏截图
「游戏上新」秦王的游戏
你是秦王嬴政身边的廷臣。 方士徐福献上一匣【帝王卡牌】,四张凶牌封死命运: 屠戮|淫欲|奢华|征伐 七日死限,必须一一折断卡牌对应的欲望任务。 办不成? 秦王殿上长剑出鞘,君臣性命,顷刻倾覆。 ⚔游戏核心玩法 ▪回合卡牌策略,抉择牵动秦廷朝堂势力 ▪朝堂派系博弈:王权、法家、军功贵族、方士暗流角力 ▪多重结局:功成辅秦王一统,或是任务失败血染咸阳宫 ▪随机事件触发,每一局嬴政的猜忌程度截然
4 赞
2 回复
开发心得-界面布局心得截图
开发心得-界面布局心得
大家好,我正在用 TapTap 制造制作一款2D 治愈林间徒步旅行游戏《徒步荒野》。 我分享一下我的开发心得,希望能有用,下面是一些界面布局的心得。 第一步:定版式、操作 先确定游戏是横版还是竖版、需要哪些操作按钮,敲定整体玩法思路。 我的玩法灵感参考《边境之旅》,主打散步看风景、沿途触发随机事件。 原版是 3D,考虑到自己是新手,选择2D 横版街机式来做,制作更简单、好上手。 第二步:敲定全局美
6 赞
3 回复
游戏自荐《少女终焉契约》截图
游戏自荐《少女终焉契约》
之前玩放置类型的rpg游戏的时候我就在想,现在游戏的操作有的太过于繁琐了,有没有一款休闲一点的,想上线就上线,离线的时候角色能自动行动的游戏呢?感谢TapTap制造,我按照我的想法开发出了现在这款游戏。 一、故事背景和UI 游戏的故事背景是传统的异世界穿越故事,玩家被女神召唤到异世界,随后组建工会,招募美少女,打怪升级探索世界。所以我选择了更加二次元萌系画风的UI风格,主页为各个主要的功能,点开来
8 赞
3 回复
01:13
【游戏自荐】《王朝崛起》——一个人做的2D骑马砍杀,但真的上头截图
【游戏自荐】《王朝崛起》——一个人做的2D骑马砍杀,但真的上头
略沙盒,玩法硬核,还在修bug,但真的上头 先声明:我不是托,是开发者自己来安利的。如果你喜欢《骑马与砍杀》那种从零拉起部队、跑商、招降将领、攻城叛变的玩法,那这款游戏大概率会对你的胃口。 一、这游戏玩什么? · 超大的2D沙盒地图:64座城市 + 128个村庄,四大势力割据,满地图的蛮族部落。· 动态世界 & AI:AI势力之间会自己宣战、结盟、叛变;武将忠诚度低了会自立为王,最多能冒出8个新势
10 赞
7 回复
【游戏上新】——宅男打丧尸截图
【游戏上新】——宅男打丧尸
这是一款横向俯视角射击生存游戏,主打"轻松上手、越玩越爽"的爽快体验。游戏目前已包含: 四种核心模式:挑战、防守、生存、无尽,满足不同玩家口味 多种枪械,从手枪到重型火力,打出自己的风格 地雷,手雷,枪架多种不同军火自由选择,给敌人造成最大伤害 完整的成长体系:角色等级、军火系统、被动技能,越肝越强 丰富的敌人设计:普通丧尸到多种 Boss,战斗层次感明显 未来会制作更多不同的角色,天赋,军火,玩
4 赞
12 回复
AI 生成的 NPC 太假?那是你没给它注入“灵魂” | TapTap 制造截图
AI 生成的 NPC 太假?那是你没给它注入“灵魂” | TapTap 制造
在多人或竞技游戏中,如何让 AI 队友不呆板?如何在高延迟下实现丝滑的竞技体验?本期我们采访了《猛攻兄弟》与《飞驰登山拉力赛车》的作者,分享他们的经验之谈~ 2026/03/30 - 2026/4/6 本期核心看点: 数据概览:该周上架游戏中动作策略模拟类持续领跑优质分发榜,占比均达 43.08%。 重点关注:让 AI 像活人,让同步“零延迟” —— 多人竞技开发实战 避坑指南:人工测评准入与分
精华
26 赞
6 回复