6.0 KiB
Test Scenarios Document
Project: Master's Thesis - Game Engine Performance Comparison
Date: January 19, 2026
Author: Krzysztof Rudnicki
Overview
This document defines the test scenarios for comparing Unity and Unreal Engine performance using bullet-hell games and NVIDIA Nsight profiling.
Test Hardware
- CPU: AMD Ryzen 9 7900X3D 12-Core Processor (24 cores, 48 threads)
- GPU: NVIDIA GeForce RTX 3090 (24 GB GDDR6X)
- RAM: 32 GB
- OS: Arch Linux (kernel 6.18.5-arch1-1)
- NVIDIA Drivers: 590.48.01
Test Methodology
Game: Bullet-Hell (Unity & Unreal implementations)
Both games implement identical gameplay mechanics:
- Player-controlled ship
- Enemy spawning system with escalating load
- Bullet pattern generation
- Collision detection
- 90-second survival mode with progressive load increase
Note
: The game runs continuously for 90 seconds with three load phases:
- 0-30 seconds: Low load phase
- 30-60 seconds: Medium load phase
- 60-90 seconds: High load phase
Performance Metrics to Capture
- Frame Time (ms) - Time to render one frame
- FPS (frames per second) - Derived from frame time
- GPU Utilization (%) - Percentage of GPU capacity used
- Memory Usage (MB) - VRAM and system RAM consumption
- Draw Calls - Number of draw calls per frame
- Vertex Count - Total vertices rendered per frame
Load Phases
Phase 1: Low Load (0-30 seconds)
Objective: Establish baseline performance with minimal load
Parameters:
- Bullet count on screen: 50-100 bullets
- Active enemies: 2-3 enemies
- Time window: 0-30 seconds of gameplay
Expected Outcomes:
- Stable frame rate (60 FPS target)
- Low GPU utilization (<50%)
- Minimal memory usage
Nsight Capture Points:
- 10 seconds (early low load)
- 20 seconds (stable low load)
- 25 seconds (end of low load phase)
Phase 2: Medium Load (30-60 seconds)
Objective: Test performance under moderate load
Parameters:
- Bullet count on screen: 200-300 bullets
- Active enemies: 5-7 enemies
- Time window: 30-60 seconds of gameplay
Expected Outcomes:
- Moderate GPU utilization (50-70%)
- Frame rate may drop slightly
- Increased memory usage
Nsight Capture Points:
- 35 seconds (transition to medium load)
- 45 seconds (stable medium load)
- 55 seconds (end of medium load phase)
Phase 3: High Load (60-90 seconds)
Objective: Test performance under maximum load (stress test)
Parameters:
- Bullet count on screen: 500+ bullets
- Active enemies: 10+ enemies
- Time window: 60-90 seconds of gameplay
Expected Outcomes:
- High GPU utilization (>70%)
- Potential frame drops
- Maximum memory usage observed
Nsight Capture Points:
- 65 seconds (transition to high load)
- 75 seconds (peak sustained load)
- 85 seconds (end of high load phase)
Data Collection Procedure
For Each Test Run:
-
Pre-test Setup:
- Run
./scripts/close_background_apps.shto close unnecessary applications - Verify system is idle
- Run
-
Unity Testing:
- Start NVIDIA Nsight Systems (
nsys-ui) - Configure Nsight to profile the Unity game executable
- Launch Unity bullet-hell game through Nsight
- Let the game run for full 90 seconds (all three load phases)
- Nsight captures performance data throughout the entire run
- Save capture data with naming:
unity_run_[N].nsight-rep - Export metrics to CSV:
unity_metrics_[N].csv
- Start NVIDIA Nsight Systems (
-
Unreal Testing:
- Close Unity completely
- Start NVIDIA Nsight Systems (
nsys-ui) - Configure Nsight to profile the Unreal game executable
- Launch Unreal bullet-hell game through Nsight
- Let the game run for full 90 seconds (all three load phases)
- Nsight captures performance data throughout the entire run
- Save capture data with naming:
unreal_run_[N].nsight-rep - Export metrics to CSV:
unreal_metrics_[N].csv
-
Post-test Data Organization:
- Organize captures in folders:
data/nsight/unity/anddata/nsight/unreal/ - Compile metrics into master spreadsheet:
performance_comparison.xlsx - Take screenshots of key Nsight analysis views
- Document any anomalies or issues observed
- Organize captures in folders:
Expected Data Outputs
Per Test Run (3 runs per engine, 6 total):
- Nsight capture file (.nsight-rep)
- Metrics CSV with frame time, FPS, GPU %, memory, draw calls, vertices
- Screenshot of Nsight GPU trace for each load phase
- Screenshot of Nsight memory analysis
Aggregate Data:
- Comparison table: Unity vs Unreal per load phase
- Performance graphs showing all metrics over 90-second timeline
- Statistical analysis (mean, std dev, min, max) per load phase
Quality Assurance
Validation Checks:
- All three runs completed for Unity
- All three runs completed for Unreal
- All CSV metrics exported
- Screenshots saved for all load phases
- Data organized in proper folder structure
- No system crashes or anomalies during testing
- Comparable conditions between Unity and Unreal runs
Data Integrity:
- Frame times make sense (>0ms, <100ms typically)
- GPU utilization in valid range (0-100%)
- Memory values reasonable for game scope
- No obvious outliers without explanation
Timeline
- Day 1 (Sunday, Jan 19): Setup Nsight, run first test on Unity engine
- Day 2 (Monday, Jan 20): Complete Unity tests (3 runs), run first test on Unreal engine
- Day 3 (Tuesday, Jan 21): Complete Unreal tests (3 runs), verify data integrity
- Day 4 (Wednesday, Jan 22): Analyze results, create comparison graphs, organize data
Notes
- If a capture fails, note the reason and retry
- Document any differences in how load phases manifest in Unity vs Unreal
- Pay attention to engine-specific optimizations that may affect results
- Consider recording video of test runs for reference
Status: Ready for execution
Next Action: Run ./scripts/close_background_apps.sh and start Nsight profiling