Skip to content

本文是"边玩边学"系列的第三篇,聚焦一个隐蔽的物理引擎 Bug:切换标签页再回来时,游戏物品会剧烈弹跳。Kiro 通过分析 physics-system.ts 定位到根因——标签切换时 lastTimestamp 变为过期值,导致 deltaTime 计算出极大的值,物理计算因此失控。本文还介绍了一个关键的 AI 辅助调试技巧:初步修复后继续追问"还有哪些潜在改进方案",利用 AI 的知识深度探索你可能未曾想到的优化角度。

本模块假设你已按照环境搭建说明在本地启动了游戏。

在上一个模块中,我们完成了改进游戏主页——那主要是 HTML 和 CSS 的工作。现在来挑战更复杂的游戏引擎核心代码。

理解问题

玩家反映一个现象:切换到其他标签页再切回来时,游戏物品会发生剧烈弹跳,整个物理系统失控。

让 Kiro 自主调查

用尽可能详细的语言描述 Bug:

When something is moving or colliding, and the player tabs out then back in,
the items do a tremendous bounce. Players report "items go haywire".

Kiro 会开始探索项目文件,并找出根因。例如它可能给出这样的分析:

The problem is in the physics-system.ts file. When a user tabs out and back in, the lastTimestamp value becomes stale, and when the animation frame resumes, the calculated deltaTime can be extremely large (several seconds instead of milliseconds). This large delta is then used in physics calculations, causing objects to move much farther than they should in a single frame, resulting in the "haywire" behavior.

Kiro 大概率会直接实现一个基础修复。但我们还没结束。

深入探索

基于 Kiro 对物理系统的初步分析,继续追问:

What other potential solutions or mitigations should I consider?

你可能会惊喜地发现,AI 能提出远超初次实现的多种额外修复方案和优化思路。

继续深挖

此时 Kiro 已经进入了物理系统改进的"思维空间",是提出更广泛问题的好时机:

Do you see anything else that looks like it could be improved?

本模块的核心收获:

不要只把 AI 当作任务执行机器。 善用 AI 的知识广度和深度,去探索你自己知识盲区中的潜在问题和改进机会。一次好的调试对话,可以让你对代码的理解远超修复 Bug 本身。

进入下一个任务:

跨多文件修复复杂的交互 Bug

常见问题

Q:Kiro 给出的修复方案是否可以直接用于生产?

Kiro 的修复通常在技术上是正确的,但不一定是最优方案。本模块中 Kiro 第一次实现的修复(基于 Infinity 质量过滤)就是一个例子——它能工作,但引入了语义上不正确的代码逻辑。始终要理解修复的原理,评估其长期影响。

Q:为什么追问"还有哪些方案"会有用?

LLM 默认会给出它认为最合理的第一个解决方案,而不会主动列出所有备选项。追问会让模型激活更广泛的知识空间,通常能发现比默认方案更优雅或更健壮的替代思路。

Q:如何让 Kiro 在调试时不遗漏关键文件?

使用 steering 文件告诉 Kiro 项目的关键目录结构。此外,在 prompt 中可以明确提及相关文件或函数名(Kiro 支持 #文件名 上下文引用),帮助它快速定位到正确位置。