Skip to content

Latest commit

 

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Roundtable(圆桌)

English · 中文

License: MIT

Roundtable 是一款在浏览器里玩的桌游,主题是「用 AI 做软件产品」。2 到 4 名玩家各自起一个想做的产品名,抽一手策略卡牌,比拼谁能在「演示日(Demo Day)」交付出最有说服力的产品。每交付一个功能,房主端的 AI 就会把它构建成一个真实可用的手机 App,可以直接打开使用。

它的体验像一局牌局,而不是一张表单:对手坐在桌子对面、手里攥着扣着的牌,中间一块共享牌桌实时显示每个产品的进度,旁边的日志讲述刚刚发生了什么。

可以联机玩——一人开房,其他人用 5 位房间号在各自的手机上加入、各看各的手牌——也可以在同一块屏幕上轮流传着玩

Roundtable 牌桌

亮点

  • 一起联机玩。 开一局游戏,分享 5 位房间号,朋友们就能在世界各地用自己的设备加入。服务器是权威方,每个人的手牌都对别人保密;牌桌通过轻量轮询实时更新,可以穿透任何隧道或代理。
  • 任意输入产品。 产品创意是自由文本——画图、记账、单词卡,什么都行。没有预设菜单;短中文创意(如「画图」)也支持。
  • 真正的牌桌。 对手展示成扇形的扣牌;你的手牌在底部正面朝上;点一张牌它会放大弹出,连同完整说明一起展示,方便你看清再出牌。
  • 交付成真实 App。 打出新功能卡来添加一个具体功能;在这一回合结束时,系统会把你已积累的功能构建成一个真正能用、自包含的手机 App——真的画板、真的卡片——并实时托管,任何人都能打开。
  • 创始人称号。 演示日会根据你的打法,给每位玩家颁发一个略带调侃的称号——卷王套现离场保守派……每个都配有与卡牌同款风格的徽章插画。
  • 数据驱动的卡牌。 卡牌规则、文案和美术都定义在数据与资源文件里,牌库很容易扩展。

你会做出什么

任何一个「交付了功能」的回合,都会把你的产品编译成一个自包含的手机 App——一个单文件 HTML,作为真正可用的应用运行(画布、表单、本地存储),外观仿原生移动界面,并自动适配 iOS 或 Android。房主会实时托管每位玩家的 App,所以你只需点打开应用即可使用或分享,无需下载。

构建出的产品作为手机 App 运行

怎么玩

  1. 房主打开应用,填写昵称和一个具体的产品创意,创建游戏。其他人打开同一网址、用房间号加入(或在一台设备上轮流玩)。泛泛的占位词和「和 Roundtable 自身有关」的创意会被拒绝。
  2. 在大厅里房主开始游戏——每位玩家发到 5 张私密手牌,且必有至少一张「新功能」
  3. 轮到你时,打出一张牌(点击放大,再点出牌),需要目标的卡牌请选择目标。
  4. 如果这一回合你提交了一个功能,结束回合会花费一些点数并在后台构建你的 App。只打策略牌、或不出牌的回合不会触发构建。
  5. 七个回合后进入演示日:为所有人结算分数、颁发创始人称号,并托管每个做好的 App。

牌库

共 5 张牌,定义在 public/data/cards.json(含中英文案),美术在 public/assets/cards/

卡牌 费用 目标 效果
新功能 (New Feature) 1 自己 添加一个具体功能——自行输入,或从灵感池中选取。这是壮大 App 的唯一途径,且必定出现在开局手牌里。
用户反馈 (User Feedback) 1 自己 为你的灵感池添加一个与产品相关的功能点子,供之后的「新功能」使用。
收购功能 (Acquire Feature) 2 他人 从另一位玩家那里夺取一个已交付的功能(它会从对方产品中消失)。
顾问 (Consultant) 0 他人 向对手提供有偿咨询;若对方接受,他们付你点数,你则为他们的产品添加一个功能点子。
云额度 (Cloud Credits) 0 自己 为后续构建储备赞助点数。

状态与计分

每个产品在牌桌上显示三个数字:

  • 进度(0–100%)——只有在构建时才上升。每次构建增加 clamp(20 + 投入点数 × 5, 6, 45)
  • 已交付——产品中的功能数量。
  • 点数——剩余的可支配点数(上限 − 已花 + 赚取)。

演示日:

得分 = 进度 + 已交付 × 8 + min(10, 剩余点数)

……并根据同样这几项给每位玩家颁发一个创始人称号

称号 获得条件
卷王 (The Machine) 交付功能最多
收官大师 (The Finisher) 进度达到 100%
孤注一掷 (All-In) 有交付,且把点数花得一干二净
精打细算 (Lean Founder) 有交付,同时保留了至少一半预算
稳健创业者 (Steady Builder) 均衡的中间派
保守派 (The Conservative) 什么都没交付,守着开局预算
套现离场 (Cashed Out) 什么都没交付,却赚到超过了开局预算

带创始人称号的演示日结算

货币:AI 点数

  • 点数上限——你的初始预算(默认 16),也是你愿意花的上限。
  • 赚取点数——来自顾问的报酬和云额度卡;会先于你的上限被花掉,让你不抬高上限也能继续构建。
  • 回合花费——一次构建会把你剩余的点数,按剩余回合数平均分摊后花掉一份。
  • AI 令牌预算——1 点数对应 800 个模型输出令牌上限;一次构建的 App 可用 回合花费 × 800 个令牌。付费的 AI 功能建议每次花费 1 点数。

运行

需要 Node.js 20+。

npm start

然后打开终端打印的网址(默认 http://localhost:5173)。

AI 构建器(可选)

每次功能构建都由房主配置的模型生成——玩家无需任何密钥,因为构建跑在房主的服务器上。什么都不配置时,内置的离线构建器会生成一个基础 App(无需密钥、零配置)。想构建更丰富、真正能用的 App,把 .env.example 复制为 .env,并设置一个 OpenAI 兼容的来源:

本地模型——免费、私密、无需密钥(Ollama / LM Studio / llama.cpp):

AI_API_BASE=http://localhost:11434/v1
AI_MODEL=qwen2.5-coder:7b

云端密钥——任意 OpenAI 兼容服务,由房主付费(示例:通过 Anthropic 的 OpenAI 兼容端点调用 Claude):

AI_API_BASE=https://api.anthropic.com/v1
AI_MODEL=claude-sonnet-4-5
AI_API_KEY=sk-ant-...

设置 AI_API_BASE/AI_API_KEY 即可开启 AI 构建器;服务器启动时会打印当前模式,GET /api/health 也会以 aiMode 字段报告。

远程开房与加入

一台机器用 npm start 跑服务器,其他人在浏览器里连进来对战。没有账号——玩家靠房间号这一「每局共享的口令」来认证,所以你只需把网址和房间号给到你邀请的人即可。

  1. 开一局。 启动服务器、创建游戏,把 5 位房间号(例如 EDLE7)发给你想邀请的玩家。

  2. 让服务器可达。 同一 Wi-Fi 下,分享你机器的 http://<局域网IP>:5173。要跨互联网玩,就在本地服务器前加一条隧道,改为分享隧道网址:

    cloudflared tunnel --url http://localhost:5173   # Cloudflare 快速隧道
    #
    ngrok http 5173

    两者都会打印一个 https://… 网址,且无需在路由器上开放端口。把该网址房间号一起发给玩家。

  3. 加入。 远程玩家打开网址、填写昵称和产品创意、输入房间号即可加入。房主会在大厅看到他们出现,并可在开始前移除任何人。

分享邀请链接可预填房间号、昵称和产品(?code=EDLE7&name=…&product=…);链接里的房间号始终优先于本地的旧会话,所以新邀请绝不会把你又带回旧房间。

安全模型。 房间号就是共享口令——请当作密码对待。房间号来自很大的随机空间,且每个连接的加入尝试都有限流,因此基本无法被猜出。只有房主能开始或踢人。游戏只存在内存中,闲置数小时后即被丢弃;提交的文本有长度限制并经过清洗。它面向你邀请的熟人之间的友好对局,而非加固过的公共服务——只把隧道网址分享给你信任的玩家,玩完就关掉隧道。

项目结构

public/            提供给浏览器的静态客户端
  index.html         联机入口(首页 / 大厅 / 实时牌桌)
  online.js          联机客户端:开房/加入、大厅、轮询驱动的牌桌
  local.html         单设备「轮流传玩」入口
  app.js             轮流传玩的游戏逻辑与渲染
  styles.css         首页、牌桌、卡牌、大厅、结算及响应式样式
  data/cards.json    卡牌定义与中英文策略文案
  assets/cards/      卡牌美术(每张牌一个 PNG)
  assets/awards/     创始人称号徽章美术
server/
  index.js           HTTP 服务器:静态文件(gzip)、房间路由、托管 App
  engine.js          权威游戏引擎、计分、称号评定、按玩家脱敏的视图
  rooms.js           内存中的房间、房间号、轮询/在线状态、构建编排
  build.js           AI / 离线手机 App 构建器与功能建议
scripts/
  screenshot.mjs     重新生成 README 里的牌桌截图
docs/                本 README 使用的截图

联机游戏是服务器权威的:客户端发送意图(出牌、结束回合),渲染一份通过短轮询拉取的脱敏视图——这比会被隧道缓冲的 Server-Sent Events 更稳——所以玩家永远只会收到自己的手牌。

开发

npm run check        # 对客户端与服务器做语法检查
npm run screenshot   # 从运行中的应用重新生成 docs/screenshot.png

npm run screenshot 会启动服务器,在无头 Chrome 中驱动一局简短的演示对局并截取牌桌。它需要安装 Google Chrome 或 Chromium;若安装在非标准位置,请设置 CHROME_PATH

许可证

基于 MIT 许可证 发布。© 2026 Ziwei Zhu。

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages