- 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>
175 lines
5.4 KiB
Bash
Executable File
175 lines
5.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Steam Tinker Launch Log Checker
|
|
# Analyzes recent STL logs for common issues
|
|
|
|
set -e
|
|
|
|
# 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"; }
|
|
|
|
STL_LOG_DIR="$HOME/.config/steamtinkerlaunch/logs"
|
|
GAME_ID="1144200"
|
|
|
|
check_stl_logs() {
|
|
log_info "Checking Steam Tinker Launch logs..."
|
|
|
|
if [ ! -d "$STL_LOG_DIR" ]; then
|
|
log_error "STL logs directory not found: $STL_LOG_DIR"
|
|
return 1
|
|
fi
|
|
|
|
# Check main STL log
|
|
local main_log="$STL_LOG_DIR/steamtinkerlaunch.log"
|
|
if [ -f "$main_log" ]; then
|
|
log_info "Recent STL activity (last 20 lines):"
|
|
echo "----------------------------------------"
|
|
tail -20 "$main_log" | while read line; do
|
|
if echo "$line" | grep -qi "error\|fail\|crash\|exception"; then
|
|
echo -e "${RED}$line${NC}"
|
|
elif echo "$line" | grep -qi "warning"; then
|
|
echo -e "${YELLOW}$line${NC}"
|
|
else
|
|
echo "$line"
|
|
fi
|
|
done
|
|
echo "----------------------------------------"
|
|
else
|
|
log_warning "Main STL log not found"
|
|
fi
|
|
|
|
# Check for game-specific logs
|
|
local proton_log_dir="$STL_LOG_DIR/proton/id"
|
|
if [ -d "$proton_log_dir" ]; then
|
|
log_info "Checking Proton logs..."
|
|
ls -la "$proton_log_dir" 2>/dev/null || log_warning "No Proton logs found"
|
|
fi
|
|
|
|
# Check for wine logs
|
|
local wine_log_dir="$STL_LOG_DIR/wine"
|
|
if [ -d "$wine_log_dir" ]; then
|
|
log_info "Checking Wine logs..."
|
|
ls -la "$wine_log_dir" 2>/dev/null || log_warning "No Wine logs found"
|
|
fi
|
|
|
|
# Check for DXVK logs
|
|
local dxvk_log_dir="$STL_LOG_DIR/dxvk"
|
|
if [ -d "$dxvk_log_dir" ]; then
|
|
log_info "Checking DXVK logs..."
|
|
ls -la "$dxvk_log_dir" 2>/dev/null || log_warning "No DXVK logs found"
|
|
fi
|
|
}
|
|
|
|
check_proton_prefix() {
|
|
log_info "Checking Proton prefix status..."
|
|
|
|
local compatdata_dirs=(
|
|
"$HOME/.steam/steam/steamapps/compatdata/$GAME_ID"
|
|
"$HOME/.local/share/Steam/steamapps/compatdata/$GAME_ID"
|
|
)
|
|
|
|
for compatdata in "${compatdata_dirs[@]}"; do
|
|
if [ -d "$compatdata" ]; then
|
|
log_success "Found compatdata: $compatdata"
|
|
log_info "Prefix size: $(du -sh "$compatdata" 2>/dev/null | cut -f1)"
|
|
|
|
# Check for common crash indicators
|
|
if [ -f "$compatdata/pfx/drive_c/users/steamuser/Temp/steam_appid.txt" ]; then
|
|
local appid=$(cat "$compatdata/pfx/drive_c/users/steamuser/Temp/steam_appid.txt" 2>/dev/null)
|
|
log_info "Steam App ID in prefix: $appid"
|
|
fi
|
|
|
|
# Check prefix health
|
|
if [ -f "$compatdata/pfx/system.reg" ]; then
|
|
log_success "Wine prefix appears healthy"
|
|
else
|
|
log_warning "Wine prefix may be corrupted"
|
|
fi
|
|
|
|
return 0
|
|
fi
|
|
done
|
|
|
|
log_warning "No compatdata found - this might be the issue"
|
|
}
|
|
|
|
analyze_common_crashes() {
|
|
log_info "Analyzing for common Ready or Not crash patterns..."
|
|
|
|
local main_log="$STL_LOG_DIR/steamtinkerlaunch.log"
|
|
if [ -f "$main_log" ]; then
|
|
# Check for EasyAntiCheat issues
|
|
if grep -qi "easyanticheat\|eac" "$main_log"; then
|
|
log_warning "EasyAntiCheat detected in logs - this can cause crashes"
|
|
log_info "Solution: Ensure -noeac is in game arguments"
|
|
fi
|
|
|
|
# Check for DirectX issues
|
|
if grep -qi "d3d\|directx\|dxgi" "$main_log"; then
|
|
log_warning "DirectX/DXVK issues detected"
|
|
log_info "Solution: Try PROTON_USE_WINED3D=1 or different Proton version"
|
|
fi
|
|
|
|
# Check for memory issues
|
|
if grep -qi "memory\|allocation\|heap" "$main_log"; then
|
|
log_warning "Memory issues detected"
|
|
log_info "Solution: Ensure PROTON_FORCE_LARGE_ADDRESS_AWARE=1 is set"
|
|
fi
|
|
|
|
# Check for Vulkan issues
|
|
if grep -qi "vulkan\|vk_" "$main_log"; then
|
|
log_warning "Vulkan issues detected"
|
|
log_info "Solution: Verify NVIDIA drivers and Vulkan support"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
suggest_fixes() {
|
|
echo
|
|
log_info "=== Common Fixes for Ready or Not Crashes ==="
|
|
echo
|
|
echo "1. Reset Proton Prefix:"
|
|
echo " rm -rf ~/.steam/steam/steamapps/compatdata/1144200/"
|
|
echo " (Steam will recreate on next launch)"
|
|
echo
|
|
echo "2. Try Different Proton Version:"
|
|
echo " - GE-Proton9-11 (older, more stable)"
|
|
echo " - Proton 8.0-5 (Steam's stable version)"
|
|
echo
|
|
echo "3. Disable GameScope temporarily:"
|
|
echo " Edit config: USEGAMESCOPE=\"0\""
|
|
echo
|
|
echo "4. Enable Wine debug for more info:"
|
|
echo " Edit config: PROTON_LOG=\"1\""
|
|
echo
|
|
echo "5. Try minimal STL settings:"
|
|
echo " - Disable all extras except basic Proton"
|
|
echo " - Only keep: GAMEARGS=\"-noeac\""
|
|
echo
|
|
echo "6. Fallback to WineD3D:"
|
|
echo " Edit config: PROTON_USE_WINED3D=\"1\""
|
|
}
|
|
|
|
main() {
|
|
log_info "Analyzing Ready or Not crash..."
|
|
echo
|
|
|
|
check_stl_logs
|
|
echo
|
|
check_proton_prefix
|
|
echo
|
|
analyze_common_crashes
|
|
|
|
suggest_fixes
|
|
}
|
|
|
|
main "$@" |