Posted May 07, 2026 by Anshone_Soo
本游戏采用opencode+deepseekV4pro设计,以python为核心进行编写。人为参与的部分主要是在游戏理念与设计风格的方面 。
实际上游戏开发到这个阶段花费了大大概6小时,tokens花费大概10元。这个效率让我对ai辅助制作html游戏有了新的看法。
后续可能考虑移植到godot,方便一些更好的美术设计。
西我困了睡会,先写这么多,让ai写写心得。
这个项目最大的特点是两套代码、一套逻辑:Python(backend/engine/)和 JS 独立版(itch/)。同一个游戏状态类(GameState)要在 Python 和 JS 中各实现一遍,每个新功能都要改两处。
比如说刚才修改的bug——_checkCondition 的eval上下文问题,Python版有 _DictProxy 和 _FacCount,JS版却漏了。根源就是左侧的实现靠人工对齐,没有自动化同步机制。
建议:如果短期内不打算用codegen,至少把Python→JS的横向清单写进 DEVELOPMENT_PLAN.txt,每次改完引擎顺手勾。
itch 目录的定位模糊itch/ 同时扮演三个角色:
spec 中 datas=[('itch', 'itch')])
launcher.py 直接服务的静态站点
这意味着 itch/ 里面的文件既能在浏览器直接打开(文件协议),又能通过 http.server 访问。比如 setInterval 在后台标签页可能被浏览器限制,而localStorage file:// 在下
不可靠。这些边界情况需要额外测试。
game_data.js 里有两处条件用的是Python的 and 而不是JS的 &&——这明显是“从Python eval 直接复制过来没改”的结果。此类陷阱在跨语言移植时极易发生:
| Python | JS | 风险 |
|---|---|---|
and / or
| && / ||
| eval 静默失败 |
dict.get(k, 0)
| obj[k] || 0
| 0 值判断差异 |
round(x, 4)
| Math.round(x*10000)/10000
| 浮点精度 |
"%s" % v
| `${v}`
| 字符串拼接 |
建议:写一个对比卡放在RESPONSE_FORMAT.txt里,每次移植时对照。
SPECS.txt、TASKS.txt、PROGRESS.txt、DEVELOPMENT_PLAN.txt 四个文件把设计、目标、细节、计划分得很清楚。尤其是 DEVELOPMENT_PLAN.txt 复选框+文件位置引用格式,很快定位代码。继续保持。
launcher.py 是本地运行方案(压缩exe + 打开浏览器),itch/ 是网页发布方案。两者的区别是:
如果将来功能稳定了,可以考虑把它 itch/ 作为唯一版本,Python 开源成一个任选的多个/存档服务器。减少双引擎维护。