2025-06-23 00:44:29 +08:00

350 lines
10 KiB
Plaintext

---
description:
globs:
alwaysApply: true
---
# Cursor Rules for Unity Game Project
## Project Overview
This is a Unity game project with a comprehensive framework architecture consisting of AFramework (core framework) and AGame (game logic). The project follows component-based architecture, uses state machines, proxy patterns, and event-driven communication.
## Code Style and Conventions
### C# Coding Standards
- Use PascalCase for public members, camelCase for private members
- Follow Unity naming conventions (e.g., MonoBehaviour classes end with descriptive names)
- Use meaningful variable and function names
- Add XML documentation comments for public APIs
- Use regions (#region) to organize code sections
### Unity-Specific Guidelines
- Inherit from MonoBehaviour for component scripts
- Use ScriptableObjects for data containers and shared resources
- Leverage Unity's built-in systems (Input System, UI system, physics engine)
- Use Coroutines for time-based operations
- Implement proper error handling with try-catch blocks
- Use Unity's Debug class for logging (Debug.Log, Debug.LogWarning, Debug.LogError)
## Architecture Patterns
### Framework Layer (AFramework)
- UIEx: Custom UI components and extensions
- Runtime: Core framework libraries
- Plugins: Third-party integrations (DOTween, AntiCheat, DynamicBone, etc.)
- Editor: Unity editor extensions and tools
### Game Logic Layer (AGame)
- Base: Core game systems (Launch, FSM, etc.)
- Game: Gameplay systems (Entity, Skill, Effect, etc.)
- Proxy: Data access layer for all game systems
- UI: Modular UI system with Window/Box pattern
- Platform: Multi-platform support
- Command: Command pattern implementation
- Item: Item system with static/entity/extension structure
- Utils: Utility classes and extensions
### Key Design Patterns
- **State Machine**: Game state management (Initial → Login → World)
- **Proxy Pattern**: Data access and network communication
- **Component Pattern**: Entity system with modular components
- **Event-Driven**: Extensive use of events for system communication
- **Command Pattern**: UI interactions and game actions
## File Organization
### Directory Structure
```
Assets/
├── AFramework/ # Core framework
│ ├── Scripts/UIEx/ # UI extensions
│ ├── Runtime/ # Framework libraries
│ ├── Plugins/ # Third-party integrations
│ ├── Joystick/ # Input system
│ └── Editor/ # Editor tools
├── AGame/ # Game logic
│ ├── Scripts/ # Game scripts
│ ├── Scenes/ # Unity scenes
│ ├── Configs/ # Game configuration
│ ├── Resources/ # Runtime resources
│ ├── Res/ # Game assets
│ └── Editor/ # Game editor tools
```
### Naming Conventions
- **Scripts**: PascalCase (e.g., `GameManager.cs`, `EntityPlayer.cs`)
- **UI Components**: Window suffix for main windows, Box suffix for dialogs
- **Proxy Classes**: System name + Proxy (e.g., `PlayerProxy.cs`, `NetworkProxy.cs`)
- **Entity Classes**: Entity + Type (e.g., `EntityPlayer.cs`, `EntityBoss.cs`)
- **State Classes**: Stat_ + Action (e.g., `Stat_IdleAction.cs`, `Stat_MoveAction.cs`)
## Development Guidelines
### Component Development
- Keep components focused on single responsibility
- Use composition over inheritance
- Implement proper lifecycle methods (Awake, Start, Update, etc.)
- Handle component dependencies through GetComponent or dependency injection
### UI Development
- Follow Window/Box pattern for UI organization
- Separate View logic from business logic
- Use event-driven communication between UI components
- Implement proper UI state management
### Data Management
- Use Proxy classes for data access
- Implement proper data validation
- Use events for data change notifications
- Follow the established data flow patterns
### Performance Considerations
- Use object pooling for frequently instantiated objects
- Optimize draw calls and material batching
- Implement proper memory management
- Use Unity's profiling tools for performance analysis
### Error Handling
- Implement comprehensive error handling
- Use Unity's assertion system for debugging
- Log errors appropriately with context
- Provide user-friendly error messages
## Testing and Debugging
### Debugging Tools
- Use SRDebugger for runtime debugging
- Implement custom debug visualizations
- Use Unity's profiler for performance analysis
- Add debug logs for critical game systems
### Testing Strategy
- Unit test critical game logic
- Integration test for system interactions
- Performance test for resource-intensive operations
- User acceptance testing for UI flows
## Platform Support
### Multi-Platform Considerations
- Use platform abstraction layer (KPlatform)
- Handle platform-specific features appropriately
- Test on target platforms regularly
- Follow platform-specific guidelines
### Build Process
- Use proper build configurations
- Implement asset bundling for optimization
- Handle platform-specific asset requirements
- Follow platform submission guidelines
## Documentation
### Code Documentation
- Document public APIs with XML comments
- Maintain README files for major systems
- Document configuration file formats
- Keep architecture documentation updated
### User Documentation
- Document game features and mechanics
- Maintain user guides and tutorials
- Document known issues and workarounds
- Keep release notes updated
## Security and Anti-Cheat
### Security Measures
- Use AntiCheatToolkit for cheat prevention
- Implement server-side validation
- Secure sensitive data and communications
- Follow security best practices
### Data Protection
- Use ObscuredTypes for sensitive data
- Implement proper data encryption
- Secure network communications
- Protect user privacy and data
## Asset Management
### Resource Organization
- Organize assets by type and purpose
- Use proper naming conventions for assets
- Implement asset versioning
- Optimize asset sizes and formats
### Asset Pipeline
- Use Unity's asset pipeline effectively
- Implement custom asset processors when needed
- Optimize asset loading and streaming
- Handle asset dependencies properly
## Version Control
### Git Workflow
- Use meaningful commit messages
- Follow branching strategy for features
- Maintain clean commit history
- Use .gitignore for Unity-specific files
### Collaboration
- Coordinate on shared systems
- Document breaking changes
- Maintain coding standards across team
- Use code review process
## Performance Optimization
### Memory Management
- Implement proper object pooling
- Minimize garbage collection
- Use structs for small, frequently used data
- Optimize asset loading and unloading
### Rendering Optimization
- Use LOD systems for complex models
- Implement occlusion culling
- Optimize shader usage
- Batch draw calls appropriately
### Network Optimization
- Minimize network traffic
- Implement proper packet compression
- Use efficient serialization
- Handle network latency appropriately
## Accessibility and Localization
### Accessibility
- Support multiple input methods
- Implement proper UI scaling
- Provide audio alternatives
- Follow accessibility guidelines
### Localization
- Use proper localization system
- Support multiple languages
- Handle text direction and formatting
- Test with different locales
## Monitoring and Analytics
### Game Analytics
- Implement proper event tracking
- Monitor player behavior
- Track performance metrics
- Use analytics for game balancing
### Error Monitoring
- Implement crash reporting
- Monitor error rates
- Track performance issues
- Use monitoring for proactive maintenance
## Deployment and Release
### Release Process
- Follow proper versioning
- Implement staged rollouts
- Maintain backward compatibility
- Handle hotfixes appropriately
### Quality Assurance
- Implement comprehensive testing
- Use automated testing where possible
- Perform manual testing on all platforms
- Maintain quality gates for releases
## Maintenance and Updates
### Code Maintenance
- Refactor code regularly
- Remove dead code
- Update dependencies
- Maintain code quality
### Content Updates
- Plan for content updates
- Implement content management system
- Handle content versioning
- Maintain content quality
## Emergency Procedures
### Critical Issues
- Have rollback procedures ready
- Maintain emergency contact list
- Document incident response procedures
- Test emergency procedures regularly
### Data Recovery
- Implement proper backup systems
- Test data recovery procedures
- Maintain data integrity
- Document recovery processes
## Future Considerations
### Scalability
- Design for future growth
- Plan for additional platforms
- Consider international expansion
- Prepare for increased user base
### Technology Updates
- Stay updated with Unity versions
- Plan for technology migrations
- Evaluate new tools and libraries
- Maintain technical debt awareness
## Team Collaboration
### Communication
- Use clear communication channels
- Document decisions and rationale
- Maintain team knowledge sharing
- Foster collaborative development
### Code Reviews
- Implement thorough code reviews
- Use review checklists
- Provide constructive feedback
- Maintain review standards
## Compliance and Legal
### Platform Compliance
- Follow platform guidelines
- Maintain compliance with terms of service
- Handle user data appropriately
- Stay updated with policy changes
### Legal Considerations
- Protect intellectual property
- Handle licensing appropriately
- Maintain proper attribution
- Follow legal requirements
## Continuous Improvement
### Process Improvement
- Regularly evaluate development processes
- Gather team feedback
- Implement process improvements
- Maintain agile development practices
### Skill Development
- Encourage continuous learning
- Share knowledge and best practices
- Attend conferences and workshops
- Stay updated with industry trends
## Notes
- This project uses a sophisticated framework architecture
- Pay attention to the established patterns and conventions
- Follow the existing code style and organization
- Maintain consistency with the current architecture
- Consider the impact of changes on the overall system
- Test thoroughly before implementing changes
- Document any architectural decisions
- Keep the codebase maintainable and scalable