WWW.YOUINFO.SITE
标签聚合 麻将

/tag/麻将

v2ex · 2026-05-28 02:21:17+08:00 · tech

学习项目. 单视角 RGB 1080p@25fps, 洗牌 60-120s, 求洗牌前 → 洗牌后 40 张牌的位置映射. 数据特点 40 张牌外观近似, 无 re-ID 特征, 背面同色 手覆盖 60-80% 帧, 单牌可完全遮挡 1-3s 频繁翻面, 严格目标数上限 = 40 已试 + 失败 YOLO11-Seg 检测 ✓ 静态准, 密集叠加漏 ByteTrack ✗ 60s 累积 1942 ID (理应 40), 卡尔曼+IoU 假设被遮挡彻底破坏 匈牙利 + lost-recovery 跨段匹配 ✗ 中段 cost matrix 退化为噪声 人工逐帧 fallback ✓ 但 60 min/副, 成本太高 在看的方案 SAM 2 video predictor / Cutie / DAM / MASA / CoTracker3 / TAPIR / HaMeR (3D 手部 pose) / ProPainter (擦手部) 求建议 玩过 SAM 2 / Cutie / CoTracker3 实战, 或做过 surgical instrument tracking / 同队服球员跟踪 / shell game 视觉问题的同行 — 哪条路在"40 个相似目标 + 持续遮挡"这个 regime 最稳? 论文 / 代码 / 工程踩坑都欢迎. 评论或私信均可.

v2ex · 2026-05-28 02:21:17+08:00 · tech

学习项目. 单视角 RGB 1080p@25fps, 洗牌 60-120s, 求洗牌前 → 洗牌后 40 张牌的位置映射. 数据特点 40 张牌外观近似, 无 re-ID 特征, 背面同色 手覆盖 60-80% 帧, 单牌可完全遮挡 1-3s 频繁翻面, 严格目标数上限 = 40 已试 + 失败 YOLO11-Seg 检测 ✓ 静态准, 密集叠加漏 ByteTrack ✗ 60s 累积 1942 ID (理应 40), 卡尔曼+IoU 假设被遮挡彻底破坏 匈牙利 + lost-recovery 跨段匹配 ✗ 中段 cost matrix 退化为噪声 人工逐帧 fallback ✓ 但 60 min/副, 成本太高 在看的方案 SAM 2 video predictor / Cutie / DAM / MASA / CoTracker3 / TAPIR / HaMeR (3D 手部 pose) / ProPainter (擦手部) 求建议 玩过 SAM 2 / Cutie / CoTracker3 实战, 或做过 surgical instrument tracking / 同队服球员跟踪 / shell game 视觉问题的同行 — 哪条路在"40 个相似目标 + 持续遮挡"这个 regime 最稳? 论文 / 代码 / 工程踩坑都欢迎. 评论或私信均可.

v2ex · 2026-05-28 01:21:17+08:00 · tech

学习项目. 单视角 RGB 1080p@25fps, 洗牌 60-120s, 求洗牌前 → 洗牌后 40 张牌的位置映射. 数据特点 40 张牌外观近似, 无 re-ID 特征, 背面同色 手覆盖 60-80% 帧, 单牌可完全遮挡 1-3s 频繁翻面, 严格目标数上限 = 40 已试 + 失败 YOLO11-Seg 检测 ✓ 静态准, 密集叠加漏 ByteTrack ✗ 60s 累积 1942 ID (理应 40), 卡尔曼+IoU 假设被遮挡彻底破坏 匈牙利 + lost-recovery 跨段匹配 ✗ 中段 cost matrix 退化为噪声 人工逐帧 fallback ✓ 但 60 min/副, 成本太高 在看的方案 SAM 2 video predictor / Cutie / DAM / MASA / CoTracker3 / TAPIR / HaMeR (3D 手部 pose) / ProPainter (擦手部) 求建议 玩过 SAM 2 / Cutie / CoTracker3 实战, 或做过 surgical instrument tracking / 同队服球员跟踪 / shell game 视觉问题的同行 — 哪条路在"40 个相似目标 + 持续遮挡"这个 regime 最稳? 论文 / 代码 / 工程踩坑都欢迎. 评论或私信均可.

v2ex · 2026-05-28 00:21:17+08:00 · tech

学习项目. 单视角 RGB 1080p@25fps, 洗牌 60-120s, 求洗牌前 → 洗牌后 40 张牌的位置映射. 数据特点 40 张牌外观近似, 无 re-ID 特征, 背面同色 手覆盖 60-80% 帧, 单牌可完全遮挡 1-3s 频繁翻面, 严格目标数上限 = 40 已试 + 失败 YOLO11-Seg 检测 ✓ 静态准, 密集叠加漏 ByteTrack ✗ 60s 累积 1942 ID (理应 40), 卡尔曼+IoU 假设被遮挡彻底破坏 匈牙利 + lost-recovery 跨段匹配 ✗ 中段 cost matrix 退化为噪声 人工逐帧 fallback ✓ 但 60 min/副, 成本太高 在看的方案 SAM 2 video predictor / Cutie / DAM / MASA / CoTracker3 / TAPIR / HaMeR (3D 手部 pose) / ProPainter (擦手部) 求建议 玩过 SAM 2 / Cutie / CoTracker3 实战, 或做过 surgical instrument tracking / 同队服球员跟踪 / shell game 视觉问题的同行 — 哪条路在"40 个相似目标 + 持续遮挡"这个 regime 最稳? 论文 / 代码 / 工程踩坑都欢迎. 评论或私信均可.

v2ex · 2026-05-27 21:47:16+08:00 · tech

学习项目. 单视角 RGB 1080p@25fps, 洗牌 60-120s, 求洗牌前 → 洗牌后 40 张牌的位置映射. 数据特点 40 张牌外观近似, 无 re-ID 特征, 背面同色 手覆盖 60-80% 帧, 单牌可完全遮挡 1-3s 频繁翻面, 严格目标数上限 = 40 已试 + 失败 YOLO11-Seg 检测 ✓ 静态准, 密集叠加漏 ByteTrack ✗ 60s 累积 1942 ID (理应 40), 卡尔曼+IoU 假设被遮挡彻底破坏 匈牙利 + lost-recovery 跨段匹配 ✗ 中段 cost matrix 退化为噪声 人工逐帧 fallback ✓ 但 60 min/副, 成本太高 在看的方案 SAM 2 video predictor / Cutie / DAM / MASA / CoTracker3 / TAPIR / HaMeR (3D 手部 pose) / ProPainter (擦手部) 求建议 玩过 SAM 2 / Cutie / CoTracker3 实战, 或做过 surgical instrument tracking / 同队服球员跟踪 / shell game 视觉问题的同行 — 哪条路在"40 个相似目标 + 持续遮挡"这个 regime 最稳? 论文 / 代码 / 工程踩坑都欢迎. 评论或私信均可.

v2ex · 2026-05-27 21:47:16+08:00 · tech

学习项目. 单视角 RGB 1080p@25fps, 洗牌 60-120s, 求洗牌前 → 洗牌后 40 张牌的位置映射. 数据特点 40 张牌外观近似, 无 re-ID 特征, 背面同色 手覆盖 60-80% 帧, 单牌可完全遮挡 1-3s 频繁翻面, 严格目标数上限 = 40 已试 + 失败 YOLO11-Seg 检测 ✓ 静态准, 密集叠加漏 ByteTrack ✗ 60s 累积 1942 ID (理应 40), 卡尔曼+IoU 假设被遮挡彻底破坏 匈牙利 + lost-recovery 跨段匹配 ✗ 中段 cost matrix 退化为噪声 人工逐帧 fallback ✓ 但 60 min/副, 成本太高 在看的方案 SAM 2 video predictor / Cutie / DAM / MASA / CoTracker3 / TAPIR / HaMeR (3D 手部 pose) / ProPainter (擦手部) 求建议 玩过 SAM 2 / Cutie / CoTracker3 实战, 或做过 surgical instrument tracking / 同队服球员跟踪 / shell game 视觉问题的同行 — 哪条路在"40 个相似目标 + 持续遮挡"这个 regime 最稳? 论文 / 代码 / 工程踩坑都欢迎. 评论或私信均可.

v2ex · 2026-05-27 21:37:08+08:00 · tech

学习项目. 单视角 RGB 1080p@25fps, 洗牌 60-120s, 求洗牌前 → 洗牌后 40 张牌的位置映射. 数据特点 40 张牌外观近似, 无 re-ID 特征, 背面同色 手覆盖 60-80% 帧, 单牌可完全遮挡 1-3s 频繁翻面, 严格目标数上限 = 40 已试 + 失败 YOLO11-Seg 检测 ✓ 静态准, 密集叠加漏 ByteTrack ✗ 60s 累积 1942 ID (理应 40), 卡尔曼+IoU 假设被遮挡彻底破坏 匈牙利 + lost-recovery 跨段匹配 ✗ 中段 cost matrix 退化为噪声 人工逐帧 fallback ✓ 但 60 min/副, 成本太高 在看的方案 SAM 2 video predictor / Cutie / DAM / MASA / CoTracker3 / TAPIR / HaMeR (3D 手部 pose) / ProPainter (擦手部) 求建议 玩过 SAM 2 / Cutie / CoTracker3 实战, 或做过 surgical instrument tracking / 同队服球员跟踪 / shell game 视觉问题的同行 — 哪条路在"40 个相似目标 + 持续遮挡"这个 regime 最稳? 论文 / 代码 / 工程踩坑都欢迎. 评论或私信均可.

v2ex · 2026-05-27 21:24:46+08:00 · tech

学习项目. 单视角 RGB 1080p@25fps, 洗牌 60-120s, 求洗牌前 → 洗牌后 40 张牌的位置映射. 数据特点 40 张牌外观近似, 无 re-ID 特征, 背面同色 手覆盖 60-80% 帧, 单牌可完全遮挡 1-3s 频繁翻面, 严格目标数上限 = 40 已试 + 失败 YOLO11-Seg 检测 ✓ 静态准, 密集叠加漏 ByteTrack ✗ 60s 累积 1942 ID (理应 40), 卡尔曼+IoU 假设被遮挡彻底破坏 匈牙利 + lost-recovery 跨段匹配 ✗ 中段 cost matrix 退化为噪声 人工逐帧 fallback ✓ 但 60 min/副, 成本太高 在看的方案 SAM 2 video predictor / Cutie / DAM / MASA / CoTracker3 / TAPIR / HaMeR (3D 手部 pose) / ProPainter (擦手部) 求建议 玩过 SAM 2 / Cutie / CoTracker3 实战, 或做过 surgical instrument tracking / 同队服球员跟踪 / shell game 视觉问题的同行 — 哪条路在"40 个相似目标 + 持续遮挡"这个 regime 最稳? 论文 / 代码 / 工程踩坑都欢迎. 评论或私信均可.

v2ex · 2026-05-27 21:17:15+08:00 · tech

学习项目. 单视角 RGB 1080p@25fps, 洗牌 60-120s, 求洗牌前 → 洗牌后 40 张牌的位置映射. 数据特点 40 张牌外观近似, 无 re-ID 特征, 背面同色 手覆盖 60-80% 帧, 单牌可完全遮挡 1-3s 频繁翻面, 严格目标数上限 = 40 已试 + 失败 YOLO11-Seg 检测 ✓ 静态准, 密集叠加漏 ByteTrack ✗ 60s 累积 1942 ID (理应 40), 卡尔曼+IoU 假设被遮挡彻底破坏 匈牙利 + lost-recovery 跨段匹配 ✗ 中段 cost matrix 退化为噪声 人工逐帧 fallback ✓ 但 60 min/副, 成本太高 在看的方案 SAM 2 video predictor / Cutie / DAM / MASA / CoTracker3 / TAPIR / HaMeR (3D 手部 pose) / ProPainter (擦手部) 求建议 玩过 SAM 2 / Cutie / CoTracker3 实战, 或做过 surgical instrument tracking / 同队服球员跟踪 / shell game 视觉问题的同行 — 哪条路在"40 个相似目标 + 持续遮挡"这个 regime 最稳? 论文 / 代码 / 工程踩坑都欢迎. 评论或私信均可.

v2ex · 2026-05-27 20:55:23+08:00 · tech

学习项目. 单视角 RGB 1080p@25fps, 洗牌 60-120s, 求洗牌前 → 洗牌后 40 张牌的位置映射. 数据特点 40 张牌外观近似, 无 re-ID 特征, 背面同色 手覆盖 60-80% 帧, 单牌可完全遮挡 1-3s 频繁翻面, 严格目标数上限 = 40 已试 + 失败 YOLO11-Seg 检测 ✓ 静态准, 密集叠加漏 ByteTrack ✗ 60s 累积 1942 ID (理应 40), 卡尔曼+IoU 假设被遮挡彻底破坏 匈牙利 + lost-recovery 跨段匹配 ✗ 中段 cost matrix 退化为噪声 人工逐帧 fallback ✓ 但 60 min/副, 成本太高 在看的方案 SAM 2 video predictor / Cutie / DAM / MASA / CoTracker3 / TAPIR / HaMeR (3D 手部 pose) / ProPainter (擦手部) 求建议 玩过 SAM 2 / Cutie / CoTracker3 实战, 或做过 surgical instrument tracking / 同队服球员跟踪 / shell game 视觉问题的同行 — 哪条路在"40 个相似目标 + 持续遮挡"这个 regime 最稳? 论文 / 代码 / 工程踩坑都欢迎. 评论或私信均可.

LinuxDo 最新话题 · 2026-05-23 17:24:49+08:00 · tech

本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容: 我的帖子已经打上 开源推广 标签: 是 我的开源项目完整开源,无未开源部分: 是 我的开源项目已链接认可 LINUX DO 社区: 是 我帖子内的项目介绍,AI生成、润色内容部分已截图发出: 是 以上选择我承诺是永久有效的,接受社区和佬友监督: 是 以下为项目介绍正文内容,AI生成、润色内容已使用截图方式发出 github.com GitHub - priority3/majiang-ex: for majiang exercise for majiang exercise 川麻(四川麻将)以其独特的"缺一门"规则和紧张刺激的对局节奏,深受广大麻将爱好者喜爱。但想要打好川麻,光靠实战还不够——你需要一个随时可以练习的工具。 为什么需要练习? 川麻的核心在于快速判断手牌结构、精准选择缺门、以及高效的出牌策略。新手常常面临这些困惑: 手里 13 张牌,到底该缺哪一门? 听牌了,但听的牌型对不对? 时间紧迫时,出牌速度跟不上节奏 传统的"边打边学"方式效率太低,而一个专门的练习工具可以让你在几分钟内快速提升。 四种练习模式 练习模式 自由练习,没有时间限制。随机发牌后,你可以反复思考、尝试不同的出牌策略,熟悉牌型结构和听牌判断。 竞速模式 30 秒限时挑战!测试你的出牌速度和反应能力。适合已经有一定基础的玩家,锻炼实战中的快速决策能力。 听牌模式 系统自动分析当前手牌,告诉你哪些牌能胡、听什么牌。帮助你理解听牌逻辑,避免"听错了"的尴尬。 牌型识别 通过练习识别各种牌型组合,加深对川麻将型规则的理解。 特点 缺一门规则 :完全按照川麻标准,只用万、条、筒三门牌 自动排序 :手牌按万、条、筒自动整理,一目了然 响应式设计 :手机、平板、电脑都能用,随时随地练习 成就系统 :完成特定目标解锁成就,让练习更有动力 快速开始 访问 majiang.razet.me 即可开始练习,无需安装,打开浏览器就能用。 纯vibe的 欢迎佬们建议 star、pr;目前只有川麻;后续待优化~ 5 个帖子 - 5 位参与者 阅读完整话题

v2ex · 2026-05-23 14:49:50+08:00 · tech

各位佬,大家好。 最近把第一款 iOS 小游戏上架了,叫 Sumi Mahjong Solitaire 。中文我自己叫它「禅艺麻将 / 水墨连连看」。它不是四人麻将,是麻将牌面的连连看 / Mahjong Solitaire:点两张相同的自由牌,如果能连起来就消掉。 App Store: https://apps.apple.com/us/app/sumi-mahjong-solitaire/id6770823912?uo=4 这次做它其实不是想一上来做一个特别大的游戏,而是想完整跑一遍 iPhone 小游戏从开发、性能优化、内购、审核到上架的流程。因为是第一款游戏,我刻意没有选特别大的项目,也没有用 Unity 、SpriteKit 、Metal 或其他游戏框架,主实现就是 Swift / SwiftUI / SwiftData / StoreKit 2 ,加一些 Apple 系统框架自己硬写。 做之前觉得「麻将连连看」规则很简单,做完才发现游戏里的简单经常是假象。 比如牌面资源层是完整 144 张麻将牌,但手机竖屏上如果一味塞满,触控会小、画面会挤、玩家也更容易疲劳。后来默认局面反而往更舒服的牌数调,把精力放在可消对子数量、布局密度、死局重排和提示可信度上。 算法这块也比我想象中有意思。不能只是随机撒牌,因为很容易开局就无聊,或者中途卡死。最后做法更像「约束下的随机」:布局要满足堆叠和遮挡规则,开局要有足够但不过量的可选对子,还要用 Solver 去验证能不能继续玩。一个看起来很轻的小游戏,最后还是会回到核心算法和手感调参。 视觉和性能也踩了不少坑。最早我用代码实时画牌体、厚度、阴影和牌面,效果可控,但游戏里牌一多,任何一处重复绘制都会开始变贵。后面就上了烘焙流程:牌面先按图集裁切,再把代码画出来的牌体、厚度、材质烘成完整 PNG ,运行时直接用图片,帧率和稳定性会舒服很多。 音效和一些小特效也基本是自己做的。消除粒子、碰撞感、落叶飘动这些不是接现成物理引擎,而是用曲线、随机数和一些公式去调。落叶一开始只是想做氛围,后来发现它随着时间落下来会轻微遮挡棋盘,反而变成一种自然的难度;所以游戏里保留了扫叶次数,让它既是装饰也是一点玩法压力。 当前功能大概是: 无广告、无账号、无第三方分析 SDK 离线可玩,本地保存进度和设置 水墨主题免费,核心玩法不锁 提示、撤销、洗牌、落叶清扫 背景音乐、音效和触觉反馈可开关 一个可选内购:一次性解锁全部高级主题,不是订阅 也坦白说现在还有不少可以继续打磨的地方: 玩法平衡还可以继续调,不同人对「太简单 / 太难」的阈值差很多 牌面、落叶、粒子这些视觉效果在不同 iPhone 尺寸上还值得继续看 SwiftUI 做游戏挺有意思,但动画和性能边界需要一直盯 这个 App 更像一个安静的小棋盘,不是那种有闯关、体力、排行榜、活动弹窗的手游 截图放两张,图片放在 GitHub Pages 上: 主玩法截图: https://hooosberg.github.io/Sumi-Mahjong/posters/zh-Hans/01.webp 主题截图: https://hooosberg.github.io/Sumi-Mahjong/posters/zh-Hans/03.webp 这次放 50 个内购码,想换一些真实反馈。 注意:下面这些是 Unlock All Themes 的内购 Offer Code ,不是 App 下载码。这个坑我之前在另一个 App 上踩过一次,苹果后台把外层 Promo Codes 和内购 Offer Codes 分得特别绕,真的很容易点错。这次是在 In-App Purchases 里的内购商品下面生成的。 兑换方式: iPhone 打开 App Store 点右上角头像 选择「兑换礼品卡或代码」 粘贴下面任意一个兑换码 如果兑换成功,麻烦回复一下用了哪个编号,方便后面的人少试重复码。 01. FW8NR6KMT4YY4WJT7W 02. TEXK4A63A4FKRH6F3N 03. FPKJAWXJX368KWMKYK 04. 66M4KAA4HJT8TMP7FJ 05. TNP7ERJWXPRN878K33 06. N7HW4PWXW3NMFJWKLA 07. YEKXELENPMFYA34K4Y 08. W8RFHXN7R7AK4LRMEE 09. EJKHRTYYF7FW6T4E4N 10. T8743LLPNNFW7X3HR8 11. 67LN47348M6MW6R6EK 12. NWK4NT6JAEHNF347RP 13. XNEL8MMYKFTLEYJRF8 14. WE8EYK7HE6HE3WLPXY 15. 6E47AKXPJM3HRAMFAH 16. HEMJ67E78RL8XX8N8K 17. KF3EWEX33JWAN7FK6X 18. T7RXMWWEPMEAH4EL67 19. 3LPPR3LAWJJ7YE43RW 20. XKLL63EJPTA8PJFW33 21. 6AT7NEY6HX3KW3TLXJ 22. L8HY7HE3ALAXW8TLWF 23. PH3A8WJJHLTW3X6HKK 24. MTE4KA8736TNXFN4L3 25. E846MJMLNA8M7WKHTP 26. NTT36RTJA6E34WLA4M 27. HYJAFXTEYFRF76KH7T 28. FJJA63NNPEF8MH6Y3A 29. L6N7JHKFM8Y6JNKT4L 30. PPL8XANNRMJKP4RFEE 31. M4JF3YHMKAXK8JKRN6 32. 6J7RE7HJYF3E68F733 33. LNE8NXM86XMWFP6X8F 34. T67NJM33K37W3RPNME 35. LHRXWHFLKJLAKPKTLE 36. AL4EETX6N6KK7E3M63 37. KLFH7P8X8KANH7WH6R 38. WTTAH84LA3XRWWLT3J 39. HK6YAH6E6MLPXH6XFL 40. 46HM4JF3K6AJ83T3PL 41. AHNJH8KN7FMWW4EKYP 42. LAHKY84HE7MH6HFJFY 43. JHYYWY6RPPRRHJKR46 44. RHKFR67KKH78PLKAMM 45. NRX3MTMLM8Y7PK8A3F 46. E8TN3XXJ3FMRXEXHK4 47. 34Y4HNAWLH3ENPM3P8 48. J8NYRFF7TMTMP8RPLN 49. K4WPPPE8JPRRY3ENWP 50. AYAX6MLJP776HT3FHN 特别想听大家吐槽: 玩法是不是太简单 / 太难 牌面和主题有没有看不清的地方 落叶到底是有趣,还是烦人 SwiftUI 写小游戏这条路有没有你们觉得很蠢或很妙的地方 谢谢各位佬。

v2ex · 2026-05-23 14:49:50+08:00 · tech

各位佬,大家好。 最近把第一款 iOS 小游戏上架了,叫 Sumi Mahjong Solitaire 。中文我自己叫它「禅艺麻将 / 水墨连连看」。它不是四人麻将,是麻将牌面的连连看 / Mahjong Solitaire:点两张相同的自由牌,如果能连起来就消掉。 App Store: https://apps.apple.com/us/app/sumi-mahjong-solitaire/id6770823912?uo=4 这次做它其实不是想一上来做一个特别大的游戏,而是想完整跑一遍 iPhone 小游戏从开发、性能优化、内购、审核到上架的流程。因为是第一款游戏,我刻意没有选特别大的项目,也没有用 Unity 、SpriteKit 、Metal 或其他游戏框架,主实现就是 Swift / SwiftUI / SwiftData / StoreKit 2 ,加一些 Apple 系统框架自己硬写。 做之前觉得「麻将连连看」规则很简单,做完才发现游戏里的简单经常是假象。 比如牌面资源层是完整 144 张麻将牌,但手机竖屏上如果一味塞满,触控会小、画面会挤、玩家也更容易疲劳。后来默认局面反而往更舒服的牌数调,把精力放在可消对子数量、布局密度、死局重排和提示可信度上。 算法这块也比我想象中有意思。不能只是随机撒牌,因为很容易开局就无聊,或者中途卡死。最后做法更像「约束下的随机」:布局要满足堆叠和遮挡规则,开局要有足够但不过量的可选对子,还要用 Solver 去验证能不能继续玩。一个看起来很轻的小游戏,最后还是会回到核心算法和手感调参。 视觉和性能也踩了不少坑。最早我用代码实时画牌体、厚度、阴影和牌面,效果可控,但游戏里牌一多,任何一处重复绘制都会开始变贵。后面就上了烘焙流程:牌面先按图集裁切,再把代码画出来的牌体、厚度、材质烘成完整 PNG ,运行时直接用图片,帧率和稳定性会舒服很多。 音效和一些小特效也基本是自己做的。消除粒子、碰撞感、落叶飘动这些不是接现成物理引擎,而是用曲线、随机数和一些公式去调。落叶一开始只是想做氛围,后来发现它随着时间落下来会轻微遮挡棋盘,反而变成一种自然的难度;所以游戏里保留了扫叶次数,让它既是装饰也是一点玩法压力。 当前功能大概是: 无广告、无账号、无第三方分析 SDK 离线可玩,本地保存进度和设置 水墨主题免费,核心玩法不锁 提示、撤销、洗牌、落叶清扫 背景音乐、音效和触觉反馈可开关 一个可选内购:一次性解锁全部高级主题,不是订阅 也坦白说现在还有不少可以继续打磨的地方: 玩法平衡还可以继续调,不同人对「太简单 / 太难」的阈值差很多 牌面、落叶、粒子这些视觉效果在不同 iPhone 尺寸上还值得继续看 SwiftUI 做游戏挺有意思,但动画和性能边界需要一直盯 这个 App 更像一个安静的小棋盘,不是那种有闯关、体力、排行榜、活动弹窗的手游 截图放两张,图片放在 GitHub Pages 上: 主玩法截图: https://hooosberg.github.io/Sumi-Mahjong/posters/zh-Hans/01.webp 主题截图: https://hooosberg.github.io/Sumi-Mahjong/posters/zh-Hans/03.webp 这次放 50 个内购码,想换一些真实反馈。 注意:下面这些是 Unlock All Themes 的内购 Offer Code ,不是 App 下载码。这个坑我之前在另一个 App 上踩过一次,苹果后台把外层 Promo Codes 和内购 Offer Codes 分得特别绕,真的很容易点错。这次是在 In-App Purchases 里的内购商品下面生成的。 兑换方式: iPhone 打开 App Store 点右上角头像 选择「兑换礼品卡或代码」 粘贴下面任意一个兑换码 如果兑换成功,麻烦回复一下用了哪个编号,方便后面的人少试重复码。 01. FW8NR6KMT4YY4WJT7W 02. TEXK4A63A4FKRH6F3N 03. FPKJAWXJX368KWMKYK 04. 66M4KAA4HJT8TMP7FJ 05. TNP7ERJWXPRN878K33 06. N7HW4PWXW3NMFJWKLA 07. YEKXELENPMFYA34K4Y 08. W8RFHXN7R7AK4LRMEE 09. EJKHRTYYF7FW6T4E4N 10. T8743LLPNNFW7X3HR8 11. 67LN47348M6MW6R6EK 12. NWK4NT6JAEHNF347RP 13. XNEL8MMYKFTLEYJRF8 14. WE8EYK7HE6HE3WLPXY 15. 6E47AKXPJM3HRAMFAH 16. HEMJ67E78RL8XX8N8K 17. KF3EWEX33JWAN7FK6X 18. T7RXMWWEPMEAH4EL67 19. 3LPPR3LAWJJ7YE43RW 20. XKLL63EJPTA8PJFW33 21. 6AT7NEY6HX3KW3TLXJ 22. L8HY7HE3ALAXW8TLWF 23. PH3A8WJJHLTW3X6HKK 24. MTE4KA8736TNXFN4L3 25. E846MJMLNA8M7WKHTP 26. NTT36RTJA6E34WLA4M 27. HYJAFXTEYFRF76KH7T 28. FJJA63NNPEF8MH6Y3A 29. L6N7JHKFM8Y6JNKT4L 30. PPL8XANNRMJKP4RFEE 31. M4JF3YHMKAXK8JKRN6 32. 6J7RE7HJYF3E68F733 33. LNE8NXM86XMWFP6X8F 34. T67NJM33K37W3RPNME 35. LHRXWHFLKJLAKPKTLE 36. AL4EETX6N6KK7E3M63 37. KLFH7P8X8KANH7WH6R 38. WTTAH84LA3XRWWLT3J 39. HK6YAH6E6MLPXH6XFL 40. 46HM4JF3K6AJ83T3PL 41. AHNJH8KN7FMWW4EKYP 42. LAHKY84HE7MH6HFJFY 43. JHYYWY6RPPRRHJKR46 44. RHKFR67KKH78PLKAMM 45. NRX3MTMLM8Y7PK8A3F 46. E8TN3XXJ3FMRXEXHK4 47. 34Y4HNAWLH3ENPM3P8 48. J8NYRFF7TMTMP8RPLN 49. K4WPPPE8JPRRY3ENWP 50. AYAX6MLJP776HT3FHN 特别想听大家吐槽: 玩法是不是太简单 / 太难 牌面和主题有没有看不清的地方 落叶到底是有趣,还是烦人 SwiftUI 写小游戏这条路有没有你们觉得很蠢或很妙的地方 谢谢各位佬。

v2ex · 2026-05-23 14:29:30+08:00 · tech

各位佬,大家好。 最近把第一款 iOS 小游戏上架了,叫 Sumi Mahjong Solitaire 。中文我自己叫它「禅艺麻将 / 水墨连连看」。它不是四人麻将,是麻将牌面的连连看 / Mahjong Solitaire:点两张相同的自由牌,如果能连起来就消掉。 App Store: https://apps.apple.com/us/app/sumi-mahjong-solitaire/id6770823912?uo=4 这次做它其实不是想一上来做一个特别大的游戏,而是想完整跑一遍 iPhone 小游戏从开发、性能优化、内购、审核到上架的流程。因为是第一款游戏,我刻意没有选特别大的项目,也没有用 Unity 、SpriteKit 、Metal 或其他游戏框架,主实现就是 Swift / SwiftUI / SwiftData / StoreKit 2 ,加一些 Apple 系统框架自己硬写。 做之前觉得「麻将连连看」规则很简单,做完才发现游戏里的简单经常是假象。 比如牌面资源层是完整 144 张麻将牌,但手机竖屏上如果一味塞满,触控会小、画面会挤、玩家也更容易疲劳。后来默认局面反而往更舒服的牌数调,把精力放在可消对子数量、布局密度、死局重排和提示可信度上。 算法这块也比我想象中有意思。不能只是随机撒牌,因为很容易开局就无聊,或者中途卡死。最后做法更像「约束下的随机」:布局要满足堆叠和遮挡规则,开局要有足够但不过量的可选对子,还要用 Solver 去验证能不能继续玩。一个看起来很轻的小游戏,最后还是会回到核心算法和手感调参。 视觉和性能也踩了不少坑。最早我用代码实时画牌体、厚度、阴影和牌面,效果可控,但游戏里牌一多,任何一处重复绘制都会开始变贵。后面就上了烘焙流程:牌面先按图集裁切,再把代码画出来的牌体、厚度、材质烘成完整 PNG ,运行时直接用图片,帧率和稳定性会舒服很多。 音效和一些小特效也基本是自己做的。消除粒子、碰撞感、落叶飘动这些不是接现成物理引擎,而是用曲线、随机数和一些公式去调。落叶一开始只是想做氛围,后来发现它随着时间落下来会轻微遮挡棋盘,反而变成一种自然的难度;所以游戏里保留了扫叶次数,让它既是装饰也是一点玩法压力。 当前功能大概是: 无广告、无账号、无第三方分析 SDK 离线可玩,本地保存进度和设置 水墨主题免费,核心玩法不锁 提示、撤销、洗牌、落叶清扫 背景音乐、音效和触觉反馈可开关 一个可选内购:一次性解锁全部高级主题,不是订阅 也坦白说现在还有不少可以继续打磨的地方: 玩法平衡还可以继续调,不同人对「太简单 / 太难」的阈值差很多 牌面、落叶、粒子这些视觉效果在不同 iPhone 尺寸上还值得继续看 SwiftUI 做游戏挺有意思,但动画和性能边界需要一直盯 这个 App 更像一个安静的小棋盘,不是那种有闯关、体力、排行榜、活动弹窗的手游 截图放两张,图片放在 GitHub Pages 上: 主玩法截图: https://hooosberg.github.io/Sumi-Mahjong/posters/zh-Hans/01.webp 主题截图: https://hooosberg.github.io/Sumi-Mahjong/posters/zh-Hans/03.webp 这次放 50 个内购码,想换一些真实反馈。 注意:下面这些是 Unlock All Themes 的内购 Offer Code ,不是 App 下载码。这个坑我之前在另一个 App 上踩过一次,苹果后台把外层 Promo Codes 和内购 Offer Codes 分得特别绕,真的很容易点错。这次是在 In-App Purchases 里的内购商品下面生成的。 兑换方式: iPhone 打开 App Store 点右上角头像 选择「兑换礼品卡或代码」 粘贴下面任意一个兑换码 如果兑换成功,麻烦回复一下用了哪个编号,方便后面的人少试重复码。 01. FW8NR6KMT4YY4WJT7W 02. TEXK4A63A4FKRH6F3N 03. FPKJAWXJX368KWMKYK 04. 66M4KAA4HJT8TMP7FJ 05. TNP7ERJWXPRN878K33 06. N7HW4PWXW3NMFJWKLA 07. YEKXELENPMFYA34K4Y 08. W8RFHXN7R7AK4LRMEE 09. EJKHRTYYF7FW6T4E4N 10. T8743LLPNNFW7X3HR8 11. 67LN47348M6MW6R6EK 12. NWK4NT6JAEHNF347RP 13. XNEL8MMYKFTLEYJRF8 14. WE8EYK7HE6HE3WLPXY 15. 6E47AKXPJM3HRAMFAH 16. HEMJ67E78RL8XX8N8K 17. KF3EWEX33JWAN7FK6X 18. T7RXMWWEPMEAH4EL67 19. 3LPPR3LAWJJ7YE43RW 20. XKLL63EJPTA8PJFW33 21. 6AT7NEY6HX3KW3TLXJ 22. L8HY7HE3ALAXW8TLWF 23. PH3A8WJJHLTW3X6HKK 24. MTE4KA8736TNXFN4L3 25. E846MJMLNA8M7WKHTP 26. NTT36RTJA6E34WLA4M 27. HYJAFXTEYFRF76KH7T 28. FJJA63NNPEF8MH6Y3A 29. L6N7JHKFM8Y6JNKT4L 30. PPL8XANNRMJKP4RFEE 31. M4JF3YHMKAXK8JKRN6 32. 6J7RE7HJYF3E68F733 33. LNE8NXM86XMWFP6X8F 34. T67NJM33K37W3RPNME 35. LHRXWHFLKJLAKPKTLE 36. AL4EETX6N6KK7E3M63 37. KLFH7P8X8KANH7WH6R 38. WTTAH84LA3XRWWLT3J 39. HK6YAH6E6MLPXH6XFL 40. 46HM4JF3K6AJ83T3PL 41. AHNJH8KN7FMWW4EKYP 42. LAHKY84HE7MH6HFJFY 43. JHYYWY6RPPRRHJKR46 44. RHKFR67KKH78PLKAMM 45. NRX3MTMLM8Y7PK8A3F 46. E8TN3XXJ3FMRXEXHK4 47. 34Y4HNAWLH3ENPM3P8 48. J8NYRFF7TMTMP8RPLN 49. K4WPPPE8JPRRY3ENWP 50. AYAX6MLJP776HT3FHN 特别想听大家吐槽: 玩法是不是太简单 / 太难 牌面和主题有没有看不清的地方 落叶到底是有趣,还是烦人 SwiftUI 写小游戏这条路有没有你们觉得很蠢或很妙的地方 谢谢各位佬。

v2ex · 2026-05-23 14:20:46+08:00 · tech

各位佬,大家好。 最近把第一款 iOS 小游戏上架了,叫 Sumi Mahjong Solitaire 。中文我自己叫它「禅艺麻将 / 水墨连连看」。它不是四人麻将,是麻将牌面的连连看 / Mahjong Solitaire:点两张相同的自由牌,如果能连起来就消掉。 App Store: https://apps.apple.com/us/app/sumi-mahjong-solitaire/id6770823912?uo=4 这次做它其实不是想一上来做一个特别大的游戏,而是想完整跑一遍 iPhone 小游戏从开发、性能优化、内购、审核到上架的流程。因为是第一款游戏,我刻意没有选特别大的项目,也没有用 Unity 、SpriteKit 、Metal 或其他游戏框架,主实现就是 Swift / SwiftUI / SwiftData / StoreKit 2 ,加一些 Apple 系统框架自己硬写。 做之前觉得「麻将连连看」规则很简单,做完才发现游戏里的简单经常是假象。 比如牌面资源层是完整 144 张麻将牌,但手机竖屏上如果一味塞满,触控会小、画面会挤、玩家也更容易疲劳。后来默认局面反而往更舒服的牌数调,把精力放在可消对子数量、布局密度、死局重排和提示可信度上。 算法这块也比我想象中有意思。不能只是随机撒牌,因为很容易开局就无聊,或者中途卡死。最后做法更像「约束下的随机」:布局要满足堆叠和遮挡规则,开局要有足够但不过量的可选对子,还要用 Solver 去验证能不能继续玩。一个看起来很轻的小游戏,最后还是会回到核心算法和手感调参。 视觉和性能也踩了不少坑。最早我用代码实时画牌体、厚度、阴影和牌面,效果可控,但游戏里牌一多,任何一处重复绘制都会开始变贵。后面就上了烘焙流程:牌面先按图集裁切,再把代码画出来的牌体、厚度、材质烘成完整 PNG ,运行时直接用图片,帧率和稳定性会舒服很多。 音效和一些小特效也基本是自己做的。消除粒子、碰撞感、落叶飘动这些不是接现成物理引擎,而是用曲线、随机数和一些公式去调。落叶一开始只是想做氛围,后来发现它随着时间落下来会轻微遮挡棋盘,反而变成一种自然的难度;所以游戏里保留了扫叶次数,让它既是装饰也是一点玩法压力。 当前功能大概是: 无广告、无账号、无第三方分析 SDK 离线可玩,本地保存进度和设置 水墨主题免费,核心玩法不锁 提示、撤销、洗牌、落叶清扫 背景音乐、音效和触觉反馈可开关 一个可选内购:一次性解锁全部高级主题,不是订阅 也坦白说现在还有不少可以继续打磨的地方: 玩法平衡还可以继续调,不同人对「太简单 / 太难」的阈值差很多 牌面、落叶、粒子这些视觉效果在不同 iPhone 尺寸上还值得继续看 SwiftUI 做游戏挺有意思,但动画和性能边界需要一直盯 这个 App 更像一个安静的小棋盘,不是那种有闯关、体力、排行榜、活动弹窗的手游 截图放两张,图片放在 GitHub Pages 上: 主玩法截图: https://hooosberg.github.io/Sumi-Mahjong/posters/zh-Hans/01.webp 主题截图: https://hooosberg.github.io/Sumi-Mahjong/posters/zh-Hans/03.webp 这次放 50 个内购码,想换一些真实反馈。 注意:下面这些是 Unlock All Themes 的内购 Offer Code ,不是 App 下载码。这个坑我之前在另一个 App 上踩过一次,苹果后台把外层 Promo Codes 和内购 Offer Codes 分得特别绕,真的很容易点错。这次是在 In-App Purchases 里的内购商品下面生成的。 兑换方式: iPhone 打开 App Store 点右上角头像 选择「兑换礼品卡或代码」 粘贴下面任意一个兑换码 如果兑换成功,麻烦回复一下用了哪个编号,方便后面的人少试重复码。 01. FW8NR6KMT4YY4WJT7W 02. TEXK4A63A4FKRH6F3N 03. FPKJAWXJX368KWMKYK 04. 66M4KAA4HJT8TMP7FJ 05. TNP7ERJWXPRN878K33 06. N7HW4PWXW3NMFJWKLA 07. YEKXELENPMFYA34K4Y 08. W8RFHXN7R7AK4LRMEE 09. EJKHRTYYF7FW6T4E4N 10. T8743LLPNNFW7X3HR8 11. 67LN47348M6MW6R6EK 12. NWK4NT6JAEHNF347RP 13. XNEL8MMYKFTLEYJRF8 14. WE8EYK7HE6HE3WLPXY 15. 6E47AKXPJM3HRAMFAH 16. HEMJ67E78RL8XX8N8K 17. KF3EWEX33JWAN7FK6X 18. T7RXMWWEPMEAH4EL67 19. 3LPPR3LAWJJ7YE43RW 20. XKLL63EJPTA8PJFW33 21. 6AT7NEY6HX3KW3TLXJ 22. L8HY7HE3ALAXW8TLWF 23. PH3A8WJJHLTW3X6HKK 24. MTE4KA8736TNXFN4L3 25. E846MJMLNA8M7WKHTP 26. NTT36RTJA6E34WLA4M 27. HYJAFXTEYFRF76KH7T 28. FJJA63NNPEF8MH6Y3A 29. L6N7JHKFM8Y6JNKT4L 30. PPL8XANNRMJKP4RFEE 31. M4JF3YHMKAXK8JKRN6 32. 6J7RE7HJYF3E68F733 33. LNE8NXM86XMWFP6X8F 34. T67NJM33K37W3RPNME 35. LHRXWHFLKJLAKPKTLE 36. AL4EETX6N6KK7E3M63 37. KLFH7P8X8KANH7WH6R 38. WTTAH84LA3XRWWLT3J 39. HK6YAH6E6MLPXH6XFL 40. 46HM4JF3K6AJ83T3PL 41. AHNJH8KN7FMWW4EKYP 42. LAHKY84HE7MH6HFJFY 43. JHYYWY6RPPRRHJKR46 44. RHKFR67KKH78PLKAMM 45. NRX3MTMLM8Y7PK8A3F 46. E8TN3XXJ3FMRXEXHK4 47. 34Y4HNAWLH3ENPM3P8 48. J8NYRFF7TMTMP8RPLN 49. K4WPPPE8JPRRY3ENWP 50. AYAX6MLJP776HT3FHN 特别想听大家吐槽: 玩法是不是太简单 / 太难 牌面和主题有没有看不清的地方 落叶到底是有趣,还是烦人 SwiftUI 写小游戏这条路有没有你们觉得很蠢或很妙的地方 谢谢各位佬。

v2ex · 2026-05-23 14:01:34+08:00 · tech

各位佬,大家好。 最近把第一款 iOS 小游戏上架了,叫 Sumi Mahjong Solitaire 。中文我自己叫它「禅艺麻将 / 水墨连连看」。它不是四人麻将,是麻将牌面的连连看 / Mahjong Solitaire:点两张相同的自由牌,如果能连起来就消掉。 App Store: https://apps.apple.com/us/app/sumi-mahjong-solitaire/id6770823912?uo=4 这次做它其实不是想一上来做一个特别大的游戏,而是想完整跑一遍 iPhone 小游戏从开发、性能优化、内购、审核到上架的流程。因为是第一款游戏,我刻意没有选特别大的项目,也没有用 Unity 、SpriteKit 、Metal 或其他游戏框架,主实现就是 Swift / SwiftUI / SwiftData / StoreKit 2 ,加一些 Apple 系统框架自己硬写。 做之前觉得「麻将连连看」规则很简单,做完才发现游戏里的简单经常是假象。 比如牌面资源层是完整 144 张麻将牌,但手机竖屏上如果一味塞满,触控会小、画面会挤、玩家也更容易疲劳。后来默认局面反而往更舒服的牌数调,把精力放在可消对子数量、布局密度、死局重排和提示可信度上。 算法这块也比我想象中有意思。不能只是随机撒牌,因为很容易开局就无聊,或者中途卡死。最后做法更像「约束下的随机」:布局要满足堆叠和遮挡规则,开局要有足够但不过量的可选对子,还要用 Solver 去验证能不能继续玩。一个看起来很轻的小游戏,最后还是会回到核心算法和手感调参。 视觉和性能也踩了不少坑。最早我用代码实时画牌体、厚度、阴影和牌面,效果可控,但游戏里牌一多,任何一处重复绘制都会开始变贵。后面就上了烘焙流程:牌面先按图集裁切,再把代码画出来的牌体、厚度、材质烘成完整 PNG ,运行时直接用图片,帧率和稳定性会舒服很多。 音效和一些小特效也基本是自己做的。消除粒子、碰撞感、落叶飘动这些不是接现成物理引擎,而是用曲线、随机数和一些公式去调。落叶一开始只是想做氛围,后来发现它随着时间落下来会轻微遮挡棋盘,反而变成一种自然的难度;所以游戏里保留了扫叶次数,让它既是装饰也是一点玩法压力。 当前功能大概是: 无广告、无账号、无第三方分析 SDK 离线可玩,本地保存进度和设置 水墨主题免费,核心玩法不锁 提示、撤销、洗牌、落叶清扫 背景音乐、音效和触觉反馈可开关 一个可选内购:一次性解锁全部高级主题,不是订阅 也坦白说现在还有不少可以继续打磨的地方: 玩法平衡还可以继续调,不同人对「太简单 / 太难」的阈值差很多 牌面、落叶、粒子这些视觉效果在不同 iPhone 尺寸上还值得继续看 SwiftUI 做游戏挺有意思,但动画和性能边界需要一直盯 这个 App 更像一个安静的小棋盘,不是那种有闯关、体力、排行榜、活动弹窗的手游 截图放两张,图片放在 GitHub Pages 上: 主玩法截图: https://hooosberg.github.io/Sumi-Mahjong/posters/zh-Hans/01.webp 主题截图: https://hooosberg.github.io/Sumi-Mahjong/posters/zh-Hans/03.webp 这次放 50 个内购码,想换一些真实反馈。 注意:下面这些是 Unlock All Themes 的内购 Offer Code ,不是 App 下载码。这个坑我之前在另一个 App 上踩过一次,苹果后台把外层 Promo Codes 和内购 Offer Codes 分得特别绕,真的很容易点错。这次是在 In-App Purchases 里的内购商品下面生成的。 兑换方式: iPhone 打开 App Store 点右上角头像 选择「兑换礼品卡或代码」 粘贴下面任意一个兑换码 如果兑换成功,麻烦回复一下用了哪个编号,方便后面的人少试重复码。 01. FW8NR6KMT4YY4WJT7W 02. TEXK4A63A4FKRH6F3N 03. FPKJAWXJX368KWMKYK 04. 66M4KAA4HJT8TMP7FJ 05. TNP7ERJWXPRN878K33 06. N7HW4PWXW3NMFJWKLA 07. YEKXELENPMFYA34K4Y 08. W8RFHXN7R7AK4LRMEE 09. EJKHRTYYF7FW6T4E4N 10. T8743LLPNNFW7X3HR8 11. 67LN47348M6MW6R6EK 12. NWK4NT6JAEHNF347RP 13. XNEL8MMYKFTLEYJRF8 14. WE8EYK7HE6HE3WLPXY 15. 6E47AKXPJM3HRAMFAH 16. HEMJ67E78RL8XX8N8K 17. KF3EWEX33JWAN7FK6X 18. T7RXMWWEPMEAH4EL67 19. 3LPPR3LAWJJ7YE43RW 20. XKLL63EJPTA8PJFW33 21. 6AT7NEY6HX3KW3TLXJ 22. L8HY7HE3ALAXW8TLWF 23. PH3A8WJJHLTW3X6HKK 24. MTE4KA8736TNXFN4L3 25. E846MJMLNA8M7WKHTP 26. NTT36RTJA6E34WLA4M 27. HYJAFXTEYFRF76KH7T 28. FJJA63NNPEF8MH6Y3A 29. L6N7JHKFM8Y6JNKT4L 30. PPL8XANNRMJKP4RFEE 31. M4JF3YHMKAXK8JKRN6 32. 6J7RE7HJYF3E68F733 33. LNE8NXM86XMWFP6X8F 34. T67NJM33K37W3RPNME 35. LHRXWHFLKJLAKPKTLE 36. AL4EETX6N6KK7E3M63 37. KLFH7P8X8KANH7WH6R 38. WTTAH84LA3XRWWLT3J 39. HK6YAH6E6MLPXH6XFL 40. 46HM4JF3K6AJ83T3PL 41. AHNJH8KN7FMWW4EKYP 42. LAHKY84HE7MH6HFJFY 43. JHYYWY6RPPRRHJKR46 44. RHKFR67KKH78PLKAMM 45. NRX3MTMLM8Y7PK8A3F 46. E8TN3XXJ3FMRXEXHK4 47. 34Y4HNAWLH3ENPM3P8 48. J8NYRFF7TMTMP8RPLN 49. K4WPPPE8JPRRY3ENWP 50. AYAX6MLJP776HT3FHN 特别想听大家吐槽: 玩法是不是太简单 / 太难 牌面和主题有没有看不清的地方 落叶到底是有趣,还是烦人 SwiftUI 写小游戏这条路有没有你们觉得很蠢或很妙的地方 谢谢各位佬。

v2ex · 2026-05-23 13:33:02+08:00 · tech

各位佬,大家好。 最近把第一款 iOS 小游戏上架了,叫 Sumi Mahjong Solitaire 。中文我自己叫它「禅艺麻将 / 水墨连连看」。它不是四人麻将,是麻将牌面的连连看 / Mahjong Solitaire:点两张相同的自由牌,如果能连起来就消掉。 App Store: https://apps.apple.com/us/app/sumi-mahjong-solitaire/id6770823912?uo=4 这次做它其实不是想一上来做一个特别大的游戏,而是想完整跑一遍 iPhone 小游戏从开发、性能优化、内购、审核到上架的流程。因为是第一款游戏,我刻意没有选特别大的项目,也没有用 Unity 、SpriteKit 、Metal 或其他游戏框架,主实现就是 Swift / SwiftUI / SwiftData / StoreKit 2 ,加一些 Apple 系统框架自己硬写。 做之前觉得「麻将连连看」规则很简单,做完才发现游戏里的简单经常是假象。 比如牌面资源层是完整 144 张麻将牌,但手机竖屏上如果一味塞满,触控会小、画面会挤、玩家也更容易疲劳。后来默认局面反而往更舒服的牌数调,把精力放在可消对子数量、布局密度、死局重排和提示可信度上。 算法这块也比我想象中有意思。不能只是随机撒牌,因为很容易开局就无聊,或者中途卡死。最后做法更像「约束下的随机」:布局要满足堆叠和遮挡规则,开局要有足够但不过量的可选对子,还要用 Solver 去验证能不能继续玩。一个看起来很轻的小游戏,最后还是会回到核心算法和手感调参。 视觉和性能也踩了不少坑。最早我用代码实时画牌体、厚度、阴影和牌面,效果可控,但游戏里牌一多,任何一处重复绘制都会开始变贵。后面就上了烘焙流程:牌面先按图集裁切,再把代码画出来的牌体、厚度、材质烘成完整 PNG ,运行时直接用图片,帧率和稳定性会舒服很多。 音效和一些小特效也基本是自己做的。消除粒子、碰撞感、落叶飘动这些不是接现成物理引擎,而是用曲线、随机数和一些公式去调。落叶一开始只是想做氛围,后来发现它随着时间落下来会轻微遮挡棋盘,反而变成一种自然的难度;所以游戏里保留了扫叶次数,让它既是装饰也是一点玩法压力。 当前功能大概是: 无广告、无账号、无第三方分析 SDK 离线可玩,本地保存进度和设置 水墨主题免费,核心玩法不锁 提示、撤销、洗牌、落叶清扫 背景音乐、音效和触觉反馈可开关 一个可选内购:一次性解锁全部高级主题,不是订阅 也坦白说现在还有不少可以继续打磨的地方: 玩法平衡还可以继续调,不同人对「太简单 / 太难」的阈值差很多 牌面、落叶、粒子这些视觉效果在不同 iPhone 尺寸上还值得继续看 SwiftUI 做游戏挺有意思,但动画和性能边界需要一直盯 这个 App 更像一个安静的小棋盘,不是那种有闯关、体力、排行榜、活动弹窗的手游 截图放两张,图片放在 GitHub Pages 上: 主玩法截图: https://hooosberg.github.io/Sumi-Mahjong/posters/zh-Hans/01.webp 主题截图: https://hooosberg.github.io/Sumi-Mahjong/posters/zh-Hans/03.webp 这次放 50 个内购码,想换一些真实反馈。 注意:下面这些是 Unlock All Themes 的内购 Offer Code ,不是 App 下载码。这个坑我之前在另一个 App 上踩过一次,苹果后台把外层 Promo Codes 和内购 Offer Codes 分得特别绕,真的很容易点错。这次是在 In-App Purchases 里的内购商品下面生成的。 兑换方式: iPhone 打开 App Store 点右上角头像 选择「兑换礼品卡或代码」 粘贴下面任意一个兑换码 如果兑换成功,麻烦回复一下用了哪个编号,方便后面的人少试重复码。 01. FW8NR6KMT4YY4WJT7W 02. TEXK4A63A4FKRH6F3N 03. FPKJAWXJX368KWMKYK 04. 66M4KAA4HJT8TMP7FJ 05. TNP7ERJWXPRN878K33 06. N7HW4PWXW3NMFJWKLA 07. YEKXELENPMFYA34K4Y 08. W8RFHXN7R7AK4LRMEE 09. EJKHRTYYF7FW6T4E4N 10. T8743LLPNNFW7X3HR8 11. 67LN47348M6MW6R6EK 12. NWK4NT6JAEHNF347RP 13. XNEL8MMYKFTLEYJRF8 14. WE8EYK7HE6HE3WLPXY 15. 6E47AKXPJM3HRAMFAH 16. HEMJ67E78RL8XX8N8K 17. KF3EWEX33JWAN7FK6X 18. T7RXMWWEPMEAH4EL67 19. 3LPPR3LAWJJ7YE43RW 20. XKLL63EJPTA8PJFW33 21. 6AT7NEY6HX3KW3TLXJ 22. L8HY7HE3ALAXW8TLWF 23. PH3A8WJJHLTW3X6HKK 24. MTE4KA8736TNXFN4L3 25. E846MJMLNA8M7WKHTP 26. NTT36RTJA6E34WLA4M 27. HYJAFXTEYFRF76KH7T 28. FJJA63NNPEF8MH6Y3A 29. L6N7JHKFM8Y6JNKT4L 30. PPL8XANNRMJKP4RFEE 31. M4JF3YHMKAXK8JKRN6 32. 6J7RE7HJYF3E68F733 33. LNE8NXM86XMWFP6X8F 34. T67NJM33K37W3RPNME 35. LHRXWHFLKJLAKPKTLE 36. AL4EETX6N6KK7E3M63 37. KLFH7P8X8KANH7WH6R 38. WTTAH84LA3XRWWLT3J 39. HK6YAH6E6MLPXH6XFL 40. 46HM4JF3K6AJ83T3PL 41. AHNJH8KN7FMWW4EKYP 42. LAHKY84HE7MH6HFJFY 43. JHYYWY6RPPRRHJKR46 44. RHKFR67KKH78PLKAMM 45. NRX3MTMLM8Y7PK8A3F 46. E8TN3XXJ3FMRXEXHK4 47. 34Y4HNAWLH3ENPM3P8 48. J8NYRFF7TMTMP8RPLN 49. K4WPPPE8JPRRY3ENWP 50. AYAX6MLJP776HT3FHN 特别想听大家吐槽: 玩法是不是太简单 / 太难 牌面和主题有没有看不清的地方 落叶到底是有趣,还是烦人 SwiftUI 写小游戏这条路有没有你们觉得很蠢或很妙的地方 谢谢各位佬。

v2ex · 2026-05-23 12:23:28+08:00 · tech

各位佬,大家好。 最近把第一款 iOS 小游戏上架了,叫 Sumi Mahjong Solitaire 。中文我自己叫它「禅艺麻将 / 水墨连连看」。它不是四人麻将,是麻将牌面的连连看 / Mahjong Solitaire:点两张相同的自由牌,如果能连起来就消掉。 App Store: https://apps.apple.com/us/app/sumi-mahjong-solitaire/id6770823912?uo=4 这次做它其实不是想一上来做一个特别大的游戏,而是想完整跑一遍 iPhone 小游戏从开发、性能优化、内购、审核到上架的流程。因为是第一款游戏,我刻意没有选特别大的项目,也没有用 Unity 、SpriteKit 、Metal 或其他游戏框架,主实现就是 Swift / SwiftUI / SwiftData / StoreKit 2 ,加一些 Apple 系统框架自己硬写。 做之前觉得「麻将连连看」规则很简单,做完才发现游戏里的简单经常是假象。 比如牌面资源层是完整 144 张麻将牌,但手机竖屏上如果一味塞满,触控会小、画面会挤、玩家也更容易疲劳。后来默认局面反而往更舒服的牌数调,把精力放在可消对子数量、布局密度、死局重排和提示可信度上。 算法这块也比我想象中有意思。不能只是随机撒牌,因为很容易开局就无聊,或者中途卡死。最后做法更像「约束下的随机」:布局要满足堆叠和遮挡规则,开局要有足够但不过量的可选对子,还要用 Solver 去验证能不能继续玩。一个看起来很轻的小游戏,最后还是会回到核心算法和手感调参。 视觉和性能也踩了不少坑。最早我用代码实时画牌体、厚度、阴影和牌面,效果可控,但游戏里牌一多,任何一处重复绘制都会开始变贵。后面就上了烘焙流程:牌面先按图集裁切,再把代码画出来的牌体、厚度、材质烘成完整 PNG ,运行时直接用图片,帧率和稳定性会舒服很多。 音效和一些小特效也基本是自己做的。消除粒子、碰撞感、落叶飘动这些不是接现成物理引擎,而是用曲线、随机数和一些公式去调。落叶一开始只是想做氛围,后来发现它随着时间落下来会轻微遮挡棋盘,反而变成一种自然的难度;所以游戏里保留了扫叶次数,让它既是装饰也是一点玩法压力。 当前功能大概是: 无广告、无账号、无第三方分析 SDK 离线可玩,本地保存进度和设置 水墨主题免费,核心玩法不锁 提示、撤销、洗牌、落叶清扫 背景音乐、音效和触觉反馈可开关 一个可选内购:一次性解锁全部高级主题,不是订阅 也坦白说现在还有不少可以继续打磨的地方: 玩法平衡还可以继续调,不同人对「太简单 / 太难」的阈值差很多 牌面、落叶、粒子这些视觉效果在不同 iPhone 尺寸上还值得继续看 SwiftUI 做游戏挺有意思,但动画和性能边界需要一直盯 这个 App 更像一个安静的小棋盘,不是那种有闯关、体力、排行榜、活动弹窗的手游 截图放两张,图片放在 GitHub Pages 上: 主玩法截图: https://hooosberg.github.io/Sumi-Mahjong/posters/zh-Hans/01.webp 主题截图: https://hooosberg.github.io/Sumi-Mahjong/posters/zh-Hans/03.webp 这次放 50 个内购码,想换一些真实反馈。 注意:下面这些是 Unlock All Themes 的内购 Offer Code ,不是 App 下载码。这个坑我之前在另一个 App 上踩过一次,苹果后台把外层 Promo Codes 和内购 Offer Codes 分得特别绕,真的很容易点错。这次是在 In-App Purchases 里的内购商品下面生成的。 兑换方式: iPhone 打开 App Store 点右上角头像 选择「兑换礼品卡或代码」 粘贴下面任意一个兑换码 如果兑换成功,麻烦回复一下用了哪个编号,方便后面的人少试重复码。 01. FW8NR6KMT4YY4WJT7W 02. TEXK4A63A4FKRH6F3N 03. FPKJAWXJX368KWMKYK 04. 66M4KAA4HJT8TMP7FJ 05. TNP7ERJWXPRN878K33 06. N7HW4PWXW3NMFJWKLA 07. YEKXELENPMFYA34K4Y 08. W8RFHXN7R7AK4LRMEE 09. EJKHRTYYF7FW6T4E4N 10. T8743LLPNNFW7X3HR8 11. 67LN47348M6MW6R6EK 12. NWK4NT6JAEHNF347RP 13. XNEL8MMYKFTLEYJRF8 14. WE8EYK7HE6HE3WLPXY 15. 6E47AKXPJM3HRAMFAH 16. HEMJ67E78RL8XX8N8K 17. KF3EWEX33JWAN7FK6X 18. T7RXMWWEPMEAH4EL67 19. 3LPPR3LAWJJ7YE43RW 20. XKLL63EJPTA8PJFW33 21. 6AT7NEY6HX3KW3TLXJ 22. L8HY7HE3ALAXW8TLWF 23. PH3A8WJJHLTW3X6HKK 24. MTE4KA8736TNXFN4L3 25. E846MJMLNA8M7WKHTP 26. NTT36RTJA6E34WLA4M 27. HYJAFXTEYFRF76KH7T 28. FJJA63NNPEF8MH6Y3A 29. L6N7JHKFM8Y6JNKT4L 30. PPL8XANNRMJKP4RFEE 31. M4JF3YHMKAXK8JKRN6 32. 6J7RE7HJYF3E68F733 33. LNE8NXM86XMWFP6X8F 34. T67NJM33K37W3RPNME 35. LHRXWHFLKJLAKPKTLE 36. AL4EETX6N6KK7E3M63 37. KLFH7P8X8KANH7WH6R 38. WTTAH84LA3XRWWLT3J 39. HK6YAH6E6MLPXH6XFL 40. 46HM4JF3K6AJ83T3PL 41. AHNJH8KN7FMWW4EKYP 42. LAHKY84HE7MH6HFJFY 43. JHYYWY6RPPRRHJKR46 44. RHKFR67KKH78PLKAMM 45. NRX3MTMLM8Y7PK8A3F 46. E8TN3XXJ3FMRXEXHK4 47. 34Y4HNAWLH3ENPM3P8 48. J8NYRFF7TMTMP8RPLN 49. K4WPPPE8JPRRY3ENWP 50. AYAX6MLJP776HT3FHN 特别想听大家吐槽: 玩法是不是太简单 / 太难 牌面和主题有没有看不清的地方 落叶到底是有趣,还是烦人 SwiftUI 写小游戏这条路有没有你们觉得很蠢或很妙的地方 谢谢各位佬。

v2ex · 2026-05-23 12:23:28+08:00 · tech

各位佬,大家好。 最近把第一款 iOS 小游戏上架了,叫 Sumi Mahjong Solitaire 。中文我自己叫它「禅艺麻将 / 水墨连连看」。它不是四人麻将,是麻将牌面的连连看 / Mahjong Solitaire:点两张相同的自由牌,如果能连起来就消掉。 App Store: https://apps.apple.com/us/app/sumi-mahjong-solitaire/id6770823912?uo=4 这次做它其实不是想一上来做一个特别大的游戏,而是想完整跑一遍 iPhone 小游戏从开发、性能优化、内购、审核到上架的流程。因为是第一款游戏,我刻意没有选特别大的项目,也没有用 Unity 、SpriteKit 、Metal 或其他游戏框架,主实现就是 Swift / SwiftUI / SwiftData / StoreKit 2 ,加一些 Apple 系统框架自己硬写。 做之前觉得「麻将连连看」规则很简单,做完才发现游戏里的简单经常是假象。 比如牌面资源层是完整 144 张麻将牌,但手机竖屏上如果一味塞满,触控会小、画面会挤、玩家也更容易疲劳。后来默认局面反而往更舒服的牌数调,把精力放在可消对子数量、布局密度、死局重排和提示可信度上。 算法这块也比我想象中有意思。不能只是随机撒牌,因为很容易开局就无聊,或者中途卡死。最后做法更像「约束下的随机」:布局要满足堆叠和遮挡规则,开局要有足够但不过量的可选对子,还要用 Solver 去验证能不能继续玩。一个看起来很轻的小游戏,最后还是会回到核心算法和手感调参。 视觉和性能也踩了不少坑。最早我用代码实时画牌体、厚度、阴影和牌面,效果可控,但游戏里牌一多,任何一处重复绘制都会开始变贵。后面就上了烘焙流程:牌面先按图集裁切,再把代码画出来的牌体、厚度、材质烘成完整 PNG ,运行时直接用图片,帧率和稳定性会舒服很多。 音效和一些小特效也基本是自己做的。消除粒子、碰撞感、落叶飘动这些不是接现成物理引擎,而是用曲线、随机数和一些公式去调。落叶一开始只是想做氛围,后来发现它随着时间落下来会轻微遮挡棋盘,反而变成一种自然的难度;所以游戏里保留了扫叶次数,让它既是装饰也是一点玩法压力。 当前功能大概是: 无广告、无账号、无第三方分析 SDK 离线可玩,本地保存进度和设置 水墨主题免费,核心玩法不锁 提示、撤销、洗牌、落叶清扫 背景音乐、音效和触觉反馈可开关 一个可选内购:一次性解锁全部高级主题,不是订阅 也坦白说现在还有不少可以继续打磨的地方: 玩法平衡还可以继续调,不同人对「太简单 / 太难」的阈值差很多 牌面、落叶、粒子这些视觉效果在不同 iPhone 尺寸上还值得继续看 SwiftUI 做游戏挺有意思,但动画和性能边界需要一直盯 这个 App 更像一个安静的小棋盘,不是那种有闯关、体力、排行榜、活动弹窗的手游 截图放两张,图片放在 GitHub Pages 上: 主玩法截图: https://hooosberg.github.io/Sumi-Mahjong/posters/zh-Hans/01.webp 主题截图: https://hooosberg.github.io/Sumi-Mahjong/posters/zh-Hans/03.webp 这次放 50 个内购码,想换一些真实反馈。 注意:下面这些是 Unlock All Themes 的内购 Offer Code ,不是 App 下载码。这个坑我之前在另一个 App 上踩过一次,苹果后台把外层 Promo Codes 和内购 Offer Codes 分得特别绕,真的很容易点错。这次是在 In-App Purchases 里的内购商品下面生成的。 兑换方式: iPhone 打开 App Store 点右上角头像 选择「兑换礼品卡或代码」 粘贴下面任意一个兑换码 如果兑换成功,麻烦回复一下用了哪个编号,方便后面的人少试重复码。 01. FW8NR6KMT4YY4WJT7W 02. TEXK4A63A4FKRH6F3N 03. FPKJAWXJX368KWMKYK 04. 66M4KAA4HJT8TMP7FJ 05. TNP7ERJWXPRN878K33 06. N7HW4PWXW3NMFJWKLA 07. YEKXELENPMFYA34K4Y 08. W8RFHXN7R7AK4LRMEE 09. EJKHRTYYF7FW6T4E4N 10. T8743LLPNNFW7X3HR8 11. 67LN47348M6MW6R6EK 12. NWK4NT6JAEHNF347RP 13. XNEL8MMYKFTLEYJRF8 14. WE8EYK7HE6HE3WLPXY 15. 6E47AKXPJM3HRAMFAH 16. HEMJ67E78RL8XX8N8K 17. KF3EWEX33JWAN7FK6X 18. T7RXMWWEPMEAH4EL67 19. 3LPPR3LAWJJ7YE43RW 20. XKLL63EJPTA8PJFW33 21. 6AT7NEY6HX3KW3TLXJ 22. L8HY7HE3ALAXW8TLWF 23. PH3A8WJJHLTW3X6HKK 24. MTE4KA8736TNXFN4L3 25. E846MJMLNA8M7WKHTP 26. NTT36RTJA6E34WLA4M 27. HYJAFXTEYFRF76KH7T 28. FJJA63NNPEF8MH6Y3A 29. L6N7JHKFM8Y6JNKT4L 30. PPL8XANNRMJKP4RFEE 31. M4JF3YHMKAXK8JKRN6 32. 6J7RE7HJYF3E68F733 33. LNE8NXM86XMWFP6X8F 34. T67NJM33K37W3RPNME 35. LHRXWHFLKJLAKPKTLE 36. AL4EETX6N6KK7E3M63 37. KLFH7P8X8KANH7WH6R 38. WTTAH84LA3XRWWLT3J 39. HK6YAH6E6MLPXH6XFL 40. 46HM4JF3K6AJ83T3PL 41. AHNJH8KN7FMWW4EKYP 42. LAHKY84HE7MH6HFJFY 43. JHYYWY6RPPRRHJKR46 44. RHKFR67KKH78PLKAMM 45. NRX3MTMLM8Y7PK8A3F 46. E8TN3XXJ3FMRXEXHK4 47. 34Y4HNAWLH3ENPM3P8 48. J8NYRFF7TMTMP8RPLN 49. K4WPPPE8JPRRY3ENWP 50. AYAX6MLJP776HT3FHN 特别想听大家吐槽: 玩法是不是太简单 / 太难 牌面和主题有没有看不清的地方 落叶到底是有趣,还是烦人 SwiftUI 写小游戏这条路有没有你们觉得很蠢或很妙的地方 谢谢各位佬。

v2ex · 2026-05-23 11:25:47+08:00 · tech

各位佬,大家好。 最近把第一款 iOS 小游戏上架了,叫 Sumi Mahjong Solitaire 。中文我自己叫它「禅艺麻将 / 水墨连连看」。它不是四人麻将,是麻将牌面的连连看 / Mahjong Solitaire:点两张相同的自由牌,如果能连起来就消掉。 App Store: https://apps.apple.com/us/app/sumi-mahjong-solitaire/id6770823912?uo=4 这次做它其实不是想一上来做一个特别大的游戏,而是想完整跑一遍 iPhone 小游戏从开发、性能优化、内购、审核到上架的流程。因为是第一款游戏,我刻意没有选特别大的项目,也没有用 Unity 、SpriteKit 、Metal 或其他游戏框架,主实现就是 Swift / SwiftUI / SwiftData / StoreKit 2 ,加一些 Apple 系统框架自己硬写。 做之前觉得「麻将连连看」规则很简单,做完才发现游戏里的简单经常是假象。 比如牌面资源层是完整 144 张麻将牌,但手机竖屏上如果一味塞满,触控会小、画面会挤、玩家也更容易疲劳。后来默认局面反而往更舒服的牌数调,把精力放在可消对子数量、布局密度、死局重排和提示可信度上。 算法这块也比我想象中有意思。不能只是随机撒牌,因为很容易开局就无聊,或者中途卡死。最后做法更像「约束下的随机」:布局要满足堆叠和遮挡规则,开局要有足够但不过量的可选对子,还要用 Solver 去验证能不能继续玩。一个看起来很轻的小游戏,最后还是会回到核心算法和手感调参。 视觉和性能也踩了不少坑。最早我用代码实时画牌体、厚度、阴影和牌面,效果可控,但游戏里牌一多,任何一处重复绘制都会开始变贵。后面就上了烘焙流程:牌面先按图集裁切,再把代码画出来的牌体、厚度、材质烘成完整 PNG ,运行时直接用图片,帧率和稳定性会舒服很多。 音效和一些小特效也基本是自己做的。消除粒子、碰撞感、落叶飘动这些不是接现成物理引擎,而是用曲线、随机数和一些公式去调。落叶一开始只是想做氛围,后来发现它随着时间落下来会轻微遮挡棋盘,反而变成一种自然的难度;所以游戏里保留了扫叶次数,让它既是装饰也是一点玩法压力。 当前功能大概是: 无广告、无账号、无第三方分析 SDK 离线可玩,本地保存进度和设置 水墨主题免费,核心玩法不锁 提示、撤销、洗牌、落叶清扫 背景音乐、音效和触觉反馈可开关 一个可选内购:一次性解锁全部高级主题,不是订阅 也坦白说现在还有不少可以继续打磨的地方: 玩法平衡还可以继续调,不同人对「太简单 / 太难」的阈值差很多 牌面、落叶、粒子这些视觉效果在不同 iPhone 尺寸上还值得继续看 SwiftUI 做游戏挺有意思,但动画和性能边界需要一直盯 这个 App 更像一个安静的小棋盘,不是那种有闯关、体力、排行榜、活动弹窗的手游 截图放两张,图片放在 GitHub Pages 上: 主玩法截图: https://hooosberg.github.io/Sumi-Mahjong/posters/zh-Hans/01.webp 主题截图: https://hooosberg.github.io/Sumi-Mahjong/posters/zh-Hans/03.webp 这次放 50 个内购码,想换一些真实反馈。 注意:下面这些是 Unlock All Themes 的内购 Offer Code ,不是 App 下载码。这个坑我之前在另一个 App 上踩过一次,苹果后台把外层 Promo Codes 和内购 Offer Codes 分得特别绕,真的很容易点错。这次是在 In-App Purchases 里的内购商品下面生成的。 兑换方式: iPhone 打开 App Store 点右上角头像 选择「兑换礼品卡或代码」 粘贴下面任意一个兑换码 如果兑换成功,麻烦回复一下用了哪个编号,方便后面的人少试重复码。 01. FW8NR6KMT4YY4WJT7W 02. TEXK4A63A4FKRH6F3N 03. FPKJAWXJX368KWMKYK 04. 66M4KAA4HJT8TMP7FJ 05. TNP7ERJWXPRN878K33 06. N7HW4PWXW3NMFJWKLA 07. YEKXELENPMFYA34K4Y 08. W8RFHXN7R7AK4LRMEE 09. EJKHRTYYF7FW6T4E4N 10. T8743LLPNNFW7X3HR8 11. 67LN47348M6MW6R6EK 12. NWK4NT6JAEHNF347RP 13. XNEL8MMYKFTLEYJRF8 14. WE8EYK7HE6HE3WLPXY 15. 6E47AKXPJM3HRAMFAH 16. HEMJ67E78RL8XX8N8K 17. KF3EWEX33JWAN7FK6X 18. T7RXMWWEPMEAH4EL67 19. 3LPPR3LAWJJ7YE43RW 20. XKLL63EJPTA8PJFW33 21. 6AT7NEY6HX3KW3TLXJ 22. L8HY7HE3ALAXW8TLWF 23. PH3A8WJJHLTW3X6HKK 24. MTE4KA8736TNXFN4L3 25. E846MJMLNA8M7WKHTP 26. NTT36RTJA6E34WLA4M 27. HYJAFXTEYFRF76KH7T 28. FJJA63NNPEF8MH6Y3A 29. L6N7JHKFM8Y6JNKT4L 30. PPL8XANNRMJKP4RFEE 31. M4JF3YHMKAXK8JKRN6 32. 6J7RE7HJYF3E68F733 33. LNE8NXM86XMWFP6X8F 34. T67NJM33K37W3RPNME 35. LHRXWHFLKJLAKPKTLE 36. AL4EETX6N6KK7E3M63 37. KLFH7P8X8KANH7WH6R 38. WTTAH84LA3XRWWLT3J 39. HK6YAH6E6MLPXH6XFL 40. 46HM4JF3K6AJ83T3PL 41. AHNJH8KN7FMWW4EKYP 42. LAHKY84HE7MH6HFJFY 43. JHYYWY6RPPRRHJKR46 44. RHKFR67KKH78PLKAMM 45. NRX3MTMLM8Y7PK8A3F 46. E8TN3XXJ3FMRXEXHK4 47. 34Y4HNAWLH3ENPM3P8 48. J8NYRFF7TMTMP8RPLN 49. K4WPPPE8JPRRY3ENWP 50. AYAX6MLJP776HT3FHN 特别想听大家吐槽: 玩法是不是太简单 / 太难 牌面和主题有没有看不清的地方 落叶到底是有趣,还是烦人 SwiftUI 写小游戏这条路有没有你们觉得很蠢或很妙的地方 谢谢各位佬。