一套把「学科概念」变成可漫步像素群岛的交互小游戏(多岛合集版): 每座岛 = 一所世界名校、90 栋小屋对应 90 张概念卡;点屋读「一句话定义」, 顺石板路跳同套关联,跨套关联乘 🚢 渡轮去对岸大学;盖章打卡、分区 BGM、小镇游客。 当前合集含 全部 7 岛 630 卡(序=学习航线序,由根本到枝叶):① 哲学(哈佛大学)· ② 历史与文明(普林斯顿大学)· ③ 文化艺术与媒介(纽约大学)· ④ 心理与认知(斯坦福大学)· ⑤ 经济学(芝加哥大学)· ⑥ 法律与治理(耶鲁大学)· ⑦ 科技与社会(MIT)。
一个 HTML 就是全部游戏。卡片 Markdown 是内容唯一真源,其余都是它的渲染层。
🌏 世界名校群岛(七岛计划 · 学习航线序):① 哈佛大学(哲学 ✅)② 普林斯顿(历史与文明 ✅)③ 纽约大学(文化艺术与媒介 ✅)④ 斯坦福(心理与认知)⑤ 芝加哥(经济)⑥ 耶鲁(法律与治理)⑦ MIT(科技与社会);三区=各校真实校区地点(见 docs/ISLAND-REGISTRY.md)。校名与建筑仅作致敬虚构,与各校无隶属关系。
🤖 给 AI / 新开发者的第一入口:
docs/SPEC.md内含阅读协议(开工先读)、硬约束与常量、P1 扩展点、§9 验收清单(npm run check)。 每座新岛开工前还要读docs/ISLAND-REGISTRY.md,改完代码必须跑npm run check。 想先了解「项目为什么存在、怎么一路演化、我们信什么」——读docs/PROJECT-VISION.md(项目总纲)。
打开 像素知识岛-群岛合集-630卡.html(项目根)—— 多岛合集自包含单文件(七套数据/样式/脚本全部内联),
双击即玩、可离线、可发给任何人。首次点击画面解锁音效。
历史文件
像素知识岛-文化艺术与媒介90卡.html为合集前的单岛版(无哲学岛/渡轮),仅供旧引用,不再维护。
# 方式一:直接双击 index.html(浏览器 file:// 协议即可运行)
# 方式二:本地静态服务
python3 -m http.server 8000
# 浏览器访问 http://localhost:8000/index.html开发模式下样式与脚本均为独立文件,便于修改调试。
内容物料(md 卡片)变化后,先重新提取数据,再构建:
python3 scripts/extract_cards.py # content/ 全部套 md -> data/cards.all.js
python3 scripts/build.py # 内联全部资源 -> 像素知识岛-群岛合集-630卡.html(项目根)也可以用 npm:
npm run extract && npm run build发布到网页(PWA 投放目录):公开部署前多跑一步,生成 publish/ 投放目录(=注入 manifest / Service Worker / 图标的单文件副本):
python3 scripts/publish.py # 生成 publish/(index.html + manifest.webmanifest + sw.js + icons/)- 根目录
像素知识岛-群岛合集-630卡.html= 自包含零外链发布版,file:// 双击即玩(无 PWA 增强,属预期); publish/整目录上传 Vercel / GitHub Pages 即得可「添加到主屏幕」的网页版;- 免费托管步骤与对比见 docs/DEPLOY-VERCEL.md(Vercel 主路径 / GitHub Pages 备选)。
手机离线版(断网可玩):安卓=APK 直装(python3 scripts/build_apk.py → release/像素知识岛-安卓离线版.apk,本体内嵌、飞行模式可玩);iPhone=主屏幕 PWA(Safari 打开部署网址→分享→添加到主屏幕)。详见 docs/MOBILE-OFFLINE.md(DECISIONS D21)。
pixel-island/
├─ index.html 开发入口(外链 css/js/data)
├─ 像素知识岛-群岛合集-630卡.html 发布版(自包含零外链,项目根双击即玩)
├─ publish/ 网页投放目录(publish.py 生成:PWA 注入副本 + manifest/sw/icons;托管上传此目录)
├─ mobile/ 安卓离线壳源码(WebView 加载内嵌 assets/index.html;Java 壳 + res 图标)
├─ release/ 本地直装分发物:像素知识岛-安卓离线版.apk + 自签名密钥 pki-release.keystore(勿丢)
├─ package.json npm 脚本(extract/build/rebuild/serve/check)
├─ README.md 快速开始(本文件)
├─ docs/ 开发规范(给 AI/新开发者,开发前必读)
│ ├─ PROJECT-VISION.md ★ 总纲:为什么做、演化脉络、理念与信条(先读它建立全局感)
│ ├─ SPEC.md ★ 主规范:阅读协议、硬约束、常量、扩展点、验收清单
│ ├─ ISLAND-REGISTRY.md 七岛登记表:命名/氛围/地标/BGM 提案/开发状态
│ ├─ DECISIONS.md 决策记录与踩坑史(D1..B7,防推翻已定设计)
│ ├─ VISUAL.md 视觉与像素美术规范(调色板/造型/布局)
│ ├─ AUDIO.md 音频与 BGM 作曲规范(WebAudio 合成)
│ ├─ DEPLOY-VERCEL.md 部署指南(免费托管:Vercel 主 / GitHub Pages 备)
│ └─ MOBILE-OFFLINE.md 手机离线版指南(安卓 APK 直装 / iPhone 主屏幕 PWA)
├─ content/ 内容物料(真源,随项目存放)
│ └─ 90个文化艺术与媒介概念/ 90 张 Markdown 概念卡 + MOC
├─ src/ 源码(加载顺序固定,见 SPEC §8)
│ ├─ css/style.css
│ └─ js/setup·store·layout·view·sprites·terrain·render·ui·visitors·audio·npc·main.js
├─ data/cards.js 卡片数据(extract 生成,勿手改)
└─ scripts/
├─ extract_cards.py content/*.md -> data/cards.js
├─ build.py 内联资源 -> 发布版(项目根)
├─ publish.py 生成 publish/ 投放目录(PWA manifest/SW/图标,见 DEPLOY 指南)
├─ build_apk.py 生成安卓离线 APK(mobile/ 壳 + 本体内嵌,见 MOBILE-OFFLINE 指南)
└─ checks/ npm run check 的验收自检(SPEC §9)
├─ check_all.py 入口:数据/语法/桩+几何/产物 四段检查
└─ run_harness.js Node 桩执行 + 几何自检(落陆地/间距/空洞)
内容真源 =
content/下七套概念卡(90个文化艺术与媒介概念…90个历史与文明概念,每套 90 张 md)随项目存放, 克隆/拷贝本项目即可完整复现构建(七岛 630 卡),不依赖项目外的任何文件。
| 操作 | 说明 |
|---|---|
| 拖动 / 滚轮 / +- | 逛岛、缩放 |
| 点小屋 | 打开读卡窗:一句话定义 + 领域/期次 + 盖章 |
| 顺路逛逛 | 石板路跳同套关联;🚢 按钮=乘渡轮去对岸大学看那张卡 |
| 🚢 渡轮 | 顶栏按钮:群岛菜单,随时乘船换岛;过场=驶向该校的校史时光轴(逐条点亮里程碑) |
| 🗺 群岛 / 缩小到底 | 看整片群岛海图:虚线航线连着各校;金色学缘弧=两岛之间有跨套关联(如文化→哲学 14 条);点远岛=短渡轮过去,点自己所在的岛=拉近回落 |
| 盖章任务 | 复习自测勾选(✓ 存档) |
| 完整卡片 | 折叠阅读该卡全文小节 |
| 🛤 石板路 / 🏷 全岛路牌 | 看关联网络 / 全部名字挂牌 |
| ♪ 音乐 / ♪ 音效 | 分区 BGM 开关 / 音效开关 |
| 搜索框 | 按中文名 / 英文别名 / 领域找当前岛的卡 |
| 阿通 | 左下角吉祥物,点击换提示 |
分区 BGM(WebAudio 实时合成,零音频文件;③ 文化艺术岛三曲=P0 原曲母本,其余岛均为其移调变奏,移调量见 docs/AUDIO.md): ① 哲学岛:哈佛园=晨铃低语、怀德纳图书馆=书海对答、奥尔斯顿校区=暮钟星火; ② 历史与文明岛:拿骚厅=史册晨钟、费尔斯通图书馆=编年咏调、路易斯图书馆=余烬夜曲; ③ 文化艺术岛:华盛顿广场=广场晨钟、博斯特图书馆=书卷节拍、蒂施艺术学院=夜城音乐盒(P0 原曲·母本); ④ 心理与认知岛:主方院=晨光练习曲、纪念教堂=心灵圆舞、胡佛塔=星塔夜曲; ⑤ 经济学岛:主方院=市集晨曲、哈珀图书馆=金流圆舞、塞耶经济楼=远航号子; ⑥ 法律与治理岛:老校园=老院晨钟、斯特林图书馆=书殿咏叹、法学院区=宪章夜颂; ⑦ 科技与社会岛:大圆顶=圆顶晨光、无尽长廊=长廊脉冲、媒体实验室=实验室夜曲; 海上=海浪。
进度存储:localStorage(预览沙箱禁用时自动降级为内存);「↺ 清空进度」需二次确认。
- 纯前端零依赖:无框架、无构建库、无外链字体/图片/音频;发布版连数据都内嵌。
- 性能:多岛合集采用"活动岛"架构——任何时刻只渲染/驻留当前一座岛(离屏 base 一块),切岛即重建,内存与帧率等同单岛;数据 7×90 卡全量常驻仅几 MB。 地形一次性预渲染;每帧只重绘房屋/游客/动态装饰;游客 ~14 个/岛,帧循环 110ms,手机上也很流畅。
- 群岛海图零负担:缩到海图视野时,远岛是程序化轻绘(椭圆色块+期次色屋点+名牌,数百次绘制/帧);海图底为程序化大洋背景(深海渐变+经纬网格+深水斑+波光+罗盘);均无额外离屏大图——加满七岛也不增加常驻内存。
- 确定性布局:房屋坐标/树木/装饰由卡片名的哈希 + 固定种子生成——每次打开地图都一样。
- 真源单向:修改 md 卡片 → 重跑 extract + build 即同步到游戏,代码无需改动。
- 浏览器要求首次「点击」后才能播放音频(自动播放策略),点击小屋即可解锁。
- 「下载 .md」按钮在部分内嵌预览环境中不可见;本地打开时它指向当前岛
content/<该套目录>/下的原卡。 - 若在无网络沙箱里本地存储被禁用,进度仅保存在当前会话。
- ✅ 发布形态定版(D20):静态网页面向全平台(桌面/手机/平板响应式+双指捏合触控);
publish/PWA 投放目录;托管 Vercel 主 / GitHub Pages 备(docs/DEPLOY-VERCEL.md) - ✅ 手机离线版(D21):安卓 APK 真离线(本体内嵌,
mobile/壳 +scripts/build_apk.py)+ iPhone 主屏幕 PWA(docs/MOBILE-OFFLINE.md) - ✅ 收官:七岛全量(630 卡)已全部并入同一合集(每岛=一次会话:迁套→extract 登记→cfg 条目→rebuild+check,DECISIONS D10–D17)
- ✅ 航线序定版(D18):七岛序号按「由根本到枝叶」重排(哲学开篇)——渡轮菜单、海图蛇形读数、默认启航岛与文档全量对齐
- 精灵级校园化:为名校岛新增红砖/拱门等新小屋造型与地标(需按 VISUAL 记录)
- 正式新曲:哲学岛目前是移调变奏,后续可按 AUDIO §2 模板精写专属旋律
- 印章收集:集齐一镇庆祝彩带、导出印章图
- 漂流瓶:每日随机漂来一张卡的「一句话定义」
- 游客升级:跟随鼠标、与地标交互(坐在篝火旁)