https://www.reddit.com/r/vibecoding/comments/1t7goc3/28_days_1014_小时_每天_和_很多_咖啡因/
在 Vibecoding subreddit 上的上一篇文章: https://www.reddit.com/r/vibecoding/comments/1t7goc3/28_days_1014_小时_每天_和_很多_咖啡因/
在 Vibecoding subreddit 上被建设性的嘲笑之后,我回到实验室与 Claude 和 Gemini 一起工作。我们的目标是将混乱的乱麻转化为可读、平衡的街机游戏体验。许多人可能会说它仍然是一个混乱的乱麻,但没关系,我仍在努力解决一些问题,但这是我目前的进展。视频展示了从 0m 到 21,000m 的完整跑道,仅需超过一分钟。这个视频展示了我与 Gemini 和 Claude 一起如何完成任务
可视清晰度和眼部舒适度重构
-动态可见性焦点系统:我将这个概念带给 Claude(5 行上方,4 行下方)。Claude 实现了 getVisibilityAlpha() 函数,使用纯算术进行实体。没有 GPU 密集的滤波器。我们进行了两次迭代,第一次迭代过于模糊(150px),所以我们将其调整到 50px,获得了一种保留焦点的雾化效果。
-1.70 倍游戏缩放:我问 Claude 缩放到画布的潜在权衡。Claude 确定标准缩放会打破 HUD。我们使用 ctx.scale() 与 save/restore 块隔离游戏世界。Claude 然后识别并自动修复因缩放变化而破裂的屏幕 X 定位和zigzag 跳跃边界。
-摄像机重置:缩放之后,角色被切断。Claude 跟踪了 1.70 倍的数学,可见的 X 从 395px 开始,但角色被硬编码为 350。Claude 重新计算了玩家在屏幕 X:700(27% 左侧)上的位置,并调整了摄像机跟随速度从 0.65 到 0.50,跨 6 个参考。
-背景连接修复:我报告了一个 1px 黑色垂直线,位于滚动的瓦片之间。Claude 诊断为缩放宽度中的浮点漂移。通过使用 Math.ceil(scaledWidth) 确保 1px 重叠而不是间隙来修复。
新强化道具:魔幻蘑菇(空间区域)
我与 Gemini 设计了精神旅行概念,然后将技术提示传递给 Claude。Claude 最初建议使用 ctx.filter 进行屏幕洗涤效果,但它杀死了 FPS,产生了重大延迟。我反对并切换到全局组合操作:源上覆盖,这没有任何成本。Claude 初始尝试将蘑菇放入标准收藏品数组中,我必须标记它需要与强化道具状态机集成,以便速度减少和计时器才能正常工作。
强化道具系统和平衡重写
-5s/2s 调整:我建议使用爆发暂停节奏生成强化道具。Claude 初始误解了数学(认为是 5s/7s 间隔)。我必须提供一个可视化分解(“1-2-3-4-5 生成,6-7 生成”)。Claude 然后实现了一个翻转索引来切换两个值之间的计时器。原因是我没有看到强化道具太频繁,而且我也正在测试,所以我意识到需要增加生成速率。现在强化道具生成得很好,真的很好。
-铁胃重写:我们将铁胃的 10 秒计时器转换为持续的护盾。Claude 重构了有毒命中处理器以吸收和破坏。实际上游戏中有两个铁胃版本,一种是预跑的可用强化道具,另一种是游戏内可获得的强化道具。预跑的可用强化道具可以在玩家吃任何有毒食物之前保护玩家一次。游戏内可获得的强化道具可以保护玩家在玩家吃有毒食物之前从所有敌人中保护玩家,直到玩家吃有毒食物,护盾才会破裂。
-声音调试:新的护盾破坏.wav 文件没有触发。Claude 添加了诊断日志并识别了浏览器预加载问题,通过设置 preload = 'auto' 来修复。
-幽灵强化道具:平台上的敌人在平台消失时仍然可见/致命。相反于添加更多独立计时器(会漂移),Claude 添加了一个父区域属性于生成。现在实体只需检查其父平台的可见性状态,然后渲染或注册碰撞。没有性能成本,完美同步。
以前,门户可以将玩家困在孤立的平台上。在“为什么这个空隙仍然存在?”的几轮之后,Claude 重写了过渡,首先生成整个平台场景,然后在网格中搜索最近的有效平台来落下玩家。
zigzag 边界:Claude 调整了所有 3 个跳跃循环和生成计算,使用 ZOOM_VIS_HEIGHT 代替原始画布高度,确保敌人在缩放后的视图内。
自从我缩放了画布,我需要工作来确定如何让敌人和超级小球在屏幕顶部和底部边缘上生成
工作流程:测试 → 识别摩擦 → 与 Gemini 设计 → 将技术提示传递给 Claude → 在 Cursor(实时服务器)中测试 → 迭代。
即使 AI 可以完成所有这些事情,但仍需要开发人员作为游戏实际感觉的基准。对我来说,它实际上比之前的版本更好,我想感谢我上一篇文章中的反馈。
评论 (0)