claude-home/gaming/scripts/diagnose-crash.sh
Cal Corum edc78c2dd6 CLAUDE: Add comprehensive gaming-aware Tdarr management system
- Created complete gaming detection and priority system
- Added gaming schedule configuration and enforcement
- Implemented Steam library monitoring with auto-detection
- Built comprehensive game process detection for multiple platforms
- Added gaming-aware Tdarr worker management with priority controls
- Created emergency gaming mode for immediate worker shutdown
- Integrated Discord notifications for gaming state changes
- Replaced old bash monitoring with enhanced Python monitoring system
- Added persistent state management and memory tracking
- Implemented configurable gaming time windows and schedules
- Updated .gitignore to exclude logs directories

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-14 15:17:52 -05:00

255 lines
7.4 KiB
Bash
Executable File

#!/bin/bash
# Ready or Not Crash Diagnostic Script
# Gathers all relevant crash information
set -e
GAME_ID="1144200"
# Colors
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
log_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
log_success() { echo -e "${GREEN}[SUCCESS]${NC} $1"; }
log_warning() { echo -e "${YELLOW}[WARNING]${NC} $1"; }
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
check_system_prerequisites() {
log_info "=== System Prerequisites Check ==="
# Check kernel version
log_info "Kernel: $(uname -r)"
# Check graphics drivers
if command -v nvidia-smi >/dev/null 2>&1; then
local gpu_info=$(nvidia-smi --query-gpu=name,driver_version --format=csv,noheader,nounits | head -1)
log_info "GPU: $gpu_info"
fi
# Check Vulkan
if command -v vulkaninfo >/dev/null 2>&1; then
local vulkan_devices=$(vulkaninfo --summary 2>/dev/null | grep "GPU id" | wc -l)
log_info "Vulkan devices: $vulkan_devices"
fi
# Check Steam process
if pgrep -f steam >/dev/null; then
log_success "Steam is running"
else
log_warning "Steam is not running"
fi
echo
}
check_proton_versions() {
log_info "=== Available Proton Versions ==="
local steam_dirs=(
"$HOME/.steam/steam/steamapps/common"
"$HOME/.local/share/Steam/steamapps/common"
)
for steam_dir in "${steam_dirs[@]}"; do
if [ -d "$steam_dir" ]; then
log_info "Proton versions in $steam_dir:"
ls "$steam_dir" 2>/dev/null | grep -i proton || log_warning "No Proton versions found"
fi
done
echo
}
test_basic_compatibility() {
log_info "=== Testing Basic Wine/Proton Compatibility ==="
# Test basic Wine functionality
log_info "Testing Wine with simple Windows executable..."
# Create a simple test script
cat > /tmp/wine_test.sh << 'EOF'
#!/bin/bash
export WINEPREFIX="/tmp/wine_test_prefix"
export PROTON_LOG=1
# Try to run a simple Windows command
timeout 10s wine cmd /c "echo Wine test successful" 2>&1 | head -5
EOF
chmod +x /tmp/wine_test.sh
bash /tmp/wine_test.sh || log_warning "Basic Wine test failed"
# Clean up
rm -rf /tmp/wine_test_prefix /tmp/wine_test.sh 2>/dev/null
echo
}
check_steam_library() {
log_info "=== Steam Library Check ==="
# Look for game in various locations
local found_game=false
local search_paths=(
"$HOME/.steam/steam/steamapps"
"$HOME/.local/share/Steam/steamapps"
"/mnt/*/games/steam/steamapps"
"/mnt/*/Games/Steam/steamapps"
"/mnt/*/*/steamapps"
)
for search_path in "${search_paths[@]}"; do
local game_paths=$(find $search_path -name "*Ready*" -type d 2>/dev/null || true)
if [ -n "$game_paths" ]; then
log_success "Found game at: $game_paths"
found_game=true
# Check game executable
local game_dir="$game_paths"
if [ -f "$game_dir/ReadyOrNot.exe" ]; then
log_success "Game executable found"
log_info "Game size: $(du -sh "$game_dir" 2>/dev/null | cut -f1)"
else
log_warning "Game executable not found in $game_dir"
fi
fi
done
if ! $found_game; then
log_error "Ready or Not installation not found!"
log_info "Please verify the game is installed through Steam"
fi
echo
}
analyze_crash_patterns() {
log_info "=== Crash Pattern Analysis ==="
# Check for common crash causes
log_info "Checking for common Ready or Not crash patterns:"
# Check system resources
local memory_mb=$(free -m | awk 'NR==2{printf "%.0f", $7}')
if [ "$memory_mb" -lt 4000 ]; then
log_warning "Low available memory: ${memory_mb}MB (need 4GB+)"
else
log_success "Available memory: ${memory_mb}MB"
fi
# Check disk space
local disk_space=$(df -h ~ | awk 'NR==2 {print $4}')
log_info "Available disk space: $disk_space"
# Check for conflicting processes
local conflicting_procs=$(pgrep -f "eac|battleye|vanguard" || true)
if [ -n "$conflicting_procs" ]; then
log_warning "Conflicting anti-cheat processes found: $conflicting_procs"
fi
echo
}
suggest_alternative_approaches() {
log_info "=== Alternative Troubleshooting Approaches ==="
echo "1. Try without Steam Tinker Launch:"
echo " - Set compatibility tool to 'Proton Experimental'"
echo " - Add launch options: PROTON_USE_WINED3D=1 %command% -noeac -dx11"
echo
echo "2. Test with different Proton versions:"
echo " - Proton 8.0-5 (stable)"
echo " - Proton 7.0-6 (older, more compatible)"
echo " - GE-Proton8-32 (community build)"
echo
echo "3. Try Lutris instead of Steam:"
echo " - Install Lutris"
echo " - Use Lutris Wine runners"
echo " - More granular control over Wine settings"
echo
echo "4. Verify game files:"
echo " - Steam → Ready or Not → Properties → Local Files → Verify integrity"
echo
echo "5. Check for Windows dependencies:"
echo " - Install Visual C++ Redistributables via Winetricks"
echo " - Install DirectX runtime"
echo
echo "6. Hardware-specific issues:"
echo " - Try different display outputs"
echo " - Test with integrated graphics (if available)"
echo " - Check for BIOS/UEFI settings affecting compatibility"
echo
}
create_manual_test_script() {
log_info "=== Creating Manual Test Script ==="
cat > /tmp/manual_ready_or_not_test.sh << 'EOF'
#!/bin/bash
# Manual Ready or Not Test Script
# Run this to test the game with minimal environment
export STEAM_COMPAT_DATA_PATH="$HOME/.steam/steam/steamapps/compatdata/1144200"
export STEAM_COMPAT_CLIENT_INSTALL_PATH="$HOME/.steam/steam"
export PROTON_LOG=1
export PROTON_LOG_DIR="/tmp/proton_test_logs"
export WINEDEBUG="+dll,+module,+registry"
# Create log directory
mkdir -p /tmp/proton_test_logs
# Find the game executable
GAME_EXE=""
for path in "$HOME/.steam/steam/steamapps/common/Ready Or Not" \
"$HOME/.local/share/Steam/steamapps/common/Ready Or Not" \
"/mnt/*/games/steam/steamapps/common/Ready Or Not" \
"/mnt/*/Games/Steam/steamapps/common/Ready Or Not"; do
if [ -f "$path/ReadyOrNot.exe" ]; then
GAME_EXE="$path/ReadyOrNot.exe"
break
fi
done
if [ -z "$GAME_EXE" ]; then
echo "ERROR: Ready or Not executable not found!"
exit 1
fi
echo "Found game: $GAME_EXE"
echo "Starting manual test..."
# Try to run the game directly with Proton
timeout 30s ~/.steam/steam/steamapps/common/Proton\ -\ Experimental/proton run "$GAME_EXE" -noeac -dx11
echo "Test completed. Check logs in /tmp/proton_test_logs/"
EOF
chmod +x /tmp/manual_ready_or_not_test.sh
log_success "Manual test script created: /tmp/manual_ready_or_not_test.sh"
echo
}
main() {
log_info "Starting comprehensive crash diagnosis..."
echo
check_system_prerequisites
check_proton_versions
test_basic_compatibility
check_steam_library
analyze_crash_patterns
suggest_alternative_approaches
create_manual_test_script
log_info "=== Summary ==="
log_info "Crash diagnosis complete. Try the suggested approaches above."
log_info "If all else fails, the game may have compatibility issues with your specific system configuration."
}
main "$@"