1995年,我在IBM PC XT上首次体验《波斯王子》。三十年过去,其独特的逐帧动画、悬崖边缘的悬挂姿态以及闸门撞击声仍令人印象深刻。2012年,创作者乔丹·墨克纳(Jordan Mechner)公开了从3.5英寸软盘恢复的原版Apple II 6502汇编源代码。 出于对C#语言的偏好,我发起了一项实验:不阅读也不编辑代码,仅通过提示词指令,要求AI模型将该源代码移植至C#环境。我的唯一工作是测试运行结果并反馈错误。以下是基于不同顶级模型的实验记录。 第一轮:Claude Opus 4.6(2026年2月) 初始提示词要求利用存档关卡文件,用C#控制台实现6502汇编代码。经过两天运行,Opus 4.6生成了包含关卡编辑器及Raylib图形库版本的代码,能正确解析房间、图块及守卫位置,画面也近似Apple II原版。 然而,游戏手感严重失真。反馈显示画面混乱、角色移动错误甚至掉出地图。核心问题在于架构:AI将移动逻辑简化为图块跳跃,而原作是基于手绘动画帧的微位移驱动。 第二轮:OpenAI Codex(2026年3月) 尝试使用Codex修复上述C#移植版。它进行了表面微调,如锐化像素滤镜、处理透明背景及修正闸门碰撞体积。但底层引擎架构依然错误,王子仍会卡在错误位置。该模型未实际运行游戏,仅做了静态代码修饰。 第三轮:Claude Opus 5(2026年9月) 本轮引入新规则:编写技能让AI控制DOSBox启动原版游戏、发送按键并截图对比。指示Opus 5“与真实游戏对比,直至成功或天亮”。 Opus 5通宵工作后诊断出架构缺陷,围绕帧序列驱动理念重建引擎。它直接从PRINCE.EXE中读取真实数据,包括15个关卡的美术资源和动画表。通过搜索Apple II源码中识别出的字节模式,并在信任前用第二已知值确认,它成功提取数据且未侵犯版权。C#程序在运行时实时读取这些本地DOS副本数据。 次日清晨,获得可玩版本:王子的落体、转身、跳跃及蹲伏动作均伴随真实动画。通过观察截图,AI还修复了岩壁检测Bug。但关卡布局仍有细微偏差,AI通过逐一比对截图组件进行猜测性填充。 第四轮:Claude Opus 5.5(2026年9月):单次提示 面对Opus 5.5,仅给出一个提示:“角色能动但场景不对,请改进。” Opus 5.5采取了根本不同的策略。它并未肉眼调整,而是定位到由Dávid Nagy及princed.org社区在SDLPoP项目中记录的DOS版房间绘制例程,并将其直接移植为C#代码(DosRoomDrawer.cs)。 借助SDLPoP文档,AI解开了此前只能猜测的谜题:砖块图案并非随机,而是由房间坐标初始化随机数生成器决定;第一关起点闸门在数据中实为开启状态,下落触发隐藏按钮才导致关闭音效。 此外,Opus 5.5自行发现PRINCE.EXE经Microsoft EXEPACK压缩,编写了解压器以读取图块绘制表,并纠正了此前关于截图裁剪偏移及模板颜色的错误理论。经逐像素比对,第一关屏幕差异从8,429个像素降至2个(仅因火把火焰状态不同),出口门完全匹配。 尽管存在面向另一侧时精灵下沉几像素的Bug,但AI通过回溯验证移动逻辑一致性,定位并回滚了绘制错误。这是首次关卡视觉呈现真正还原了《波斯王子》。 经验总结 - Claude Opus 4.6:能读写汇编与C#,但架构选择错误且缺乏自检。 - OpenAI Codex:擅长微观修复,但未质疑基础架构,且未实际运行验证。 - Claude Opus 5:借助观测工具诊断架构问题,重建引擎并挖掘原始数据,产出首个可玩版本。 - Claude Opus 5.5:利用现有逆向工程知识(SDLPoP),移植绘制例程并逐像素验证。AI承认,若无SDLPoP指引,需多次会话反汇编16位x86代码,工作量巨大。 最大飞跃不仅源于模型智能提升,更在于赋予其观测原版游戏及自我测试的能力。从Opus 5开始,AI成为共同测试者。目前仍需完善守卫战斗、宫殿关卡及精确落地逻辑,后续将继续在新模型上重复此实验。 完整代码及会话历史已托管于GitHub:github.com/priyanr/PrinceOfPersia_C-Sharp_Port_By_AI 致谢与声明 本实验建立在以下开发者工作之上: - Jordan Mechner:创造《波斯王子》并公开Apple II源码。 - Dávid Nagy及princed.org社区:创建SDLPoP开源移植版。本项目中的DosRoomDrawer.cs系SDLPoP房间绘制代码的C#移植,遵循GNU GPL v3或更高版本许可。因此,整个项目同样以GPL-3.0-or-later协议发布。 - Fabien Sanglard:提供详尽的代码审查导览。 注:本项目不包含任何原始游戏数据,C#代码仅在运行时读取用户本地的DOS游戏副本。这是一个非商业粉丝项目,与育碧(Ubisoft)或Jordan Mechner无关,未获其认可。《波斯王子》为育碧娱乐公司商标。