V2EX 前天 20:48
[分享发现] 用 Claude AI 从零开发了一个完整的 Coldplay 主题游戏 - 全程技术分享
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

一位开发者分享了与 Claude AI 协作开发名为《Coldplay Canoodlers Plus》的网页游戏的经历。该游戏是一款观察类游戏,玩家需要在演唱会人群中找出情侣。项目采用了 TypeScript、Phaser 3 和 Vite 技术栈,实现了单 HTML 文件打包、双语言支持及 iframe 嵌入等特色。AI 在需求分析、技术选型、资源生成(像素图像、音效)以及解决 CORS、TypeScript 类型错误和移动端适配等技术难题方面发挥了关键作用。开发者认为,AI 是强大的编程助手,人机协作是未来趋势,能够显著降低技术门槛。

🎮 **游戏概述与技术选型**:本次开发的游戏名为《Coldplay Canoodlers Plus》,是一款以演唱会人群为背景的观察类找情侣游戏。项目技术栈选用了 Phaser 3 作为游戏引擎,TypeScript 作为开发语言,并借助 Vite 和 vite-plugin-singlefile 实现单 HTML 文件打包,同时支持中英双语和 iframe 嵌入,方便分享和集成。

🎨 **AI 驱动的资源生成**:在游戏资源制作方面,Claude AI 展现了强大的全栈能力。它不仅能够生成像素风格的图像用于构建游戏场景,还能够创作简单的合成音效,为游戏提供了基础的视听元素,极大地加速了资源准备过程。

💡 **AI 辅助的核心逻辑与难题解决**:AI 在游戏核心逻辑实现上也提供了帮助,例如创新的鼠标悬停交互机制和难度递增算法。此外,在开发过程中遇到的 CORS 问题(通过 Base64 转 Blob URL 解决)、TypeScript 类型错误(通过统一处理不同基类游戏对象解决)以及移动端适配问题,Claude AI 都提供了有效的解决方案。

🚀 **AI 协作的优势与最佳实践**:通过此次合作,开发者体验到 AI 在快速原型开发、全栈能力、问题解决和文档生成方面的显著优势。同时,他也总结了最佳实践,包括明确需求、模块化开发、版本控制和充分测试,以最大化人机协作的效率和成果。

🤔 **AI 协作的未来展望**:开发者认为 AI 是优秀的编程助手,人机协作是未来的发展趋势,能够降低技术门槛,让更多人参与到创作中。他鼓励开发者在明确需求、细化文档、分步实现和保持代码质量的前提下,积极尝试 AI 协作开发。

这是根据 Coldplay Canoodlers 做的一款升级版 Coldplay Canoodlers Plus ,增加了一些关卡。

前言

大家好,我是一名开发者萌新,最近和 Claude AI 协作完成了一个完整的网页游戏开发项目。整个过程非常有趣,想和 V2EX 的朋友们分享一下这次 AI 协作开发的经历和技术细节。

游戏简介:
- 名称:Coldplay Canoodlers Plus
- 类型:观察类游戏,在演唱会人群中找出情侣
- 技术栈:TypeScript + Phaser 3 + Vite
- 特色:单 HTML 文件打包,支持 iframe 嵌入,双语言支持
- 体验网址: https://coldplaycanoodlersgame.com/coldplay-canoodlers-plus
- 多语言:右上角提供了中英双语。

🛠️ 技术架构

核心技术选型

前端框架:Phaser 3.70 (游戏引擎)
开发语言:TypeScript 5.3.3
构建工具:Vite 7.0.5 + vite-plugin-singlefile
打包方式:单 HTML 文件 (13.4MB)
资源处理:Base64 内联 + Blob URL 转换

项目结构

src/
├── scenes/ # 游戏场景
├── gameObjects/ # 游戏对象
├── config/ # 配置文件
├── utils/ # 工具函数
└── assets/ # 资源文件

🤖 AI 协作开发过程

第一阶段:需求分析与技术选型

我的需求: 开发一个 Coldplay 主题的找情侣游戏

Claude 的建议:
1. 选择 Phaser 3 作为游戏引擎(轻量级,适合网页游戏)
2. 使用 TypeScript 提高代码质量
3. 采用模块化场景管理
4. 考虑单文件打包便于分享

这个阶段 Claude 帮我制定了完整的技术方案,包括目录结构、开发规范等。

第二阶段:资源生成与处理

这是最有趣的部分,Claude 帮我生成了所有游戏资源:

1. 像素风格图像生成
// Claude 生成的像素艺术代码示例
function generateCrowd(width: number, height: number): string {
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d')!;
canvas.width = width;
canvas.height = height;

// 生成观众席背景
for (let row = 0; row < rows; row++) {
for (let seat = 0; seat < seatsPerRow; seat++) {
const personColor = colors[Math.floor(Math.random()
colors.length)];
// 绘制人物像素图...
}
}

return canvas.toDataURL();
}

2. 音频资源生成
Claude 还帮我生成了游戏音效,虽然是合成的简单音调,但完全满足游戏需求。

第三阶段:核心游戏逻辑实现

创新的鼠标悬停机制:
// 核心交互逻辑
private setupInteractions(interactiveArea: Rectangle): void {
interactiveArea.on('pointerover', () => {
if (!this.isRevealed) {
this.showRevealBox(); // 显示 60x60 透明区域
}
});

interactiveArea.on('pointermove', (pointer: Pointer) => {
if (pointer.isDown && !this.isRevealed) {
this.showRevealBox(); // 支持触屏拖动
}
});
}

难度递增算法:
// 每关目标数量 = 3 + (关卡-1) × 5
init(data: GameData): void {
this.totalCouples = 3 + (this.currentLevel - 1)
5;
this.timeRemaining = 60; // 固定 60 秒
}

第四阶段:技术难题解决

开发过程中遇到了几个技术挑战,Claude 都帮我一一解决:

1. CORS 问题
// Base64 转 Blob URL 解决方案
function base64ToBlob(base64: string, mimeType: string): string {
const base64Data = base64.split(',')[1];
const byteCharacters = atob(base64Data);
const byteArray = new Uint8Array(byteCharacters.length);

for (let i = 0; i < byteCharacters.length; i++) {
byteArray[i] = byteCharacters.charCodeAt(i);
}

const blob = new Blob([byteArray], { type: mimeType });
return URL.createObjectURL(blob);
}

2. TypeScript 类型错误
// 解决继承体系不一致问题
private playErrorAnimation(distractor: Couple | RealCouple): void {
// 统一处理不同基类的游戏对象
}

3. 移动端适配
/ 响应式设计 /
@media (max-width: 768px) {
body {
touch-action: pan-x pan-y;
}
}

/ iframe 兼容性 /
body.iframe-mode {
height: 800px;
width: 1200px;
}

第五阶段:国际化与优化

多语言支持:
export class LanguageManager {
private static currentLanguage: Language = 'en'; // 默认英文

static getText(key: keyof LanguageTexts): string {
return LANGUAGE_TEXTS[this.currentLanguage][key];
}
}

性能优化:
- 资源预加载和内存管理
- 事件监听器正确绑定/解绑
- Phaser 对象生命周期管理

🎯 AI 协作的优势与感悟

优势

1. 快速原型开发:从想法到可玩原型只用了几个小时
2. 全栈能力:Claude 既能写代码又能生成资源
3. 问题解决能力:遇到 bug 能快速定位和修复
4. 文档生成:自动生成了完整的攻略指南

挑战

1. 上下文限制:长期开发需要多次对话
2. 创意局限:AI 更适合执行明确的技术任务
3. 调试过程:复杂 bug 需要人工介入

最佳实践

1. 明确需求:给 AI 详细的技术规格
2. 模块化开发:分阶段完成,便于管理
3. 版本控制:及时保存重要节点的代码
4. 测试验证:每个功能都要实际测试

📊 最终成果

- 代码行数:约 2000 行 TypeScript
- 文件大小:13.4MB (压缩后 9.3MB)
- 开发时间:约 3 天(断断续续)
- 功能完整度:95%以上

技术特性:
- ✅ 单 HTML 文件,无外部依赖
- ✅ 支持 iframe 嵌入
- ✅ 移动端适配
- ✅ 双语言支持
- ✅ 本地存储功能
- ✅ 响应式设计

🎮 体验地址: https://coldplaycanoodlersgame.com/coldplay-canoodlers-plus

游戏支持直接在浏览器中运行,也可以通过 iframe 嵌入到其他网站。

💭 总结

这次 AI 协作开发的经历让我深刻体会到:

1. AI 是优秀的编程助手:在明确需求的前提下,能够快速实现功能
2. 人机协作是趋势:发挥各自优势,效率远超单独开发
3. 技术门槛降低:即使不是游戏开发专家,也能做出不错的作品

对于 V2EX 的朋友们,如果你们也想尝试 AI 协作开发,建议:
- 选择熟悉的技术栈
- 准备详细的需求文档
- 分模块逐步实现
- 保持代码质量标准

🤔 讨论

想听听大家对 AI 协作开发的看法:
1. 你们有类似的 AI 协作经验吗?
2. 对于游戏开发,还有哪些可以优化的点?
3. 单 HTML 文件打包这种方式实用吗?
4. 如果有体验不好的或者有 bug ,欢迎提出!

期待和大家交流!

---
PS:
这个项目让我对 AI 的能力有了全新认识,Claude 在技术问题解决上的表现真的超出
预期。如果大家对具体的技术实现细节感兴趣,我可以开源部分代码供学习参考。

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

AI 协作开发 网页游戏 Claude AI Phaser 3 TypeScript
相关文章