mirror of
https://github.com/R0m1k3/xtremflow.git
synced 2026-10-22 06:28:04 +02:00
feat: security overhaul (proxy ssrf fix, streaming sanitization, docker optimization)
This commit is contained in:
1 parent
6d87ada2b8
commit
8df9a37baa
810 files changed
+131090
-151
No files matched your search
@@ -0,0 +1,204 @@
|
||||
# Performance Testing for Games
|
||||
|
||||
## Overview
|
||||
|
||||
Performance testing ensures your game runs smoothly on target hardware. Frame rate, load times, and memory usage directly impact player experience.
|
||||
|
||||
## Key Performance Metrics
|
||||
|
||||
### Frame Rate
|
||||
|
||||
- **Target:** 30fps, 60fps, 120fps depending on platform/genre
|
||||
- **Measure:** Average, minimum, 1% low, 0.1% low
|
||||
- **Goal:** Consistent frame times, no stutters
|
||||
|
||||
### Frame Time Budget
|
||||
|
||||
At 60fps, you have 16.67ms per frame:
|
||||
|
||||
```
|
||||
Rendering: 8ms (48%)
|
||||
Game Logic: 4ms (24%)
|
||||
Physics: 2ms (12%)
|
||||
Audio: 1ms (6%)
|
||||
UI: 1ms (6%)
|
||||
Headroom: 0.67ms (4%)
|
||||
```
|
||||
|
||||
### Memory
|
||||
|
||||
- **RAM:** Total allocation, peak usage, fragmentation
|
||||
- **VRAM:** Texture memory, render targets, buffers
|
||||
- **Goal:** Stay within platform limits with headroom
|
||||
|
||||
### Load Times
|
||||
|
||||
- **Initial Load:** Time to main menu
|
||||
- **Level Load:** Time between scenes
|
||||
- **Streaming:** Asset loading during gameplay
|
||||
- **Goal:** Meet platform certification requirements
|
||||
|
||||
## Profiling Tools by Engine
|
||||
|
||||
### Unity
|
||||
|
||||
- **Profiler Window** - CPU, GPU, memory, rendering
|
||||
- **Frame Debugger** - Draw call analysis
|
||||
- **Memory Profiler** - Heap snapshots
|
||||
- **Profile Analyzer** - Compare captures
|
||||
|
||||
### Unreal Engine
|
||||
|
||||
- **Unreal Insights** - Comprehensive profiling
|
||||
- **Stat Commands** - Runtime statistics
|
||||
- **GPU Visualizer** - GPU timing breakdown
|
||||
- **Memory Report** - Allocation tracking
|
||||
|
||||
### Godot
|
||||
|
||||
- **Debugger** - Built-in profiler
|
||||
- **Monitors** - Real-time metrics
|
||||
- **Remote Debugger** - Profile on device
|
||||
|
||||
### Platform Tools
|
||||
|
||||
- **PIX** (Xbox/Windows) - GPU debugging
|
||||
- **RenderDoc** - GPU capture and replay
|
||||
- **Instruments** (iOS/macOS) - Apple profiling
|
||||
- **Android Profiler** - Android Studio tools
|
||||
|
||||
## Performance Testing Process
|
||||
|
||||
### 1. Establish Baselines
|
||||
|
||||
- Profile on target hardware
|
||||
- Record key metrics
|
||||
- Create benchmark scenes
|
||||
|
||||
### 2. Set Budgets
|
||||
|
||||
- Define frame time budgets per system
|
||||
- Set memory limits
|
||||
- Establish load time targets
|
||||
|
||||
### 3. Monitor Continuously
|
||||
|
||||
- Integrate profiling in CI
|
||||
- Track metrics over time
|
||||
- Alert on regressions
|
||||
|
||||
### 4. Optimize When Needed
|
||||
|
||||
- Profile before optimizing
|
||||
- Target biggest bottlenecks
|
||||
- Verify improvements
|
||||
|
||||
## Common Performance Issues
|
||||
|
||||
### CPU Bottlenecks
|
||||
|
||||
| Issue | Symptoms | Solution |
|
||||
| --------------------- | ----------------- | --------------------------------- |
|
||||
| Too many game objects | Slow update loop | Object pooling, LOD |
|
||||
| Expensive AI | Spiky frame times | Budget AI, spread over frames |
|
||||
| Physics overload | Physics spikes | Simplify colliders, reduce bodies |
|
||||
| GC stutter | Regular hitches | Avoid runtime allocations |
|
||||
|
||||
### GPU Bottlenecks
|
||||
|
||||
| Issue | Symptoms | Solution |
|
||||
| ------------------- | ----------------- | -------------------------------- |
|
||||
| Overdraw | Fill rate limited | Occlusion culling, reduce layers |
|
||||
| Too many draw calls | CPU-GPU bound | Batching, instancing, atlasing |
|
||||
| Shader complexity | Long GPU times | Simplify shaders, LOD |
|
||||
| Resolution too high | Fill rate limited | Dynamic resolution, FSR/DLSS |
|
||||
|
||||
### Memory Issues
|
||||
|
||||
| Issue | Symptoms | Solution |
|
||||
| ------------- | ----------------- | ---------------------------- |
|
||||
| Texture bloat | High VRAM | Compress, mipmap, stream |
|
||||
| Leaks | Growing memory | Track allocations, fix leaks |
|
||||
| Fragmentation | OOM despite space | Pool allocations, defrag |
|
||||
|
||||
## Benchmark Scenes
|
||||
|
||||
Create standardized test scenarios:
|
||||
|
||||
### Stress Test Scene
|
||||
|
||||
- Maximum entities on screen
|
||||
- Complex visual effects
|
||||
- Worst-case for performance
|
||||
|
||||
### Typical Gameplay Scene
|
||||
|
||||
- Representative of normal play
|
||||
- Average entity count
|
||||
- Baseline for comparison
|
||||
|
||||
### Isolated System Tests
|
||||
|
||||
- Combat only (no rendering)
|
||||
- Rendering only (no game logic)
|
||||
- AI only (pathfinding stress)
|
||||
|
||||
## Automated Performance Testing
|
||||
|
||||
### CI Integration
|
||||
|
||||
```yaml
|
||||
# Example: Fail build if frame time exceeds budget
|
||||
performance_test:
|
||||
script:
|
||||
- run_benchmark --scene stress_test
|
||||
- check_metrics --max-frame-time 16.67ms --max-memory 2GB
|
||||
artifacts:
|
||||
- performance_report.json
|
||||
```
|
||||
|
||||
### Regression Detection
|
||||
|
||||
- Compare against previous builds
|
||||
- Alert on significant changes (>10%)
|
||||
- Track trends over time
|
||||
|
||||
## Platform-Specific Considerations
|
||||
|
||||
### Console
|
||||
|
||||
- Fixed hardware targets
|
||||
- Strict certification requirements
|
||||
- Thermal throttling concerns
|
||||
|
||||
### PC
|
||||
|
||||
- Wide hardware range
|
||||
- Scalable quality settings
|
||||
- Min/recommended specs
|
||||
|
||||
### Mobile
|
||||
|
||||
- Thermal throttling
|
||||
- Battery impact
|
||||
- Memory constraints
|
||||
- Background app pressure
|
||||
|
||||
## Performance Testing Checklist
|
||||
|
||||
### Before Release
|
||||
|
||||
- [ ] Profiled on all target platforms
|
||||
- [ ] Frame rate targets met
|
||||
- [ ] No memory leaks
|
||||
- [ ] Load times acceptable
|
||||
- [ ] No GC stutters in gameplay
|
||||
- [ ] Thermal tests passed (mobile/console)
|
||||
- [ ] Certification requirements met
|
||||
|
||||
### Ongoing
|
||||
|
||||
- [ ] Performance tracked in CI
|
||||
- [ ] Regression alerts configured
|
||||
- [ ] Benchmark scenes maintained
|
||||
- [ ] Budgets documented and enforced
|
||||
Reference in new issue
Block a user