game/addons/game_ai_npc/overview.md

3.1 KiB
Raw Permalink Blame History

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/<id> GET NPC 详情(含关系+行为+知识)
/game/api/npc/<id>/relationships GET NPC 关系网
/game/api/npc/<id>/tick POST 手动触发单个 NPC Tick需登录
/game/api/npc/tick-all POST 批量 Tick 所有 NPC需登录

种子数据7 个角色)

NPC 类型 性格 目标
张伯·老村长 领袖 严肃 维持村落安全
林铁柱·铁匠 工匠 刚毅 铸灵器级武器
柳絮·游方学者 学者 好奇 记录古遗迹
花娘·行商 商人 开朗 开辟跨层商路
阿猛·猎户 战士 大胆 猎杀三尾狐兽
老鬼·流浪药师 游荡者 神秘 寻忘忧草
小禾·农家女 居民 善良 学会识字记账

初始关系:张伯↔林铁柱(信赖)、张伯↔花娘(商业伙伴)、柳絮↔小禾(师生)、阿猛→柳絮(暗恋)。