Skip to content
This repository was archived by the owner on Jul 7, 2026. It is now read-only.

Repository files navigation

利维坦的诞生 · 洼地出逃

"洼地从不生产秩序,只消化秩序。"

一款以**刘仲敬思想(阿姨学)**为内核、AI 作为游戏主持人的叙事战略 roguelike。玩家扮演当代中国的普通人,在 80 天内经历"洼地日常 → 裂痕显现 → 大洪水 → 诸夏或消亡"四幕,用每一次决策塑造自己的政治命运。

基调:冷鄙现实主义。钢木新闻体。Disco Elysium / Suzerain 的政治气质。


核心特色

AI 作为游戏主持人(非装饰性)

  • 每局世界从零生成:AI 为你播种本时代独有的裂痕、命运线、15-25 个 NPC
  • NPC 拥有持久记忆:每个 NPC 有独立的 AI 灵魂,记得你的所有互动,带着自己的目标演化
  • 开放式自由行动:不只是 A/B/C/D 选项——你可以自由输入"我想约李经理下班后聊聊",AI 裁定可行性、代价、NPC 反应
  • AI 作者写结局史诗:基于你整局的完整记忆,生成 800-1500 字的个性化墓志铭

阿姨学机制化

概念 游戏机制
德性 共同体组织能力,主要资源
统战价值 真实值 vs 国家估值(滞后 3-7 天),过高被清洗、过低沦为韭菜
武德 第三幕后决定生死的组织化暴力
费拉 NPC 多数 NPC 默认冷漠、举报、背叛——你要筛选出德性种子
大洪水 Day 41-45 强制触发,不可避免
民族发明 第四幕自由输入建国宪章,AI 评一致性/独立性/动员力
岁月静好陷阱 前期看似最安全的选项,隐藏累积脆弱度

10 种结局

胜利:🏆 诸夏建国 · 🥈 土豪割据 · 🥈 殉道者 · 🥉 复辟者 · 🥉 地下传灯 死亡:费拉之死 · 两脚羊 · 政治清洗 · 张献忠化 · 海外流亡

每个结局由 AI 基于你本局的完整历史撰写独一无二的史诗。

跨局遗产

你死去的局的传说可能 ~15% 概率出现在其他玩家的世界里。时间线正在积累。

视听沉浸

  • 5 段 BGM 按场景上下文切换:菜单 / 序曲(day 0-1)/ 日常 / 事件 / 终局
  • 26 个 SFX 接入决策、自由行动抽签、神话编织、状态升降、危险脉冲、幕过渡、政权更迭、十种死亡变体等
  • 79 张 WebP 美术资产:6 原型 × 6 城市的开局插画、24 张 NPC 池(4 年龄 × 3 性别 × 2 阶层确定性映射)、6 种情绪背景、7 个数值图标、7 种裂痕图标、5 种 NPC 状态徽章、4 幕过渡、10 个结局 splash + 标题英雄图
  • 美学锚点:"钢木新闻体",墨韵 + 钢笔画混合,单一强调色压制,刻意保留不完美笔触

本地开发

# 依赖
npm install

# 环境变量(Vercel + Neon 用户)
vercel link --project=leviathan-client
vercel env pull .env.local

# 或手动复制 .env.example → .env 并填入 AI key + DB URL

# 数据库(首次,会 DROP 旧表)
npm run db:push

# 开发服务器
npm run dev:server    # Express on :3001
npm run dev:client    # Vite on :5173

# 构建
npm run build

# 资产 pipeline(一次性,已提交进 git,正常开发不必重跑)
npm run sfx:generate    # 生成 SFX(ElevenLabs,需 ELEVENLABS_API_KEY)
npm run art:generate    # 生成美术 PNG(OpenAI gpt-image-1,需 OPENAI_API_KEY,~$3)
npm run art:compress    # PNG → WebP(sharp 本地转换,180MB → 18MB)

无 API key 时进入 mock 模式,游戏仍完整可玩但每局叙事相似。生产体验强烈建议配置 OPENAI_API_KEY

技术栈

  • Monorepo:npm workspaces — packages/{shared,client,server}
  • 前端:Vite 6 + React 19 + TypeScript + Zustand + Tailwind 4 + Framer Motion
  • 后端:Express 5 + Drizzle ORM + Neon Postgres + Neon Auth (JWT via jose)
  • AI:OpenAI via Vercel AI SDK,支持模型分层(heavy/light/epic)与 prompt caching;pgvector 语义记忆召回
  • 音频:Howler.js(BGM 含淡入淡出、SFX 单次触发);Zustand subscribe 驱动状态差分音效
  • 美术:OpenAI gpt-image-1 一次性批量生成 + sharp 转 WebP;运行时 <ArtImage> 组件 + 文件名约定 + onError 回退占位 SVG
  • 部署:Vercel serverless functions

架构

共 7 类 AI 协同:

  • 世界播种者(一次/局)· 场景导演(每日)· 情境写手(每日)
  • NPC 灵魂(按需)· 仲裁者(开放输入)
  • 官方广播员(隔日)· 墓志铭作者(结局)

10 个 AI 路由 + 7 张 DB 表 + 4 层客户端 state(protagonist / world / network / scene)。

详见 AGENTS.md

环境变量

OPENAI_API_KEY=            # AI provider(语言模型 + embedding)
AI_COST_LOG=false          # 可选:日志输出每次调用成本
PORT=3001

DATABASE_URL=              # Neon pooled
DATABASE_URL_UNPOOLED=     # Neon direct(迁移用)
NEON_AUTH_BASE_URL=        # Neon Auth 服务端
VITE_NEON_AUTH_URL=        # Neon Auth 客户端(浏览器暴露)

许可

AGPL-3.0。

致谢

思想框架参考刘仲敬公开论述。游戏内观点不代表任何官方立场,亦不代表作者对现实政治的判断。


Chan Meng

Chan Meng
Need a custom app like this one? I build them — let's talk.

Email Chan Meng Chan Meng on GitHub

About

利维坦的诞生 | The Birth of Leviathan — A black-humor political simulation card game where you invent nations from trash. AI-powered narrative weaving meets social Darwinist sandbox.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

Sponsor this project

Packages

Contributors

Languages