测试公告


本游戏采用opencode+deepseekV4pro设计,以python为核心进行编写。人为参与的部分主要是在游戏理念与设计风格的方面 。

实际上游戏开发到这个阶段花费了大大概6小时,tokens花费大概10元。这个效率让我对ai辅助制作html游戏有了新的看法。

后续可能考虑移植到godot,方便一些更好的美术设计。

西我困了睡会,先写这么多,让ai写写心得。


1.双引擎维持成本

这个项目最大的特点是两套代码、一套逻辑:Python(backend/engine/)和 JS 独立版(itch/)。同一个游戏状态类(GameState)要在 Python 和 JS 中各实现一遍,每个新功能都要改两处。

比如说刚才修改的bug——_checkCondition 的eval上下文问题,Python版有 _DictProxy 和 _FacCount,JS版却漏了。根源就是左侧的实现靠人工对齐,没有自动化同步机制。

建议:如果短期内不打算用codegen,至少把Python→JS的横向清单写进 DEVELOPMENT_PLAN.txt,每次改完引擎顺手勾。

2. itch 目录的定位模糊

itch/ 同时扮演三个角色:

  • PyInstaller exe 的资源内容(spec 中 datas=[('itch', 'itch')]
  • launcher.py 直接服务的静态站点
  • itch.io 套件直接上传的压缩包

这意味着 itch/ 里面的文件既能在浏览器直接打开(文件协议),又能通过 http.server 访问。比如 setInterval 在后台标签页可能被浏览器限制,而localStorage file:// 在下 不可靠。这些边界情况需要额外测试。

3. Python 到 JS 的语法陷阱

game_data.js 里有两处条件用的是Python的 and 而不是JS的 &&——这明显是“从Python eval 直接复制过来没改”的结果。此类陷阱在跨语言移植时极易发生:

PythonJS风险
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里,每次移植时对照。

4. 项目文档做得不错

SPECS.txtTASKS.txtPROGRESS.txtDEVELOPMENT_PLAN.txt 四个文件把设计、目标、细节、计划分得很清楚。尤其是 DEVELOPMENT_PLAN.txt 复选框+文件位置引用格式,很快定位代码。继续保持。

5.关于itch.io发布流程

launcher.py 是本地运行方案(压缩exe + 打开浏览器),itch/ 是网页发布方案。两者的区别是:

  • 本地exe版本:Python引擎(功能完整)+ WebSocket → 更新要重压缩
  • itch.io 版:纯 JS 引擎 → 更新只需上传 HTML/JS/CSS

如果将来功能稳定了,可以考虑把它 itch/ 作为唯一版本,Python 开源成一个任选的多个/存档服务器。减少双引擎维护。

Files

itch.zip Play in browser
17 days ago

Leave a comment

Log in with itch.io to leave a comment.