英文原文正文为项目原始 README(英文),本站后续会翻译为中文,当前仅剔除图片与无关章节并统一排版。
Matchimals.fun
动物配对拼图卡牌游戏 🦁 🃏
🍎 从 App Store 下载 iOS 版本
🖥 在网页上桌面端游玩
怎么玩
- 1-4 名玩家轮流将牌堆顶的牌与桌面上已有的牌连接。
- 如果没有有效的连接可进行,则该玩家必须跳过。
- 当牌堆中的所有牌都已在桌上连接完成时,游戏结束。
关于
Matchimals.fun 由 Chris Heninger(@chrisheninger)和 Hannah Heninger(@mshannahnv)作为概念验证开发。游戏玩法灵感来自 1959 年的一款叫 Busy Bee 的纸牌游戏。🐝 🃏
Matchimals.fun 适合各个年龄段的儿童。它旨在通过有趣的动物、颜色和数字视觉效果提供娱乐并提高模式识别能力。
该项目由 iGravity Studios 赞助——这是一家位于亚利桑那州菲尼克斯、专注于 UI/UX 开发的定制软件公司。🏜 ❤️
想要贡献吗?
这款游戏已开源,旨在帮助其他希望深入了解JavaScript、BoardGame.io 和React-Native应用的人。
发现了错误或有问题吗?随时可以打开一个问题或提交一个拉取请求!
发展
这是一个使用 连续原生生成 的 Expo 应用 —— ios/ 目录是从 app.json 生成的,并未提交。你需要安装 bun、Xcode 和 CocoaPods。
- 分叉仓库
- 安装依赖项:
bun install - 在 iOS 模拟器中构建并运行应用:
bun run ios - 或者运行网页版:
bun run web
应用图标是由动物 SVG 渲染的:bun run generate:icons 会重新生成主图标、每个动物的替代图标(在 iOS 上可在设置中选择一个)以及网页图标 — 提交输出内容。
App Store 的截图和此 README 来自模拟器:bun run screenshots 会构建一个 Release 版本的应用,然后启动 iPhone 14 Plus(App Store Connect 要求的 6.5 英寸 iPhone 插槽,1284 × 2778 px)和 iPad Pro 13 英寸(13 英寸插槽,2064 × 2752 px),并且对于每种商店语言,在 iPhone 上进行两人游戏,在 iPad 上进行四人游戏 —— src/Matchimals/snapshots.ts 中的五个棋盘快照,随后是胜利卡片,使用 src/screenshots.ts 中的固定玩家,每个都通过 https://www.matchimals.fun/?screenshot=<state> 通用链接访问。编号的 PNG 图像会按上传顺序存放在 screenshots/<storefront>/<display>/(商店文件夹使用 App Store Connect 的区域代码,比如 store/metadata/)——提交它们;它们就是上传到 App Store Connect 的内容。添加 --skip-build 可重用上一次构建,或使用 --locales "en-US ja" 来选择部分语言。
字幕随后添加:bun run screenshots:caption 会将 store/captions/ 中的每套字幕(family、travel、no-ads — 显示 → 状态 → 商店铺面语言 → 文本,最多两行,在 Dimbo 中设置)叠加到那些截图上,将每条字幕放在主菜单的三角背景下(--frame card|bleed|slide|device 决定形式:贴纸卡、边缘对齐、顶部圆角幻灯片,或来自 store/frames/ 的真实设备图 — 默认 card 除非另有要求),并在相同的插槽尺寸下写入 screenshots-captioned/<set>/<storefront>/<display>/,将所用框架记录在 screenshots-captioned/<set>/frame.json 中,以确保一套字幕中不会混用两种框架 — 也要提交这些。bun run asc:listing --screenshots-dir screenshots-captioned/family 会将一套带字幕的截图放到主列表中(--dry-run 显示会发生的更改);添加字幕需要 ImageMagick(brew install imagemagick)。
语言
该应用程序遵循设备语言:英语、西班牙语(西班牙和拉丁美洲)、巴西葡萄牙语、德语、法语、意大利语、日语、韩语和简体中文。所有面向用户的字符串都存放在 src/locales/<locale>.ts 中——英语是事实来源,并定义了 Translations 接口,因此任何语言缺少键都会导致类型错误——组件通过 t()、caps()(标题和按钮在渲染时根据语言规则大写)、playersLabel() 和 animalName() 从 src/i18n.ts 中读取它们。动物名称仅在渲染时翻译:英语的 AnimalName 在所有地方(状态、应用图标、截图链接)保持键不变。显示字体 Dimbo 仅包含拉丁字符,因此对于日语、韩语和中文,displayFont 会解析为平台字体(权重匹配)。
bun run check:locales在以下情况下会失败:缺失键、占位符不匹配、Dimbo 无法显示的字符或在固定宽度槽(以 Dimbo 测量)中溢出的字符串,并检查store/metadata/是否符合 App Store Connect 的限制。bun run screenshots:locales会在 iPhone 和 iPad 模拟器上拍摄每种语言的屏幕截图(主菜单、设置、名牌上最长的动物名称和胜利卡、游戏内菜单、动物选择器),保存到build/locale-screenshots/文件夹,并为每种语言生成一张联系表。bun scripts/translations-review.mjs会重新生成store/translations-review.md,将每个字符串与其英语源并排,以供母语使用者审阅。
添加语言:复制 src/locales/en.ts,在 src/locales/index.ts 中注册它(如果裸语言应映射到它,则在 resolveLocale 的回退中也注册),将其添加到 app.json 的 CFBundleLocalizations,创建 store/metadata/<App Store locale>/,然后运行上述三个命令。每个应用商店列表(名称、副标题、关键词、促销文本、描述、更新说明)保存在 store/metadata/ 中,并手动粘贴到 App Store Connect。
部署到 TestFlight
iOS 版本完全在本地构建和上传(不需要 EAS 订阅或 fastlane):
bun run deploy:ios
脚本 (scripts/deploy-ios.sh) 会自动递增 app.json 中的 ios.buildNumber(并提交该递增),运行 expo prebuild,使用 xcodebuild 打包归档,将构建直接上传到 App Store Connect,然后给提交打标签(ios-v<version>-<build>)并推送。除非你在干净的 main 分支上并且类型检查通过,否则它不会运行。如果上传步骤失败,修复原因后运行 bun run deploy:ios --upload-only 以重新上传已经构建的归档。版本号递增(expo.version)仍需手动操作 — 在发布新版本前编辑 app.json。
签名和上传会使用 Mac 上安装的 App Store Connect API 密钥进行认证:~/.private_keys/matchimals-asc.env 设置 ASC_KEY_ID 和 ASC_ISSUER_ID,密钥的 AuthKey_<id>.p8 放在旁边(ASC → 用户与访问 → 集成 → App Store Connect API;具有 App Manager 角色即可)。没有密钥时,会使用 Xcode 登录的 Apple ID(Xcode → 设置 → 账户)对应 app.json 中的团队 — 该会话会在几小时后失效,这通常是上传失败的原因。无论如何,Xcode 会创建所需的证书和配置文件。仓库中不存储任何机密。
当 main 分支推送时,网页版会通过 Netlify 自动部署(本地静态导出到 dist/ 可运行 bun run build:web)。
特别感谢
Nicolo Davis 和合作者们为回合制游戏引擎 boardgame.io 做出的贡献。
Facebook 和合作者们为出色的库 React 和 React-Native 做出的贡献。
- 本文标题:matchimals.fun - 🦁 🃏 📱 一款动物匹配拼图卡牌游戏——使用回合制游
- 本文链接:https://cn121.com/h5game/chrisheninger-matchimals-fun.html
- 原项目:chrisheninger/matchimals.fun 版权归原作者 chrisheninger 及贡献者所有
- 收录信息:本站于 2026-10-02 收录本项目,本页所列协议与仓库指标均为收录当时的状态;该日期之后原项目的版本更新与协议变更,本页不作同步。
- 开源协议:收录时本项目采用 MIT(查看 LICENSE 原文),本站转载其原始文档(未改动文字,仅剔除图片与无关章节);使用、修改、分发请以该仓库 LICENSE 原文为准。
- 站点出处:本文首发于 OneTwoOne,收录自 GitHub 开源项目 chrisheninger/matchimals.fun。
- 内容说明:本页正文为原项目 README 原文(英文),本站后续会翻译为中文(当前尚未译出,仅将二级标题译为中文,便于按栏目定位;标题原文可在下方原仓库中查看),仅剔除了图片与赞助等无关章节、并把相对链接改为绝对地址;页首简介为机器翻译自仓库描述。
- 引用声明:商业转载、第三方聚合或 AI 检索训练引用时,请务必保留以上来源出处、本文永久链接,以及原项目的版权声明与许可信息。
- 下架通道:若原项目此后变更或收紧了许可协议、或作者/权利人认为本站的收录方式(译文、排版适配、简介翻译等)超出其授权范围,请通过 xyd3302001@163.com 发送下架通知,并附上项目地址与本页链接。本站核实后将第一时间删除本页内容,或改为不复制原文的目录性收录;署名更正等其他要求可一并提出。