# Absolute_Majority **Repository Path**: v5general/Absolute_Majority ## Basic Information - **Project Name**: Absolute_Majority - **Description**: 一款议会政治模拟游戏,拥有199个AI控制的NPC,每个NPC都拥有独特的个性、类似《十字军之王3》的特质、生老病死以及多党政治体系。采用React+TypeScript构建。 - **Primary Language**: TypeScript - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: https://absolute-majority.pages.dev - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-14 - **Last Updated**: 2026-06-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: React, TypeScript, Gamemaker, Game-engine ## README
# 🎮 绝对多数(Absolute Majority) > *「你不是首相,也不是党首。你只是 200 席中的一名新人议员——而政治,是规则、数字与人心三者碰撞的游戏。」* [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](LICENSE) [![NPCs: Political Human Skill](https://img.shields.io/badge/NPCs-Political%20Human%20Skill-green)](https://github.com/v5general/political-human-skill)
一款 AI 驱动的回合制议会政治策略游戏,背景设定在 2058 年架空日本的众议院。全部剧情——每一个事件、每一句对话、每一个选项——都由 LLM 实时生成,并由确定性的规则引擎约束议会程序。未配置 LLM 时,游戏回退到规则文本,保证始终可玩。
[English](README.md) | **简体中文** | [日本語](README.ja.md) | [한국어](README.ko.md)
[这是什么](#这是什么) · [🎮 与 Political Human Skill 的关联](#-与-political-human-skill-的关联) · [特性](#特性) · [世界观](#世界观) · [游戏流程](#游戏流程) · [技术栈](#技术栈) · [快速开始](#快速开始) · [LLM 配置](#llm-配置) · [项目结构](#项目结构) · [状态](#状态) · [许可证](#许可证)
--- ## 这是什么 **绝对多数**是一款回合制议会政治策略游戏。你扮演一名新当选的众议员,在 48 回合(4 年)中穿行于派阀斗争、联合组阁、委员会博弈、媒体战与密室交易之间。 游戏采用双层架构: ```text 规则引擎(始终启用) LLM 增强(可选) - 确定性议会程序 - 动态叙事生成 - 席位分配与选举数学 - NPC 对话与推理 - Intent 验证与结算 - 事件与选项产出 - 14 种程序性 Intent 类型 - 上下文感知适配 ↓ 两层协作,互不从属 ↓ 规则引擎是状态变更的唯一权威。 LLM 在规则约束内生成叙事、对话与选项。 无 LLM 时,规则文本填补所有空缺。 ``` 游戏中的每个 NPC——从首相到派阀领袖、媒体评论员、利益集团——都通过 agent 引擎感知世界并生成意图。这些意图必须先经过规则引擎验证,才能改变任何游戏状态。 --- ## 🎮 与 Political Human Skill 的关联 > 🧩 **本游戏的 NPC 由 [Political Human Skill](https://github.com/v5general/political-human-skill) 驱动** —— 一个用于创建政治人物人格的开源框架,采用双层结构(人层 + 政治层)。 《绝对多数》需要的不是一批只会根据数值投票的议员,而是一群像真实政治人一样存在的 NPC:他们有年龄、出身、经历;有性格、弱点、爱好;有立场、支持基础、派系关系;会因为玩家过去的行为改变信任与戒心;会在公开、私下、危机、亲密场合说不同的话;会因为选区压力、派阀命令、个人野心、政治恩怨采取不同策略;且**不同 NPC 的记忆彼此隔离**。 **[Political Human Skill](https://github.com/v5general/political-human-skill)** 正是为此而生。与本游戏结合时,该 Skill 会: - 在游戏规则提供的候选行动中做判断并选择 - 输出结构化、可调试、可解释的 NPC 行为 JSON - 通过独立记忆与关系状态维持人格连续性 - 根据场合切换自我状态(公开 / 私下 / 策略 / 受伤 / 亲密) ```json { "selected_action": "negotiate_budget", "action_scores": { "support_bill": 58, "negotiate_budget": 86, "join_rebellion": 27 }, "public_statement": "政策方向可以理解,但地方经济的承受能力需要更细致的制度设计。", "private_reason": "支持基础依赖地方公共支出,直接支持会损害选区关系。", "relationship_delta": { "trust": 1, "respect": 2, "caution": 1 }, "memory_write": ["玩家在财政改革事件中要求该 NPC 支持法案,但未提供地方预算补偿。"] } ``` > **《绝对多数》**是 Political Human Skill 的首要应用场景,但该 Skill 本身作为一个独立、可复用、可扩展的框架存在。两个项目协同开发,共享同一安全承诺——绝不涉及近现代现实政治人物。 --- ## 特性 - **AI 驱动叙事** — 事件、对话、选项由 LLM 实时生成,会根据当前局势、国会会期和角色背景动态适配。 - **完整议会模拟** — 200 席众议院(110 直接席 + 90 比例代表 D'Hondt,并行制)、9 个常任委员会、不信任案、法案决策链,以及多档表决门槛(过半数 / 绝对多数 / 超级多数)。 - **派阀系统** — 党内派阀拥有忠诚度、野心,可挑战党首;联合劳工党实行民主集中制,禁止派阀。 - **国会年度会期** — 一年分为四段,会期决定当月可行动作:预算决战期(1–3 月)、法案攻坚期(4–6 月)、地方维护期(7–9 月,国会闭会)、临时国会(10–12 月)。 - **双轨晋升** — 党内晋升与国会晋升相互独立;当大臣 ≠ 当党首。 - **组阁系统** — 选后联盟谈判、内阁职位分配、首相指名。 - **14 个程序性 Intent** — 完整的意图管线(校验 + 结算):不信任提案、解散决策、法案起草/表决、委员会审查/表决、联盟谈判、内阁改组、党首挑战、政策宣示。 - **Galgame 式对话** — 政治事件以视觉小说式对话呈现,全屏自适应布局,手机和桌面都舒适;带选项与后果。 - **角色创建** — 自定义姓名、年龄、性别、所属政党、性格特质、意识形态、出身背景;背景会影响你遭遇的事件。 - **移动端自适应** — 布局、字号、图片格式(手机 WebP、桌面 PNG)乃至 LLM 并发数都会随屏幕尺寸切换;刷新安全的 URL 路由让你在事务所与国会局势之间切换后,重载页面仍停留在原界面。 --- ## 世界观 **设定**:架空日本,2058 年。议会内阁制。众议院为唯一可操作议会。 **任期**:4 年 = 48 回合。1 回合 = 1 个月。游戏从 1 月(预算决战期起始)开始。 **六个原创政党**(不存在现实政党与政治人物): | 政党 | 简称 | 意识形态 | 基础席位 | |------|------|---------|---------| | 改革民主党 | RDP | 中间 | 54 | | 自由党 | LP | 右翼 | 40 | | 国民保守党 | NCP | 中右 | 38 | | 社会联盟 | SA | 中左 | 29 | | 第一公民阵线 | FCF | 极右 | 24 | | 联合劳工党 | ULP | 左翼 | 14 | 199 席 NPC 由确定性并行选举系统分配。你是第 200 席——占 1 个比例代表席,加入某党后该党席位 +1。 --- ## 游戏流程 1. **主菜单** — 开始新游戏或继续存档。 2. **角色创建** — 定义你的政治角色。 3. **事务所(主界面)** — 你的大本营:推进回合、打开党派一览与个人档案浮层、进入国会局势。 4. **国会局势** — 四大仪表盘(内阁 / 委员会 / 政局 / 关系)+ 实时 AI 推演日志。可通过 `#/game/situation` 直达,刷新页面仍停留在该界面。 --- ## 技术栈 - **React 18** + **TypeScript** - **Vite 6**(构建工具) - 除 React 外无运行时依赖,全部游戏逻辑手写。 --- ## 快速开始 ```bash # 安装依赖 npm install # 启动开发服务器 npm run dev # 生产构建 npm run build # 预览生产构建 npm run preview ``` 然后打开 Vite 提示的地址(默认 `http://localhost:5173`)。 --- ## LLM 配置 游戏采用双层架构: - **规则回退(始终启用)** — 纯本地逻辑,无 API 也能玩。 - **LLM 增强(可选)** — 接入任意 OpenAI 兼容 API(DeepSeek、OpenAI、Kimi、通义千问、GLM、硅基流动等),获得更丰富、更动态的叙事与推理。 在游戏内的设置面板配置 LLM:填写 **Base URL**、**API Key**、**模型名**。配置保存在浏览器本地。 调用通过 SSE 流式返回,避免长响应在移动网络上被静默中断;引擎还会在手机上自动串行执行多个 agent 调用,以适应更严格的并发连接限制。若服务商不支持流式,桥接层会自动降级为单次 JSON 响应。 --- ## 项目结构 ``` src/ ├── App.tsx # 路由、表头、导航标签、回合流程 ├── App.css # 国会局势样式 + 响应式断点 ├── components/ # UI:主菜单、角色创建、对话层、各仪表盘、弹窗 ├── engine/ # 游戏逻辑:agent、叙事、规则、选举、委员会、派阀、llmBridge…… ├── config/ # 规则常量、选举/选区/背景配置 ├── data/ # 初始状态、政党、事件、市场、媒体、世界观 ├── hooks/ # useGameState(中央状态管理) └── types/ # TypeScript 类型定义 ``` 核心引擎: - `agentEngine` — AI 角色(首相、党首、派阀领袖、媒体、利益集团)感知局势并生成行动意图。 - `narrativeEngine` — 将意图转换为可玩事件(标题、对话、选项、后果)。 - `rulesEngine` — 修改席位、支持率、资金、关系的唯一合法入口;校验并结算全部 14 种程序性 AI 意图。 - `electionEngine` — 确定性并行选举:110 直接席(11 选区 × 块内 D'Hondt)+ 90 比例代表席(全国 D'Hondt + 5% 阈值)。 - `llmBridge` — OpenAI 兼容客户端,内建移动端流式、超时、重试以及 `debugLLMConfig()` 控制台调试助手。 --- ## 状态 个人项目,持续迭代中。419 个确定性单元测试覆盖 11 个测试文件。出于兴趣与 LLM 接地政治模拟的实验而构建。 --- ## 许可证 本项目基于 [GNU General Public License v3.0](LICENSE) 授权。 ---
*48 回合。200 席位。该你落子了。*