#!/bin/bash # # Script Name: configure_project_settings.sh # Description: Configure all Unreal Engine project settings (Nanite, Lumen, World Partition, Plugins) # Usage: ./configure_project_settings.sh # Author: Dubai Metaverse Team # Date: 2025-11-21 # Version: 1.0 set -euo pipefail # Colors RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # Configuration PROJECT_DIR="${PROJECT_DIR:-$(pwd)}" PROJECT_FILE="$PROJECT_DIR/DubaiMetaverse.uproject" ENGINE_INI="$PROJECT_DIR/Config/DefaultEngine.ini" GAME_INI="$PROJECT_DIR/Config/DefaultGame.ini" LOG_FILE="$PROJECT_DIR/logs/configure_project_settings.log" # Create log directory mkdir -p "$(dirname "$LOG_FILE")" log() { local level="${1:-INFO}" shift local message="$*" local timestamp=$(date +'%Y-%m-%d %H:%M:%S') echo "[$timestamp] [$level] $message" | tee -a "$LOG_FILE" echo -e "${message}" } echo "==========================================" echo "Dubai Metaverse Project Settings Configuration" echo "==========================================" echo "" cd "$PROJECT_DIR" # Check project file exists if [ ! -f "$PROJECT_FILE" ]; then echo -e "${RED}✗${NC} Project file not found: $PROJECT_FILE" echo " Run: ./scripts/setup/create_ue5_project.sh first" exit 1 fi echo -e "${GREEN}✓${NC} Project file found: $PROJECT_FILE" # Backup existing config files if [ -f "$ENGINE_INI" ]; then cp "$ENGINE_INI" "$ENGINE_INI.backup.$(date +%Y%m%d_%H%M%S)" echo -e "${BLUE}ℹ${NC} Backed up DefaultEngine.ini" fi if [ -f "$GAME_INI" ]; then cp "$GAME_INI" "$GAME_INI.backup.$(date +%Y%m%d_%H%M%S)" echo -e "${BLUE}ℹ${NC} Backed up DefaultGame.ini" fi # Create Config directory if it doesn't exist mkdir -p "$PROJECT_DIR/Config" echo "" echo "==========================================" echo "Configuring DefaultEngine.ini" echo "==========================================" echo "" # Create comprehensive DefaultEngine.ini cat > "$ENGINE_INI" << 'EOF' ; Dubai Metaverse - DefaultEngine.ini ; Configured automatically by configure_project_settings.sh ; Last Updated: 2025-11-21 [/Script/Engine.RendererSettings] ; ============================================ ; NANITE SETTINGS ; ============================================ r.Nanite.ProjectEnabled=True ; ============================================ ; LUMEN SETTINGS ; ============================================ r.DefaultFeature.LumenSupport=1 r.Lumen.ProjectEnabled=True r.Lumen.DiffuseIndirect.Allow=1 r.Lumen.Reflections.Allow=1 r.Lumen.ScreenProbeGather.ScreenSpaceBentNormal=1 r.Lumen.ScreenProbeGather.TraceMeshSDFs=1 r.Lumen.ScreenProbeGather.ScreenTraces=1 ; ============================================ ; VIRTUAL SHADOW MAPS ; ============================================ r.Shadow.Virtual.Enable=1 r.Shadow.Virtual.OnePassProjection=1 ; ============================================ ; ANTI-ALIASING ; ============================================ r.DefaultFeature.AntiAliasing=2 r.TemporalAA.Quality=4 r.TemporalAA.Upsampling=1 ; ============================================ ; POST-PROCESS EFFECTS ; ============================================ r.DefaultFeature.AutoExposure=False r.DefaultFeature.Bloom=True r.DefaultFeature.MotionBlur=True r.MotionBlurQuality=4 r.BloomQuality=4 ; ============================================ ; RENDERING PERFORMANCE ; ============================================ r.VirtualTextures=True r.VirtualTextures.EnableAutoImport=True r.VirtualTextures.Enable=1 [/Script/Engine.WorldSettings] ; ============================================ ; WORLD PARTITION ; ============================================ bEnableWorldPartition=True [/Script/Engine.Engine] ; ============================================ ; PROJECT SETTINGS ; ============================================ +ActiveGameNameRedirects=(OldGameName="TP_Blank",NewGameName="/Script/DubaiMetaverse") +ActiveGameNameRedirects=(OldGameName="/Script/TP_Blank",NewGameName="/Script/DubaiMetaverse") +ActiveClassRedirects=(OldClassName="TP_BlankGameModeBase",NewClassName="DubaiMetaverseGameModeBase") [/Script/EngineSettings.GameMapsSettings] ; ============================================ ; DEFAULT MAPS ; ============================================ GameDefaultMap=/Game/Maps/MainLevel EditorStartupMap=/Game/Maps/MainLevel [/Script/WindowsTargetPlatform.WindowsTargetSettings] ; ============================================ ; WINDOWS PLATFORM SETTINGS ; ============================================ DefaultGraphicsRHI=Default +TargetedRHIs=PCD3D_SM6 +TargetedRHIs=PCD3D_SM5 [/Script/LinuxTargetPlatform.LinuxTargetSettings] ; ============================================ ; LINUX PLATFORM SETTINGS ; ============================================ DefaultGraphicsRHI=Default EOF echo -e "${GREEN}✓${NC} DefaultEngine.ini configured with:" echo " - Nanite enabled" echo " - Lumen enabled (GI + Reflections)" echo " - Virtual Shadow Maps enabled" echo " - World Partition enabled" echo " - Post-process effects configured" echo "" echo "==========================================" echo "Configuring DefaultGame.ini" echo "==========================================" echo "" # Create DefaultGame.ini cat > "$GAME_INI" << 'EOF' ; Dubai Metaverse - DefaultGame.ini ; Configured automatically by configure_project_settings.sh ; Last Updated: 2025-11-21 [/Script/EngineSettings.GameMapsSettings] ; ============================================ ; DEFAULT MAPS ; ============================================ GameDefaultMap=/Game/Maps/Main/MainLevel EditorStartupMap=/Game/Maps/Main/MainLevel GlobalDefaultGameMode=/Script/Engine.GameModeBase [/Script/Engine.GameEngine] +NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemUtils.IpNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver") [/Script/OnlineSubsystem.IpNetDriver] NetDriverClassName="OnlineSubsystemUtils.IpNetDriver" EOF echo -e "${GREEN}✓${NC} DefaultGame.ini configured" echo "" echo "==========================================" echo "Verifying Plugins in Project File" echo "==========================================" echo "" # Check and configure plugins in project file REQUIRED_PLUGINS=( "ProceduralContentGeneration" "VirtualProduction" "MovieRenderQueue" "ModelingTools" "GeometryScript" ) PLUGINS_MISSING=0 for plugin in "${REQUIRED_PLUGINS[@]}"; do if grep -q "\"Name\": \"$plugin\"" "$PROJECT_FILE"; then if grep -A1 "\"Name\": \"$plugin\"" "$PROJECT_FILE" | grep -q "\"Enabled\": true"; then echo -e "${GREEN}✓${NC} Plugin enabled: $plugin" else echo -e "${YELLOW}⚠${NC} Plugin found but not enabled: $plugin" PLUGINS_MISSING=1 fi else echo -e "${RED}✗${NC} Plugin missing: $plugin" PLUGINS_MISSING=1 fi done if [ $PLUGINS_MISSING -eq 1 ]; then echo "" echo -e "${YELLOW}⚠${NC} Some plugins need to be enabled manually:" echo " 1. Launch Unreal Editor" echo " 2. Go to Edit > Plugins" echo " 3. Enable the missing plugins listed above" echo " 4. Restart editor" else echo "" echo -e "${GREEN}✓${NC} All required plugins are enabled" fi echo "" echo "==========================================" echo "Configuration Summary" echo "==========================================" echo "" # Verify settings echo "Verifying configuration..." NANITE_OK=0 LUMEN_OK=0 WORLDPARTITION_OK=0 if grep -q "r.Nanite.ProjectEnabled=True" "$ENGINE_INI"; then echo -e "${GREEN}✓${NC} Nanite: Enabled" NANITE_OK=1 else echo -e "${RED}✗${NC} Nanite: Not configured" fi if grep -q "r.Lumen.ProjectEnabled=True" "$ENGINE_INI"; then echo -e "${GREEN}✓${NC} Lumen: Enabled" LUMEN_OK=1 else echo -e "${RED}✗${NC} Lumen: Not configured" fi if grep -q "bEnableWorldPartition=True" "$ENGINE_INI"; then echo -e "${GREEN}✓${NC} World Partition: Enabled" WORLDPARTITION_OK=1 else echo -e "${RED}✗${NC} World Partition: Not configured" fi echo "" echo "==========================================" echo "Next Steps" echo "==========================================" echo "" if [ $NANITE_OK -eq 1 ] && [ $LUMEN_OK -eq 1 ] && [ $WORLDPARTITION_OK -eq 1 ]; then echo -e "${GREEN}✅ All project settings configured successfully!${NC}" echo "" echo "Next steps:" echo "1. Launch Unreal Editor:" echo " ~/UnrealEngine/Engine/Binaries/Linux/UnrealEditor \\" echo " ~/projects/metaverseDubai/DubaiMetaverse.uproject" echo "" echo "2. Verify settings in editor:" echo " - Edit > Project Settings > Engine > Rendering" echo " - Verify Nanite is enabled" echo " - Verify Lumen (Global Illumination and Reflections) is enabled" echo " - World Settings > Enable World Partition" echo "" echo "3. Verify plugins:" echo " - Edit > Plugins" echo " - Verify all required plugins are enabled" echo "" log "INFO" "Configuration complete - All settings verified" exit 0 else echo -e "${RED}⚠${NC} Some settings may not be configured correctly" echo " Please review the configuration files manually" log "WARNING" "Configuration incomplete - Some settings missing" exit 1 fi