前Meta研究工程师Caleb Leak在失业期间开发了一套名为"小狗氛围编程"的趣味系统,让他的宠物狗Momo通过敲击键盘生成随机输入,再借助AI工具Claude将这些乱码转化为可玩的游戏原型。这个看似玩笑的项目实则包含了一套完整的工程系统设计,涉及硬件搭建、行为训练和AI提示工程等多个技术领域。
核心创新点在于将随机输入与结构化输出相结合:Momo的键盘敲击作为创意种子,经过精心设计的AI提示词系统解读后,转化为具体的游戏设计元素。整个过程模拟了人类设计师的创意过程——从模糊概念到具体实现。
系统采用模块化设计,各组件通过标准协议连接:
关键软件组件采用Rust和Python开发:
rust复制// DogKeyboard核心过滤逻辑示例
fn filter_keypress(key: KeyEvent) -> Option<char> {
match key.code {
KeyCode::Char(c) if c.is_ascii_graphic() => Some(c),
_ => None
}
}
系统工作流程:
提示词采用"角色扮演+约束条件"的设计模式:
code复制你是一位天才游戏设计师的AI助手,设计师通过特殊密码传达创意。
你的任务:
1. 将看似随机的输入解读为游戏设计指令
2. 使用Godot 4.6和C#实现游戏
3. 必须包含:
- 可操作的主角
- 至少一个敌人/障碍
- 完整的控制方案
- 视觉反馈系统
Claude采用"邻近键位联想+视觉隐喻"的解码策略:
为确保游戏基本可玩性,设置了多重验证:
训练Momo的完整流程历时2周:
输入:"y7u8888888ftrg34BC"
解码路径:
最终生成:
项目结构:
code复制Assets/
└─ Textures/ # 自动生成的HLSL着色器
└─ Audio/ # AI合成的电子音乐
Scenes/
└─ Level1.tscn # 使用Godot的文本场景格式
Scripts/
└─ PlayerController.cs # 基于物理的运动系统
关键代码片段:
csharp复制// 弦乐器攻击逻辑
void _Process(double delta) {
if (Input.IsActionJustPressed("attack")) {
var beam = (AudioStreamPlayer)GetNode("Beam");
beam.PitchScale = GD.RandRange(0.8f, 1.2f);
beam.Play();
EmitSignal("BeamFired");
}
}
Godot引擎的优势体现:
问题1:AI生成的Shader编译失败
python复制def validate_shader(code):
try:
glsl_compiler.compile(code)
return True
except GLSLCompileError as e:
return str(e)
问题2:场景节点引用断裂
系统可改造为:
可借鉴的技术点:
实践建议:开发类似系统时,建议先从简单的2D游戏开始,逐步增加复杂度。关键是要建立可靠的验证机制,确保每次迭代都保持基本可玩性。
这个项目最值得借鉴的是其"创意漏斗"设计——将完全无序的输入,通过层层结构化处理,最终产出可用的作品。在实际开发中,可以尝试用类似的系统来处理头脑风暴结果,或将用户反馈转化为具体功能设计。