Initial Commit
This commit is contained in:
+246
@@ -0,0 +1,246 @@
|
||||
# AI_RULES.md - Flappy Bird (AI-driven) Development Guidelines
|
||||
|
||||
## 🏗️ Technical Stack
|
||||
- **Unity Version**: Unity 6000 LTS
|
||||
- **Physics**: 2D Physics (Rigidbody2D, Collider2D)
|
||||
- **Dependency Injection**: Zenject
|
||||
- **Async Operations**: UniTask
|
||||
- **Platform**: Mobile-ready build
|
||||
- **Target Performance**: 60 FPS
|
||||
|
||||
## 🏛️ Architecture Rules
|
||||
|
||||
### 1. MonoBehaviour Separation
|
||||
- **NO BUSINESS LOGIC** inside MonoBehaviour classes
|
||||
- MonoBehaviour only for:
|
||||
- Unity lifecycle events (Start, Update, OnTrigger, etc.)
|
||||
- Component references and initialization
|
||||
- View updates and animations
|
||||
- All game logic must be in separate service classes
|
||||
|
||||
### 2. Object Pooling
|
||||
- Use object pooling for all frequently spawned objects:
|
||||
- Pipes
|
||||
- Particles
|
||||
- UI elements (score popups, etc.)
|
||||
- Implement `IPoolable` interface for pooled objects
|
||||
- Use `ObjectPoolManager` service
|
||||
|
||||
### 3. GameState Management
|
||||
- Separate `GameStateManager` service for all game states:
|
||||
- MainMenu
|
||||
- Playing
|
||||
- GameOver
|
||||
- Paused
|
||||
- No direct state changes from MonoBehaviour
|
||||
- Use events/signals for state transitions
|
||||
|
||||
### 4. Dependency Injection (Zenject)
|
||||
- All services must be registered in Zenject installers
|
||||
- Use constructor injection for dependencies
|
||||
- Separate installers for different contexts:
|
||||
- `GameInstaller` - core game services
|
||||
- `UIInstaller` - UI-related services
|
||||
- `SettingsInstaller` - settings and persistence
|
||||
|
||||
### 5. Async Operations (UniTask)
|
||||
- Use UniTask instead of Coroutines
|
||||
- Async operations for:
|
||||
- Scene loading
|
||||
- Save/Load operations
|
||||
- Network calls (if any)
|
||||
- Tweening and animations
|
||||
|
||||
## 📁 Project Structure
|
||||
|
||||
```
|
||||
Assets/
|
||||
├── Scripts/
|
||||
│ ├── Core/
|
||||
│ │ ├── GameStateManager.cs
|
||||
│ │ ├── ScoreManager.cs
|
||||
│ │ └── ObjectPoolManager.cs
|
||||
│ ├── Gameplay/
|
||||
│ │ ├── Bird/
|
||||
│ │ ├── Pipes/
|
||||
│ │ └── Physics/
|
||||
│ ├── UI/
|
||||
│ │ ├── Views/
|
||||
│ │ ├── Presenters/
|
||||
│ │ └── Models/
|
||||
│ ├── Services/
|
||||
│ ├── Installers/
|
||||
│ └── Utilities/
|
||||
├── Prefabs/
|
||||
├── Sprites/
|
||||
├── Audio/
|
||||
└── Scenes/
|
||||
```
|
||||
|
||||
## 🎮 Gameplay Requirements
|
||||
|
||||
### Bird Physics
|
||||
- Use Rigidbody2D with gravity
|
||||
- Tap/Click applies upward force
|
||||
- Smooth rotation based on velocity
|
||||
- No direct transform manipulation
|
||||
|
||||
### Pipe Generation
|
||||
- Procedural generation system
|
||||
- Object pooling for performance
|
||||
- Configurable gap size and spacing
|
||||
- Random height variations
|
||||
|
||||
### Scoring System
|
||||
- Score increases when passing through pipes
|
||||
- High score persistence
|
||||
- Real-time score display
|
||||
- Score-based achievements
|
||||
|
||||
### Game Over Conditions
|
||||
- Collision with pipes
|
||||
- Collision with ground/ceiling
|
||||
- Restart functionality
|
||||
- Score summary display
|
||||
|
||||
## 📱 Mobile Optimization
|
||||
|
||||
### Performance
|
||||
- Target 60 FPS on mid-range devices
|
||||
- Minimal GC allocations
|
||||
- Efficient texture usage
|
||||
- Optimized shader usage
|
||||
|
||||
### Input
|
||||
- Touch-friendly controls
|
||||
- One-tap gameplay
|
||||
- Responsive input handling
|
||||
- Support for different screen sizes
|
||||
|
||||
### Build Settings
|
||||
- Platform-specific optimizations
|
||||
- Texture compression
|
||||
- Audio compression
|
||||
- Build size optimization
|
||||
|
||||
## 🔧 Service Contracts
|
||||
|
||||
### Core Interfaces
|
||||
```csharp
|
||||
public interface IGameStateManager
|
||||
{
|
||||
GameState CurrentState { get; }
|
||||
UniTask ChangeStateAsync(GameState newState);
|
||||
event System.Action<GameState> OnStateChanged;
|
||||
}
|
||||
|
||||
public interface IScoreManager
|
||||
{
|
||||
int CurrentScore { get; }
|
||||
int HighScore { get; }
|
||||
void AddScore(int points);
|
||||
void ResetScore();
|
||||
UniTask SaveHighScoreAsync();
|
||||
}
|
||||
|
||||
public interface IObjectPoolManager
|
||||
{
|
||||
T Get<T>() where T : Component, IPoolable;
|
||||
void Return<T>(T item) where T : Component, IPoolable;
|
||||
}
|
||||
```
|
||||
|
||||
### Event System
|
||||
- Use C# events or Zenject signals
|
||||
- No direct references between unrelated systems
|
||||
- Event naming convention: `On[Action][Result]`
|
||||
|
||||
## 🎨 UI Guidelines
|
||||
|
||||
### MVP Pattern
|
||||
- **Model**: Data containers (ScoreModel, SettingsModel)
|
||||
- **View**: MonoBehaviour UI components
|
||||
- **Presenter**: Business logic for UI interactions
|
||||
|
||||
### UI Services
|
||||
- `UIManager` for screen management
|
||||
- `PopupManager` for overlays
|
||||
- `HUDManager` for in-game UI
|
||||
|
||||
## 💾 Data Persistence
|
||||
|
||||
### Save System
|
||||
- JSON-based save files
|
||||
- PlayerPrefs for settings
|
||||
- Async save/load operations
|
||||
- Data validation and error handling
|
||||
|
||||
### Settings
|
||||
- Graphics quality options
|
||||
- Audio volume settings
|
||||
- Control sensitivity
|
||||
- Achievement progress
|
||||
|
||||
## 🤖 AI Integration Rules
|
||||
|
||||
### AI Behavior
|
||||
- Separate AI controller from player input
|
||||
- Machine learning integration points
|
||||
- Data collection for training
|
||||
- Performance metrics tracking
|
||||
|
||||
### Training Data
|
||||
- Bird position and velocity
|
||||
- Pipe positions and gaps
|
||||
- Score and survival time
|
||||
- Input timing and patterns
|
||||
|
||||
## 📋 Development Checklist
|
||||
|
||||
### Phase 1: Core Systems
|
||||
- [ ] GameStateManager implementation
|
||||
- [ ] Basic bird physics
|
||||
- [ ] Object pooling system
|
||||
- [ ] Zenject setup
|
||||
|
||||
### Phase 2: Gameplay
|
||||
- [ ] Pipe generation
|
||||
- [ ] Collision detection
|
||||
- [ ] Score system
|
||||
- [ ] Game over mechanics
|
||||
|
||||
### Phase 3: Polish
|
||||
- [ ] UI implementation
|
||||
- [ ] Audio integration
|
||||
- [ ] Mobile optimization
|
||||
- [ ] Save system
|
||||
|
||||
### Phase 4: AI Integration
|
||||
- [ ] AI controller setup
|
||||
- [ ] Training data collection
|
||||
- [ ] Performance monitoring
|
||||
- [ ] AI behavior tuning
|
||||
|
||||
## 🚨 Code Quality Standards
|
||||
|
||||
### Naming Conventions
|
||||
- PascalCase for classes, methods, properties
|
||||
- camelCase for fields, parameters
|
||||
- UPPER_CASE for constants
|
||||
- Prefix interfaces with 'I'
|
||||
|
||||
### Documentation
|
||||
- XML documentation for public APIs
|
||||
- Clear variable and method names
|
||||
- Inline comments for complex logic
|
||||
- Architecture decision records (ADRs)
|
||||
|
||||
### Error Handling
|
||||
- Use try-catch for recoverable errors
|
||||
- Validate input parameters
|
||||
- Graceful degradation for non-critical failures
|
||||
- Proper logging for debugging
|
||||
|
||||
---
|
||||
|
||||
**Remember**: Every prompt must follow these AI_RULES.md guidelines. No exceptions.
|
||||
Reference in New Issue
Block a user