Init
This commit is contained in:
86
content/world/entities/npc/_index.en.md
Normal file
86
content/world/entities/npc/_index.en.md
Normal file
@@ -0,0 +1,86 @@
|
||||
---
|
||||
title: NPC System
|
||||
type: docs
|
||||
weight: 10
|
||||
---
|
||||
|
||||
The NPC (Non-Player Character) system provides a complete framework for creating intelligent game characters with autonomous behavior, decision-making, and navigation capabilities.
|
||||
|
||||
**Package:** `com.hypixel.hytale.server.npc`
|
||||
|
||||
{{< cards >}}
|
||||
{{< card link="npc-basics" title="NPC Basics" subtitle="Creating and configuring NPCs" >}}
|
||||
{{< card link="npc-components" title="NPC Components" subtitle="Core components and data" >}}
|
||||
{{< card link="npc-ai" title="NPC AI" subtitle="Blackboard, decisions, and sensors" >}}
|
||||
{{< card link="npc-movement" title="NPC Movement" subtitle="Navigation and pathfinding" >}}
|
||||
{{< card link="npc-commands" title="NPC Commands" subtitle="Admin and debug commands" >}}
|
||||
{{< /cards >}}
|
||||
|
||||
## Architecture Overview
|
||||
|
||||
The NPC system is built on several interconnected subsystems:
|
||||
|
||||
```
|
||||
NPCEntity
|
||||
├── Blackboard (shared state/memory)
|
||||
├── Role (behavioral template)
|
||||
│ ├── Instructions (high-level goals)
|
||||
│ ├── Sensors (perception)
|
||||
│ └── Actions (behaviors)
|
||||
├── DecisionMaker (AI logic)
|
||||
│ ├── Evaluators (condition checking)
|
||||
│ └── Options (action selection)
|
||||
└── Movement
|
||||
├── MotionController (movement execution)
|
||||
├── PathFollower (path tracking)
|
||||
└── NavigationGraph (A* pathfinding)
|
||||
```
|
||||
|
||||
## Quick Example
|
||||
|
||||
```java
|
||||
// Register NPC-related event
|
||||
getEventRegistry().register(NPCSpawnEvent.class, event -> {
|
||||
NPCEntity npc = event.getNPC();
|
||||
|
||||
// Access blackboard for state
|
||||
Blackboard blackboard = npc.getBlackboard();
|
||||
|
||||
// Get current role
|
||||
Role role = npc.getRole();
|
||||
|
||||
// Check if NPC has target
|
||||
if (blackboard.hasTarget()) {
|
||||
Entity target = blackboard.getTarget();
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
## Key Classes
|
||||
|
||||
| Class | Description |
|
||||
|-------|-------------|
|
||||
| `NPCEntity` | Base class for all NPCs |
|
||||
| `NPCPlugin` | Plugin entry point for NPC system |
|
||||
| `Blackboard` | Shared state container for NPC data |
|
||||
| `Role` | Defines NPC behavior template |
|
||||
| `DecisionMaker` | AI decision logic |
|
||||
| `MotionController` | Movement execution |
|
||||
| `PathFollower` | Path tracking and following |
|
||||
|
||||
## Subpackages
|
||||
|
||||
| Package | Files | Description |
|
||||
|---------|-------|-------------|
|
||||
| `corecomponents/` | 327 | Core ECS components for NPCs |
|
||||
| `asset/` | 152 | NPC asset configuration |
|
||||
| `util/` | 50 | Utility classes |
|
||||
| `blackboard/` | 30 | State management |
|
||||
| `movement/` | 27 | Movement behaviors |
|
||||
| `systems/` | 25 | ECS systems |
|
||||
| `commands/` | 23 | Admin commands |
|
||||
| `decisionmaker/` | 22 | AI decision logic |
|
||||
| `sensorinfo/` | 20 | Perception system |
|
||||
| `role/` | 17 | Role definitions |
|
||||
| `instructions/` | 14 | High-level behaviors |
|
||||
| `navigation/` | 12 | Pathfinding |
|
||||
Reference in New Issue
Block a user