Skip to content

Jasonlecson/designer-game

Repository files navigation

平面设计师模拟器 · 职业生涯版

基于 LLM 的交互式职业生涯模拟游戏。从 2010 年起步,扮演一名平面设计师,通过回合制选择书写没有终点的职业生涯。


快速开始

# 1. 安装依赖
python -m venv venv && source venv/bin/activate
pip install flask requests

# 2. 配置 API
# 编辑 config.json,填入 DeepSeek API Key:
# { "api_base": "https://api.deepseek.com", "api_key": "sk-xxx", "model": "deepseek-v4-flash" }

# 3. 启动
./start.sh

浏览器访问 http://localhost:8765,手机和电脑自动适配不同页面。


技术栈

层面 技术
后端 Python Flask,threaded 多线程
前端 原生 HTML/CSS/JS — 桌面端三栏编辑器 + 移动端杂志卡片式
AI 引擎 OpenAI 兼容 API(DeepSeek V4 Flash)
属性系统 XP 累积制,Lv = ⌊√(XP/20)⌋,上限 20 级,前端级内进度条
存档 多玩家 Session 隔离,JSON 文件持久化,per-player 线程锁

项目结构

designer-game/
├── server.py              # Flask 后端 — 游戏引擎 / LLM 调用 / 所有游戏系统
├── start.sh               # 一键启动脚本(自动杀旧进程)
├── static/
│   ├── shared.js          # 前后端共享 API 层 + 工具函数
│   ├── desktop.html       # 桌面端 — 三栏编辑器布局
│   ├── mobile.html        # 移动端 — 杂志卡片式 + 底部 Tab
│   └── index.html         # 原始版本(保留)
├── players/               # 多玩家存档(按 session ID 隔离)
│   └── state_*.json       # 每个玩家的游戏状态
├── config.json            # API 配置(不入 git)
├── player_feedback.jsonl  # 玩家反馈收集(每行一条 JSON)
└── API_PROTOCOL.md        # 前后端通信协议文档

游戏系统

回合制核心循环

阅读剧情 → 从 2-3 个选项中选择(effect 预览属性变化)→ LLM 生成下回合叙事

1 回合 ≈ 1 周,48 回合 ≈ 1 年。从 2010 年 1 月开始,四季轮换触发不同行业事件。

6 项属性(XP 经验制,1-20 级)

属性 升级来源
🎨 审美判断力 LLM 趋势 + 选择效果 + 培训
🔧 执行能力 LLM 趋势 + 选择效果
💼 商业思维 LLM 趋势 + 选择效果 + 项目完成
🗣 表达能力 LLM 趋势 + 选择效果 + NPC 互动
💡 创意深度 LLM 趋势 + 选择效果
📦 作品集厚度 项目完成 + 整理作品集主动行动

每个 options effect ±1 = 固定 50 XP,前端属性条同步显示级内进度条。

7 种出身特质(有明确机制差异)

出身 特质 机制
应届生 学院派底子 培训效果 +20%,初始创意+2
乙方执行 执行力基因 行动精力消耗 -2,初始执行+2
甲方品牌 商业嗅觉 薪资 +25%,初始商业+2
媒体编辑 信息敏感 NPC 事件触发概率翻倍,初始表达+3
自由职业 独狼基因 无固定薪资但开销 -40%,精力 -3/回合
印刷厂 工艺基因 作品集积累 +50%,初始作品集+2
自定义 无标签 无任何修饰

5 个专精方向

创建角色时选择:🏷 品牌设计 / 📱 UI/UX / 🖌 商业插画 / 🎬 动态设计 / 📄 印刷物料。选后 +2 对应属性,60% 概率接到该方向项目。

设计趋势

每 48 回合行业风向轮换。匹配趋势属性高则项目预算 +20%,被克制属性低则 -25%。

结局系统

每回合检测 4 种结局:🌟 巅峰设计师 / 🔄 华丽转身 / 💸 黯然离场 / 🏡 平稳着陆。触发时弹出结局卡片。

NPC 系统

  • 6 种角色类型,每回合可能发来消息(📨 通知 + 人脉页标记)
  • 互动后进入 4 回合注目期,下几回合 LLM 叙事中可能自然出现
  • 有主动事件时人脉页显示 📨 标记,点击打开互动面板自动出现「回应」选项

其他系统

  • 精力 / 储蓄 — 每回合消耗,≤0 强制休息,储蓄为负触发危机
  • 8 级头衔晋升 — 全属性达标自动升,月薪随头衔增长
  • 12 枚成就 — 属性/精力/回合/NPC 多维度解锁
  • 项目系统 — 竞标→执行→改稿→交付,完成自动入作品集
  • 里程碑 — 动态生成(晋升/财务/学习/社交/项目),带进度追踪
  • 属性检定 — D10 骰子检,结果融入 LLM 叙事
  • 行业动态 — 每 12 回合 LLM 生成 2-3 条行业新闻

API 接口

端点 方法 说明
/api/new_game POST 创建新游戏(含出身、资源、目标、专精)
/api/action POST 执行选择,LLM 生成下回合叙事
/api/active_action POST 主动行动(休息/学习/求职/社交)
/api/state GET 获取当前存档
/api/npc/interact POST NPC 互动
/api/npc/options POST 获取 NPC 互动选项(含回应事件)
/api/project GET 获取/自动生成当前项目
/api/portfolio/generate POST 获取作品集(项目完成自动记录)
/api/achievements GET 获取成就列表
/api/industry_news GET 获取行业新闻
/api/feedback POST 提交玩家反馈
/api/ending/resolve POST 确认结局
/api/saves GET 列出 5 个存档槽位
/api/saves/save POST 手动存档
/api/saves/load POST 读取存档
/api/saves/delete POST 删除存档
/api/export GET 导出存档文件
/api/import POST 导入存档
/api/reset POST 删除当前存档

设计决策

决策 原因
XP 累积 + 开根号 LLM 不擅长精确数值,趋势 + 公式更稳定
effect 结构化数组 避免字符串解析,统一 [{attr, delta, text}]
取消前端 API 配置入口 密钥安全,仅存 config.json
多玩家 Session 隔离 + 线程锁 防并发写冲突
作品集项目完成自动记录 不额外调用 LLM,零成本落盘
2010 年起始 给故事明确的历史锚点
response_format + 回退 优先约束 LLM JSON,失败自动重试
D10 属性检定 属性和掷骰共同决定成败

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors