chore: commit untracked UE/scaffold files (repo cleanup triage 20260707)
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
308
scripts/setup/configure_project_settings.sh
Executable file
308
scripts/setup/configure_project_settings.sh
Executable file
@@ -0,0 +1,308 @@
|
||||
#!/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
|
||||
|
||||
295
scripts/setup/create_ue5_project.sh
Executable file
295
scripts/setup/create_ue5_project.sh
Executable file
@@ -0,0 +1,295 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Script Name: create_ue5_project.sh
|
||||
# Description: Create Dubai Metaverse Unreal Engine project
|
||||
# Usage: ./create_ue5_project.sh [project_name]
|
||||
# Author: Dubai Metaverse Team
|
||||
# Date: 2024
|
||||
# Version: 1.0
|
||||
#
|
||||
# Exit codes:
|
||||
# 0: Success
|
||||
# 1: General error
|
||||
# 2: Invalid arguments
|
||||
# 3: Missing dependencies
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# Configuration
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
||||
LOG_FILE="${LOG_FILE:-$PROJECT_ROOT/logs/create_project.log}"
|
||||
|
||||
# Colors
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m'
|
||||
|
||||
# Logging
|
||||
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"
|
||||
}
|
||||
|
||||
error_exit() {
|
||||
log "ERROR" "$*"
|
||||
exit 1
|
||||
}
|
||||
|
||||
warning() {
|
||||
log "WARNING" "$*"
|
||||
}
|
||||
|
||||
success() {
|
||||
log "SUCCESS" "$*"
|
||||
}
|
||||
|
||||
# Parse arguments
|
||||
PROJECT_NAME="${1:-DubaiMetaverse}"
|
||||
UE_ROOT="${UE_ROOT:-$HOME/UnrealEngine}"
|
||||
|
||||
usage() {
|
||||
cat << EOF
|
||||
Usage: $0 [PROJECT_NAME]
|
||||
|
||||
Create Dubai Metaverse Unreal Engine project.
|
||||
|
||||
Arguments:
|
||||
PROJECT_NAME Project name (default: DubaiMetaverse)
|
||||
|
||||
Environment Variables:
|
||||
UE_ROOT Unreal Engine root directory (default: ~/UnrealEngine)
|
||||
|
||||
Examples:
|
||||
$0
|
||||
$0 DubaiMetaverse
|
||||
UE_ROOT=/opt/UnrealEngine $0
|
||||
|
||||
EOF
|
||||
}
|
||||
|
||||
# Validate prerequisites
|
||||
validate_prerequisites() {
|
||||
log "INFO" "Validating prerequisites..."
|
||||
|
||||
# Check for Unreal Engine
|
||||
if [ ! -d "$UE_ROOT" ]; then
|
||||
error_exit "Unreal Engine not found at: $UE_ROOT"
|
||||
fi
|
||||
|
||||
local editor_path="$UE_ROOT/Engine/Binaries/Linux/UnrealEditor"
|
||||
if [ ! -f "$editor_path" ]; then
|
||||
error_exit "UnrealEditor not found at: $editor_path"
|
||||
fi
|
||||
|
||||
log "INFO" "Using Unreal Engine: $UE_ROOT"
|
||||
log "INFO" "UnrealEditor found: $editor_path"
|
||||
}
|
||||
|
||||
# Create project file
|
||||
create_project_file() {
|
||||
log "INFO" "Creating project file: ${PROJECT_NAME}.uproject"
|
||||
|
||||
local project_file="$PROJECT_ROOT/${PROJECT_NAME}.uproject"
|
||||
|
||||
cat > "$project_file" << EOF
|
||||
{
|
||||
"FileVersion": 3,
|
||||
"EngineAssociation": "5.4",
|
||||
"Category": "",
|
||||
"Description": "High-End Interactive Demo District of Dubai",
|
||||
"Modules": [
|
||||
{
|
||||
"Name": "${PROJECT_NAME}",
|
||||
"Type": "Runtime",
|
||||
"LoadingPhase": "Default"
|
||||
}
|
||||
],
|
||||
"Plugins": [
|
||||
{
|
||||
"Name": "ProceduralContentGeneration",
|
||||
"Enabled": true
|
||||
},
|
||||
{
|
||||
"Name": "VirtualProduction",
|
||||
"Enabled": true
|
||||
},
|
||||
{
|
||||
"Name": "MovieRenderQueue",
|
||||
"Enabled": true
|
||||
},
|
||||
{
|
||||
"Name": "ModelingTools",
|
||||
"Enabled": true
|
||||
},
|
||||
{
|
||||
"Name": "GeometryScript",
|
||||
"Enabled": true
|
||||
}
|
||||
],
|
||||
"TargetPlatforms": [
|
||||
"Linux",
|
||||
"Windows"
|
||||
]
|
||||
}
|
||||
EOF
|
||||
|
||||
success "Project file created: $project_file"
|
||||
}
|
||||
|
||||
# Create Source directory structure
|
||||
create_source_structure() {
|
||||
log "INFO" "Creating Source directory structure..."
|
||||
|
||||
mkdir -p "$PROJECT_ROOT/Source/${PROJECT_NAME}"
|
||||
mkdir -p "$PROJECT_ROOT/Source/${PROJECT_NAME}/Public"
|
||||
mkdir -p "$PROJECT_ROOT/Source/${PROJECT_NAME}/Private"
|
||||
|
||||
# Create basic module files
|
||||
cat > "$PROJECT_ROOT/Source/${PROJECT_NAME}/${PROJECT_NAME}.Build.cs" << EOF
|
||||
using UnrealBuildTool;
|
||||
|
||||
public class ${PROJECT_NAME} : ModuleRules
|
||||
{
|
||||
public ${PROJECT_NAME}(ReadOnlyTargetRules Target) : base(Target)
|
||||
{
|
||||
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
|
||||
|
||||
PublicDependencyModuleNames.AddRange(new string[] {
|
||||
"Core",
|
||||
"CoreUObject",
|
||||
"Engine",
|
||||
"InputCore"
|
||||
});
|
||||
|
||||
PrivateDependencyModuleNames.AddRange(new string[] { });
|
||||
}
|
||||
}
|
||||
EOF
|
||||
|
||||
cat > "$PROJECT_ROOT/Source/${PROJECT_NAME}/${PROJECT_NAME}.cpp" << EOF
|
||||
#include "${PROJECT_NAME}.h"
|
||||
#include "Modules/ModuleManager.h"
|
||||
|
||||
IMPLEMENT_PRIMARY_GAME_MODULE( FDefaultGameModuleImpl, ${PROJECT_NAME}, "${PROJECT_NAME}" );
|
||||
EOF
|
||||
|
||||
cat > "$PROJECT_ROOT/Source/${PROJECT_NAME}/${PROJECT_NAME}.h" << EOF
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
EOF
|
||||
|
||||
success "Source directory structure created"
|
||||
}
|
||||
|
||||
# Copy configuration files
|
||||
copy_config_files() {
|
||||
log "INFO" "Copying configuration files..."
|
||||
|
||||
mkdir -p "$PROJECT_ROOT/Config"
|
||||
|
||||
if [ -f "$PROJECT_ROOT/Config/DefaultEngine.ini" ]; then
|
||||
cp "$PROJECT_ROOT/Config/DefaultEngine.ini" "$PROJECT_ROOT/Config/DefaultEngine.ini.backup"
|
||||
log "INFO" "Backed up existing DefaultEngine.ini"
|
||||
fi
|
||||
|
||||
if [ -f "$PROJECT_ROOT/Config/DefaultEngine.ini.template" ]; then
|
||||
cp "$PROJECT_ROOT/Config/DefaultEngine.ini.template" "$PROJECT_ROOT/Config/DefaultEngine.ini"
|
||||
success "Copied DefaultEngine.ini from template"
|
||||
else
|
||||
warning "DefaultEngine.ini.template not found, using existing or creating default"
|
||||
fi
|
||||
|
||||
if [ -f "$PROJECT_ROOT/Config/DefaultGame.ini.template" ]; then
|
||||
cp "$PROJECT_ROOT/Config/DefaultGame.ini.template" "$PROJECT_ROOT/Config/DefaultGame.ini"
|
||||
success "Copied DefaultGame.ini from template"
|
||||
fi
|
||||
}
|
||||
|
||||
# Generate project files
|
||||
generate_project_files() {
|
||||
log "INFO" "Generating project files..."
|
||||
|
||||
local project_file="$PROJECT_ROOT/${PROJECT_NAME}.uproject"
|
||||
|
||||
if [ ! -f "$project_file" ]; then
|
||||
error_exit "Project file not found: $project_file"
|
||||
fi
|
||||
|
||||
# Use UnrealBuildTool to generate project files
|
||||
local ubt_path="$UE_ROOT/Engine/Binaries/DotNET/UnrealBuildTool/UnrealBuildTool.dll"
|
||||
|
||||
if [ -f "$ubt_path" ]; then
|
||||
log "INFO" "Generating project files with UnrealBuildTool..."
|
||||
dotnet "$ubt_path" -projectfiles -project="$project_file" -game -rocket -progress
|
||||
success "Project files generated"
|
||||
else
|
||||
warning "UnrealBuildTool not found, project files will be generated on first launch"
|
||||
fi
|
||||
}
|
||||
|
||||
# Create Content directory structure
|
||||
create_content_structure() {
|
||||
log "INFO" "Ensuring Content directory structure exists..."
|
||||
|
||||
# Content structure should already exist, but verify
|
||||
if [ ! -d "$PROJECT_ROOT/Content" ]; then
|
||||
log "INFO" "Content directory not found, creating..."
|
||||
mkdir -p "$PROJECT_ROOT/Content/{Maps,Assets,Blueprints,Materials,Textures,Audio}"
|
||||
fi
|
||||
|
||||
success "Content directory structure verified"
|
||||
}
|
||||
|
||||
# Main function
|
||||
main() {
|
||||
log "INFO" "Starting create_ue5_project.sh"
|
||||
|
||||
# Create log directory
|
||||
mkdir -p "$(dirname "$LOG_FILE")"
|
||||
|
||||
# Parse arguments
|
||||
if [ "${1:-}" = "-h" ] || [ "${1:-}" = "--help" ]; then
|
||||
usage
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Validate prerequisites
|
||||
validate_prerequisites
|
||||
|
||||
# Create project file
|
||||
create_project_file
|
||||
|
||||
# Create Source structure (optional, for C++ projects)
|
||||
create_source_structure
|
||||
|
||||
# Copy configuration files
|
||||
copy_config_files
|
||||
|
||||
# Create Content structure
|
||||
create_content_structure
|
||||
|
||||
# Generate project files
|
||||
generate_project_files
|
||||
|
||||
success "Project creation complete!"
|
||||
log "INFO" "Project: ${PROJECT_NAME}.uproject"
|
||||
log "INFO" "Location: $PROJECT_ROOT"
|
||||
log "INFO" ""
|
||||
log "INFO" "Next steps:"
|
||||
log "INFO" "1. Launch Unreal Editor: $UE_ROOT/Engine/Binaries/Linux/UnrealEditor $PROJECT_ROOT/${PROJECT_NAME}.uproject"
|
||||
log "INFO" "2. Configure project settings (Nanite, Lumen, World Partition)"
|
||||
log "INFO" "3. Import geospatial data"
|
||||
log "INFO" "4. Create blockout level"
|
||||
}
|
||||
|
||||
# Run main if executed directly
|
||||
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
|
||||
main "$@"
|
||||
fi
|
||||
|
||||
117
scripts/setup/master_setup.sh
Executable file
117
scripts/setup/master_setup.sh
Executable file
@@ -0,0 +1,117 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Dubai Metaverse - Master Setup Script
|
||||
# Runs all setup and validation steps in sequence
|
||||
|
||||
set -e
|
||||
|
||||
echo "=========================================="
|
||||
echo "Dubai Metaverse - Master Setup"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
|
||||
# Colors for output
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
RED='\033[0;31m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Function to print status
|
||||
print_status() {
|
||||
if [ $1 -eq 0 ]; then
|
||||
echo -e "${GREEN}✓${NC} $2"
|
||||
else
|
||||
echo -e "${RED}✗${NC} $2"
|
||||
fi
|
||||
}
|
||||
|
||||
# Step 1: Project Setup
|
||||
echo "Step 1: Running project setup..."
|
||||
./scripts/setup_project.sh
|
||||
print_status $? "Project setup"
|
||||
|
||||
# Step 2: Script Enhancement Check
|
||||
echo ""
|
||||
echo "Step 2: Validating scripts..."
|
||||
./scripts/enhance_scripts.sh
|
||||
print_status $? "Script validation"
|
||||
|
||||
# Step 3: Documentation Check
|
||||
echo ""
|
||||
echo "Step 3: Validating documentation..."
|
||||
./scripts/generate_docs.sh
|
||||
print_status $? "Documentation check"
|
||||
|
||||
# Step 4: Full Project Validation
|
||||
echo ""
|
||||
echo "Step 4: Running full project validation..."
|
||||
./scripts/validate_project.sh
|
||||
print_status $? "Project validation"
|
||||
|
||||
# Step 5: Python Dependencies Check
|
||||
echo ""
|
||||
echo "Step 5: Checking Python dependencies..."
|
||||
if python3 -c "import overpy, geojson, rasterio, numpy" 2>/dev/null; then
|
||||
print_status 0 "Python dependencies"
|
||||
else
|
||||
print_status 1 "Python dependencies (install with: pip install -r requirements.txt)"
|
||||
fi
|
||||
|
||||
# Step 6: Git Status
|
||||
echo ""
|
||||
echo "Step 6: Checking Git status..."
|
||||
if [ -d ".git" ]; then
|
||||
echo " Repository: Initialized"
|
||||
echo " Branch: $(git branch --show-current 2>/dev/null || echo 'N/A')"
|
||||
echo " Commits: $(git log --oneline | wc -l)"
|
||||
print_status 0 "Git repository"
|
||||
else
|
||||
print_status 1 "Git repository (not initialized)"
|
||||
fi
|
||||
|
||||
# Step 7: Git LFS Check
|
||||
echo ""
|
||||
echo "Step 7: Checking Git LFS..."
|
||||
if command -v git-lfs &> /dev/null; then
|
||||
if git lfs version &> /dev/null; then
|
||||
print_status 0 "Git LFS installed"
|
||||
else
|
||||
print_status 1 "Git LFS installed but not working"
|
||||
fi
|
||||
else
|
||||
print_status 1 "Git LFS not installed (install manually)"
|
||||
fi
|
||||
|
||||
# Step 8: Directory Structure Check
|
||||
echo ""
|
||||
echo "Step 8: Checking directory structure..."
|
||||
MISSING_DIRS=0
|
||||
REQUIRED_DIRS=("docs" "TASKS" "PROGRESS_REPORTS" "scripts" "houdini" "data" "TEMPLATES" "Config" "Content")
|
||||
for dir in "${REQUIRED_DIRS[@]}"; do
|
||||
if [ ! -d "$dir" ]; then
|
||||
echo " ⚠ Missing: $dir/"
|
||||
((MISSING_DIRS++))
|
||||
fi
|
||||
done
|
||||
if [ $MISSING_DIRS -eq 0 ]; then
|
||||
print_status 0 "Directory structure"
|
||||
else
|
||||
print_status 1 "Directory structure ($MISSING_DIRS missing)"
|
||||
fi
|
||||
|
||||
# Summary
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo "Master Setup Complete"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
echo "Next Steps:"
|
||||
echo "1. Install Git LFS (if not installed): sudo apt install git-lfs && git lfs install"
|
||||
echo "2. Install Unreal Engine 5.4 (follow UE5_SETUP.md)"
|
||||
echo "3. Create UE5 project: DubaiMetaverse"
|
||||
echo "4. Copy config templates to Config/ directory"
|
||||
echo "5. Begin Phase 1, Week 2: Geospatial acquisition"
|
||||
echo ""
|
||||
echo "For detailed next steps, see: docs/setup/NEXT_STEPS.md"
|
||||
echo ""
|
||||
|
||||
40
scripts/setup/run_next_steps.sh
Executable file
40
scripts/setup/run_next_steps.sh
Executable file
@@ -0,0 +1,40 @@
|
||||
#!/bin/bash
|
||||
# Master script to run all next steps after UE5 build completes
|
||||
|
||||
cd ~/projects/metaverseDubai
|
||||
|
||||
echo "=========================================="
|
||||
echo "Dubai Metaverse - Next Steps Automation"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
|
||||
# Step 1: Verify Installation
|
||||
echo "Step 1: Verifying UE5 Installation..."
|
||||
./scripts/setup/verify_ue5_installation.sh
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "⚠ Installation verification failed. Build may still be in progress."
|
||||
echo "Check build status: ./scripts/monitoring/ue5_build_monitor.sh"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "Step 2: Creating UE5 Project..."
|
||||
read -p "Create project now? (y/n) " -n 1 -r
|
||||
echo
|
||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||
./scripts/setup/create_ue5_project.sh
|
||||
else
|
||||
echo "Skipped. Run manually: ./scripts/setup/create_ue5_project.sh"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo "Next Steps Complete!"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
echo "Manual steps remaining:"
|
||||
echo "1. Launch Unreal Editor and configure project settings"
|
||||
echo "2. Import geospatial data"
|
||||
echo "3. Create blockout level"
|
||||
echo ""
|
||||
echo "See NEXT_STEPS_AFTER_BUILD.md for detailed instructions"
|
||||
97
scripts/setup/setup_blockout.sh
Executable file
97
scripts/setup/setup_blockout.sh
Executable file
@@ -0,0 +1,97 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Script Name: setup_blockout.sh
|
||||
# Description: Prepare blockout level setup instructions
|
||||
# Usage: ./setup_blockout.sh
|
||||
# Author: Dubai Metaverse Team
|
||||
# Date: 2024
|
||||
# Version: 1.0
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# Configuration
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
||||
|
||||
echo "=========================================="
|
||||
echo "Blockout Level Setup Guide"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
|
||||
cat << 'EOF'
|
||||
## Blockout Setup Steps
|
||||
|
||||
### 1. Create Main Level
|
||||
- Open Unreal Editor
|
||||
- File > New Level > Empty Level
|
||||
- Save as: Content/Maps/MainLevel
|
||||
- Enable World Partition
|
||||
|
||||
### 2. Import OSM Data
|
||||
- Run: python3 scripts/data/import_osm_data.py --output data/processed/dubai_marina_buildings.geojson
|
||||
- Import GeoJSON to Unreal (may require plugin or conversion)
|
||||
- Create building footprint meshes from OSM data
|
||||
|
||||
### 3. Generate Terrain
|
||||
- Run: python3 scripts/data/gis_to_unreal.py data/elevation/dem.tif --output data/processed/terrain_heightmap.raw
|
||||
- Import heightmap to Landscape tool
|
||||
- Create landscape from heightmap
|
||||
- Set scale to 1:1 (100 units = 1 meter)
|
||||
|
||||
### 4. Create Building Footprints
|
||||
- Use OSM building data
|
||||
- Create simple box meshes for each building
|
||||
- Place at correct locations
|
||||
- Set correct heights (from reference or estimation)
|
||||
- Use gray materials for blockout
|
||||
|
||||
### 5. Create Road Network
|
||||
- Use OSM road data
|
||||
- Create splines for roads
|
||||
- Use Road Tool or spline meshes
|
||||
- Set road width from reference
|
||||
|
||||
### 6. Add Basic Navigation
|
||||
- Add NavMeshBoundsVolume
|
||||
- Build navigation mesh
|
||||
- Test player navigation
|
||||
|
||||
### 7. Validate Scale
|
||||
- Verify 1:1 scale (100 units = 1 meter)
|
||||
- Check building heights
|
||||
- Verify distances match real-world
|
||||
|
||||
### 8. Test Navigation Flow
|
||||
- Place player start
|
||||
- Test walking through district
|
||||
- Verify navigation works
|
||||
- Check for clipping issues
|
||||
|
||||
## Blockout Checklist
|
||||
|
||||
- [ ] Main level created
|
||||
- [ ] World Partition enabled
|
||||
- [ ] OSM data imported
|
||||
- [ ] Terrain generated from elevation data
|
||||
- [ ] Building footprints placed
|
||||
- [ ] Road network created
|
||||
- [ ] Navigation mesh built
|
||||
- [ ] Scale validated (1:1)
|
||||
- [ ] Navigation flow tested
|
||||
- [ ] Blockout reviewed
|
||||
|
||||
## Next Steps After Blockout
|
||||
|
||||
1. Identify exact buildings needed
|
||||
2. Create Tier 1 asset list (Hero: Cayan Tower)
|
||||
3. Create Tier 2 asset list (Primary buildings)
|
||||
4. Begin asset production (Phase 2)
|
||||
|
||||
EOF
|
||||
|
||||
echo ""
|
||||
echo "For detailed instructions, see:"
|
||||
echo " - docs/planning/BLOCKOUT_REVIEW.md"
|
||||
echo " - TASKS/phase1_tasks.md (Week 2)"
|
||||
echo ""
|
||||
|
||||
87
scripts/setup/setup_project.sh
Executable file
87
scripts/setup/setup_project.sh
Executable file
@@ -0,0 +1,87 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Dubai Metaverse - Project Setup Script
|
||||
# This script sets up the initial project structure and configuration
|
||||
|
||||
set -e # Exit on error
|
||||
|
||||
echo "=========================================="
|
||||
echo "Dubai Metaverse - Project Setup"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
|
||||
# Check if Git is installed
|
||||
if ! command -v git &> /dev/null; then
|
||||
echo "Error: Git is not installed. Please install Git first."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check if Git LFS is installed
|
||||
if ! command -v git-lfs &> /dev/null; then
|
||||
echo "Warning: Git LFS is not installed. Large file tracking will not work."
|
||||
echo "Please install Git LFS: https://git-lfs.github.com"
|
||||
read -p "Continue anyway? (y/n) " -n 1 -r
|
||||
echo
|
||||
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "✓ Git LFS is installed"
|
||||
# Initialize Git LFS
|
||||
git lfs install
|
||||
echo "✓ Git LFS initialized"
|
||||
fi
|
||||
|
||||
# Initialize Git repository if not already initialized
|
||||
if [ ! -d ".git" ]; then
|
||||
echo "Initializing Git repository..."
|
||||
git init
|
||||
echo "✓ Git repository initialized"
|
||||
else
|
||||
echo "✓ Git repository already initialized"
|
||||
fi
|
||||
|
||||
# Create directory structure
|
||||
echo ""
|
||||
echo "Creating directory structure..."
|
||||
mkdir -p TASKS
|
||||
mkdir -p docs
|
||||
mkdir -p scripts
|
||||
mkdir -p PROGRESS_REPORTS
|
||||
mkdir -p houdini
|
||||
mkdir -p data/{osm,elevation,references,processed}
|
||||
|
||||
echo "✓ Directory structure created"
|
||||
|
||||
# Set script permissions
|
||||
echo ""
|
||||
echo "Setting script permissions..."
|
||||
chmod +x scripts/*.sh 2>/dev/null || true
|
||||
echo "✓ Script permissions set"
|
||||
|
||||
# Check Python installation (for Python scripts)
|
||||
if command -v python3 &> /dev/null; then
|
||||
echo "✓ Python 3 is installed"
|
||||
PYTHON_VERSION=$(python3 --version)
|
||||
echo " Version: $PYTHON_VERSION"
|
||||
else
|
||||
echo "Warning: Python 3 is not installed. Some scripts may not work."
|
||||
fi
|
||||
|
||||
# Summary
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo "Setup Complete!"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
echo "Next steps:"
|
||||
echo "1. Review documentation in root directory"
|
||||
echo "2. Follow UE5_SETUP.md to install Unreal Engine 5.4"
|
||||
echo "3. Create Unreal Engine project"
|
||||
echo "4. Follow PROJECT_SETTINGS.md to configure engine"
|
||||
echo "5. Install plugins (see PLUGINS.md)"
|
||||
echo "6. Begin Phase 1, Week 2: Geospatial acquisition"
|
||||
echo ""
|
||||
echo "For more information, see README.md"
|
||||
echo ""
|
||||
|
||||
94
scripts/setup/setup_ue5_project.sh
Executable file
94
scripts/setup/setup_ue5_project.sh
Executable file
@@ -0,0 +1,94 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Dubai Metaverse - UE5 Project Setup Script
|
||||
# This script provides instructions and validation for UE5 project setup
|
||||
|
||||
set -e # Exit on error
|
||||
|
||||
echo "=========================================="
|
||||
echo "Dubai Metaverse - UE5 Project Setup"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
|
||||
# Check if UE5 project file exists
|
||||
if [ -f "DubaiMetaverse.uproject" ]; then
|
||||
echo "✓ UE5 project file found: DubaiMetaverse.uproject"
|
||||
else
|
||||
echo "⚠ UE5 project file not found"
|
||||
echo ""
|
||||
echo "Please create the UE5 project manually:"
|
||||
echo "1. Open Epic Games Launcher"
|
||||
echo "2. Launch Unreal Engine 5.4"
|
||||
echo "3. Create new project: 'DubaiMetaverse'"
|
||||
echo "4. Template: Blank (or Third Person)"
|
||||
echo "5. Blueprint (C++ can be added later)"
|
||||
echo "6. Target Platform: Desktop"
|
||||
echo "7. Quality Preset: Maximum"
|
||||
echo "8. Starter Content: No"
|
||||
echo "9. Save project in this directory"
|
||||
echo ""
|
||||
read -p "Press Enter when project is created..."
|
||||
fi
|
||||
|
||||
# Check for Content directory
|
||||
if [ -d "Content" ]; then
|
||||
echo "✓ Content directory found"
|
||||
|
||||
# Check for expected folder structure
|
||||
echo ""
|
||||
echo "Checking folder structure..."
|
||||
|
||||
DIRS=("Content/Maps" "Content/Assets" "Content/Blueprints" "Content/PCG" "Content/Cinematics" "Content/Audio")
|
||||
MISSING_DIRS=()
|
||||
|
||||
for dir in "${DIRS[@]}"; do
|
||||
if [ ! -d "$dir" ]; then
|
||||
MISSING_DIRS+=("$dir")
|
||||
fi
|
||||
done
|
||||
|
||||
if [ ${#MISSING_DIRS[@]} -eq 0 ]; then
|
||||
echo "✓ All expected directories exist"
|
||||
else
|
||||
echo "⚠ Missing directories:"
|
||||
for dir in "${MISSING_DIRS[@]}"; do
|
||||
echo " - $dir"
|
||||
done
|
||||
echo ""
|
||||
read -p "Create missing directories? (y/n) " -n 1 -r
|
||||
echo
|
||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||
for dir in "${MISSING_DIRS[@]}"; do
|
||||
mkdir -p "$dir"
|
||||
echo "✓ Created: $dir"
|
||||
done
|
||||
fi
|
||||
fi
|
||||
else
|
||||
echo "⚠ Content directory not found"
|
||||
echo "This script should be run from the UE5 project root directory"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check for Config directory
|
||||
if [ -d "Config" ]; then
|
||||
echo "✓ Config directory found"
|
||||
else
|
||||
echo "⚠ Config directory not found"
|
||||
echo "This may be normal for a new project"
|
||||
fi
|
||||
|
||||
# Summary
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo "UE5 Project Setup Check Complete"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
echo "Next steps:"
|
||||
echo "1. Open project in Unreal Editor"
|
||||
echo "2. Configure project settings (see PROJECT_SETTINGS.md)"
|
||||
echo "3. Install required plugins (see PLUGINS.md)"
|
||||
echo "4. Set up World Partition"
|
||||
echo "5. Begin asset import"
|
||||
echo ""
|
||||
|
||||
157
scripts/setup/verify_project_setup.sh
Executable file
157
scripts/setup/verify_project_setup.sh
Executable file
@@ -0,0 +1,157 @@
|
||||
#!/bin/bash
|
||||
# Verify project setup is complete
|
||||
|
||||
# Colors
|
||||
GREEN='\033[0;32m'
|
||||
RED='\033[0;31m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m'
|
||||
|
||||
echo "=========================================="
|
||||
echo "Dubai Metaverse Project Setup Verification"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
|
||||
ERRORS=0
|
||||
WARNINGS=0
|
||||
|
||||
# Check project file
|
||||
if [ -f "DubaiMetaverse.uproject" ]; then
|
||||
echo -e "${GREEN}✓${NC} DubaiMetaverse.uproject exists"
|
||||
else
|
||||
echo -e "${RED}✗${NC} DubaiMetaverse.uproject missing"
|
||||
((ERRORS++))
|
||||
fi
|
||||
|
||||
# Check config files
|
||||
if [ -f "Config/DefaultEngine.ini" ]; then
|
||||
echo -e "${GREEN}✓${NC} DefaultEngine.ini exists"
|
||||
|
||||
# Check Nanite
|
||||
if grep -q "r.Nanite.ProjectEnabled=True" Config/DefaultEngine.ini; then
|
||||
echo -e " ${GREEN}✓${NC} Nanite enabled"
|
||||
else
|
||||
echo -e " ${RED}✗${NC} Nanite not configured"
|
||||
((ERRORS++))
|
||||
fi
|
||||
|
||||
# Check Lumen
|
||||
if grep -q "r.Lumen.ProjectEnabled=True" Config/DefaultEngine.ini; then
|
||||
echo -e " ${GREEN}✓${NC} Lumen enabled"
|
||||
else
|
||||
echo -e " ${RED}✗${NC} Lumen not configured"
|
||||
((ERRORS++))
|
||||
fi
|
||||
|
||||
# Check Lumen GI
|
||||
if grep -q "r.Lumen.DiffuseIndirect.Allow=1" Config/DefaultEngine.ini; then
|
||||
echo -e " ${GREEN}✓${NC} Lumen Global Illumination enabled"
|
||||
else
|
||||
echo -e " ${YELLOW}⚠${NC} Lumen GI not explicitly configured"
|
||||
((WARNINGS++))
|
||||
fi
|
||||
|
||||
# Check Lumen Reflections
|
||||
if grep -q "r.Lumen.Reflections.Allow=1" Config/DefaultEngine.ini; then
|
||||
echo -e " ${GREEN}✓${NC} Lumen Reflections enabled"
|
||||
else
|
||||
echo -e " ${YELLOW}⚠${NC} Lumen Reflections not explicitly configured"
|
||||
((WARNINGS++))
|
||||
fi
|
||||
|
||||
# Check Virtual Shadow Maps
|
||||
if grep -q "r.Shadow.Virtual.Enable=1" Config/DefaultEngine.ini; then
|
||||
echo -e " ${GREEN}✓${NC} Virtual Shadow Maps enabled"
|
||||
else
|
||||
echo -e " ${YELLOW}⚠${NC} Virtual Shadow Maps not configured"
|
||||
((WARNINGS++))
|
||||
fi
|
||||
|
||||
# Check World Partition
|
||||
if grep -q "bEnableWorldPartition=True" Config/DefaultEngine.ini; then
|
||||
echo -e " ${GREEN}✓${NC} World Partition enabled"
|
||||
else
|
||||
echo -e " ${RED}✗${NC} World Partition not configured"
|
||||
((ERRORS++))
|
||||
fi
|
||||
else
|
||||
echo -e "${RED}✗${NC} DefaultEngine.ini missing"
|
||||
((ERRORS++))
|
||||
fi
|
||||
|
||||
# Check DefaultGame.ini
|
||||
if [ -f "Config/DefaultGame.ini" ]; then
|
||||
echo -e "${GREEN}✓${NC} DefaultGame.ini exists"
|
||||
else
|
||||
echo -e "${YELLOW}⚠${NC} DefaultGame.ini missing (optional)"
|
||||
((WARNINGS++))
|
||||
fi
|
||||
|
||||
# Check Source structure
|
||||
if [ -d "Source/DubaiMetaverse" ]; then
|
||||
echo -e "${GREEN}✓${NC} Source structure exists"
|
||||
else
|
||||
echo -e "${BLUE}ℹ${NC} Source structure not found (optional for Blueprint-only project)"
|
||||
fi
|
||||
|
||||
# Check Content structure
|
||||
if [ -d "Content" ]; then
|
||||
echo -e "${GREEN}✓${NC} Content directory exists"
|
||||
else
|
||||
echo -e "${RED}✗${NC} Content directory missing"
|
||||
((ERRORS++))
|
||||
fi
|
||||
|
||||
# Check required plugins
|
||||
echo ""
|
||||
echo "Checking required plugins..."
|
||||
REQUIRED_PLUGINS=(
|
||||
"ProceduralContentGeneration"
|
||||
"VirtualProduction"
|
||||
"MovieRenderQueue"
|
||||
"ModelingTools"
|
||||
"GeometryScript"
|
||||
)
|
||||
|
||||
PLUGINS_OK=0
|
||||
for plugin in "${REQUIRED_PLUGINS[@]}"; do
|
||||
if grep -q "\"Name\": \"$plugin\"" DubaiMetaverse.uproject 2>/dev/null; then
|
||||
if grep -A1 "\"Name\": \"$plugin\"" DubaiMetaverse.uproject | grep -q "\"Enabled\": true"; then
|
||||
echo -e " ${GREEN}✓${NC} $plugin enabled"
|
||||
((PLUGINS_OK++))
|
||||
else
|
||||
echo -e " ${YELLOW}⚠${NC} $plugin found but not enabled"
|
||||
((WARNINGS++))
|
||||
fi
|
||||
else
|
||||
echo -e " ${RED}✗${NC} $plugin missing"
|
||||
((ERRORS++))
|
||||
fi
|
||||
done
|
||||
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo "Verification Summary"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
|
||||
if [ $ERRORS -eq 0 ] && [ $PLUGINS_OK -eq ${#REQUIRED_PLUGINS[@]} ]; then
|
||||
echo -e "${GREEN}✅ Project setup verification: PASSED${NC}"
|
||||
if [ $WARNINGS -gt 0 ]; then
|
||||
echo -e "${YELLOW}⚠${NC} $WARNINGS warning(s) found (non-critical)"
|
||||
fi
|
||||
echo ""
|
||||
echo "All required settings and plugins are configured!"
|
||||
exit 0
|
||||
else
|
||||
echo -e "${RED}⚠ Project setup verification: FAILED${NC}"
|
||||
echo -e " ${RED}Errors:${NC} $ERRORS"
|
||||
echo -e " ${YELLOW}Warnings:${NC} $WARNINGS"
|
||||
echo ""
|
||||
if [ $ERRORS -gt 0 ]; then
|
||||
echo "Run configuration script:"
|
||||
echo " ./scripts/setup/configure_project_settings.sh"
|
||||
fi
|
||||
exit 1
|
||||
fi
|
||||
108
scripts/setup/verify_ue5_installation.sh
Executable file
108
scripts/setup/verify_ue5_installation.sh
Executable file
@@ -0,0 +1,108 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Script Name: verify_ue5_installation.sh
|
||||
# Description: Verify Unreal Engine 5.4 installation
|
||||
# Usage: ./verify_ue5_installation.sh
|
||||
# Author: Dubai Metaverse Team
|
||||
# Date: 2024
|
||||
# Version: 1.0
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# Configuration
|
||||
UE_ROOT="${UE_ROOT:-$HOME/UnrealEngine}"
|
||||
LOG_FILE="${LOG_FILE:-$HOME/projects/metaverseDubai/logs/verify_ue5.log}"
|
||||
|
||||
# Colors
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m'
|
||||
|
||||
# Logging
|
||||
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"
|
||||
}
|
||||
|
||||
# Create log directory
|
||||
mkdir -p "$(dirname "$LOG_FILE")"
|
||||
|
||||
echo "=========================================="
|
||||
echo "UE5.4 Installation Verification"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
|
||||
# Check UnrealEngine directory
|
||||
if [ ! -d "$UE_ROOT" ]; then
|
||||
echo -e "${RED}✗${NC} UnrealEngine directory not found: $UE_ROOT"
|
||||
exit 1
|
||||
fi
|
||||
echo -e "${GREEN}✓${NC} UnrealEngine directory found: $UE_ROOT"
|
||||
|
||||
# Check UnrealEditor binary
|
||||
EDITOR_PATH="$UE_ROOT/Engine/Binaries/Linux/UnrealEditor"
|
||||
if [ ! -f "$EDITOR_PATH" ]; then
|
||||
echo -e "${YELLOW}⚠${NC} UnrealEditor binary not found: $EDITOR_PATH"
|
||||
echo " Build may still be in progress"
|
||||
echo " Check build status: ~/projects/metaverseDubai/UE5_BUILD_MONITOR.sh"
|
||||
exit 1
|
||||
fi
|
||||
echo -e "${GREEN}✓${NC} UnrealEditor binary found: $EDITOR_PATH"
|
||||
|
||||
# Check binary size (should be substantial)
|
||||
BINARY_SIZE=$(du -h "$EDITOR_PATH" | cut -f1)
|
||||
echo -e "${GREEN}✓${NC} UnrealEditor size: $BINARY_SIZE"
|
||||
|
||||
# Check version
|
||||
echo ""
|
||||
echo "Checking Unreal Engine version..."
|
||||
if "$EDITOR_PATH" -version 2>&1 | grep -q "5.4"; then
|
||||
VERSION=$("$EDITOR_PATH" -version 2>&1 | head -1)
|
||||
echo -e "${GREEN}✓${NC} Version: $VERSION"
|
||||
else
|
||||
echo -e "${YELLOW}⚠${NC} Could not verify version (may require GUI)"
|
||||
echo " Version check requires running editor"
|
||||
fi
|
||||
|
||||
# Check required plugins
|
||||
echo ""
|
||||
echo "Checking required plugins..."
|
||||
PLUGINS_DIR="$UE_ROOT/Engine/Plugins"
|
||||
REQUIRED_PLUGINS=(
|
||||
"ProceduralContentGeneration"
|
||||
"VirtualProduction"
|
||||
"MovieRenderQueue"
|
||||
)
|
||||
|
||||
for plugin in "${REQUIRED_PLUGINS[@]}"; do
|
||||
if [ -d "$PLUGINS_DIR/$plugin" ]; then
|
||||
echo -e "${GREEN}✓${NC} Plugin found: $plugin"
|
||||
else
|
||||
echo -e "${YELLOW}⚠${NC} Plugin not found: $plugin"
|
||||
fi
|
||||
done
|
||||
|
||||
# Check disk space
|
||||
echo ""
|
||||
echo "Checking installation size..."
|
||||
INSTALL_SIZE=$(du -sh "$UE_ROOT" 2>/dev/null | cut -f1)
|
||||
echo -e "${GREEN}✓${NC} Installation size: $INSTALL_SIZE"
|
||||
|
||||
# Summary
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo "Verification Summary"
|
||||
echo "=========================================="
|
||||
echo -e "${GREEN}✓${NC} Unreal Engine 5.4 installation verified"
|
||||
echo ""
|
||||
echo "Next steps:"
|
||||
echo "1. Create project: ./scripts/setup/create_ue5_project.sh"
|
||||
echo "2. Launch editor: $EDITOR_PATH ~/projects/metaverseDubai/DubaiMetaverse.uproject"
|
||||
echo ""
|
||||
|
||||
log "INFO" "Verification complete - Installation OK"
|
||||
|
||||
Reference in New Issue
Block a user