晚上好,

在大约五个月的时间里,我开发了一款基于 Win32s 的 [非ogram(数字接龙)] 游戏,能在从 Windows 3.1 到 Windows 11 的所有系统上运行。我认为这是首款能在 Windows 3.1 上运行的非ogram 游戏,因为我没在网上找到任何先前的作品,如果你知道有类似的,我很乐意了解。

游戏可在 [它的 itch.io 页面] 上免费下载:https://cheeky-sneaky.itch.io/winono

源码托管在 [GitLab] 上:https://gitlab.com/cheeky-sneaky-group-public/winono

要玩这款游戏,你需要一台配备 PC 模拟器的电脑,例如 PCEm 或 86Box。你理论上可以使用虚拟机,但这些天在虚拟机中运行基于 DOS 的操作系统会比较麻烦。

WINONO 经过优化,能在最慢的 32 位 x86 处理器 — — i386SX/16 — — 上运行得“还可以”。它并不是很棒,但基本可以玩。

游戏以以下特质诱惑你:

  • 鼠标和钢琴的操作
  • 可以拖动适配任意尺寸的显示器(picture tube)
  • 一个吸引人的助手,教你玩(并且让你入睡)
  • 能逃避你的问题,稍后回来,变成更成熟的人,因为进度会保存
  • 面部是必须的
  • 不必要的秒表
  • 与自己或朋友在荣誉殿堂中竞争
  • 你不能打印
  • 定制的棋盘大小(最大 32×32,取决于显示器尺寸)以及裁剪
  • 绝不会超过你的软盘容量!

  • 会教你玩,但不会在 Windows 3.1 上运行,始终准时。

我希望这款游戏能在 Windows 3.1 上给你带来乐趣,并且你觉得它有趣。如果时间允许(以及如果有人真的在乎),我可能会录制一些关于它开发的视频。如果你有任何问题,随时提问!

我的开发角色

我是这款游戏的唯一开发者;开发主要在 2025 年 10 月的大部分时间进行,随后在 2026 年 4 月末到 9 月初之间继续。我使用了 AI,但主要是作为学习工具,而不是用来“ vibe code” WINONO 或制作资产。更多细节请参阅下一节。

在开发过程中,我走遍了很多“兔子洞”:

  • 为动态加载函数测试它们在运行时是否可用,
  • 重新创建不可用的函数或组件(例如常用控件的状态栏)作为备用方案,
  • 实验哪种顺序会加载本地化资源,
  • 为适应 Windows 3.1 的需求,对 TrueType 字体的内部结构进行创建和修改,
  • 这包括在 NT 4.0 上搭建 Cygwin(Windows 的 Unix 子系统),并安装非常旧的 FontForge 版本。
  • 通过预渲染尽可能多的内容,并实现简单的脏区跟踪来优化渲染,
  • 编写一个程序生成并测试 Windows 元文件(WMF;Windows 3.1 的矢量图形格式),因为现有的矢量图形程序表现不佳,
  • 编写一个(不稳定的)Win16 实用程序来监控内存和 GDI 句柄使用情况。

总体而言,我对 Win32 编程充满信心,尤其是因为我在编写开发辅助工具时有大量机会加以检验。

好吧,但你是自己写的,还是 ChatGPT 写的?

我想坦诚地说,我在开发过程中使用了 ChatGPT,但 并不是 用它来“ vibe code” WINONO。所有资产都是人工制作的(虽然简陋),每一行代码都是我写的(好或不好)。事实上,基于我的经历,我很有信心说 ChatGPT 目前仍无法生成像这样一个程序,至少现在不是这样。一方面,旧版 Windows 有很多文档不完善的细节;另一方面,AI 有时会假设某些函数在旧版 Windows 中不可用,但实际上它们是存在的。

我把 AI 当作自然语言搜索引擎,或是一个即时回复、无限耐心的论坛,用来学习 Win32 API 并将所学应用于自行实现游戏。具体包括:

  • 询问如何调用签名复杂的函数,因为我不理解参考文档,
  • 询问我所要做的事情是否已有对应的 Win32 API,这很有帮助,因为一些 Win32 函数命名或描述得不够直观。例如:
  • 保存设置到 INI 文件的函数叫 WritePrivateProfileString(),
  • 用来绘制类似按钮的 3D 边框的函数叫 DrawEdge(),其文档仅说明“绘制矩形的一个或多个边”。
  • 向它描述我想实现的功能,并让它提出异议或改进建议,以免重复造轮子。

随着我逐步进阶、提升对 Win32 编程的整体水平,我的问题变得越来越具体且针对旧版 Windows,ChatGPT 的帮助逐渐减弱,因为其训练数据中缺乏对这些细节的了解。它常常把猜测当作事实,给我提供误导,甚至直接撒谎。因此,我 increasingly 依赖于随 Visual Studio / Visual C++ 附带的极佳参考文档。

如果有人感兴趣(似乎),我在这 [WinWorldPC 论坛] 上写了更详细的经历记录:https://forum.winworldpc.com/discussion/16264/winono-a-nonogram-game-for-windows-3-1-and-up#latest。

总之,这个项目很有趣,我学到了很多,所以不算完全失败。

晚安!