我本月发布了两款免费浏览器游戏(一种类似 Populous / Mega‑lo‑Mania 的神游戏,另一种 Jules Verne 风殖民地生存游戏),两款游戏都借助大量 AI 完成。我是一名长期程序员,主要在 C/C++/Python 中从事计算机视觉和机器学习,因此 JS/HTML/WebGPU 是全新领域。
所以我想分享我是如何完成这两款游戏的图形的,可能会对其他人有兴趣,也想听取关于 3D 的建议。
下面是资产管线,因为我在那里学到了最多。
精灵:不生成图片,AI 编写绘制代码
-
Megapop:每个单位和建筑都是小体素模型,通过 Python 工具渲染为精灵:等距投影、4 个旋转角度、共享调色板、用于团队颜色的掩码通道。80% 的实际体素模型都是由 Claude 自己设计的。
-
神秘岛屿:每个精灵都是通过代码绘制的。AI 编写直接绘制像素的函数,因此棕榈树或殖民者只是几十行数学代码,而不是 PNG。随后通过 Python 在 Blender 中渲染。
为什么要这样做:保持一致性(共享调色板、统一光照方向),只需改动一个数字即可调整整个タイルセット,代理人可以像迭代代码一样对艺术进行迭代:改动、渲染、观察、修复。
音频:Stable Audio + ComfyUI,封装在自建的 MCP 服务器
我写了一个小 MCP 服务器放在 ComfyUI 前面,让编码代理人可以直接请求声音,同时在开发游戏时使用:
-
generate_audio:用于单个 SFX、环境音和循环。速度快(8 步 LCM,几秒钟生成一个声音)。小型 Qwen 模型可以可选地将简短的想法转换为 Stable Audio 训练数据集的密集提示词格式。
-
compose_sfx:这是最大的突破。Stable Audio 擅长一次生成单个声音,但对场景不擅长,因此复杂效果被拆分为时间轴上的多层:爆炸 = 尖锐噼啪声 + 低沉爆炸声 + 碎片雨 + 远处尾音。所有层在一个 ComfyUI 作业中渲染,然后通过增益、平衡、淡入淡出和归一化混合。
-
mix_audio:本地时间轴混合用于 stems、循环和转场。
-
Music:用 Stable Audio 制作纯音乐,或使用 MiniMax Music 制作带有旁白的音乐(尽管我在提到的两款游戏中未使用它)。
结果:代理人说“神奇的声音应该是合唱高潮加在 0.4s 处的雷击声”,几秒钟后就在项目文件夹中得到混合好的 WAV 文件。
未成功 / 经验教训
- 直接生成图片的方法效果不佳,且大多数情况下难以实现(如带有窗口的建筑光照随时间变化等,纯代码实现会更轻松)。
3D
我正在尝试先用图像生成,再通过类似 Hunyuan3D 的工具创建模型(我目前正在做一个复古小球形模型)。它勉强可行,最终效果在渲染后缩小到低分辨率时大致可接受,但有没有更好的方法?其他人使用的更优流程是什么?
如果你想尝试,上述两款免费浏览器游戏在这里:
Megapop:https://waldtier.itch.io/megapop
神秘岛屿:Castaways:https://waldtier.itch.io/mysterious-island-castaways
评论 (0)