# game_ai_npc 模块概览 ## 已创建文件(16 个) ``` addons/game_ai_npc/ ├── __init__.py ├── __manifest__.py ├── models/ │ ├── __init__.py │ ├── npc.py # NPC 主模型 + Tick 逻辑 + Cron 批处理 │ ├── npc_relationship.py # NPC 关系(好感度/关系层级) │ ├── npc_behavior.py # 行为日志 │ └── npc_knowledge.py # NPC 所知信息(含谣言/准确性) ├── controllers/ │ ├── __init__.py │ └── npc_api.py # REST API ├── security/ │ └── ir.model.access.csv ├── views/ │ ├── npc_views.xml # NPC 角色(列表+表单+ Cron) │ ├── npc_relationship_views.xml │ ├── npc_behavior_views.xml │ ├── npc_knowledge_views.xml │ └── menu.xml # 菜单:AI NPC → 角色/关系/日志/知识 ├── data/ │ └── game_npc_data.xml # 7 个 NPC + 关系 + 知识 种子数据 └── overview.md ``` ## 模型结构 | 模型 | 用途 | |---|---| | `game.npc` | 角色(身份/性格/统计/目标/行为刻) | | `game.npc.relationship` | 关系(好感度-100~100、自动推导层级) | | `game.npc.behavior.log` | 行为日志(每次 Tick 自动记录) | | `game.npc.knowledge` | 知识体系(含准确性、来源) | ## 核心设计 **NPC Tick 周期**(Odoo Cron 每 15 分钟推一次): 1. 按角色类型日程表确定当前活动(居民/商人/战士/学者/工匠/领袖/游荡者各有不同日程) 2. 消耗基础资源(精力↓、饱腹↓) 3. 应用活动效果(劳作涨目标进度、用餐涨饱腹、睡眠涨精力) 4. 30% 概率触发社交 → 性格兼容性计算 → 好感变化 → 关系层级自动推导 5. 综合状态更新心情 6. 记录行为日志 **关系系统**:好感度 -100~100,自动推到 7 个层级(死敌→敌对→陌生人→熟人→朋友→挚友→至亲),性格兼容性影响社交互动结果。 ## API 端点 | 路由 | 方法 | 说明 | |---|---|---| | `/game/api/npcs` | GET | 所有活跃 NPC 列表 | | `/game/api/npc/` | GET | NPC 详情(含关系+行为+知识) | | `/game/api/npc//relationships` | GET | NPC 关系网 | | `/game/api/npc//tick` | POST | 手动触发单个 NPC Tick(需登录) | | `/game/api/npc/tick-all` | POST | 批量 Tick 所有 NPC(需登录) | ## 种子数据(7 个角色) | NPC | 类型 | 性格 | 目标 | |---|---|---|---| | 张伯·老村长 | 领袖 | 严肃 | 维持村落安全 | | 林铁柱·铁匠 | 工匠 | 刚毅 | 铸灵器级武器 | | 柳絮·游方学者 | 学者 | 好奇 | 记录古遗迹 | | 花娘·行商 | 商人 | 开朗 | 开辟跨层商路 | | 阿猛·猎户 | 战士 | 大胆 | 猎杀三尾狐兽 | | 老鬼·流浪药师 | 游荡者 | 神秘 | 寻忘忧草 | | 小禾·农家女 | 居民 | 善良 | 学会识字记账 | 初始关系:张伯↔林铁柱(信赖)、张伯↔花娘(商业伙伴)、柳絮↔小禾(师生)、阿猛→柳絮(暗恋)。