286 lines
6.9 KiB
Markdown
286 lines
6.9 KiB
Markdown
# NPC Dialogue System - Dubai Metaverse
|
|
|
|
## Overview
|
|
|
|
This document describes the ChatGPT-powered dynamic dialogue system for NPCs in the Dubai Metaverse project (optional feature).
|
|
|
|
## System Architecture
|
|
|
|
### Overview
|
|
|
|
The dialogue system integrates ChatGPT API to generate dynamic, context-aware dialogue for NPCs, allowing for natural conversations with players.
|
|
|
|
### Components
|
|
|
|
1. **BP_DialogueSystem**: Main dialogue system blueprint
|
|
2. **API Integration**: ChatGPT API client
|
|
3. **Dialogue Handler**: Handles dialogue requests and responses
|
|
4. **NPC Integration**: Integrates with NPC behavior system
|
|
|
|
---
|
|
|
|
## ChatGPT API Integration
|
|
|
|
### API Setup
|
|
|
|
1. **API Key**: Obtain ChatGPT API key from OpenAI
|
|
2. **Secure Storage**: Store API key securely (environment variable, not in repository)
|
|
3. **API Client**: Create API client in blueprint or C++
|
|
4. **Configuration**: Configure API endpoint and settings
|
|
|
|
### API Configuration
|
|
|
|
- **Model**: GPT-3.5-turbo or GPT-4
|
|
- **Temperature**: 0.7-0.9 (creative but coherent)
|
|
- **Max Tokens**: 100-200 (concise responses)
|
|
- **System Prompt**: Define NPC personality and context
|
|
|
|
---
|
|
|
|
## Dialogue System Blueprint
|
|
|
|
### BP_DialogueSystem
|
|
|
|
**Main dialogue system controller**
|
|
|
|
### Functions
|
|
|
|
#### RequestDialogue
|
|
|
|
- **Purpose**: Request dialogue from ChatGPT
|
|
- **Input**: Player message, NPC context
|
|
- **Output**: Generated dialogue response
|
|
- **Implementation**: API call to ChatGPT
|
|
|
|
#### ProcessResponse
|
|
|
|
- **Purpose**: Process API response
|
|
- **Input**: API response
|
|
- **Output**: Formatted dialogue
|
|
- **Implementation**: Parse and format response
|
|
|
|
#### GetNPCContext
|
|
|
|
- **Purpose**: Get NPC context for dialogue
|
|
- **Input**: NPC reference
|
|
- **Output**: NPC context (name, location, personality)
|
|
- **Implementation**: Gather NPC information
|
|
|
|
---
|
|
|
|
## NPC Context
|
|
|
|
### Context Information
|
|
|
|
#### NPC Identity
|
|
|
|
- **Name**: NPC name
|
|
- **Role**: NPC role (tourist, resident, business person)
|
|
- **Personality**: Personality traits
|
|
- **Background**: Background information
|
|
|
|
#### Location Context
|
|
|
|
- **Current Location**: Where NPC is located
|
|
- **District**: Dubai Marina
|
|
- **Landmarks**: Nearby landmarks
|
|
- **Activities**: Current activities
|
|
|
|
#### Conversation Context
|
|
|
|
- **Previous Messages**: Conversation history
|
|
- **Topic**: Current conversation topic
|
|
- **Mood**: NPC mood/emotional state
|
|
|
|
---
|
|
|
|
## System Prompts
|
|
|
|
### NPC Personality Prompts
|
|
|
|
#### Example: Tourist NPC
|
|
|
|
```
|
|
You are a tourist visiting Dubai Marina. You are friendly, curious, and excited about Dubai.
|
|
You speak in a casual, enthusiastic manner. Keep responses brief (1-2 sentences).
|
|
You know about Dubai Marina, Cayan Tower, and the luxury lifestyle in Dubai.
|
|
```
|
|
|
|
#### Example: Resident NPC
|
|
|
|
```
|
|
You are a resident of Dubai Marina. You are knowledgeable about the area, professional,
|
|
and helpful. You speak in a friendly but professional manner. Keep responses brief (1-2 sentences).
|
|
You know about local restaurants, shops, and the Marina lifestyle.
|
|
```
|
|
|
|
#### Example: Business Person NPC
|
|
|
|
```
|
|
You are a business person in Dubai. You are professional, busy, and focused.
|
|
You speak in a professional, concise manner. Keep responses brief (1-2 sentences).
|
|
You know about business in Dubai, the financial district, and professional services.
|
|
```
|
|
|
|
---
|
|
|
|
## Dialogue Flow
|
|
|
|
### Player Interaction
|
|
|
|
1. **Player Approaches NPC**: Player interacts with NPC
|
|
2. **Dialogue UI**: Dialogue UI appears
|
|
3. **Player Input**: Player types or selects message
|
|
4. **Dialogue Request**: System requests dialogue from ChatGPT
|
|
5. **NPC Response**: NPC speaks generated dialogue
|
|
6. **Continuation**: Conversation continues
|
|
|
|
### Implementation
|
|
|
|
1. **Interaction System**: Use interaction system to trigger dialogue
|
|
2. **UI Widget**: Create dialogue UI widget
|
|
3. **API Call**: Make API call to ChatGPT
|
|
4. **Response Processing**: Process and display response
|
|
5. **Audio**: Play NPC voice (optional, text-to-speech)
|
|
|
|
---
|
|
|
|
## API Integration Script
|
|
|
|
### npc_dialogue_api.py
|
|
|
|
**Python script for API integration (optional)**
|
|
|
|
### Functions
|
|
|
|
- **send_dialogue_request**: Send request to ChatGPT API
|
|
- **process_response**: Process API response
|
|
- **format_dialogue**: Format dialogue for display
|
|
|
|
### Usage
|
|
|
|
- **Standalone**: Run as standalone service
|
|
- **Integration**: Integrate with Unreal via HTTP requests
|
|
- **Caching**: Cache responses for performance
|
|
|
|
---
|
|
|
|
## Performance Considerations
|
|
|
|
### Optimization
|
|
|
|
1. **Caching**: Cache common responses
|
|
2. **Rate Limiting**: Limit API calls per NPC
|
|
3. **Response Time**: Optimize for quick responses
|
|
4. **Fallback**: Fallback to pre-written dialogue if API fails
|
|
|
|
### Cost Management
|
|
|
|
1. **API Costs**: Monitor API usage and costs
|
|
2. **Token Limits**: Limit tokens per request
|
|
3. **Request Frequency**: Limit request frequency
|
|
4. **Caching**: Cache responses to reduce API calls
|
|
|
|
---
|
|
|
|
## Security
|
|
|
|
### API Key Security
|
|
|
|
- **Never Commit**: Never commit API keys to repository
|
|
- **Environment Variables**: Use environment variables
|
|
- **Secure Storage**: Store keys securely
|
|
- **Access Control**: Limit access to API keys
|
|
|
|
### Input Validation
|
|
|
|
- **Sanitize Input**: Sanitize player input
|
|
- **Length Limits**: Limit input length
|
|
- **Content Filtering**: Filter inappropriate content
|
|
|
|
---
|
|
|
|
## Testing
|
|
|
|
### Dialogue Testing
|
|
|
|
1. **Quality**: Test dialogue quality
|
|
2. **Context**: Test context awareness
|
|
3. **Personality**: Test NPC personality consistency
|
|
4. **Response Time**: Test response time
|
|
|
|
### Integration Testing
|
|
|
|
1. **NPC Integration**: Test with NPC system
|
|
2. **UI Integration**: Test with dialogue UI
|
|
3. **Performance**: Test performance impact
|
|
4. **Error Handling**: Test error handling
|
|
|
|
---
|
|
|
|
## Fallback System
|
|
|
|
### Pre-Written Dialogue
|
|
|
|
**Fallback if API unavailable**
|
|
|
|
- **Greetings**: Pre-written greetings
|
|
- **Common Responses**: Common response templates
|
|
- **Topics**: Pre-written dialogue for common topics
|
|
|
|
### Implementation
|
|
|
|
1. **Dialogue Database**: Store pre-written dialogue
|
|
2. **Topic Matching**: Match player input to topics
|
|
3. **Response Selection**: Select appropriate response
|
|
4. **Fallback Trigger**: Trigger fallback if API fails
|
|
|
|
---
|
|
|
|
## Troubleshooting
|
|
|
|
### Common Issues
|
|
|
|
**Issue**: API not responding
|
|
- **Solution**: Check API key and connection
|
|
- **Solution**: Implement fallback system
|
|
- **Solution**: Check rate limits
|
|
|
|
**Issue**: Dialogue quality poor
|
|
- **Solution**: Refine system prompts
|
|
- **Solution**: Adjust temperature settings
|
|
- **Solution**: Improve context information
|
|
|
|
**Issue**: Response time too slow
|
|
- **Solution**: Implement caching
|
|
- **Solution**: Optimize API calls
|
|
- **Solution**: Use faster API model
|
|
|
|
---
|
|
|
|
## Documentation
|
|
|
|
### API Documentation
|
|
|
|
Document API integration:
|
|
- API setup
|
|
- Configuration
|
|
- Usage
|
|
- Error handling
|
|
|
|
### Dialogue Documentation
|
|
|
|
Document dialogue system:
|
|
- NPC personalities
|
|
- Context information
|
|
- System prompts
|
|
- Usage examples
|
|
|
|
---
|
|
|
|
**Version**: 1.0
|
|
**Last Updated**: [Current Date]
|
|
|
|
**Note**: This is an optional feature. The project can function without ChatGPT integration using pre-written dialogue or no dialogue system.
|
|
|