game/addons/game_ai_npc/overview.md

75 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 | 类型 | 性格 | 目标 |
|---|---|---|---|
| 张伯·老村长 | 领袖 | 严肃 | 维持村落安全 |
| 林铁柱·铁匠 | 工匠 | 刚毅 | 铸灵器级武器 |
| 柳絮·游方学者 | 学者 | 好奇 | 记录古遗迹 |
| 花娘·行商 | 商人 | 开朗 | 开辟跨层商路 |
| 阿猛·猎户 | 战士 | 大胆 | 猎杀三尾狐兽 |
| 老鬼·流浪药师 | 游荡者 | 神秘 | 寻忘忧草 |
| 小禾·农家女 | 居民 | 善良 | 学会识字记账 |
初始关系:张伯↔林铁柱(信赖)、张伯↔花娘(商业伙伴)、柳絮↔小禾(师生)、阿猛→柳絮(暗恋)。