Переглянути джерело

Initial PoC for a Quick Start no-code (script only) project (#16645)

* Copies the default project into no script project template
* Removes stuff that a no code project template does not need
* Adds fake compiler settings and other script-only-mode stuff to
  cmake
* Adds some guard rails and updates the icon

This is a SQUASHED commit of the changes, in order to try to
get around a github workflow issue.

Signed-off-by: Nicholas Lawson <[email protected]>
Nicholas Lawson 1 рік тому
батько
коміт
6e77dfa986
83 змінених файлів з 1593 додано та 28 видалено
  1. 10 0
      CMakeLists.txt
  2. 1 1
      Code/Editor/Util/FileUtil.cpp
  3. 6 0
      Code/Framework/AzNetworking/AzNetworking/Utilities/EncryptionCommon.cpp
  4. 23 10
      Code/LauncherUnified/launcher_generator.cmake
  5. 3 3
      Gems/Atom/RHI/Code/Source/RHI.Reflect/PhysicalDeviceDriverInfoSerializer.cpp
  6. 2 0
      Templates/CMakeLists.txt
  7. 6 0
      Templates/ScriptOnlyProject/Template/.gitignore
  8. 46 0
      Templates/ScriptOnlyProject/Template/CMakeLists.txt
  9. 11 0
      Templates/ScriptOnlyProject/Template/CMakePresets.json
  10. 6 0
      Templates/ScriptOnlyProject/Template/Config/default_aws_resource_mappings.json
  11. 11 0
      Templates/ScriptOnlyProject/Template/Config/shader_global_build_options.json
  12. 8 0
      Templates/ScriptOnlyProject/Template/Platform/Android/android_project.cmake
  13. 9 0
      Templates/ScriptOnlyProject/Template/Platform/Android/android_project.json
  14. 8 0
      Templates/ScriptOnlyProject/Template/Platform/Linux/linux_project.cmake
  15. 3 0
      Templates/ScriptOnlyProject/Template/Platform/Linux/linux_project.json
  16. 8 0
      Templates/ScriptOnlyProject/Template/Platform/Mac/mac_project.cmake
  17. 3 0
      Templates/ScriptOnlyProject/Template/Platform/Mac/mac_project.json
  18. 8 0
      Templates/ScriptOnlyProject/Template/Platform/Windows/windows_project.cmake
  19. 3 0
      Templates/ScriptOnlyProject/Template/Platform/Windows/windows_project.json
  20. 8 0
      Templates/ScriptOnlyProject/Template/Platform/iOS/ios_project.cmake
  21. 3 0
      Templates/ScriptOnlyProject/Template/Platform/iOS/ios_project.json
  22. 27 0
      Templates/ScriptOnlyProject/Template/Registry/assetprocessor_settings.setreg
  23. 10 0
      Templates/ScriptOnlyProject/Template/Registry/awscoreconfiguration.setreg
  24. 3 0
      Templates/ScriptOnlyProject/Template/Resources/GameSDK.ico
  25. 3 0
      Templates/ScriptOnlyProject/Template/Resources/LegacyLogoLauncher.bmp
  26. 68 0
      Templates/ScriptOnlyProject/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/Contents.json
  27. 3 0
      Templates/ScriptOnlyProject/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_128.png
  28. 3 0
      Templates/ScriptOnlyProject/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_128_2x.png
  29. 3 0
      Templates/ScriptOnlyProject/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_16.png
  30. 3 0
      Templates/ScriptOnlyProject/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_16_2x.png
  31. 3 0
      Templates/ScriptOnlyProject/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_256.png
  32. 3 0
      Templates/ScriptOnlyProject/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_256_2x.png
  33. 3 0
      Templates/ScriptOnlyProject/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_32.png
  34. 3 0
      Templates/ScriptOnlyProject/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_32_2x.png
  35. 3 0
      Templates/ScriptOnlyProject/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_512.png
  36. 3 0
      Templates/ScriptOnlyProject/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_512_2x.png
  37. 6 0
      Templates/ScriptOnlyProject/Template/Resources/Platform/Mac/Images.xcassets/Contents.json
  38. 24 0
      Templates/ScriptOnlyProject/Template/Resources/Platform/Mac/Info.plist
  39. 116 0
      Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/Contents.json
  40. 3 0
      Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadAppIcon152x152.png
  41. 3 0
      Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadAppIcon76x76.png
  42. 3 0
      Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadProAppIcon167x167.png
  43. 3 0
      Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadSettingsIcon29x29.png
  44. 3 0
      Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadSettingsIcon58x58.png
  45. 3 0
      Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadSpotlightIcon40x40.png
  46. 3 0
      Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadSpotlightIcon80x80.png
  47. 3 0
      Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneAppIcon120x120.png
  48. 3 0
      Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneAppIcon180x180.png
  49. 3 0
      Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneSettingsIcon58x58.png
  50. 3 0
      Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneSettingsIcon87x87.png
  51. 3 0
      Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneSpotlightIcon120x120.png
  52. 3 0
      Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneSpotlightIcon80x80.png
  53. 6 0
      Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/Contents.json
  54. 169 0
      Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/Contents.json
  55. 3 0
      Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1024x768.png
  56. 3 0
      Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1536x2048.png
  57. 3 0
      Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage2048x1536.png
  58. 3 0
      Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage768x1024.png
  59. 3 0
      Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x1136.png
  60. 3 0
      Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x960.png
  61. 45 0
      Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Info.plist
  62. 5 0
      Templates/ScriptOnlyProject/Template/ShaderLib/README.md
  63. 26 0
      Templates/ScriptOnlyProject/Template/ShaderLib/scenesrg.srgi
  64. 26 0
      Templates/ScriptOnlyProject/Template/ShaderLib/viewsrg.srgi
  65. 0 0
      Templates/ScriptOnlyProject/Template/autoexec.cfg
  66. 182 0
      Templates/ScriptOnlyProject/Template/cmake/EngineFinder.cmake
  67. 3 0
      Templates/ScriptOnlyProject/Template/game.cfg
  68. 3 0
      Templates/ScriptOnlyProject/Template/preview.png
  69. 43 0
      Templates/ScriptOnlyProject/Template/project.json
  70. 3 0
      Templates/ScriptOnlyProject/preview.png
  71. 342 0
      Templates/ScriptOnlyProject/template.json
  72. 8 2
      cmake/3rdParty/BuiltInPackages.cmake
  73. 18 1
      cmake/CompilerSettings.cmake
  74. 15 9
      cmake/LYWrappers.cmake
  75. 95 0
      cmake/Platform/Common/Toolchain_scriptonly_common.cmake
  76. 8 0
      cmake/Platform/Linux/PAL_linux.cmake
  77. 18 0
      cmake/Platform/Linux/Toolchain_scriptonly_linux.cmake
  78. 3 1
      cmake/Platform/Linux/platform_linux_files.cmake
  79. 28 0
      cmake/Platform/Windows/Toolchain_scriptonly_windows.cmake
  80. 13 0
      cmake/Platform/Windows/no-op.cmd
  81. 2 0
      cmake/Platform/Windows/platform_windows_files.cmake
  82. 1 1
      cmake/o3deConfigVersion.cmake
  83. 1 0
      engine.json

+ 10 - 0
CMakeLists.txt

@@ -55,6 +55,16 @@ include(cmake/O3DEJson.cmake)
 include(cmake/Subdirectories.cmake)
 include(cmake/TestImpactFramework/LYTestImpactFramework.cmake) # Put at end as nothing else depends on it
 
+get_property(O3DE_SCRIPT_ONLY GLOBAL PROPERTY "O3DE_SCRIPT_ONLY")
+if (O3DE_SCRIPT_ONLY AND NOT INSTALLED_ENGINE)
+    get_property(engine_root GLOBAL PROPERTY O3DE_ENGINE_ROOT_FOLDER)
+    message(FATAL_ERROR "Script-only projects require pre-built versions of O3DE.\n\
+                        The project being compiled (${PROJECT_NAME}) is a script-only project (see project.json) \
+                        but the engine being used to build it is a compile-from-source engine using c++ code \
+                        (${engine_root}).  Please use a pre-built (installer) O3DE to build script-only projects.")
+endif()
+
+
 # Gather the list of o3de_manifest external Subdirectories
 # into the O3DE_EXTERNAL_SUBDIRS_O3DE_MANIFEST_PROPERTY
 add_o3de_manifest_json_external_subdirectories()

+ 1 - 1
Code/Editor/Util/FileUtil.cpp

@@ -894,7 +894,7 @@ bool CFileUtil::GetLatestFromSourceControl(const char* filename, QWidget* parent
         }
     );
 
-    BlockAndWait(scOpComplete, parentWindow, "Requesting latest verison of file...");
+    BlockAndWait(scOpComplete, parentWindow, "Requesting latest version of file...");
     return scOpSuccess;
 }
 

+ 6 - 0
Code/Framework/AzNetworking/AzNetworking/Utilities/EncryptionCommon.cpp

@@ -537,7 +537,13 @@ namespace AzNetworking
         SSL_CTX_set_cookie_verify_cb(context, VerifyCookieCallback);
 
         // Automatically generate parameters for elliptic-curve diffie-hellman (i.e. curve type and coefficients).
+
+        // note that the below generates a warning depending on your version of openssl - on some, these functions
+        // are deprecated and do nothing, causing a warning
+
+        AZ_PUSH_DISABLE_WARNING(, "-Wunused-value", "-Wunused-value")
         SSL_CTX_set_ecdh_auto(context, 1);
+        AZ_POP_DISABLE_WARNING
 
         scopedFree.ReleaseSslContextWithoutFree();
         return context;

+ 23 - 10
Code/LauncherUnified/launcher_generator.cmake

@@ -23,6 +23,19 @@ set(SERVER_LAUNCHERTYPE_HeadlessServerLauncher EXECUTABLE)
 set(SERVER_BUILD_DEPENDENCIES_HeadlessServerLauncher AZ::Launcher.Headless.Static AZ::AzGameFramework.Headless AZ::Launcher.Server.Static)
 set(SERVER_VARIANT_HeadlessServerLauncher HeadlessServers)
 
+# the following controls what visibility the various target properties are set to
+# and allow them to be overridden to "INTERFACE" in script-only mode.
+set(LAUNCHER_TARGET_PROPERTY_TYPE "PRIVATE")
+
+# in script_only_mode, generate interface targets.  If a real 'generic launcher' is added, this would
+# also be an opportunity to add imported exectables.
+if (O3DE_SCRIPT_ONLY)
+    set(PAL_TRAIT_LAUNCHERUNIFIED_LAUNCHER_TYPE INTERFACE)
+    set(SERVER_LAUNCHERTYPE_ServerLauncher INTERFACE)
+    set(SERVER_LAUNCHERTYPE_HeadlessServerLauncher INTERFACE)
+    set(LAUNCHER_TARGET_PROPERTY_TYPE INTERFACE) # you can only set interface properties on interfaces.
+endif()
+
 # Launcher targets for a project need to be generated when configuring a project.
 # When building the engine source, this file will be included by LauncherUnified's CMakeLists.txt
 # When using an installed engine, this file will be included by the FindLauncherGenerator.cmake script
@@ -121,7 +134,7 @@ foreach(project_name project_path IN ZIP_LISTS O3DE_PROJECTS_NAME LY_PROJECTS)
         PLATFORM_INCLUDE_FILES
             ${pal_dir}/launcher_project_${PAL_PLATFORM_NAME_LOWERCASE}.cmake
         COMPILE_DEFINITIONS
-            PRIVATE
+            ${LAUNCHER_TARGET_PROPERTY_TYPE}
                 # Adds the name of the project/game
                 LY_PROJECT_NAME="${project_name}"
                 # Adds the ${project_name}_GameLauncher target as a define so for the Settings Registry to use
@@ -129,11 +142,11 @@ foreach(project_name project_path IN ZIP_LISTS O3DE_PROJECTS_NAME LY_PROJECTS)
                 # This is needed so that only gems for the project game launcher are loaded
                 LY_CMAKE_TARGET="${project_name}_GameLauncher"
         INCLUDE_DIRECTORIES
-            PRIVATE
+            ${LAUNCHER_TARGET_PROPERTY_TYPE}
                 .
                 ${CMAKE_CURRENT_BINARY_DIR}/${project_name}.GameLauncher/Includes # required for StaticModules.inl
         BUILD_DEPENDENCIES
-            PRIVATE
+            ${LAUNCHER_TARGET_PROPERTY_TYPE}
                 AZ::Launcher.Static
                 AZ::Launcher.Game.Static
                 ${game_build_dependencies}
@@ -181,7 +194,7 @@ foreach(project_name project_path IN ZIP_LISTS O3DE_PROJECTS_NAME LY_PROJECTS)
                 PLATFORM_INCLUDE_FILES
                     ${pal_dir}/launcher_project_${PAL_PLATFORM_NAME_LOWERCASE}.cmake
                 COMPILE_DEFINITIONS
-                    PRIVATE
+                    ${LAUNCHER_TARGET_PROPERTY_TYPE}
                         # Adds the name of the project/game
                         LY_PROJECT_NAME="${project_name}"
                         # Adds the ${project_name}_${server_launcher_type} target as a define so for the Settings Registry to use
@@ -190,11 +203,11 @@ foreach(project_name project_path IN ZIP_LISTS O3DE_PROJECTS_NAME LY_PROJECTS)
                         LY_CMAKE_TARGET="${project_name}_${server_launcher_type}"
 
                 INCLUDE_DIRECTORIES
-                    PRIVATE
+                    ${LAUNCHER_TARGET_PROPERTY_TYPE}
                         .
                         ${CMAKE_CURRENT_BINARY_DIR}/${project_name}.${server_launcher_type}/Includes # required for StaticModules.inl
                 BUILD_DEPENDENCIES
-                    PRIVATE
+                    ${LAUNCHER_TARGET_PROPERTY_TYPE}
                         ${SERVER_BUILD_DEPENDENCIES_${server_launcher_type}}
                 RUNTIME_DEPENDENCIES
                     ${server_runtime_dependencies}
@@ -238,14 +251,14 @@ foreach(project_name project_path IN ZIP_LISTS O3DE_PROJECTS_NAME LY_PROJECTS)
     ################################################################################
     if(PAL_TRAIT_BUILD_UNIFIED_SUPPORTED)
         ly_add_target(
-            NAME ${project_name}.UnifiedLauncher APPLICATION
+            NAME ${project_name}.UnifiedLauncher ${PAL_TRAIT_LAUNCHERUNIFIED_LAUNCHER_TYPE}
             NAMESPACE AZ
             FILES_CMAKE
                 ${CMAKE_CURRENT_LIST_DIR}/launcher_project_files.cmake
             PLATFORM_INCLUDE_FILES
                 ${pal_dir}/launcher_project_${PAL_PLATFORM_NAME_LOWERCASE}.cmake
             COMPILE_DEFINITIONS
-                PRIVATE
+                ${LAUNCHER_TARGET_PROPERTY_TYPE}
                     # Adds the name of the project/game
                     LY_PROJECT_NAME="${project_name}"
                     # Adds the ${project_name}_UnifiedLauncher target as a define so for the Settings Registry to use
@@ -253,11 +266,11 @@ foreach(project_name project_path IN ZIP_LISTS O3DE_PROJECTS_NAME LY_PROJECTS)
                     # This is needed so that only gems for the project unified launcher are loaded
                     LY_CMAKE_TARGET="${project_name}_UnifiedLauncher"
             INCLUDE_DIRECTORIES
-                PRIVATE
+                ${LAUNCHER_TARGET_PROPERTY_TYPE}
                     .
                     ${CMAKE_CURRENT_BINARY_DIR}/${project_name}.UnifiedLauncher/Includes # required for StaticModules.inl
             BUILD_DEPENDENCIES
-                PRIVATE
+                ${LAUNCHER_TARGET_PROPERTY_TYPE}
                     AZ::Launcher.Static
                     AZ::Launcher.Unified.Static
                     ${unified_build_dependencies}

+ 3 - 3
Gems/Atom/RHI/Code/Source/RHI.Reflect/PhysicalDeviceDriverInfoSerializer.cpp

@@ -15,7 +15,7 @@ namespace AZ::RHI
     namespace
     {
         static constexpr const char FieldVendor[]             = "vendor";
-        static constexpr const char FieldMinVerison[]         = "minVersion";
+        static constexpr const char FieldMinVersion[]         = "minVersion";
         static constexpr const char FieldVersionsWithIssues[] = "versionsWithIssues";
     }
 
@@ -111,7 +111,7 @@ namespace AZ::RHI
         driverInfo->m_vendorId = VendorId::Unknown;
         AZStd::vector<AZStd::string> badVersions;
         result.Combine(ContinueLoadingFromJsonObjectField(&driverInfo->m_vendorId, azrtti_typeid(driverInfo->m_vendorId), inputValue, FieldVendor, context));
-        result.Combine(ContinueLoadingFromJsonObjectField(&driverInfo->m_minVersion.m_readableVersion, azrtti_typeid(driverInfo->m_minVersion.m_readableVersion), inputValue, FieldMinVerison, context));
+        result.Combine(ContinueLoadingFromJsonObjectField(&driverInfo->m_minVersion.m_readableVersion, azrtti_typeid(driverInfo->m_minVersion.m_readableVersion), inputValue, FieldMinVersion, context));
         result.Combine(ContinueLoadingFromJsonObjectField(&badVersions, azrtti_typeid(badVersions), inputValue, FieldVersionsWithIssues, context));
 
         driverInfo->m_minVersion.m_encodedVersion = ConvertVersionNumber(driverInfo->m_vendorId, driverInfo->m_minVersion.m_readableVersion);
@@ -155,7 +155,7 @@ namespace AZ::RHI
 
         VendorId defaultVendorId = VendorId::Unknown;
         result.Combine(ContinueStoringToJsonObjectField(outputValue, FieldVendor, &driverInfo->m_vendorId, &defaultVendorId, azrtti_typeid(driverInfo->m_vendorId), context));
-        result.Combine(ContinueStoringToJsonObjectField(outputValue, FieldMinVerison, &driverInfo->m_minVersion.m_readableVersion, nullptr, azrtti_typeid(driverInfo->m_minVersion.m_readableVersion), context));
+        result.Combine(ContinueStoringToJsonObjectField(outputValue, FieldMinVersion, &driverInfo->m_minVersion.m_readableVersion, nullptr, azrtti_typeid(driverInfo->m_minVersion.m_readableVersion), context));
         result.Combine(ContinueStoringToJsonObjectField(outputValue, FieldVersionsWithIssues, &badVersions, nullptr, azrtti_typeid(badVersions), context));
 
         if (result.GetProcessing() == JsonSerializationResult::Processing::Completed)

+ 2 - 0
Templates/CMakeLists.txt

@@ -13,6 +13,7 @@ ly_install_directory(
         DefaultGem
         PrebuiltGem
         PythonToolGem
+        RemoteRepo
         DefaultProject
         MinimalProject
         GemRepo
@@ -20,5 +21,6 @@ ly_install_directory(
         ScriptCanvasNode
         UnifiedMultiplayerGem
         GraphicsGem
+        ScriptOnlyProject
     VERBATIM
 )

+ 6 - 0
Templates/ScriptOnlyProject/Template/.gitignore

@@ -0,0 +1,6 @@
+[Bb]uild/
+[Cc]ache/
+[Uu]ser/
+[Uu]ser_test*/
+_savebackup/
+CMakeUserPresets.json

+ 46 - 0
Templates/ScriptOnlyProject/Template/CMakeLists.txt

@@ -0,0 +1,46 @@
+# {BEGIN_LICENSE}
+#
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+#
+# {END_LICENSE}
+
+if(NOT PROJECT_NAME)
+    cmake_minimum_required(VERSION 3.22)
+
+    # Utility function to look for an optional 'engine_finder_cmake_path'setting 
+    function(get_engine_finder_cmake_path project_json_file_path path_value)
+        if(NOT ${path_value} AND EXISTS "${project_json_file_path}")
+            file(READ "${project_json_file_path}" project_json_data)
+            string(JSON engine_finder_cmake_value ERROR_VARIABLE json_error GET ${project_json_data} "engine_finder_cmake_path")
+            cmake_path(APPEND CMAKE_CURRENT_SOURCE_DIR "${engine_finder_cmake_value}" engine_finder_cmake_value)
+            if(NOT json_error AND EXISTS "${engine_finder_cmake_value}")
+                set(${path_value} "${engine_finder_cmake_value}" PARENT_SCOPE)
+            elseif(json_error AND ${engine_finder_cmake_value} STREQUAL "NOTFOUND")
+                # When the error value is just NOTFOUND that means there is a JSON
+                # parsing error, and not simply a missing key 
+                message(WARNING "Unable to read 'engine_finder_cmake_path'.\nError: ${json_error} ${engine_finder_cmake_value}")
+            endif()
+        endif()
+    endfunction()
+    
+    # Check for optional 'engine_finder_cmake_path' in order of preference
+    # We support per-project customization to make it easier to upgrade 
+    # or revert to a custom EngineFinder.cmake 
+    get_engine_finder_cmake_path("${CMAKE_CURRENT_SOURCE_DIR}/user/project.json" engine_finder_cmake_path)
+    get_engine_finder_cmake_path("${CMAKE_CURRENT_SOURCE_DIR}/project.json" engine_finder_cmake_path)
+    if(NOT engine_finder_cmake_path)
+        set(engine_finder_cmake_path cmake/EngineFinder.cmake)
+    endif()
+
+    include(${engine_finder_cmake_path} OPTIONAL)
+    find_package(o3de REQUIRED)
+    project(${Name}
+        LANGUAGES C CXX
+        VERSION 1.0.0.0
+    )
+    o3de_initialize()
+endif()

+ 11 - 0
Templates/ScriptOnlyProject/Template/CMakePresets.json

@@ -0,0 +1,11 @@
+{
+    "version": 4,
+    "cmakeMinimumRequired": {
+        "major": 3,
+        "minor": 23,
+        "patch": 0
+    },
+    "include": [
+        "user/cmake/engine/CMakePresets.json"
+    ]
+}

+ 6 - 0
Templates/ScriptOnlyProject/Template/Config/default_aws_resource_mappings.json

@@ -0,0 +1,6 @@
+{
+    "AWSResourceMappings": {},
+    "AccountId": "EMPTY",
+    "Region": "us-east-1",
+    "Version": "1.0.0"
+}

+ 11 - 0
Templates/ScriptOnlyProject/Template/Config/shader_global_build_options.json

@@ -0,0 +1,11 @@
+{
+    "Type": "JsonSerialization",
+    "Version": 1,
+    "ClassName": "GlobalBuildOptions",
+    "ClassData": {
+        "ShaderCompilerArguments" : {
+            "DefaultMatrixOrder" : "Row",
+            "AzslcAdditionalFreeArguments" : "--strip-unused-srgs"
+        }
+    }
+}

+ 8 - 0
Templates/ScriptOnlyProject/Template/Platform/Android/android_project.cmake

@@ -0,0 +1,8 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+

+ 9 - 0
Templates/ScriptOnlyProject/Template/Platform/Android/android_project.json

@@ -0,0 +1,9 @@
+{
+    "Tags": ["Android"],
+    "android_settings" : {
+        "package_name" : "org.o3de.${Name}",
+        "version_number" : 1,
+        "version_name" : "1.0.0.0",
+        "orientation" : "landscape"
+    }
+}

+ 8 - 0
Templates/ScriptOnlyProject/Template/Platform/Linux/linux_project.cmake

@@ -0,0 +1,8 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+

+ 3 - 0
Templates/ScriptOnlyProject/Template/Platform/Linux/linux_project.json

@@ -0,0 +1,3 @@
+{
+  "Tags": ["Linux"]
+}

+ 8 - 0
Templates/ScriptOnlyProject/Template/Platform/Mac/mac_project.cmake

@@ -0,0 +1,8 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+

+ 3 - 0
Templates/ScriptOnlyProject/Template/Platform/Mac/mac_project.json

@@ -0,0 +1,3 @@
+{
+  "Tags": ["Mac"]
+}

+ 8 - 0
Templates/ScriptOnlyProject/Template/Platform/Windows/windows_project.cmake

@@ -0,0 +1,8 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+

+ 3 - 0
Templates/ScriptOnlyProject/Template/Platform/Windows/windows_project.json

@@ -0,0 +1,3 @@
+{
+  "Tags": ["Windows"]
+}

+ 8 - 0
Templates/ScriptOnlyProject/Template/Platform/iOS/ios_project.cmake

@@ -0,0 +1,8 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+

+ 3 - 0
Templates/ScriptOnlyProject/Template/Platform/iOS/ios_project.json

@@ -0,0 +1,3 @@
+{
+    "Tags": ["iOS"]
+}

+ 27 - 0
Templates/ScriptOnlyProject/Template/Registry/assetprocessor_settings.setreg

@@ -0,0 +1,27 @@
+{
+    "Amazon": {
+        "AssetProcessor": {
+            "Settings": {
+                "ScanFolder Project/ShaderLib": {
+                    "watch": "@PROJECTROOT@/ShaderLib",
+                    "recursive": 1,
+                    "order": 1
+                },
+                "ScanFolder Project/Shaders": {
+                    "watch": "@PROJECTROOT@/Shaders",
+                    "recursive": 1,
+                    "order": 2
+                },
+                "ScanFolder Project/Registry": {
+                    "watch": "@PROJECTROOT@/Registry",
+                    "recursive": 1,
+                    "order": 3
+                },
+                "Exclude export scripts": {
+                    "pattern": ".*\\\\/ExportScripts\\\\/.*"
+                },
+                "ProjectRelativeGemsScanFolderPriority":"higher"
+            }
+        }
+    }
+}

+ 10 - 0
Templates/ScriptOnlyProject/Template/Registry/awscoreconfiguration.setreg

@@ -0,0 +1,10 @@
+{
+    "Amazon":
+    {
+        "AWSCore":
+        {
+            "ProfileName": "default",
+            "ResourceMappingConfigFileName": "default_aws_resource_mappings.json"
+        }
+    }
+}

+ 3 - 0
Templates/ScriptOnlyProject/Template/Resources/GameSDK.ico

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ba0704efd586fee72b3d45b19163a1b67cd5594bcbf57cb28d796e2919502aba
+size 148143

+ 3 - 0
Templates/ScriptOnlyProject/Template/Resources/LegacyLogoLauncher.bmp

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ef3584c695998fd5f2d137148a11f68602523c817af5d18fdd6c56b0b5278a6c
+size 462760

+ 68 - 0
Templates/ScriptOnlyProject/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/Contents.json

@@ -0,0 +1,68 @@
+{
+  "images" : [
+    {
+      "size" : "16x16",
+      "idiom" : "mac",
+      "filename" : "icon_16.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "16x16",
+      "idiom" : "mac",
+      "filename" : "icon_16_2x.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "32x32",
+      "idiom" : "mac",
+      "filename" : "icon_32.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "32x32",
+      "idiom" : "mac",
+      "filename" : "icon_32_2x.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "128x128",
+      "idiom" : "mac",
+      "filename" : "icon_128.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "128x128",
+      "idiom" : "mac",
+      "filename" : "icon_128_2x.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "256x256",
+      "idiom" : "mac",
+      "filename" : "icon_256.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "256x256",
+      "idiom" : "mac",
+      "filename" : "icon_256_2x.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "512x512",
+      "idiom" : "mac",
+      "filename" : "icon_512.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "512x512",
+      "idiom" : "mac",
+      "filename" : "icon_512_2x.png",
+      "scale" : "2x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

+ 3 - 0
Templates/ScriptOnlyProject/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_128.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2a3c136f7b2a511eed671ebb00dd3cc60e4accd511caade4fc7813a1ea2ae6a8
+size 6731

+ 3 - 0
Templates/ScriptOnlyProject/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_128_2x.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4d841d75c32539c3364f37815bc69699ab27ca064ba1c70f4700aef369851f34
+size 6731

+ 3 - 0
Templates/ScriptOnlyProject/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_16.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8f42f51ad40e2fe400002473a5dc60d11fe003a9280a16c85b6f4611a90c3049
+size 1290

+ 3 - 0
Templates/ScriptOnlyProject/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_16_2x.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a15e80648085e63ca2504cd88b9dcc2ea9bd568a4fc094bf4b2b6332293665e4
+size 1290

+ 3 - 0
Templates/ScriptOnlyProject/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_256.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6d5a16c796e26a7de4bca532bf9547d0e20d643f7f3fabd6cc7fe55e0a8de674
+size 13328

+ 3 - 0
Templates/ScriptOnlyProject/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_256_2x.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:902c53d384ec0abbafdb9fc169c0c0e629b0011522fcc344178fc91e5507080b
+size 13328

+ 3 - 0
Templates/ScriptOnlyProject/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_32.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:116fb5ac7ccbe734e1a233b263651a62956176ba227e3227dde8b9e582f9df84
+size 2006

+ 3 - 0
Templates/ScriptOnlyProject/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_32_2x.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5b0f2f08c999ae797ed013ed9656f2817caf18a6c109b09f917b2571ac0882cf
+size 4032

+ 3 - 0
Templates/ScriptOnlyProject/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_512.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5466a6281c4103c0efa30bb41e727d076280fbb2bff0f871598523fce53004c3
+size 27527

+ 3 - 0
Templates/ScriptOnlyProject/Template/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_512_2x.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e9aaf5d13439a7c0466d99951a2db96882299af6beaabdffdc639bad22fc0e57
+size 27527

+ 6 - 0
Templates/ScriptOnlyProject/Template/Resources/Platform/Mac/Images.xcassets/Contents.json

@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

+ 24 - 0
Templates/ScriptOnlyProject/Template/Resources/Platform/Mac/Info.plist

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<false/>
+	<key>CFBundleDisplayName</key>
+	<string>${Name}</string>
+	<key>CFBundleExecutable</key>
+	<string>${Name}.GameLauncher</string>
+	<key>CFBundleIdentifier</key>
+	<string>com.amazon.${Name}</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleShortVersionString</key>
+	<string>1.0.0</string>
+	<key>CFBundleSignature</key>
+	<string>03DE</string>
+	<key>CFBundleVersion</key>
+	<string>1.0.0</string>
+	<key>LSApplicationCategoryType</key>
+	<string>public.app-category.puzzle-games</string>
+</dict>
+</plist>

+ 116 - 0
Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/Contents.json

@@ -0,0 +1,116 @@
+{
+  "images" : [
+    {
+      "size" : "20x20",
+      "idiom" : "iphone",
+      "filename" : "iPhoneNotificationIcon40x40.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "20x20",
+      "idiom" : "iphone",
+      "filename" : "iPhoneNotificationIcon60x60.png",
+      "scale" : "3x"
+    },
+    {
+      "size" : "29x29",
+      "idiom" : "iphone",
+      "filename" : "iPhoneSettingsIcon58x58.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "29x29",
+      "idiom" : "iphone",
+      "filename" : "iPhoneSettingsIcon87x87.png",
+      "scale" : "3x"
+    },
+    {
+      "size" : "40x40",
+      "idiom" : "iphone",
+      "filename" : "iPhoneSpotlightIcon80x80.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "40x40",
+      "idiom" : "iphone",
+      "filename" : "iPhoneSpotlightIcon120x120.png",
+      "scale" : "3x"
+    },
+    {
+      "size" : "60x60",
+      "idiom" : "iphone",
+      "filename" : "iPhoneAppIcon120x120.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "60x60",
+      "idiom" : "iphone",
+      "filename" : "iPhoneAppIcon180x180.png",
+      "scale" : "3x"
+    },
+    {
+      "size" : "20x20",
+      "idiom" : "ipad",
+      "filename" : "iPadNotificationIcon20x20.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "20x20",
+      "idiom" : "ipad",
+      "filename" : "iPadNotificationIcon40x40.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "29x29",
+      "idiom" : "ipad",
+      "filename" : "iPadSettingsIcon29x29.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "29x29",
+      "idiom" : "ipad",
+      "filename" : "iPadSettingsIcon58x58.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "40x40",
+      "idiom" : "ipad",
+      "filename" : "iPadSpotlightIcon40x40.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "40x40",
+      "idiom" : "ipad",
+      "filename" : "iPadSpotlightIcon80x80.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "76x76",
+      "idiom" : "ipad",
+      "filename" : "iPadAppIcon76x76.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "76x76",
+      "idiom" : "ipad",
+      "filename" : "iPadAppIcon152x152.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "83.5x83.5",
+      "idiom" : "ipad",
+      "filename" : "iPadProAppIcon167x167.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "1024x1024",
+      "idiom" : "ios-marketing",
+      "filename" : "iOSAppStoreIcon1024x1024.png",
+      "scale" : "1x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

+ 3 - 0
Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadAppIcon152x152.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a924b3938732005cc0fd8837d4d35597f8bb248f0dbfb7803b3e84d70cf4fb03
+size 8053

+ 3 - 0
Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadAppIcon76x76.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b3167471fe3b6946db674eb12a58fcf23d986d58c0a1a02c339d3166e78988a7
+size 4464

+ 3 - 0
Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadProAppIcon167x167.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6e871667d1b8b6b056b60499d2b85e003cff061f9974040dd70e5eb043f3d905
+size 8065

+ 3 - 0
Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadSettingsIcon29x29.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cc59f3592e9bbea6a67b2e975bf0029b4d7d33c97ae7da4785bb5c4aaecfa2ab
+size 1940

+ 3 - 0
Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadSettingsIcon58x58.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5541daec55ba7cc61fe5976d72d7e4895fec03efeb2a3bb374e0d3fbb9e3cabe
+size 3245

+ 3 - 0
Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadSpotlightIcon40x40.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:67317863e942ba9128f8ddeac312aae776d282798d1199a579782fa78cb0eba5
+size 2440

+ 3 - 0
Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadSpotlightIcon80x80.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2fcdaa49d78cd772f256dd195534234423fec1dde8897f4934c447e72f120157
+size 4489

+ 3 - 0
Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneAppIcon120x120.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0d78b269d0c05cec6e30ef755b9a3446e0eab961b9f79bdf048e3bd791bcc643
+size 6453

+ 3 - 0
Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneAppIcon180x180.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:81dbfd6012c857332531907583fe54d560ffb2f113cae73407000f68620fa56a
+size 9044

+ 3 - 0
Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneSettingsIcon58x58.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:809cbf4b7205c5f9f7e61910457ba55ebeca3a5b5998fb927945868391a42ebf
+size 3245

+ 3 - 0
Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneSettingsIcon87x87.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4626e9d9dc96ad9d23d944405c438d77112e234dd67538db11aded1365920289
+size 4718

+ 3 - 0
Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneSpotlightIcon120x120.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b28b3c474dece14970cac4bac48f4716c419dbb4ada78c483bd486538930ed8a
+size 6461

+ 3 - 0
Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneSpotlightIcon80x80.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:06a2718bfe8220cbbd0f45b56d2eeeb7e993602eaaabf72ce34ecacd702ee1ca
+size 4554

+ 6 - 0
Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/Contents.json

@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 169 - 0
Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/Contents.json

@@ -0,0 +1,169 @@
+{
+  "images" : [
+    {
+      "extent" : "full-screen",
+      "idiom" : "iphone",
+      "subtype" : "2436h",
+      "filename" : "iPhoneLaunchImage1125x2436.png",
+      "minimum-system-version" : "11.0",
+      "orientation" : "portrait",
+      "scale" : "3x"
+    },
+    {
+      "extent" : "full-screen",
+      "idiom" : "iphone",
+      "subtype" : "2436h",
+      "filename" : "iPhoneLaunchImage2436x1125.png",
+      "minimum-system-version" : "11.0",
+      "orientation" : "landscape",
+      "scale" : "3x"
+    },
+    {
+      "extent" : "full-screen",
+      "idiom" : "iphone",
+      "subtype" : "736h",
+      "filename" : "iPhoneLaunchImage1242x2208.png",
+      "minimum-system-version" : "8.0",
+      "orientation" : "portrait",
+      "scale" : "3x"
+    },
+    {
+      "extent" : "full-screen",
+      "idiom" : "iphone",
+      "subtype" : "736h",
+      "filename" : "iPhoneLaunchImage2208x1242.png",
+      "minimum-system-version" : "8.0",
+      "orientation" : "landscape",
+      "scale" : "3x"
+    },
+    {
+      "extent" : "full-screen",
+      "idiom" : "iphone",
+      "subtype" : "667h",
+      "filename" : "iPhoneLaunchImage750x1334.png",
+      "minimum-system-version" : "8.0",
+      "orientation" : "portrait",
+      "scale" : "2x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "iphone",
+      "filename" : "iPhoneLaunchImage640x960.png",
+      "extent" : "full-screen",
+      "minimum-system-version" : "7.0",
+      "scale" : "2x"
+    },
+    {
+      "extent" : "full-screen",
+      "idiom" : "iphone",
+      "subtype" : "retina4",
+      "filename" : "iPhoneLaunchImage640x1136.png",
+      "minimum-system-version" : "7.0",
+      "orientation" : "portrait",
+      "scale" : "2x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "ipad",
+      "filename" : "iPadLaunchImage768x1024.png",
+      "extent" : "full-screen",
+      "minimum-system-version" : "7.0",
+      "scale" : "1x"
+    },
+    {
+      "orientation" : "landscape",
+      "idiom" : "ipad",
+      "filename" : "iPadLaunchImage1024x768.png",
+      "extent" : "full-screen",
+      "minimum-system-version" : "7.0",
+      "scale" : "1x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "ipad",
+      "filename" : "iPadLaunchImage1536x2048.png",
+      "extent" : "full-screen",
+      "minimum-system-version" : "7.0",
+      "scale" : "2x"
+    },
+    {
+      "orientation" : "landscape",
+      "idiom" : "ipad",
+      "filename" : "iPadLaunchImage2048x1536.png",
+      "extent" : "full-screen",
+      "minimum-system-version" : "7.0",
+      "scale" : "2x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "iphone",
+      "extent" : "full-screen",
+      "scale" : "1x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "iphone",
+      "extent" : "full-screen",
+      "scale" : "2x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "iphone",
+      "extent" : "full-screen",
+      "subtype" : "retina4",
+      "scale" : "2x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "ipad",
+      "extent" : "to-status-bar",
+      "scale" : "1x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "ipad",
+      "extent" : "full-screen",
+      "scale" : "1x"
+    },
+    {
+      "orientation" : "landscape",
+      "idiom" : "ipad",
+      "extent" : "to-status-bar",
+      "scale" : "1x"
+    },
+    {
+      "orientation" : "landscape",
+      "idiom" : "ipad",
+      "extent" : "full-screen",
+      "scale" : "1x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "ipad",
+      "extent" : "to-status-bar",
+      "scale" : "2x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "ipad",
+      "extent" : "full-screen",
+      "scale" : "2x"
+    },
+    {
+      "orientation" : "landscape",
+      "idiom" : "ipad",
+      "extent" : "to-status-bar",
+      "scale" : "2x"
+    },
+    {
+      "orientation" : "landscape",
+      "idiom" : "ipad",
+      "extent" : "full-screen",
+      "scale" : "2x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

+ 3 - 0
Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1024x768.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:38583298f4d1a5baa0b55633c8314bad93abe80794e57a7d6a64ff88964b9165
+size 21711

+ 3 - 0
Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1536x2048.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b75b156d6be43cdaa2bc3699b4a5b601a33df6061b12452922ec35e0f55179fa
+size 52195

+ 3 - 0
Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage2048x1536.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4ba634166ac4960b554252e40141167ba2f9b3b673d058aa473be1c2fb9ba804
+size 54510

+ 3 - 0
Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage768x1024.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:596171ca532b8ff564ab14e3d525f1d91995684b910d66fcdcd0b85c61a232dc
+size 23354

+ 3 - 0
Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x1136.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a989ae9fec0ab04159d5a5360306b4f174b1887b21f58e241fa26fd468a4c809
+size 20870

+ 3 - 0
Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x960.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:276a83ca591e3616e489970d95aa56c3456aada212578bf885bf42610dbaade9
+size 21139

+ 45 - 0
Templates/ScriptOnlyProject/Template/Resources/Platform/iOS/Info.plist

@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>en</string>
+	<key>CFBundleDisplayName</key>
+	<string>${Name}</string>
+	<key>CFBundleExecutable</key>
+	<string>${Name}.GameLauncher</string>
+	<key>CFBundleIdentifier</key>
+	<string>com.amazon.lumberyard.${Name}</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>${Name}</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleShortVersionString</key>
+	<string>1.0</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>1.0</string>
+	<key>UIRequiredDeviceCapabilities</key>
+	<array>
+		<string>arm64</string>
+		<string>metal</string>
+	</array>
+	<key>UIRequiresFullScreen</key>
+	<true/>
+	<key>UIStatusBarHidden</key>
+	<true/>
+	<key>UISupportedInterfaceOrientations</key>
+	<array>
+		<string>UIInterfaceOrientationLandscapeRight</string>
+		<string>UIInterfaceOrientationLandscapeLeft</string>
+	</array>
+	<key>UISupportedInterfaceOrientations~ipad</key>
+	<array>
+		<string>UIInterfaceOrientationLandscapeRight</string>
+		<string>UIInterfaceOrientationLandscapeLeft</string>
+	</array>
+</dict>
+</plist>

+ 5 - 0
Templates/ScriptOnlyProject/Template/ShaderLib/README.md

@@ -0,0 +1,5 @@
+# Customizing Shader Resource Groups
+
+Please read:  
+*\<engine\>/Gems/Atom/Feature/Common/Assets/ShaderResourceGroups/README.md*  
+for details on how to customize scenesrg.srgi and viewsrg.srgi.  

+ 26 - 0
Templates/ScriptOnlyProject/Template/ShaderLib/scenesrg.srgi

@@ -0,0 +1,26 @@
+// {BEGIN_LICENSE}
+/*
+ * Copyright (c) Contributors to the Open 3D Engine Project.
+ * For complete copyright and license terms please see the LICENSE at the root of this distribution.
+ *
+ * SPDX-License-Identifier: Apache-2.0 OR MIT
+ *
+ */
+// {END_LICENSE}
+
+#pragma once
+
+// Please read README.md for an explanation on why scenesrg.srgi and viewsrg.srgi are
+// located in this folder (And how you can optionally customize your own scenesrg.srgi
+// and viewsrg.srgi in your game project).
+
+#include <Atom/Features/SrgSemantics.azsli>
+
+partial ShaderResourceGroup SceneSrg : SRG_PerScene
+{
+/* Intentionally Empty. Helps define the SrgSemantic for SceneSrg once.*/
+};
+
+#define AZ_COLLECTING_PARTIAL_SRGS
+#include <Atom/Feature/Common/Assets/ShaderResourceGroups/SceneSrgAll.azsli>
+#undef AZ_COLLECTING_PARTIAL_SRGS

+ 26 - 0
Templates/ScriptOnlyProject/Template/ShaderLib/viewsrg.srgi

@@ -0,0 +1,26 @@
+// {BEGIN_LICENSE}
+/*
+ * Copyright (c) Contributors to the Open 3D Engine Project.
+ * For complete copyright and license terms please see the LICENSE at the root of this distribution.
+ *
+ * SPDX-License-Identifier: Apache-2.0 OR MIT
+ *
+ */
+// {END_LICENSE}
+
+#pragma once
+
+// Please read README.md for an explanation on why scenesrg.srgi and viewsrg.srgi are
+// located in this folder (And how you can optionally customize your own scenesrg.srgi
+// and viewsrg.srgi in your game project).
+
+#include <Atom/Features/SrgSemantics.azsli>
+
+partial ShaderResourceGroup ViewSrg : SRG_PerView
+{
+/* Intentionally Empty. Helps define the SrgSemantic for ViewSrg once.*/
+};
+
+#define AZ_COLLECTING_PARTIAL_SRGS
+#include <Atom/Feature/Common/Assets/ShaderResourceGroups/ViewSrgAll.azsli>
+#undef AZ_COLLECTING_PARTIAL_SRGS

+ 0 - 0
Templates/ScriptOnlyProject/Template/autoexec.cfg


+ 182 - 0
Templates/ScriptOnlyProject/Template/cmake/EngineFinder.cmake

@@ -0,0 +1,182 @@
+# {BEGIN_LICENSE}
+#
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+#
+# {END_LICENSE}
+# Edits to this file may be lost in upgrades. Instead of changing this file, use 
+# the 'engine_finder_cmake_path' key in your project.json or user/project.json to specify 
+# an alternate .cmake file to use instead of this one.
+
+include_guard()
+
+set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/project.json)
+
+# Option 1: Use engine manually set in CMAKE_MODULE_PATH
+# CMAKE_MODULE_PATH must contain a path to an engine's cmake folder 
+if(CMAKE_MODULE_PATH)
+    foreach(module_path ${CMAKE_MODULE_PATH})
+        cmake_path(SET module_engine_version_cmake_path "${module_path}/o3deConfigVersion.cmake")
+        if(EXISTS "${module_engine_version_cmake_path}")
+            include("${module_engine_version_cmake_path}")
+            if(PACKAGE_VERSION_COMPATIBLE)
+                message(STATUS "Selecting engine from CMAKE_MODULE_PATH '${module_path}'")
+                return()
+            else()
+                message(WARNING "Not using engine from CMAKE_MODULE_PATH '${module_path}' because it is not compatible with this project.")
+            endif()
+        endif()
+    endforeach()
+    message(VERBOSE "No compatible engine found from CMAKE_MODULE_PATH '${CMAKE_MODULE_PATH}'.")
+endif()
+
+# before proceeding, check and set a global variable if its a "script only" project
+file(READ ${CMAKE_CURRENT_SOURCE_DIR}/project.json o3de_project_json)
+string(JSON project_is_script_only ERROR_VARIABLE json_error GET ${o3de_project_json} "script_only")
+if(project_is_script_only AND NOT json_error)
+    # we only set it if there's no error and it is a script only project
+    message(STATUS "This is a script-only project, no C++ compiler will be used")
+    set_property(GLOBAL PROPERTY "O3DE_SCRIPT_ONLY" TRUE)
+endif()
+
+# Option 2: Use the engine from the 'engine_path' field in <project>/user/project.json
+cmake_path(SET O3DE_USER_PROJECT_JSON_PATH ${CMAKE_CURRENT_SOURCE_DIR}/user/project.json)
+if(EXISTS "${O3DE_USER_PROJECT_JSON_PATH}")
+    file(READ "${O3DE_USER_PROJECT_JSON_PATH}" user_project_json)
+    if(user_project_json)
+        string(JSON user_project_engine_path ERROR_VARIABLE json_error GET ${user_project_json} engine_path)
+        if(user_project_engine_path AND NOT json_error)
+            cmake_path(SET user_engine_version_cmake_path "${user_project_engine_path}/cmake/o3deConfigVersion.cmake")
+            if(EXISTS "${user_engine_version_cmake_path}")
+                include("${user_engine_version_cmake_path}")
+                if(PACKAGE_VERSION_COMPATIBLE)
+                    message(STATUS "Selecting engine '${user_project_engine_path}' from 'engine_path' in '<project>/user/project.json'.")
+                    list(APPEND CMAKE_MODULE_PATH "${user_project_engine_path}/cmake")
+                    return()
+                else()
+                    message(FATAL_ERROR "The engine at '${user_project_engine_path}' from 'engine_path' in '${O3DE_USER_PROJECT_JSON_PATH}' is not compatible with this project. Please register this project with a compatible engine, or remove the local override by running:\nscripts\\o3de edit-project-properties -pp ${CMAKE_CURRENT_SOURCE_DIR} --user --engine-path \"\"")
+                endif()
+            else()
+                message(FATAL_ERROR "This project cannot use the engine at '${user_project_engine_path}' because the version cmake file '${user_engine_version_cmake_path}' needed to check compatibility is missing.  \nPlease register this project with a compatible engine, or remove the local override by running:\nscripts\\o3de edit-project-properties -pp ${CMAKE_CURRENT_SOURCE_DIR} --user --engine-path \"\"\nIf you want this project to use an older engine(not recommended), provide a custom EngineFinder.cmake using the o3de CLI's --engine-finder-cmake-path option. ")
+            endif()
+        elseif(json_error AND ${user_project_engine_path} STREQUAL "NOTFOUND")
+            # When the value is just NOTFOUND that means there is a JSON
+            # parsing error, and not simply a missing key 
+            message(FATAL_ERROR "Unable to read 'engine_path' from '${user_project_engine_path}'\nError: ${json-error}")
+        endif()
+    endif()
+endif()
+
+
+# Option 3: Find a compatible engine registered in ~/.o3de/o3de_manifest.json 
+if(DEFINED ENV{USERPROFILE} AND EXISTS $ENV{USERPROFILE})
+    set(manifest_path $ENV{USERPROFILE}/.o3de/o3de_manifest.json) # Windows
+else()
+    set(manifest_path $ENV{HOME}/.o3de/o3de_manifest.json) # Unix
+endif()
+
+set(registration_error [=[
+To enable more verbose logging, run the cmake command again with '--log-level VERBOSE'
+Engine registration is required before configuring a project.
+Run 'scripts/o3de register --this-engine' from the engine root.
+]=])
+
+# Create a list of all engines
+if(EXISTS ${manifest_path})
+    file(READ ${manifest_path} manifest_json)
+    set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${manifest_path})
+
+    string(JSON engines_count ERROR_VARIABLE json_error LENGTH ${manifest_json} engines)
+    if(json_error)
+        message(FATAL_ERROR "Unable to read key 'engines' from '${manifest_path}'\nError: ${json_error}\n${registration_error}")
+    endif()
+
+    string(JSON engines_type ERROR_VARIABLE json_error TYPE ${manifest_json} engines)
+    if(json_error OR NOT ${engines_type} STREQUAL "ARRAY")
+        message(FATAL_ERROR "Type of 'engines' in '${manifest_path}' is not a JSON ARRAY\nError: ${json_error}\n${registration_error}")
+    endif()
+
+    math(EXPR engines_count "${engines_count}-1")
+    foreach(array_index RANGE ${engines_count})
+        string(JSON manifest_engine_path ERROR_VARIABLE json_error GET ${manifest_json} engines "${array_index}")
+        if(json_error)
+            message(FATAL_ERROR "Unable to read 'engines/${array_index}' from '${manifest_path}'\nError: ${json_error}\n${registration_error}")
+        endif()
+        list(APPEND O3DE_ENGINE_PATHS ${manifest_engine_path})
+    endforeach()
+elseif(NOT CMAKE_MODULE_PATH)
+    message(FATAL_ERROR "O3DE Manifest file not found at '${manifest_path}'.\n${registration_error}")
+endif()
+
+# We cannot just run find_package() on the list of engine paths because
+# CMAKE_FIND_PACKAGE_SORT_ORDER sorts based on file name and chooses
+# the first package that returns PACKAGE_VERSION_COMPATIBLE 
+set(O3DE_MOST_COMPATIBLE_ENGINE_PATH "")
+set(O3DE_MOST_COMPATIBLE_ENGINE_VERSION "")
+foreach(manifest_engine_path IN LISTS O3DE_ENGINE_PATHS) 
+    # Does this engine have a config version cmake file?
+    cmake_path(SET version_cmake_path "${manifest_engine_path}/cmake/o3deConfigVersion.cmake")
+    if(NOT EXISTS "${version_cmake_path}") 
+        message(VERBOSE "Ignoring '${manifest_engine_path}' because no config version cmake file was found at '${version_cmake_path}'")
+        continue()
+    endif()
+
+    unset(PACKAGE_VERSION)
+    unset(PACKAGE_VERSION_COMPATIBLE)
+    include("${version_cmake_path}")
+
+    # Follow the version checking convention from find_package(CONFIG)
+    if(PACKAGE_VERSION_COMPATIBLE)
+        if(NOT O3DE_MOST_COMPATIBLE_ENGINE_PATH) 
+            set(O3DE_MOST_COMPATIBLE_ENGINE_PATH "${manifest_engine_path}") 
+            set(O3DE_MOST_COMPATIBLE_ENGINE_VERSION ${PACKAGE_VERSION}) 
+            message(VERBOSE "Found compatible engine '${manifest_engine_path}' with version '${PACKAGE_VERSION}'")
+        elseif(${PACKAGE_VERSION} VERSION_GREATER ${O3DE_MOST_COMPATIBLE_ENGINE_VERSION})
+            set(O3DE_MOST_COMPATIBLE_ENGINE_PATH "${manifest_engine_path}")
+            set(O3DE_MOST_COMPATIBLE_ENGINE_VERSION ${PACKAGE_VERSION})
+            message(VERBOSE "Found more compatible engine '${manifest_engine_path}' with version '${PACKAGE_VERSION}' because it has a greater version number.")
+        else()
+            message(VERBOSE "Not using engine '${manifest_engine_path}' with version '${PACKAGE_VERSION}' because it doesn't have a greater version number or has a different engine name.")
+        endif()
+    else()
+        message(VERBOSE "Ignoring '${manifest_engine_path}' because it is not a compatible engine.")
+    endif()
+endforeach()
+
+if(O3DE_MOST_COMPATIBLE_ENGINE_PATH)
+    message(STATUS "Selecting engine '${O3DE_MOST_COMPATIBLE_ENGINE_PATH}'")
+    # Make sure PACKAGE_VERSION_COMPATIBLE is set so Findo3de.cmake knows
+    # compatibility was checked
+    set(PACKAGE_VERSION_COMPATIBLE True)
+    set(PACKAGE_VERSION O3DE_MOST_COMPATIBLE_ENGINE_VERSION)
+    list(APPEND CMAKE_MODULE_PATH "${O3DE_MOST_COMPATIBLE_ENGINE_PATH}/cmake")
+    return()
+endif()
+
+# No compatible engine was found.
+# Read the 'engine' field in project.json or user/project.json for more helpful messages 
+if(user_project_json)
+    string(JSON user_project_engine ERROR_VARIABLE json_error GET ${user_project_json} engine)
+endif()
+
+if(NOT user_project_engine)
+    string(JSON project_engine ERROR_VARIABLE json_error GET ${o3de_project_json} engine)
+    if(json_error AND ${project_engine} STREQUAL "NOTFOUND")
+        message(FATAL_ERROR "Unable to read key 'engine' from 'project.json'\nError: ${json_error}")
+    endif()
+endif()
+
+if(user_project_engine)
+    message(FATAL_ERROR "The local '${O3DE_USER_PROJECT_JSON_PATH}' engine is '${user_project_engine}' but no compatible engine with that name and version was found.  Please register the compatible engine, or remove the local engine override.\n${registration_error}")
+elseif(project_engine)
+    message(FATAL_ERROR "The project.json engine is '${project_engine}' but no engine with that name and version was found.\n${registration_error}")
+else()
+    set(project_registration_error [=[
+    Project registration is required before configuring a project.
+    Run 'scripts/o3de register -pp PROJECT_PATH --engine-path ENGINE_PATH' from the engine root.
+    ]=])
+    message(FATAL_ERROR "${project_registration_error}")
+endif()

+ 3 - 0
Templates/ScriptOnlyProject/Template/game.cfg

@@ -0,0 +1,3 @@
+-- Enable warnings when asset loads take longer than the given millisecond threshold
+cl_assetLoadWarningEnable=true
+cl_assetLoadWarningMsThreshold=100

+ 3 - 0
Templates/ScriptOnlyProject/Template/preview.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:13e825d395c997ca41a7db98191b14d7d4b900329bf15a6ba91579abac4df61f
+size 6058

+ 43 - 0
Templates/ScriptOnlyProject/Template/project.json

@@ -0,0 +1,43 @@
+{
+    "project_name": "${Name}",
+    "version": "${Version}",
+    "project_id": "${ProjectId}",
+    "origin": "The primary repo for ${Name} goes here: i.e. http://www.mydomain.com",
+    "license": "What license ${Name} uses goes here: i.e. https://opensource.org/licenses/Apache-2.0 Or https://opensource.org/licenses/MIT etc.",
+    "display_name": "${Name}",
+    "summary": "A short description of ${Name}.",
+    "script_only": true,
+    "canonical_tags": [
+        "Project"
+    ],
+    "user_tags": [
+        "${Name}"
+    ],
+    "icon_path": "preview.png",
+    "engine": "o3de",
+    "restricted": "${Name}",
+    "gem_names": [
+        "Atom",
+        "AudioSystem",
+        "AWSCore",
+        "CameraFramework",
+        "Compression",
+        "DebugDraw",
+        "DiffuseProbeGrid",
+        "EditorPythonBindings",
+        "EMotionFX",
+        "GameState",
+        "ImGui",
+        "LandscapeCanvas",
+        "LyShine",
+        "PhysX",
+        "PrimitiveAssets",
+        "PrefabBuilder",
+        "SaveData",
+        "ScriptCanvasPhysics",
+        "ScriptEvents",
+        "StartingPointInput",
+        "TextureAtlas",
+        "WhiteBox"
+    ]
+}

+ 3 - 0
Templates/ScriptOnlyProject/preview.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6d5279b37638088a6389b717e2bd07a80b41342e867fdd82deda56c742381fd5
+size 14012

+ 342 - 0
Templates/ScriptOnlyProject/template.json

@@ -0,0 +1,342 @@
+{
+    "template_name": "ScriptOnlyProject",
+    "template_restricted_platform_relative_path": "Templates/ScriptOnlyProject",
+    "restricted_name": "o3de",
+    "restricted_platform_relative_path": "Templates/ScriptOnlyProject",
+    "origin": "Open 3D Engine - o3de.org",
+    "origin_url": "https://github.com/o3de/o3de",
+    "license": "Apache-2.0 or MIT",
+    "license_url": "https://github.com/o3de/o3de/blob/development/LICENSE.txt",
+    "display_name": "Quick start (Scripts only)",
+    "summary": "Does not require any c++ compilation to get started using the editor.  LUA and Script Canvas are still available.",
+    "canonical_tags": [
+        "Template",
+        "Project"
+    ],
+    "user_tags": [
+        "ScriptOnlyProject"
+    ],
+    "icon_path": "preview.png",
+    "copyFiles": [
+        {
+            "file": ".gitignore",
+            "isTemplated": false
+        },
+        {
+            "file": "CMakeLists.txt",
+            "isTemplated": true
+        },
+        {
+            "file": "CMakePresets.json",
+            "isTemplated": true
+        },
+        {
+            "file": "cmake/EngineFinder.cmake",
+            "isTemplated": true
+        },
+        {
+            "file": "Config/default_aws_resource_mappings.json",
+            "isTemplated": false
+        },
+        {
+            "file": "Config/shader_global_build_options.json",
+            "isTemplated": false
+        },
+        {
+            "file": "Platform/Android/android_project.cmake",
+            "isTemplated": false
+        },
+        {
+            "file": "Platform/Android/android_project.json",
+            "isTemplated": true
+        },
+        {
+            "file": "Platform/Linux/linux_project.cmake",
+            "isTemplated": false
+        },
+        {
+            "file": "Platform/Linux/linux_project.json",
+            "isTemplated": false
+        },
+        {
+            "file": "Platform/Mac/mac_project.cmake",
+            "isTemplated": false
+        },
+        {
+            "file": "Platform/Mac/mac_project.json",
+            "isTemplated": false
+        },
+        {
+            "file": "Platform/Windows/windows_project.cmake",
+            "isTemplated": false
+        },
+        {
+            "file": "Platform/Windows/windows_project.json",
+            "isTemplated": false
+        },
+        {
+            "file": "Platform/iOS/ios_project.cmake",
+            "isTemplated": false
+        },
+        {
+            "file": "Platform/iOS/ios_project.json",
+            "isTemplated": false
+        },
+        {
+            "file": "Registry/assetprocessor_settings.setreg",
+            "isTemplated": true
+        },
+        {
+            "file": "Registry/awscoreconfiguration.setreg",
+            "isTemplated": false
+        },
+        {
+            "file": "Resources/GameSDK.ico",
+            "isTemplated": false
+        },
+        {
+            "file": "Resources/LegacyLogoLauncher.bmp",
+            "isTemplated": false
+        },
+        {
+            "file": "Resources/Platform/Mac/Images.xcassets/Contents.json",
+            "isTemplated": false
+        },
+        {
+            "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/Contents.json",
+            "isTemplated": false
+        },
+        {
+            "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_128.png",
+            "isTemplated": false
+        },
+        {
+            "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_128_2x.png",
+            "isTemplated": false
+        },
+        {
+            "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_16.png",
+            "isTemplated": false
+        },
+        {
+            "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_16_2x.png",
+            "isTemplated": false
+        },
+        {
+            "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_256.png",
+            "isTemplated": false
+        },
+        {
+            "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_256_2x.png",
+            "isTemplated": false
+        },
+        {
+            "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_32.png",
+            "isTemplated": false
+        },
+        {
+            "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_32_2x.png",
+            "isTemplated": false
+        },
+        {
+            "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_512.png",
+            "isTemplated": false
+        },
+        {
+            "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_512_2x.png",
+            "isTemplated": false
+        },
+        {
+            "file": "Resources/Platform/Mac/Info.plist",
+            "isTemplated": true
+        },
+        {
+            "file": "Resources/Platform/iOS/Images.xcassets/Contents.json",
+            "isTemplated": false
+        },
+        {
+            "file": "Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/Contents.json",
+            "isTemplated": false
+        },
+        {
+            "file": "Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1024x768.png",
+            "isTemplated": false
+        },
+        {
+            "file": "Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1536x2048.png",
+            "isTemplated": false
+        },
+        {
+            "file": "Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage2048x1536.png",
+            "isTemplated": false
+        },
+        {
+            "file": "Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage768x1024.png",
+            "isTemplated": false
+        },
+        {
+            "file": "Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x1136.png",
+            "isTemplated": false
+        },
+        {
+            "file": "Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x960.png",
+            "isTemplated": false
+        },
+        {
+            "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/Contents.json",
+            "isTemplated": false
+        },
+        {
+            "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadAppIcon152x152.png",
+            "isTemplated": false
+        },
+        {
+            "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadAppIcon76x76.png",
+            "isTemplated": false
+        },
+        {
+            "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadProAppIcon167x167.png",
+            "isTemplated": false
+        },
+        {
+            "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadSettingsIcon29x29.png",
+            "isTemplated": false
+        },
+        {
+            "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadSettingsIcon58x58.png",
+            "isTemplated": false
+        },
+        {
+            "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadSpotlightIcon40x40.png",
+            "isTemplated": false
+        },
+        {
+            "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadSpotlightIcon80x80.png",
+            "isTemplated": false
+        },
+        {
+            "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneAppIcon120x120.png",
+            "isTemplated": false
+        },
+        {
+            "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneAppIcon180x180.png",
+            "isTemplated": false
+        },
+        {
+            "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneSettingsIcon58x58.png",
+            "isTemplated": false
+        },
+        {
+            "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneSettingsIcon87x87.png",
+            "isTemplated": false
+        },
+        {
+            "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneSpotlightIcon120x120.png",
+            "isTemplated": false
+        },
+        {
+            "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneSpotlightIcon80x80.png",
+            "isTemplated": false
+        },
+        {
+            "file": "Resources/Platform/iOS/Info.plist",
+            "isTemplated": true
+        },
+        {
+            "file": "ShaderLib/README.md",
+            "isTemplated": false
+        },
+        {
+            "file": "ShaderLib/scenesrg.srgi",
+            "isTemplated": false
+        },
+        {
+            "file": "ShaderLib/viewsrg.srgi",
+            "isTemplated": false
+        },
+        {
+            "file": "autoexec.cfg",
+            "isTemplated": false
+        },
+        {
+            "file": "game.cfg",
+            "isTemplated": false
+        },
+        {
+            "file": "preview.png",
+            "isTemplated": false
+        },
+        {
+            "file": "project.json",
+            "isTemplated": true
+        }
+    ],
+    "createDirectories": [
+        {
+            "dir": "Assets"
+        },
+        {
+            "dir": "cmake"
+        },
+        {
+            "dir": "Config"
+        },
+        {
+            "dir": "Platform"
+        },
+        {
+            "dir": "Platform/Android"
+        },
+        {
+            "dir": "Platform/Linux"
+        },
+        {
+            "dir": "Platform/Mac"
+        },
+        {
+            "dir": "Platform/Windows"
+        },
+        {
+            "dir": "Platform/iOS"
+        },
+        {
+            "dir": "Registry"
+        },
+        {
+            "dir": "Resources"
+        },
+        {
+            "dir": "Resources/Platform"
+        },
+        {
+            "dir": "Resources/Platform/Mac"
+        },
+        {
+            "dir": "Resources/Platform/Mac/Images.xcassets"
+        },
+        {
+            "dir": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset"
+        },
+        {
+            "dir": "Resources/Platform/iOS"
+        },
+        {
+            "dir": "Resources/Platform/iOS/Images.xcassets"
+        },
+        {
+            "dir": "Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage"
+        },
+        {
+            "dir": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset"
+        },
+        {
+            "dir": "ShaderLib"
+        },
+        {
+            "dir": "Shaders"
+        },
+        {
+            "dir": "Shaders/ShaderResourceGroups"
+        }
+    ]
+}

+ 8 - 2
cmake/3rdParty/BuiltInPackages.cmake

@@ -24,6 +24,12 @@ set(ALLFILES ${ALLFILES} ${LY_PAL_PACKAGE_FILE_NAME})
 # the correct "3rdParty::ZLIB" (Case difference).  Until those libraries are updated
 # we alias the casing here.  This also provides backward compatibility for Gems that use 3rdParty::zlib
 # that are not part of the core O3DE repo.
-ly_download_associated_package(ZLIB)
-find_package(ZLIB)
+
+if (NOT O3DE_SCRIPT_ONLY)
+    ly_download_associated_package(ZLIB)
+    find_package(ZLIB)
+else()
+    add_library(3rdParty::ZLIB IMPORTED INTERFACE GLOBAL)
+endif()
+
 add_library(3rdParty::zlib ALIAS 3rdParty::ZLIB)

+ 18 - 1
cmake/CompilerSettings.cmake

@@ -8,6 +8,23 @@
 
 # File to tweak compiler settings before compiler detection happens (before project() is called)
 # We dont have PAL enabled at this point, so we can only use pure-CMake variables
+
+# if we are in Script Only ("Quick Start") Mode, we override the compiler with a do-nothing fake one
+# doing so is slightly different on each platform, so it uses a different file each.
+get_property(O3DE_SCRIPT_ONLY GLOBAL PROPERTY "O3DE_SCRIPT_ONLY")
+
 if("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Linux")
-    include(${CMAKE_CURRENT_LIST_DIR}/Platform/Linux/CompilerSettings_linux.cmake)
+    if(O3DE_SCRIPT_ONLY)
+        include(${CMAKE_CURRENT_LIST_DIR}/Platform/Linux/Toolchain_scriptonly_linux.cmake)
+    else()
+        include(${CMAKE_CURRENT_LIST_DIR}/Platform/Linux/CompilerSettings_linux.cmake)
+    endif()
+elseif("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows")
+    if(O3DE_SCRIPT_ONLY)
+        include(${CMAKE_CURRENT_LIST_DIR}/Platform/Windows/Toolchain_scriptonly_windows.cmake)
+    endif()
+elseif("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Darwin")
+    if(O3DE_SCRIPT_ONLY)
+        message(FATAL_ERROR "Script only (quick start) projects are not yet supported on MacOS")
+    endif()
 endif()

+ 15 - 9
cmake/LYWrappers.cmake

@@ -578,17 +578,23 @@ function(ly_parse_third_party_dependencies ly_THIRD_PARTY_LIBRARIES)
         list(GET dependency_list 0 dependency_namespace)
         if(${dependency_namespace} STREQUAL "3rdParty")
             if (NOT TARGET ${dependency})
-                list(GET dependency_list 1 dependency_package)
-                list(LENGTH dependency_list dependency_list_length)
-                ly_download_associated_package(${dependency_package})
-                if (dependency_list_length GREATER 2)
-                    # There's an optional interface specified
-                    list(GET dependency_list 2 component)
-                    list(APPEND packages_with_components ${dependency_package})
-                    list(APPEND ${dependency_package}_components ${component})
+                if (O3DE_SCRIPT_ONLY)
+                    # we don't actually need 3p deps to try to download the package or call find_package.
+                    add_library(${dependency} IMPORTED INTERFACE GLOBAL)
                 else()
-                    find_package(${dependency_package} REQUIRED MODULE)
+                    list(GET dependency_list 1 dependency_package)
+                    list(LENGTH dependency_list dependency_list_length)
+                    ly_download_associated_package(${dependency_package})
+                    if (dependency_list_length GREATER 2)
+                        # There's an optional interface specified
+                        list(GET dependency_list 2 component)
+                        list(APPEND packages_with_components ${dependency_package})
+                        list(APPEND ${dependency_package}_components ${component})
+                    else()
+                        find_package(${dependency_package} REQUIRED MODULE)
+                    endif()
                 endif()
+
             endif()
         endif()
     endforeach()

+ 95 - 0
cmake/Platform/Common/Toolchain_scriptonly_common.cmake

@@ -0,0 +1,95 @@
+#
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+#
+
+# Explicitly setting CMAKE_SYSTEM_NAME forces CMake to use cross compiling mode
+# Even if it is set to the current platform. See the CMAKE_CROSSCOMPILING var documentation
+# https://cmake.org/cmake/help/latest/variable/CMAKE_CROSSCOMPILING.html#cmake-crosscompiling
+set(CMAKE_SYSTEM_NAME ${CMAKE_HOST_SYSTEM_NAME})
+set(CMAKE_C_COMPILER_WORKS 1)
+set(CMAKE_CXX_COMPILER_WORKS 1)
+
+# Make sure that the try compile step doesn't try to run the application it builds
+set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
+
+list(APPEND CMAKE_C_COMPILE_FEATURES
+    c_std_90
+    c_std_99
+    c_std_11
+    c_std_17
+    c_function_prototypes
+    c_restrict
+    c_static_assert
+    c_variadic_macros
+)
+
+list(APPEND CMAKE_CXX_COMPILE_FEATURES
+    cxx_std_98
+    cxx_std_11
+    cxx_std_14
+    cxx_std_17
+    #C++ 98: https://cmake.org/cmake/help/latest/prop_gbl/CMAKE_CXX_KNOWN_FEATURES.html#individual-features-from-c-98
+    cxx_template_template_parameters
+    #C++ 11: https://cmake.org/cmake/help/latest/prop_gbl/CMAKE_CXX_KNOWN_FEATURES.html#individual-features-from-c-11
+    cxx_alias_templates
+    cxx_alignas
+    cxx_alignof
+    cxx_attributes
+    cxx_auto_type
+    cxx_constexpr
+    cxx_decltype_incomplete_return_types
+    cxx_decltype
+    cxx_default_function_template_args
+    cxx_defaulted_functions
+    cxx_defaulted_move_initializers
+    cxx_delegating_constructors
+    cxx_deleted_functions
+    cxx_enum_forward_declarations
+    cxx_explicit_conversions
+    cxx_extended_friend_declarations
+    cxx_extern_templates
+    cxx_final
+    cxx_func_identifier
+    cxx_generalized_initializers
+    cxx_inheriting_constructors
+    cxx_inline_namespaces
+    cxx_lambdas
+    cxx_local_type_template_args
+    cxx_long_long_type
+    cxx_noexcept
+    cxx_nonstatic_member_init
+    cxx_nullptr
+    cxx_override
+    cxx_range_for
+    cxx_raw_string_literals
+    cxx_reference_qualified_functions
+    cxx_right_angle_brackets
+    cxx_rvalue_references
+    cxx_sizeof_member
+    cxx_static_assert
+    cxx_strong_enums
+    cxx_thread_local
+    cxx_trailing_return_types
+    cxx_unicode_literals
+    cxx_uniform_initialization
+    cxx_unrestricted_unions
+    cxx_user_literals
+    cxx_variadic_macros
+    cxx_variadic_templates
+    # C++ 14: https://cmake.org/cmake/help/latest/prop_gbl/CMAKE_CXX_KNOWN_FEATURES.html#individual-features-from-c-14
+    cxx_aggregate_default_initializers
+    cxx_attribute_deprecated
+    cxx_binary_literals
+    cxx_contextual_conversions
+    cxx_decltype_auto
+    cxx_digit_separators
+    cxx_generic_lambdas
+    cxx_lambda_init_captures
+    cxx_relaxed_constexpr
+    cxx_return_type_deduction
+    cxx_variable_templates
+)

+ 8 - 0
cmake/Platform/Linux/PAL_linux.cmake

@@ -32,6 +32,14 @@ if ($ENV{O3DE_SNAP})
     list(APPEND CMAKE_PREFIX_PATH "$ENV{SNAP}/usr/lib/x86_64-linux-gnu")
 endif()
 
+get_property(O3DE_SCRIPT_ONLY GLOBAL PROPERTY "O3DE_SCRIPT_ONLY")
+if (O3DE_SCRIPT_ONLY)
+    if (NOT CMAKE_CXX_COMPILER_ID)
+        set(CMAKE_CXX_COMPILER_ID "Clang")
+        set(CMAKE_C_COMPILER_ID "Clang")
+    endif()
+endif()
+
 if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
     ly_set(PAL_TRAIT_COMPILER_ID Clang)
     ly_set(PAL_TRAIT_COMPILER_ID_LOWERCASE clang)

+ 18 - 0
cmake/Platform/Linux/Toolchain_scriptonly_linux.cmake

@@ -0,0 +1,18 @@
+#
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+#
+
+set(CMAKE_SYSTEM_PROCESSOR "x86_64") # there is no AARCH64 version of the 'no compile toolchain' and this is not set automatically
+set(CMAKE_C_COMPILER "/usr/bin/true")
+set(CMAKE_CXX_COMPILER "/usr/bin/true")
+set(CMAKE_AR "/usr/bin/true")
+set(CMAKE_RANLIB "/usr/bin/true")
+set(CMAKE_C_COMPILER_ID "Clang")
+set(CMAKE_CXX_COMPILER_ID "Clang")
+set(CMAKE_C_COMPILER_VERSION 14.0.0)
+set(CMAKE_CXX_COMPILER_VERSION 14.0.0)
+include(${CMAKE_CURRENT_LIST_DIR}/../Common/Toolchain_scriptonly_common.cmake)

+ 3 - 1
cmake/Platform/Linux/platform_linux_files.cmake

@@ -12,6 +12,7 @@ set(FILES
     ../Common/Install_common.cmake
     ../Common/PackagingPostBuild_common.cmake
     ../Common/PackagingPreBuild_common.cmake
+    ../Common/Toolchain_scriptonly_common.cmake
     CompilerSettings_linux.cmake
     Configurations_linux_aarch64.cmake
     Configurations_linux_x86_64.cmake
@@ -27,5 +28,6 @@ set(FILES
     PALDetection_linux.cmake
     RPathChange.cmake
     runtime_dependencies_linux.cmake.in
-    RuntimeDependencies_linux.cmake    
+    RuntimeDependencies_linux.cmake
+    Toolchain_scriptonly_linux.cmake
 )

+ 28 - 0
cmake/Platform/Windows/Toolchain_scriptonly_windows.cmake

@@ -0,0 +1,28 @@
+
+#
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+#
+#
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+#
+set(no_op_compiler "${CMAKE_CURRENT_LIST_DIR}/no-op.cmd") # a utility that always returns 0, meaning, "success"
+
+set(CMAKE_SYSTEM_PROCESSOR "x86_64") # there is no AARCH64 version of the 'no compile toolchain' and this is not set automatically
+set(CMAKE_C_COMPILER "${no_op_compiler}")
+set(CMAKE_CXX_COMPILER "${no_op_compiler}")
+set(CMAKE_AR "${no_op_compiler}")
+set(CMAKE_RANLIB "${no_op_compiler}")
+set(CMAKE_C_COMPILER_ID "MSVC")
+set(CMAKE_CXX_COMPILER_ID "MSVC")
+set(CMAKE_C_COMPILER_VERSION 19.31)
+set(CMAKE_CXX_COMPILER_VERSION 19.31)
+
+include(${CMAKE_CURRENT_LIST_DIR}/../Common/Toolchain_scriptonly_common.cmake)

+ 13 - 0
cmake/Platform/Windows/no-op.cmd

@@ -0,0 +1,13 @@
+@echo off
+rem #
+rem # Copyright (c) Contributors to the Open 3D Engine Project.
+rem # For complete copyright and license terms please see the LICENSE at the root of this distribution.
+rem #
+rem # SPDX-License-Identifier: Apache-2.0 OR MIT
+rem #
+rem #
+
+rem This file is used to simulate a compiler and linker, in no-script mode.
+rem Its only job is to return 0 as this indicates everything is ok.
+
+exit /b 0

+ 2 - 0
cmake/Platform/Windows/platform_windows_files.cmake

@@ -19,6 +19,7 @@ set(FILES
     ../Common/PackagingPostBuild_common.cmake
     ../Common/PackagingPreBuild_common.cmake
     ../Common/TargetIncludeSystemDirectories_unsupported.cmake
+    ../Common/Toolchain_scriptonly_common.cmake
     Configurations_windows.cmake
     LYTestWrappers_windows.cmake
     LYWrappers_windows.cmake
@@ -29,6 +30,7 @@ set(FILES
     PackagingCodeSign_windows.cmake
     PackagingPostBuild_windows.cmake
     PackagingPreBuild_windows.cmake
+    Toolchain_scriptonly_windows.cmake
     Packaging/Bootstrapper.wxs
     Packaging/BootstrapperTheme.wxl.in
     Packaging/BootstrapperTheme.xml.in

+ 1 - 1
cmake/o3deConfigVersion.cmake

@@ -7,7 +7,7 @@
 #
 # This file is included by find_package(o3de CONFIG) and will set PACKAGE_VERSION_COMPATIBLE
 # to TRUE or FALSE based on whether the project is compatible with this engine.
-# This file also sets PACKAGE_VERSION and PACKAGE_VERISON_EXACT if it can determine
+# This file also sets PACKAGE_VERSION and PACKAGE_VERSION_EXACT if it can determine
 # that information from the engine.json, project.json and <project>/user/project.json.
 
 set(PACKAGE_VERSION_COMPATIBLE FALSE)

+ 1 - 0
engine.json

@@ -129,6 +129,7 @@
         "Templates/PythonToolGem",
         "Templates/RemoteRepo",
         "Templates/ScriptCanvasNode",
+        "Templates/ScriptOnlyProject",
         "Templates/UnifiedMultiplayerGem"
     ],
     "repos": [