A comprehensive suite of user interface components and orchestration tools for the WWoW World of Warcraft automation ecosystem. The UI layer provides desktop management interfaces, containerized development environments, and shared service infrastructure for monitoring and controlling bot operations. Review the root Documentation Map for context on how these UI pieces pair with services, exports, and recorded testing utilities.
The WWoW UI layer consists of three primary components that work together to provide complete user interaction, development infrastructure, and operational management capabilities:
StateManagerUI - Desktop Control Center
Technology: WPF (.NET 8) Desktop Application
Purpose: Primary graphical interface for bot management and monitoring
Key Features:
- Real-time Bot Monitoring: Live tracking of multiple bot instances with activity status
- Character Management: Add, remove, and configure bot characters with detailed personality settings
- Server Status Dashboard: Monitor MaNGOS realm and world server connectivity
- Personality Configuration: Big Five personality model with decimal precision controls
- MVVM Architecture: Clean separation with data binding and command patterns
Target Users: Bot operators, administrators, and developers requiring visual management interface
WWoW.Systems.AppHost - Development Infrastructure
Technology: .NET Aspire Application Host
Purpose: Containerized WoW server orchestration for development and testing
Key Features:
- Container Orchestration: Manages MySQL database and MaNGOS server containers
- Data Persistence: Volume management for database and log storage
- Network Configuration: Automated port mapping and service discovery
- Development Environment: Complete WoW Vanilla server stack for testing
- Configuration Management: Bind mounts for server configs and game data
Target Users: Developers needing isolated WoW server environments for bot testing
WWoW.Systems.ServiceDefaults - Shared Infrastructure
Technology: .NET 8 Shared Library
Purpose: Common service configuration and observability patterns
Key Features:
- OpenTelemetry Integration: Standardized logging, metrics, and distributed tracing
- Service Discovery: Automatic service location and communication
- Resilience Patterns: Built-in retry policies and circuit breakers
- Health Monitoring: Standardized health check endpoints
- Development Experience: Simplified service configuration
Target Users: Service developers requiring consistent patterns and observability
graph TB
subgraph "UI Layer"
A[StateManagerUI<br/>WPF Desktop App]
B[WWoW.Systems.AppHost<br/>Container Orchestration]
C[WWoW.Systems.ServiceDefaults<br/>Shared Configuration]
end
subgraph "Services Layer"
D[StateManager]
E[PathfindingService]
F[BackgroundBotRunner]
end
subgraph "Infrastructure"
G[MySQL Database]
H[MaNGOS Server]
I[Docker Containers]
end
A -->|TCP/Socket| D
A -->|REST API| E
B -->|Orchestrates| G
B -->|Orchestrates| H
B -->|Manages| I
C -->|Shared Config| D
C -->|Shared Config| E
C -->|Shared Config| F
# Start the WPF desktop application
cd UI/StateManagerUI
dotnet run
# Requires StateManager service running on port 8088
# Launch containerized WoW server stack
cd UI/WWoW.Systems/WWoW.Systems.AppHost
dotnet run
# Provides MySQL (3306) and MaNGOS (3724, 8085) services
// Add to any WWoW service
var builder = Host.CreateApplicationBuilder(args);
builder.AddServiceDefaults(); // Adds telemetry, resilience, discovery
- Launch StateManagerUI for visual management interface
- Connect to StateManager service (automatically discovers running bots)
- Monitor Bot Activities in real-time dashboard
- Configure Personalities using Big Five trait sliders
- Control Bot Lifecycle (start, stop, add, remove characters)
- Start WWoW.Systems.AppHost for local WoW server environment
- Configure Game Data (extract client files to data/ directory)
- Develop Bot Features against isolated server environment
- Test Integration with full server stack including database
- Monitor Services using built-in observability features
- Use ServiceDefaults in all WWoW services for consistency
- Monitor Health Endpoints for service status (/health, /alive)
- Collect Telemetry through OpenTelemetry standardization
- Implement Resilience with automatic retry and circuit breaker patterns
- TCP Sockets: Direct communication with StateManager (port 8088)
- Character State Listener: Real-time updates (port 5002)
- Server Status Polling: HTTP checks to MaNGOS servers
- Container Networking: Docker bridge networks for service isolation
- Volume Persistence: Data retention across container restarts
- Service Discovery: Automatic endpoint resolution within containers
- OpenTelemetry Protocol: Standardized observability data export
- HTTP/HTTPS: Resilient service-to-service communication
- Health Check Protocol: Standardized wellness endpoints
# OpenTelemetry Configuration
OTEL_EXPORTER_OTLP_ENDPOINT=http://jaeger:4317
# Service Discovery
ServiceDiscovery__AllowedSchemes=["https"]
# Application Insights (Optional)
APPLICATIONINSIGHTS_CONNECTION_STRING=your_connection_string
# Set sensitive configuration
dotnet user-secrets set "ConnectionString" "server=localhost;..."
dotnet user-secrets set "ApiKey" "your-api-key"
# Example docker-compose override
version: '3.8'
services:
wow-database:
environment:
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
volumes:
- ${DATA_PATH}/mysql:/var/lib/mysql
- Memory Usage: ~50MB base footprint for WPF application
- Network Overhead: <1KB/s per monitored character
- UI Responsiveness: Asynchronous operations prevent blocking
- Character Limit: Tested with 20+ concurrent bot instances
- Resource Requirements: 2GB RAM, 10GB storage for full server stack
- Startup Time: ~30 seconds for complete environment
- Concurrent Users: Supports typical development team sizes (5-10 users)
- Data Persistence: Automatic backup and recovery of game data
- Startup Overhead: <100ms additional startup time
- Memory Footprint: <5MB per service for telemetry
- Network Overhead: Minimal telemetry export (configurable)
- CPU Impact: <1% additional CPU for observability
- Local Network Only: StateManagerUI designed for trusted local networks
- No Authentication: Assumes trusted operators (implement auth for production)
- Process Injection: Some components require elevated privileges
- Configuration Storage: Uses .NET user secrets for sensitive data
- Network Isolation: Services run in isolated Docker networks
- Volume Permissions: Proper file system permissions for mounted volumes
- Secret Management: User secrets and environment variables for credentials
- Container Updates: Regular base image updates for security patches
- TLS/HTTPS: Use HTTPS for production inter-service communication
- API Keys: Secure service-to-service authentication
- Network Policies: Restrict communication to required ports and protocols
- Observability Data: Ensure telemetry doesn't expose sensitive information
Issue: "Connection Failed" to StateManager
Solutions:
- Verify StateManager service running on port 8088
- Check Windows Firewall settings
- Ensure services on same network segment
- Review BasicLogger output for detailed errors
Issue: WoW server containers won't start
Solutions:
- Verify Docker Desktop is running
- Check port availability (3306, 3724, 8085)
- Ensure sufficient disk space for volumes
- Review container logs: docker logs <container_name>
Issue: Services can't find each other
Solutions:
- Verify ServiceDefaults added to all services
- Check service names in configuration
- Review network policies and connectivity
- Enable debug logging for service discovery
// Enable detailed logging in StateManagerUI
BasicLogger.LogLevel = LogLevel.Debug;
# Check container status
docker ps -a
# View container logs
docker logs wow-vanilla-server
# Inspect volumes
docker volume inspect wow_vanilla_mysql_data
# Check service health
curl http://localhost:8088/health
curl http://localhost:5000/alive
- Follow MVVM Pattern: Separate view logic from business logic
- Use Data Binding: Leverage WPF's two-way binding capabilities
- Async Operations: Keep UI responsive with async/await patterns
- Error Handling: Provide meaningful user feedback for failures
- Accessibility: Follow WPF accessibility guidelines
- Multi-stage Builds: Optimize container size and security
- Health Checks: Include proper health check definitions
- Configuration: Use environment variables for configuration
- Logging: Ensure proper log output for container monitoring
- Security: Follow container security best practices
- Add ServiceDefaults: Include in all new WWoW services
- Health Endpoints: Implement comprehensive health checks
- Telemetry: Use structured logging with proper categorization
- Resilience: Implement retry policies for external dependencies
- Testing: Include integration tests with observability
# Unit tests for view models
dotnet test StateManagerUI.Tests
# Manual testing scenarios
# - Character management workflows
# - Personality configuration validation
# - Server status monitoring accuracy
# Container orchestration tests
dotnet test WWoW.Systems.AppHost.Tests
# Service defaults validation
dotnet test WWoW.Systems.ServiceDefaults.Tests
# Integration testing with real containers
docker-compose -f test-compose.yml up
- Services Layer: Backend automation services
- WWoW.AI: AI behavior coordination
- Exports Layer: Shared libraries and communication
- .NET Aspire: Application orchestration platform
- OpenTelemetry: Observability standards
- WPF: Windows Presentation Foundation
- Test Changes: Ensure all UI components work correctly
- Documentation: Update README files for significant changes
- Performance: Verify changes don't degrade UI responsiveness
- Compatibility: Test with various screen resolutions and DPI settings
- Accessibility: Maintain keyboard navigation and screen reader support
- C# 12: Use latest language features appropriately
- Nullable References: Enabled for null safety
- EditorConfig: Follow project code style guidelines
- XML Documentation: Document public APIs thoroughly
This project is part of the WWoW ecosystem. Please refer to the main project license for usage terms.
This component is part of the WWoW (Westworld of Warcraft) simulation platform.