2
0
alexpete 4 жил өмнө
commit
ebdc969732
81 өөрчлөгдсөн 2033 нэмэгдсэн , 0 устгасан
  1. 119 0
      .gitattributes
  2. 1 0
      .gitignore
  3. 2 0
      .lfsconfig
  4. 46 0
      CMakeLists.txt
  5. 56 0
      EngineFinder.cmake
  6. 12 0
      Gem/CMakeLists.txt
  7. 99 0
      Gem/Code/CMakeLists.txt
  8. 31 0
      Gem/Code/Include/NetSoakTest/NetSoakTestBus.h
  9. 13 0
      Gem/Code/Platform/Android/netsoaktest_android_files.cmake
  10. 13 0
      Gem/Code/Platform/Linux/netsoaktest_linux_files.cmake
  11. 14 0
      Gem/Code/Platform/Mac/netsoaktest_mac_files.cmake
  12. 13 0
      Gem/Code/Platform/Windows/netsoaktest_windows_files.cmake
  13. 14 0
      Gem/Code/Platform/iOS/netsoaktest_ios_files.cmake
  14. 14 0
      Gem/Code/Source/AutoGen/NetSoakTest.AutoPackets.xml
  15. 51 0
      Gem/Code/Source/NetSoakTestModule.cpp
  16. 245 0
      Gem/Code/Source/NetSoakTestSystemComponent.cpp
  17. 81 0
      Gem/Code/Source/NetSoakTestSystemComponent.h
  18. 41 0
      Gem/Code/Source/NetSoakTestTypes.h
  19. 18 0
      Gem/Code/netsoaktest_autogen_files.cmake
  20. 18 0
      Gem/Code/netsoaktest_files.cmake
  21. 14 0
      Gem/Code/netsoaktest_ios_files.cmake
  22. 14 0
      Gem/Code/netsoaktest_shared_files.cmake
  23. 15 0
      Gem/Code/runtime_dependencies.cmake
  24. 23 0
      Gem/Code/tool_dependencies.cmake
  25. 3 0
      Gem/Resources/CryEngineLogoLauncher.bmp
  26. 3 0
      Gem/Resources/GameSDK.ico
  27. 116 0
      Gem/Resources/IOSLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/Contents.json
  28. 3 0
      Gem/Resources/IOSLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/iPadAppIcon152x152.png
  29. 3 0
      Gem/Resources/IOSLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/iPadAppIcon76x76.png
  30. 3 0
      Gem/Resources/IOSLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/iPadProAppIcon167x167.png
  31. 3 0
      Gem/Resources/IOSLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/iPadSettingsIcon29x29.png
  32. 3 0
      Gem/Resources/IOSLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/iPadSettingsIcon58x58.png
  33. 3 0
      Gem/Resources/IOSLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/iPadSpotlightIcon40x40.png
  34. 3 0
      Gem/Resources/IOSLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/iPadSpotlightIcon80x80.png
  35. 3 0
      Gem/Resources/IOSLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/iPhoneAppIcon120x120.png
  36. 3 0
      Gem/Resources/IOSLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/iPhoneAppIcon180x180.png
  37. 3 0
      Gem/Resources/IOSLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/iPhoneSettingsIcon58x58.png
  38. 3 0
      Gem/Resources/IOSLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/iPhoneSettingsIcon87x87.png
  39. 3 0
      Gem/Resources/IOSLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/iPhoneSpotlightIcon120x120.png
  40. 3 0
      Gem/Resources/IOSLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/iPhoneSpotlightIcon80x80.png
  41. 6 0
      Gem/Resources/IOSLauncher/Images.xcassets/Contents.json
  42. 169 0
      Gem/Resources/IOSLauncher/Images.xcassets/LaunchImage.launchimage/Contents.json
  43. 3 0
      Gem/Resources/IOSLauncher/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1024x768.png
  44. 3 0
      Gem/Resources/IOSLauncher/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1536x2048.png
  45. 3 0
      Gem/Resources/IOSLauncher/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage2048x1536.png
  46. 3 0
      Gem/Resources/IOSLauncher/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage768x1024.png
  47. 3 0
      Gem/Resources/IOSLauncher/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x1136.png
  48. 3 0
      Gem/Resources/IOSLauncher/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x960.png
  49. 45 0
      Gem/Resources/IOSLauncher/Info.plist
  50. 68 0
      Gem/Resources/MacLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/Contents.json
  51. 3 0
      Gem/Resources/MacLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/icon_128 _2x.png
  52. 3 0
      Gem/Resources/MacLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/icon_128.png
  53. 3 0
      Gem/Resources/MacLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/icon_16.png
  54. 3 0
      Gem/Resources/MacLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/icon_16_2x.png
  55. 3 0
      Gem/Resources/MacLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/icon_256 _2x.png
  56. 3 0
      Gem/Resources/MacLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/icon_256.png
  57. 3 0
      Gem/Resources/MacLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/icon_32.png
  58. 3 0
      Gem/Resources/MacLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/icon_32_2x.png
  59. 3 0
      Gem/Resources/MacLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/icon_512.png
  60. 3 0
      Gem/Resources/MacLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/icon_512_2x.png
  61. 6 0
      Gem/Resources/MacLauncher/Images.xcassets/Contents.json
  62. 24 0
      Gem/Resources/MacLauncher/Info.plist
  63. 10 0
      Gem/gem.json
  64. 3 0
      Gem/preview.png
  65. 3 0
      Levels/default/default.ly
  66. 6 0
      Levels/default/filelist.xml
  67. 3 0
      Levels/default/level.pak
  68. 14 0
      Levels/default/leveldata/Environment.xml
  69. 5 0
      Levels/default/leveldata/GameTokens.xml
  70. 3 0
      Levels/default/leveldata/Heightmap.dat
  71. 7 0
      Levels/default/leveldata/TerrainTexture.xml
  72. 356 0
      Levels/default/leveldata/TimeOfDay.xml
  73. 3 0
      Levels/default/leveldata/VegetationMap.dat
  74. 12 0
      Levels/default/tags.txt
  75. 3 0
      Levels/default/terrain/cover.ctc
  76. 3 0
      Levels/default/terraintexture.pak
  77. 81 0
      README.md
  78. 1 0
      autoexec.cfg
  79. 7 0
      game.cfg
  80. 3 0
      preview.png
  81. 16 0
      project.json

+ 119 - 0
.gitattributes

@@ -0,0 +1,119 @@
+
+#
+# Git LFS (see https://git-lfs.github.com/)
+#
+*.3ds filter=lfs diff=lfs merge=lfs -text
+*.DLL filter=lfs diff=lfs merge=lfs -text
+*.FBX filter=lfs diff=lfs merge=lfs -text
+*.PDB filter=lfs diff=lfs merge=lfs -text
+*.PNG filter=lfs diff=lfs merge=lfs -text
+*.TGA filter=lfs diff=lfs merge=lfs -text
+*.TIF filter=lfs diff=lfs merge=lfs -text
+*.a filter=lfs diff=lfs merge=lfs -text
+*.abc filter=lfs diff=lfs merge=lfs -text
+*.actor filter=lfs diff=lfs merge=lfs -text
+*.adb filter=lfs diff=lfs merge=lfs -text
+*.akd filter=lfs diff=lfs merge=lfs -text
+*.animevents filter=lfs diff=lfs merge=lfs -text
+*.animgraph filter=lfs diff=lfs merge=lfs -text
+*.anm filter=lfs diff=lfs merge=lfs -text
+*.bin filter=lfs diff=lfs merge=lfs -text
+*.bmp filter=lfs diff=lfs merge=lfs -text
+*.bnk filter=lfs diff=lfs merge=lfs -text
+*.bspace filter=lfs diff=lfs merge=lfs -text
+*.cab filter=lfs diff=lfs merge=lfs -text
+*.caf filter=lfs diff=lfs merge=lfs -text
+*.cal filter=lfs diff=lfs merge=lfs -text
+*.cdf filter=lfs diff=lfs merge=lfs -text
+*.cfi filter=lfs diff=lfs merge=lfs -text
+*.cfr filter=lfs diff=lfs merge=lfs -text
+*.cfx filter=lfs diff=lfs merge=lfs -text
+*.cgf filter=lfs diff=lfs merge=lfs -text
+*.chr filter=lfs diff=lfs merge=lfs -text
+*.chrparams filter=lfs diff=lfs merge=lfs -text
+*.cld filter=lfs diff=lfs merge=lfs -text
+*.comb filter=lfs diff=lfs merge=lfs -text
+*.cry filter=lfs diff=lfs merge=lfs -text
+*.ctc filter=lfs diff=lfs merge=lfs -text
+*.dat filter=lfs diff=lfs merge=lfs -text
+*.dba filter=lfs diff=lfs merge=lfs -text
+*.dds filter=lfs diff=lfs merge=lfs -text
+*.dds.[0-9] filter=lfs diff=lfs merge=lfs -text
+*.dlg filter=lfs diff=lfs merge=lfs -text
+*.dll filter=lfs diff=lfs merge=lfs -text
+*.dmg filter=lfs diff=lfs merge=lfs -text
+*.dylib filter=lfs diff=lfs merge=lfs -text
+*.emfxrecording filter=lfs diff=lfs merge=lfs -text
+*.ent filter=lfs diff=lfs merge=lfs -text
+*.exe filter=lfs diff=lfs merge=lfs -text
+*.exr filter=lfs diff=lfs merge=lfs -text
+*.fbx filter=lfs diff=lfs merge=lfs -text
+*.fdp filter=lfs diff=lfs merge=lfs -text
+*.font filter=lfs diff=lfs merge=lfs -text
+*.fontfamily filter=lfs diff=lfs merge=lfs -text
+*.fsq filter=lfs diff=lfs merge=lfs -text
+*.fxl filter=lfs diff=lfs merge=lfs -text
+*.gfx filter=lfs diff=lfs merge=lfs -text
+*.gif filter=lfs diff=lfs merge=lfs -text
+*.grd filter=lfs diff=lfs merge=lfs -text
+*.i_caf filter=lfs diff=lfs merge=lfs -text
+*.icns filter=lfs diff=lfs merge=lfs -text
+*.ico filter=lfs diff=lfs merge=lfs -text
+*.ik filter=lfs diff=lfs merge=lfs -text
+*.img filter=lfs diff=lfs merge=lfs -text
+*.jar filter=lfs diff=lfs merge=lfs -text
+*.jpeg filter=lfs diff=lfs merge=lfs -text
+*.jpg filter=lfs diff=lfs merge=lfs -text
+*.lib filter=lfs diff=lfs merge=lfs -text
+*.lmg filter=lfs diff=lfs merge=lfs -text
+*.lut filter=lfs diff=lfs merge=lfs -text
+*.ly filter=lfs diff=lfs merge=lfs -text
+*.ma filter=lfs diff=lfs merge=lfs -text
+*.max filter=lfs diff=lfs merge=lfs -text
+*.mb filter=lfs diff=lfs merge=lfs -text
+*.mkv filter=lfs diff=lfs merge=lfs -text
+*.motion filter=lfs diff=lfs merge=lfs -text
+*.motionset filter=lfs diff=lfs merge=lfs -text
+*.mov filter=lfs diff=lfs merge=lfs -text
+*.mp2 filter=lfs diff=lfs merge=lfs -text
+*.mp3 filter=lfs diff=lfs merge=lfs -text
+*.mp4 filter=lfs diff=lfs merge=lfs -text
+*.msi filter=lfs diff=lfs merge=lfs -text
+*.node filter=lfs diff=lfs merge=lfs -text
+*.npz filter=lfs diff=lfs merge=lfs -text
+*.ocm filter=lfs diff=lfs merge=lfs -text
+*.ogg filter=lfs diff=lfs merge=lfs -text
+*.otf filter=lfs diff=lfs merge=lfs -text
+*.pak filter=lfs diff=lfs merge=lfs -text
+*.pcm filter=lfs diff=lfs merge=lfs -text
+*.pdb filter=lfs diff=lfs merge=lfs -text
+*.pdf filter=lfs diff=lfs merge=lfs -text
+*.pkat filter=lfs diff=lfs merge=lfs -text
+*.pkfx filter=lfs diff=lfs merge=lfs -text
+*.pkmm filter=lfs diff=lfs merge=lfs -text
+*.png filter=lfs diff=lfs merge=lfs -text
+*.ppm filter=lfs diff=lfs merge=lfs -text
+*.prototype filter=lfs diff=lfs merge=lfs -text
+*.psd filter=lfs diff=lfs merge=lfs -text
+*.pxheightfield filter=lfs diff=lfs merge=lfs -text
+*.pxmesh filter=lfs diff=lfs merge=lfs -text
+*.sbs filter=lfs diff=lfs merge=lfs -text
+*.sbsar filter=lfs diff=lfs merge=lfs -text
+*.sfo filter=lfs diff=lfs merge=lfs -text
+*.skin filter=lfs diff=lfs merge=lfs -text
+*.smtl filter=lfs diff=lfs merge=lfs -text
+*.so filter=lfs diff=lfs merge=lfs -text
+*.sprite filter=lfs diff=lfs merge=lfs -text
+*.sub filter=lfs diff=lfs merge=lfs -text
+*.tga filter=lfs diff=lfs merge=lfs -text
+*.tif filter=lfs diff=lfs merge=lfs -text
+*.tiff filter=lfs diff=lfs merge=lfs -text
+*.trp filter=lfs diff=lfs merge=lfs -text
+*.ttf filter=lfs diff=lfs merge=lfs -text
+*.usm filter=lfs diff=lfs merge=lfs -text
+*.veg filter=lfs diff=lfs merge=lfs -text
+*.wav filter=lfs diff=lfs merge=lfs -text
+*.webm filter=lfs diff=lfs merge=lfs -text
+*.wem filter=lfs diff=lfs merge=lfs -text
+*.wxs filter=lfs diff=lfs merge=lfs -text
+*.zip filter=lfs diff=lfs merge=lfs -text

+ 1 - 0
.gitignore

@@ -0,0 +1 @@
+_savebackup/

+ 2 - 0
.lfsconfig

@@ -0,0 +1,2 @@
+[lfs]
+url = https://d2kyfnhftdbvun.cloudfront.net/api/v1

+ 46 - 0
CMakeLists.txt

@@ -0,0 +1,46 @@
+#
+# All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
+# its licensors.
+#
+# For complete copyright and license terms please see the LICENSE at the root of this
+# distribution (the "License"). All use of this software is governed by the License,
+# or, if provided, by the license below or the license accompanying this file. Do not
+# remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#
+
+#! Adds the --project-path argument to the VS IDE debugger command arguments
+function(add_vs_debugger_arguments)
+    # Inject the project root into the --project-path argument into the Visual Studio Debugger arguments by defaults
+    list(APPEND app_targets NetSoakTest.GameLauncher NetSoakTest.ServerLauncher)
+    list(APPEND app_targets AssetBuilder AssetProcessor AssetProcessorBatch Editor)
+    foreach(app_target IN LISTS app_targets)
+        if (TARGET ${app_target})
+            set_property(TARGET ${app_target} APPEND PROPERTY VS_DEBUGGER_COMMAND_ARGUMENTS "--project-path=\"${CMAKE_CURRENT_LIST_DIR}\"")
+        endif()
+    endforeach()
+endfunction()
+
+if(NOT PROJECT_NAME)
+    cmake_minimum_required(VERSION 3.19)
+    project(NetSoakTest
+        LANGUAGES C CXX
+        VERSION 1.0.0.0
+    )
+    include(EngineFinder.cmake OPTIONAL)
+    find_package(o3de REQUIRED)
+    o3de_initialize()
+    add_vs_debugger_arguments()
+else()
+    # Add the project_name to global LY_PROJECTS_TARGET_NAME property
+    file(READ "${CMAKE_CURRENT_LIST_DIR}/project.json" project_json)
+
+    string(JSON project_target_name ERROR_VARIABLE json_error GET ${project_json} "project_name")
+    if(json_error)
+        message(FATAL_ERROR "Unable to read key 'project_name' from 'project.json'")
+    endif()
+
+    set_property(GLOBAL APPEND PROPERTY LY_PROJECTS_TARGET_NAME ${project_target_name})
+
+    add_subdirectory(Gem)
+endif()

+ 56 - 0
EngineFinder.cmake

@@ -0,0 +1,56 @@
+# {BEGIN_LICENSE}
+#
+# All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
+# its licensors.
+#
+# For complete copyright and license terms please see the LICENSE at the root of this
+# distribution (the "License"). All use of this software is governed by the License,
+# or, if provided, by the license below or the license accompanying this file. Do not
+# remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#
+# {END_LICENSE}
+
+# This file is copied during engine registration. Edits to this file will be lost next
+# time a registration happens.
+include_guard()
+
+# Read the engine name from the project_json file
+file(READ ${CMAKE_CURRENT_LIST_DIR}/project.json project_json)
+string(JSON LY_ENGINE_NAME_TO_USE ERROR_VARIABLE json_error GET ${project_json} engine)
+if(json_error)
+    message(FATAL_ERROR "Unable to read key 'engine' from 'project.json', error: ${json_error}")
+endif()
+
+# Read the list of paths from ~.o3de/o3de_manifest.json
+file(TO_CMAKE_PATH "$ENV{USERPROFILE}" home_directory) # Windows
+if((NOT home_directory) OR (NOT EXISTS ${home_directory}))
+    file(TO_CMAKE_PATH "$ENV{HOME}" home_directory)# Unix
+endif()
+
+if (NOT home_directory)
+    message(FATAL_ERROR "Cannot find user home directory, the o3de manifest cannot be found")
+endif()
+# Set manifest path to path in the user home directory
+set(manifest_path ${home_directory}/.o3de/o3de_manifest.json)
+
+if(EXISTS ${manifest_path})
+    file(READ ${manifest_path} manifest_json)
+    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}', error: ${json_error}")
+    endif()
+    math(EXPR engines_count "${engines_count}-1")
+    foreach(engine_path_index RANGE ${engines_count})
+        string(JSON engine_path ERROR_VARIABLE json_error GET ${manifest_json} engines ${engine_path_index})
+        if(${json_error})
+            message(FATAL_ERROR "Unable to read engines[${engine_path_index}] '${manifest_path}', error: ${json_error}")
+        endif()
+        list(APPEND CMAKE_MODULE_PATH "${engine_path}/cmake")
+    endforeach()
+endif()
+
+
+
+
+

+ 12 - 0
Gem/CMakeLists.txt

@@ -0,0 +1,12 @@
+#
+# All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
+# its licensors.
+#
+# For complete copyright and license terms please see the LICENSE at the root of this
+# distribution (the "License"). All use of this software is governed by the License,
+# or, if provided, by the license below or the license accompanying this file. Do not
+# remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#
+
+add_subdirectory(Code)

+ 99 - 0
Gem/Code/CMakeLists.txt

@@ -0,0 +1,99 @@
+#
+# All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
+# its licensors.
+#
+# For complete copyright and license terms please see the LICENSE at the root of this
+# distribution (the "License"). All use of this software is governed by the License,
+# or, if provided, by the license below or the license accompanying this file. Do not
+# remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#
+
+ly_get_list_relative_pal_filename(pal_dir ${CMAKE_CURRENT_LIST_DIR}/Platform/${PAL_PLATFORM_NAME})
+
+ly_add_target(
+    NAME NetSoakTest.Static STATIC
+    NAMESPACE Gem
+    FILES_CMAKE
+        netsoaktest_files.cmake
+        netsoaktest_autogen_files.cmake
+        ${pal_dir}/netsoaktest_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
+    INCLUDE_DIRECTORIES
+        PRIVATE
+            Source
+            AZ::AzNetworking
+            .
+        PUBLIC
+            Include
+    BUILD_DEPENDENCIES
+        PUBLIC
+            AZ::AzGameFramework
+            AZ::AzNetworking
+    AUTOGEN_RULES
+        *.AutoPackets.xml,AutoPackets_Header.jinja,$path/$fileprefix.AutoPackets.h
+        *.AutoPackets.xml,AutoPackets_Inline.jinja,$path/$fileprefix.AutoPackets.inl
+        *.AutoPackets.xml,AutoPackets_Source.jinja,$path/$fileprefix.AutoPackets.cpp
+        *.AutoPackets.xml,AutoPacketDispatcher_Header.jinja,$path/$fileprefix.AutoPacketDispatcher.h
+        *.AutoPackets.xml,AutoPacketDispatcher_Inline.jinja,$path/$fileprefix.AutoPacketDispatcher.inl
+)
+
+ly_add_target(
+    NAME NetSoakTest ${PAL_TRAIT_MONOLITHIC_DRIVEN_MODULE_TYPE}
+    NAMESPACE Gem
+    OUTPUT_NAME Gem.NetSoakTest.5111dee500ed4812a7905093a73d3837.v0.1.0
+    FILES_CMAKE
+        netsoaktest_shared_files.cmake
+    INCLUDE_DIRECTORIES
+        PRIVATE
+            Source
+            .
+    BUILD_DEPENDENCIES
+        PRIVATE
+            Gem::NetSoakTest.Static
+)
+
+################################################################################
+# Gem dependencies
+################################################################################
+
+if(PAL_TRAIT_BUILD_HOST_TOOLS)
+    ly_add_project_dependencies(
+        PROJECT_NAME
+            NetSoakTest
+        TARGETS
+            AssetBuilder
+            AssetProcessor
+            AssetProcessorBatch
+            Editor
+        DEPENDENCIES_FILES
+            tool_dependencies.cmake
+    )
+endif()
+
+if(PAL_TRAIT_BUILD_SERVER_SUPPORTED)
+    ly_add_target(
+        NAME NetSoakTest.Server ${PAL_TRAIT_MONOLITHIC_DRIVEN_MODULE_TYPE}
+        NAMESPACE Gem
+        OUTPUT_NAME Gem.NetSoakTest.Server.5111dee500ed4812a7905093a73d3837.v0.1.0
+        FILES_CMAKE
+            netsoaktest_shared_files.cmake
+        INCLUDE_DIRECTORIES
+            PRIVATE
+                Source
+                .
+        BUILD_DEPENDENCIES
+            PRIVATE
+                Gem::NetSoakTest.Static
+    )
+
+    ly_add_project_dependencies(
+        PROJECT_NAME
+            NetSoakTest
+        TARGETS
+            NetSoakTest.ServerLauncher
+        DEPENDENCIES_FILES
+            runtime_dependencies.cmake
+    )
+    set_property(GLOBAL APPEND PROPERTY LY_LAUNCHER_SERVER_PROJECTS NetSoakTest)
+
+endif()

+ 31 - 0
Gem/Code/Include/NetSoakTest/NetSoakTestBus.h

@@ -0,0 +1,31 @@
+/*
+ * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
+ * its licensors.
+ *
+ * For complete copyright and license terms please see the LICENSE at the root of this
+ * distribution (the "License"). All use of this software is governed by the License,
+ * or, if provided, by the license below or the license accompanying this file. Do not
+ * remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *
+ */
+#pragma once
+
+#include <AzCore/EBus/EBus.h>
+
+namespace NetSoakTest
+{
+    class NetSoakTestRequests
+        : public AZ::EBusTraits
+    {
+    public:
+        //////////////////////////////////////////////////////////////////////////
+        // EBusTraits overrides
+        static const AZ::EBusHandlerPolicy HandlerPolicy = AZ::EBusHandlerPolicy::Single;
+        static const AZ::EBusAddressPolicy AddressPolicy = AZ::EBusAddressPolicy::Single;
+        //////////////////////////////////////////////////////////////////////////
+
+        // Put your public methods here
+    };
+    using NetSoakTestRequestBus = AZ::EBus<NetSoakTestRequests>;
+} // namespace NetSoakTest

+ 13 - 0
Gem/Code/Platform/Android/netsoaktest_android_files.cmake

@@ -0,0 +1,13 @@
+#
+# All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
+# its licensors.
+#
+# For complete copyright and license terms please see the LICENSE at the root of this
+# distribution (the "License"). All use of this software is governed by the License,
+# or, if provided, by the license below or the license accompanying this file. Do not
+# remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#
+
+set(FILES
+)

+ 13 - 0
Gem/Code/Platform/Linux/netsoaktest_linux_files.cmake

@@ -0,0 +1,13 @@
+#
+# All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
+# its licensors.
+#
+# For complete copyright and license terms please see the LICENSE at the root of this
+# distribution (the "License"). All use of this software is governed by the License,
+# or, if provided, by the license below or the license accompanying this file. Do not
+# remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#
+
+set(FILES
+)

+ 14 - 0
Gem/Code/Platform/Mac/netsoaktest_mac_files.cmake

@@ -0,0 +1,14 @@
+#
+# All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
+# its licensors.
+#
+# For complete copyright and license terms please see the LICENSE at the root of this
+# distribution (the "License"). All use of this software is governed by the License,
+# or, if provided, by the license below or the license accompanying this file. Do not
+# remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#
+
+set(FILES
+    ../../../Resources/MacLauncher/Info.plist
+)

+ 13 - 0
Gem/Code/Platform/Windows/netsoaktest_windows_files.cmake

@@ -0,0 +1,13 @@
+#
+# All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
+# its licensors.
+#
+# For complete copyright and license terms please see the LICENSE at the root of this
+# distribution (the "License"). All use of this software is governed by the License,
+# or, if provided, by the license below or the license accompanying this file. Do not
+# remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#
+
+set(FILES
+)

+ 14 - 0
Gem/Code/Platform/iOS/netsoaktest_ios_files.cmake

@@ -0,0 +1,14 @@
+#
+# All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
+# its licensors.
+#
+# For complete copyright and license terms please see the LICENSE at the root of this
+# distribution (the "License"). All use of this software is governed by the License,
+# or, if provided, by the license below or the license accompanying this file. Do not
+# remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#
+
+set(FILES
+    ../../../Resources/IOSLauncher/Info.plist
+)

+ 14 - 0
Gem/Code/Source/AutoGen/NetSoakTest.AutoPackets.xml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<PacketGroup Name="NetSoakTestPackets" PacketStart="CorePackets::PacketType::MAX">
+    <Include File="AzNetworking/AutoGen/CorePackets.AutoPackets.h" />
+    <Include File="NetSoakTestTypes.h" />
+    
+    <Packet Name="Small" Desc="2 byte payload packet">
+        <Member Type="uint16_t" Name="smallDatum" Init="0" />
+    </Packet>
+
+    <Packet Name="Large" Desc="Large packet to test fragmenting">
+        <Member Type="NetSoakTest::TestNetworkBuffer" Name="largeDatum"/>
+    </Packet>
+</PacketGroup>

+ 51 - 0
Gem/Code/Source/NetSoakTestModule.cpp

@@ -0,0 +1,51 @@
+/*
+ * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
+ * its licensors.
+ *
+ * For complete copyright and license terms please see the LICENSE at the root of this
+ * distribution (the "License"). All use of this software is governed by the License,
+ * or, if provided, by the license below or the license accompanying this file. Do not
+ * remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *
+ */
+
+#include <AzCore/Memory/SystemAllocator.h>
+#include <AzCore/Module/Module.h>
+
+#include "NetSoakTestSystemComponent.h"
+
+namespace NetSoakTest
+{
+    class NetSoakTestModule
+        : public AZ::Module
+    {
+    public:
+        AZ_RTTI(NetSoakTestModule, "{F690318C-AA4A-4207-A69F-92A476FC8213}", AZ::Module);
+        AZ_CLASS_ALLOCATOR(NetSoakTestModule, AZ::SystemAllocator, 0);
+
+        NetSoakTestModule()
+            : AZ::Module()
+        {
+            // Push results of [MyComponent]::CreateDescriptor() into m_descriptors here.
+            m_descriptors.insert(m_descriptors.end(), {
+                NetSoakTestSystemComponent::CreateDescriptor(),
+            });
+        }
+
+        /**
+         * Add required SystemComponents to the SystemEntity.
+         */
+        AZ::ComponentTypeList GetRequiredSystemComponents() const override
+        {
+            return AZ::ComponentTypeList{
+                azrtti_typeid<NetSoakTestSystemComponent>(),
+            };
+        }
+    };
+}
+
+// DO NOT MODIFY THIS LINE UNLESS YOU RENAME THE GEM
+// The first parameter should be GemName_GemIdLower
+// The second should be the fully qualified name of the class above
+AZ_DECLARE_MODULE_CLASS(Gem_NetSoakTest, NetSoakTest::NetSoakTestModule)

+ 245 - 0
Gem/Code/Source/NetSoakTestSystemComponent.cpp

@@ -0,0 +1,245 @@
+/*
+ * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
+ * its licensors.
+ *
+ * For complete copyright and license terms please see the LICENSE at the root of this
+ * distribution (the "License"). All use of this software is governed by the License,
+ * or, if provided, by the license below or the license accompanying this file. Do not
+ * remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *
+ */
+
+#include <AzCore/Serialization/SerializeContext.h>
+#include <AzCore/Serialization/EditContext.h>
+#include <AzCore/Serialization/EditContextConstants.inl>
+
+#include <AzNetworking/Framework/INetworking.h>
+
+#include "NetSoakTestSystemComponent.h"
+
+namespace AZ::ConsoleTypeHelpers
+{
+    template <>
+    inline CVarFixedString ValueToString(const AzNetworking::ProtocolType& value)
+    {
+        return (value == AzNetworking::ProtocolType::Tcp) ? "tcp" : "udp";
+    }
+
+    template <>
+    inline bool StringSetToValue<AzNetworking::ProtocolType>(AzNetworking::ProtocolType& outValue, const ConsoleCommandContainer& arguments)
+    {
+        if (!arguments.empty())
+        {
+            if (arguments.front() == "tcp")
+            {
+                outValue = AzNetworking::ProtocolType::Tcp;
+                return true;
+            }
+            else if (arguments.front() == "udp")
+            {
+                outValue = AzNetworking::ProtocolType::Udp;
+                return true;
+            }
+        }
+        return false;
+    }
+}
+
+namespace NetSoakTest
+{
+    using namespace AzNetworking;
+
+    static const AZStd::string_view s_networkInterfaceName("NetSoakNetworkInterface");
+    static const AZStd::string_view s_loopbackInterfaceName("NetSoakLoopbackInterface");
+
+    AZ_CVAR(AZ::TimeMs, soak_latencyms, AZ::TimeMs(0), nullptr, AZ::ConsoleFunctorFlags::DontReplicate, "Simulated connection quality latency");
+    AZ_CVAR(AZ::TimeMs, soak_variancems, AZ::TimeMs(0), nullptr, AZ::ConsoleFunctorFlags::DontReplicate, "Simulated connection quality variance");
+    AZ_CVAR(uint16_t, soak_losspercentage, 0, nullptr, AZ::ConsoleFunctorFlags::DontReplicate, "Simulated connection quality packet drop rate");
+    AZ_CVAR(uint16_t, soak_port, 30090, nullptr, AZ::ConsoleFunctorFlags::DontReplicate, "The port that this soak test will bind to for game traffic");
+    AZ_CVAR(ProtocolType, soak_protocol, ProtocolType::Udp, nullptr, AZ::ConsoleFunctorFlags::DontReplicate, "Soak test protocol");
+
+    void NetSoakTestSystemComponent::Reflect(AZ::ReflectContext* context)
+    {
+        if (AZ::SerializeContext* serialize = azrtti_cast<AZ::SerializeContext*>(context))
+        {
+            serialize->Class<NetSoakTestSystemComponent, AZ::Component>()
+                ->Version(0)
+                ;
+
+            if (AZ::EditContext* ec = serialize->GetEditContext())
+            {
+                ec->Class<NetSoakTestSystemComponent>("NetSoakTest", "[Description of functionality provided by this System Component]")
+                    ->ClassElement(AZ::Edit::ClassElements::EditorData, "")
+                        ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("System"))
+                        ->Attribute(AZ::Edit::Attributes::AutoExpand, true)
+                    ;
+            }
+        }
+    }
+
+    void NetSoakTestSystemComponent::GetProvidedServices(AZ::ComponentDescriptor::DependencyArrayType& provided)
+    {
+        provided.push_back(AZ_CRC_CE("NetSoakTestService"));
+    }
+
+    void NetSoakTestSystemComponent::GetIncompatibleServices(AZ::ComponentDescriptor::DependencyArrayType& incompatible)
+    {
+        incompatible.push_back(AZ_CRC_CE("NetSoakTestService"));
+    }
+
+    void NetSoakTestSystemComponent::GetRequiredServices(AZ::ComponentDescriptor::DependencyArrayType& required)
+    {
+        required.push_back(AZ_CRC_CE("NetworkingService"));
+    }
+
+    void NetSoakTestSystemComponent::GetDependentServices(AZ::ComponentDescriptor::DependencyArrayType& dependent)
+    {
+        AZ_UNUSED(dependent);
+    }
+
+    void NetSoakTestSystemComponent::Init()
+    {
+    }
+
+    void NetSoakTestSystemComponent::Activate()
+    {
+        m_networkInterface = AZ::Interface<INetworking>::Get()->CreateNetworkInterface(AZ::Name(s_networkInterfaceName), soak_protocol, TrustZone::ExternalClientToServer, *this);
+        m_loopbackInterface = AZ::Interface<INetworking>::Get()->CreateNetworkInterface(AZ::Name(s_loopbackInterfaceName), soak_protocol, TrustZone::ExternalClientToServer, *this);
+
+        m_networkInterface->Listen(soak_port);
+        constexpr AZ::CVarFixedString localAddress = "127.0.0.1";
+        const IpAddress ipAddress(localAddress.c_str(), soak_port, m_loopbackInterface->GetType());
+        m_loopbackInterface->Connect(ipAddress);
+
+        NetSoakTestRequestBus::Handler::BusConnect();
+        AZ::TickBus::Handler::BusConnect();
+    }
+
+    void NetSoakTestSystemComponent::Deactivate()
+    {
+        AZ::TickBus::Handler::BusDisconnect();
+        NetSoakTestRequestBus::Handler::BusDisconnect();
+    }
+
+    void NetSoakTestSystemComponent::OnTick(float deltaTime, [[maybe_unused]] AZ::ScriptTimePoint time)
+    {
+        AZ::TimeMs elapsedMs = aznumeric_cast<AZ::TimeMs>(aznumeric_cast<int64_t>(deltaTime / 1000.0f));
+
+        NetSoakTestPackets::Small packet;
+
+        auto visitor = [&packet](IConnection& connection)
+        {
+            connection.SendReliablePacket(packet);
+
+            uint32_t rand_int = rand();
+            if (rand_int % 10 == 1)
+            {
+                NetSoakTest::TestNetworkBuffer buffer = NetSoakTest::TestNetworkBuffer(NetSoakTest::MassiveBuffer);
+                NetSoakTestPackets::Large* large = new NetSoakTestPackets::Large(buffer);
+                connection.SendReliablePacket(*large);
+                delete large;
+            }
+            else if (rand_int % 10 == 2)
+            {
+                NetSoakTestPackets::Small unreliable;
+                // Flag the unreliable packet by setting a specific datum value
+                unreliable.SetSmallDatum(2);
+                connection.SendUnreliablePacket(unreliable);
+            }
+            
+        };
+
+        m_networkInterface->GetConnectionSet().VisitConnections(visitor);
+        m_loopbackInterface->GetConnectionSet().VisitConnections(visitor);
+    }
+
+    int NetSoakTestSystemComponent::GetTickOrder()
+    {
+        // Tick immediately after the multiplayer system component
+        return AZ::TICK_PLACEMENT + 2;
+    }
+
+    bool NetSoakTestSystemComponent::HandleRequest([[maybe_unused]] IConnection* connection,
+        [[maybe_unused]] const IPacketHeader& packetHeader, [[maybe_unused]] const NetSoakTestPackets::Small& packet)
+    {
+        return true;
+    }
+
+    bool NetSoakTestSystemComponent::HandleRequest([[maybe_unused]] IConnection* connection,
+        [[maybe_unused]] const IPacketHeader& packetHeader, [[maybe_unused]] const NetSoakTestPackets::Large& packet)
+    {
+        return true;
+    }
+
+    ConnectResult NetSoakTestSystemComponent::ValidateConnect([[maybe_unused]] const IpAddress& remoteAddress,
+        [[maybe_unused]] const IPacketHeader& packetHeader, [[maybe_unused]] ISerializer& serializer)
+    {
+        return ConnectResult::Accepted;
+    }
+
+    void NetSoakTestSystemComponent::OnConnect(IConnection* connection)
+    {
+        ConnectionQuality testQuality;
+        testQuality.m_latencyMs = soak_latencyms;
+        testQuality.m_lossPercentage = soak_losspercentage;
+        testQuality.m_varianceMs = soak_variancems;
+        connection->SetConnectionQuality(testQuality);
+
+        if (connection->GetConnectionRole() == ConnectionRole::Connector)
+        {
+            AZLOG_INFO("New outgoing connection to remote address: %s", connection->GetRemoteAddress().GetString().c_str());
+        }
+        else
+        {
+            AZLOG_INFO("New incoming connection from remote address: %s", connection->GetRemoteAddress().GetString().c_str());
+        }
+    }
+
+    bool NetSoakTestSystemComponent::OnPacketReceived([[maybe_unused]] IConnection* connection, [[maybe_unused]] const IPacketHeader& packetHeader, [[maybe_unused]] ISerializer& serializer)
+    {
+        return NetSoakTestPackets::DispatchPacket(connection, packetHeader, serializer, *this);
+    }
+
+    void NetSoakTestSystemComponent::OnPacketLost([[maybe_unused]] IConnection* connection, [[maybe_unused]] PacketId packetId)
+    {
+        ;
+    }
+
+    void NetSoakTestSystemComponent::OnDisconnect(IConnection* connection, [[maybe_unused]] DisconnectReason reason, [[maybe_unused]] AzNetworking::TerminationEndpoint endpoint)
+    {
+        AZLOG_INFO("Disconnected from remote address: %s", connection->GetRemoteAddress().GetString().c_str());
+    }
+
+    void DumpSoakStats([[maybe_unused]] const AZ::ConsoleCommandContainer& arguments)
+    {
+        AZStd::vector<INetworkInterface*> networkInterfaces;
+        networkInterfaces.push_back(AZ::Interface<INetworking>::Get()->RetrieveNetworkInterface(AZ::Name(s_networkInterfaceName)));
+        networkInterfaces.push_back(AZ::Interface<INetworking>::Get()->RetrieveNetworkInterface(AZ::Name(s_loopbackInterfaceName)));
+
+        for (auto& networkInterface : networkInterfaces)
+        {
+            const char* protocol = networkInterface->GetType() == ProtocolType::Tcp ? "Tcp" : "Udp";
+            const char* trustZone = networkInterface->GetTrustZone() == TrustZone::ExternalClientToServer ? "ExternalClientToServer" : "InternalServerToServer";
+            const uint32_t port = aznumeric_cast<uint32_t>(networkInterface->GetPort());
+            AZLOG_INFO("%sNetworkInterface: %s - open to %s on port %u", protocol, networkInterface->GetName().GetCStr(), trustZone, port);
+
+            const NetworkInterfaceMetrics& metrics = networkInterface->GetMetrics();
+            AZLOG_INFO(" - Total time spent updating in milliseconds: %lld", aznumeric_cast<AZ::s64>(metrics.m_updateTimeMs));
+            AZLOG_INFO(" - Total number of connections: %llu", aznumeric_cast<AZ::u64>(metrics.m_connectionCount));
+            AZLOG_INFO(" - Total send time in milliseconds: %lld", aznumeric_cast<AZ::s64>(metrics.m_sendTimeMs));
+            AZLOG_INFO(" - Total sent packets: %llu", aznumeric_cast<AZ::s64>(metrics.m_sendPackets));
+            AZLOG_INFO(" - Total sent bytes after compression: %llu", aznumeric_cast<AZ::u64>(metrics.m_sendBytes));
+            AZLOG_INFO(" - Total sent bytes before compression: %llu", aznumeric_cast<AZ::u64>(metrics.m_sendBytesUncompressed));
+            AZLOG_INFO(" - Total sent compressed packets without benefit: %llu", aznumeric_cast<AZ::u64>(metrics.m_sendCompressedPacketsNoGain));
+            AZLOG_INFO(" - Total gain from packet compression: %lld", aznumeric_cast<AZ::s64>(metrics.m_sendBytesCompressedDelta));
+            AZLOG_INFO(" - Total packets resent: %llu", aznumeric_cast<AZ::u64>(metrics.m_resentPackets));
+            AZLOG_INFO(" - Total receive time in milliseconds: %lld", aznumeric_cast<AZ::s64>(metrics.m_recvTimeMs));
+            AZLOG_INFO(" - Total received packets: %llu", aznumeric_cast<AZ::u64>(metrics.m_recvPackets));
+            AZLOG_INFO(" - Total received bytes after compression: %llu", aznumeric_cast<AZ::u64>(metrics.m_recvBytes));
+            AZLOG_INFO(" - Total received bytes before compression: %llu", aznumeric_cast<AZ::u64>(metrics.m_recvBytesUncompressed));
+            AZLOG_INFO(" - Total packets discarded due to load: %llu", aznumeric_cast<AZ::u64>(metrics.m_discardedPackets));
+        }
+    }
+    AZ_CONSOLEFREEFUNC(DumpSoakStats, AZ::ConsoleFunctorFlags::Null, "Dump soak test networking stats out");
+}

+ 81 - 0
Gem/Code/Source/NetSoakTestSystemComponent.h

@@ -0,0 +1,81 @@
+/*
+ * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
+ * its licensors.
+ *
+ * For complete copyright and license terms please see the LICENSE at the root of this
+ * distribution (the "License"). All use of this software is governed by the License,
+ * or, if provided, by the license below or the license accompanying this file. Do not
+ * remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *
+ */
+#pragma once
+
+#include <AzCore/Component/Component.h>
+#include <AzCore/Component/TickBus.h>
+
+#include <AzNetworking/ConnectionLayer/IConnectionListener.h>
+
+#include <NetSoakTest/NetSoakTestBus.h>
+
+#include "Source/AutoGen/NetSoakTest.AutoPacketDispatcher.h"
+
+namespace AzNetworking
+{
+    class INetworkInterface;
+}
+
+namespace NetSoakTest
+{
+    class NetSoakTestSystemComponent
+        : public AZ::Component
+        , public AZ::TickBus::Handler
+        , public AzNetworking::IConnectionListener
+        , protected NetSoakTestRequestBus::Handler
+    {
+    public:
+        AZ_COMPONENT(NetSoakTestSystemComponent, "{C048F4A4-A1BA-4673-B668-967B587F2275}");
+
+        static void Reflect(AZ::ReflectContext* context);
+
+        static void GetProvidedServices(AZ::ComponentDescriptor::DependencyArrayType& provided);
+        static void GetIncompatibleServices(AZ::ComponentDescriptor::DependencyArrayType& incompatible);
+        static void GetRequiredServices(AZ::ComponentDescriptor::DependencyArrayType& required);
+        static void GetDependentServices(AZ::ComponentDescriptor::DependencyArrayType& dependent);
+
+        bool HandleRequest(AzNetworking::IConnection* connection, const AzNetworking::IPacketHeader& packetHeader, const NetSoakTestPackets::Small& packet);
+        bool HandleRequest(AzNetworking::IConnection* connection, const AzNetworking::IPacketHeader& packetHeader, const NetSoakTestPackets::Large& packet);
+
+    protected:
+        ////////////////////////////////////////////////////////////////////////
+        // NetSoakTestRequestBus interface implementation
+
+        ////////////////////////////////////////////////////////////////////////
+
+        ////////////////////////////////////////////////////////////////////////
+        // AZ::Component interface implementation
+        void Init() override;
+        void Activate() override;
+        void Deactivate() override;
+        ////////////////////////////////////////////////////////////////////////
+
+        
+        // AZ::TickBus::Handler overrides
+        void OnTick(float deltaTime, AZ::ScriptTimePoint time) override;
+        int GetTickOrder() override;
+        ////////////////////////////////////////////////////////////////////////
+
+        ////////////////////////////////////////////////////////////////////////
+        // IConnectionListener interface
+        AzNetworking::ConnectResult ValidateConnect(const AzNetworking::IpAddress& remoteAddress, const AzNetworking::IPacketHeader& packetHeader, AzNetworking::ISerializer& serializer) override;
+        void OnConnect(AzNetworking::IConnection* connection) override;
+        bool OnPacketReceived(AzNetworking::IConnection* connection, const AzNetworking::IPacketHeader& packetHeader, AzNetworking::ISerializer& serializer) override;
+        void OnPacketLost(AzNetworking::IConnection* connection, AzNetworking::PacketId packetId) override;
+        void OnDisconnect(AzNetworking::IConnection* connection, AzNetworking::DisconnectReason reason, AzNetworking::TerminationEndpoint endpoint) override;
+        ////////////////////////////////////////////////////////////////////////
+
+    private:
+        AzNetworking::INetworkInterface* m_networkInterface = nullptr;
+        AzNetworking::INetworkInterface* m_loopbackInterface = nullptr;
+    };
+}

+ 41 - 0
Gem/Code/Source/NetSoakTestTypes.h

@@ -0,0 +1,41 @@
+/*
+* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
+* its licensors.
+*
+* For complete copyright and license terms please see the LICENSE at the root of this
+* distribution (the "License"). All use of this software is governed by the License,
+* or, if provided, by the license below or the license accompanying this file. Do not
+* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*
+*/
+
+#pragma once
+
+#include <AzCore/RTTI/TypeSafeIntegral.h>
+#include <AzCore/std/string/fixed_string.h>
+
+namespace NetSoakTest
+{
+    AZ_TYPE_SAFE_INTEGRAL(HostId, uint32_t);
+    static constexpr HostId InvalidHostId = static_cast<HostId>(-1);
+    static constexpr size_t TestSize = 6400;
+
+    using TestNetworkBuffer = AZStd::basic_fixed_string<char, TestSize, AZStd::char_traits<char>>;
+
+    constexpr TestNetworkBuffer CreateMassiveBuffer()
+    {
+        constexpr char hexchar[] = "0123456789ABCDEF";
+
+        TestNetworkBuffer rBuffer;
+        for (int i = 0; i < TestSize; ++i)
+        {
+            rBuffer.append(1, hexchar[i % (sizeof(hexchar) - 1)]);
+        }
+
+        return rBuffer;
+    }
+    constexpr TestNetworkBuffer MassiveBuffer = CreateMassiveBuffer();
+}
+
+AZ_TYPE_SAFE_INTEGRAL_SERIALIZEBINDING(NetSoakTest::HostId);

+ 18 - 0
Gem/Code/netsoaktest_autogen_files.cmake

@@ -0,0 +1,18 @@
+#
+# All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
+# its licensors.
+#
+# For complete copyright and license terms please see the LICENSE at the root of this
+# distribution (the "License"). All use of this software is governed by the License,
+# or, if provided, by the license below or the license accompanying this file. Do not
+# remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#
+
+set(FILES
+    ${LY_ROOT_FOLDER}/Code/Framework/AzNetworking/AzNetworking/AutoGen/AutoPackets_Header.jinja
+    ${LY_ROOT_FOLDER}/Code/Framework/AzNetworking/AzNetworking/AutoGen/AutoPackets_Inline.jinja
+    ${LY_ROOT_FOLDER}/Code/Framework/AzNetworking/AzNetworking/AutoGen/AutoPackets_Source.jinja
+    ${LY_ROOT_FOLDER}/Code/Framework/AzNetworking/AzNetworking/AutoGen/AutoPacketDispatcher_Header.jinja
+    ${LY_ROOT_FOLDER}/Code/Framework/AzNetworking/AzNetworking/AutoGen/AutoPacketDispatcher_Inline.jinja
+)

+ 18 - 0
Gem/Code/netsoaktest_files.cmake

@@ -0,0 +1,18 @@
+#
+# All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
+# its licensors.
+#
+# For complete copyright and license terms please see the LICENSE at the root of this
+# distribution (the "License"). All use of this software is governed by the License,
+# or, if provided, by the license below or the license accompanying this file. Do not
+# remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#
+
+set(FILES
+    Include/NetSoakTest/NetSoakTestBus.h
+    Source/NetSoakTestSystemComponent.cpp
+    Source/NetSoakTestSystemComponent.h
+    Source/NetSoakTestTypes.h
+    Source/AutoGen/NetSoakTest.AutoPackets.xml
+)

+ 14 - 0
Gem/Code/netsoaktest_ios_files.cmake

@@ -0,0 +1,14 @@
+#
+# All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
+# its licensors.
+#
+# For complete copyright and license terms please see the LICENSE at the root of this
+# distribution (the "License"). All use of this software is governed by the License,
+# or, if provided, by the license below or the license accompanying this file. Do not
+# remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#
+
+set(FILES
+    ../Resources/IOSLauncher/Info.plist
+)

+ 14 - 0
Gem/Code/netsoaktest_shared_files.cmake

@@ -0,0 +1,14 @@
+#
+# All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
+# its licensors.
+#
+# For complete copyright and license terms please see the LICENSE at the root of this
+# distribution (the "License"). All use of this software is governed by the License,
+# or, if provided, by the license below or the license accompanying this file. Do not
+# remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#
+
+set(FILES
+    Source/NetSoakTestModule.cpp
+)

+ 15 - 0
Gem/Code/runtime_dependencies.cmake

@@ -0,0 +1,15 @@
+#
+# All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
+# its licensors.
+#
+# For complete copyright and license terms please see the LICENSE at the root of this
+# distribution (the "License"). All use of this software is governed by the License,
+# or, if provided, by the license below or the license accompanying this file. Do not
+# remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#
+
+set(GEM_DEPENDENCIES
+    Gem::NetSoakTest
+    Gem::Multiplayer
+)

+ 23 - 0
Gem/Code/tool_dependencies.cmake

@@ -0,0 +1,23 @@
+#
+# All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
+# its licensors.
+#
+# For complete copyright and license terms please see the LICENSE at the root of this
+# distribution (the "License"). All use of this software is governed by the License,
+# or, if provided, by the license below or the license accompanying this file. Do not
+# remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#
+
+# Extracted from Editor.xml
+set(GEM_DEPENDENCIES
+    Gem::NetSoakTest
+    Gem::Multiplayer
+    Gem::LyShine.Editor
+    Gem::Maestro.Editor
+    Gem::SceneProcessing.Editor
+    Gem::ImageProcessing.Editor
+    Gem::LmbrCentral.Editor
+    Gem::TextureAtlas
+    Gem::Camera.Editor
+)

+ 3 - 0
Gem/Resources/CryEngineLogoLauncher.bmp

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

+ 3 - 0
Gem/Resources/GameSDK.ico

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

+ 116 - 0
Gem/Resources/IOSLauncher/Images.xcassets/CMakeTestbedAppIcon.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
Gem/Resources/IOSLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/iPadAppIcon152x152.png

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

+ 3 - 0
Gem/Resources/IOSLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/iPadAppIcon76x76.png

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

+ 3 - 0
Gem/Resources/IOSLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/iPadProAppIcon167x167.png

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

+ 3 - 0
Gem/Resources/IOSLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/iPadSettingsIcon29x29.png

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

+ 3 - 0
Gem/Resources/IOSLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/iPadSettingsIcon58x58.png

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

+ 3 - 0
Gem/Resources/IOSLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/iPadSpotlightIcon40x40.png

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

+ 3 - 0
Gem/Resources/IOSLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/iPadSpotlightIcon80x80.png

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

+ 3 - 0
Gem/Resources/IOSLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/iPhoneAppIcon120x120.png

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

+ 3 - 0
Gem/Resources/IOSLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/iPhoneAppIcon180x180.png

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

+ 3 - 0
Gem/Resources/IOSLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/iPhoneSettingsIcon58x58.png

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

+ 3 - 0
Gem/Resources/IOSLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/iPhoneSettingsIcon87x87.png

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

+ 3 - 0
Gem/Resources/IOSLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/iPhoneSpotlightIcon120x120.png

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

+ 3 - 0
Gem/Resources/IOSLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/iPhoneSpotlightIcon80x80.png

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

+ 6 - 0
Gem/Resources/IOSLauncher/Images.xcassets/Contents.json

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

+ 169 - 0
Gem/Resources/IOSLauncher/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
Gem/Resources/IOSLauncher/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1024x768.png

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

+ 3 - 0
Gem/Resources/IOSLauncher/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1536x2048.png

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

+ 3 - 0
Gem/Resources/IOSLauncher/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage2048x1536.png

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

+ 3 - 0
Gem/Resources/IOSLauncher/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage768x1024.png

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

+ 3 - 0
Gem/Resources/IOSLauncher/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x1136.png

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

+ 3 - 0
Gem/Resources/IOSLauncher/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x960.png

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

+ 45 - 0
Gem/Resources/IOSLauncher/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>NetSoakTest</string>
+	<key>CFBundleExecutable</key>
+	<string>NetSoakTest.GameLauncher</string>
+	<key>CFBundleIdentifier</key>
+	<string>com.amazon.lumberyard.NetSoakTest</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>NetSoakTest</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>

+ 68 - 0
Gem/Resources/MacLauncher/Images.xcassets/CMakeTestbedAppIcon.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
Gem/Resources/MacLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/icon_128 _2x.png

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

+ 3 - 0
Gem/Resources/MacLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/icon_128.png

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

+ 3 - 0
Gem/Resources/MacLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/icon_16.png

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

+ 3 - 0
Gem/Resources/MacLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/icon_16_2x.png

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

+ 3 - 0
Gem/Resources/MacLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/icon_256 _2x.png

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

+ 3 - 0
Gem/Resources/MacLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/icon_256.png

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

+ 3 - 0
Gem/Resources/MacLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/icon_32.png

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

+ 3 - 0
Gem/Resources/MacLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/icon_32_2x.png

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

+ 3 - 0
Gem/Resources/MacLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/icon_512.png

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

+ 3 - 0
Gem/Resources/MacLauncher/Images.xcassets/CMakeTestbedAppIcon.appiconset/icon_512_2x.png

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

+ 6 - 0
Gem/Resources/MacLauncher/Images.xcassets/Contents.json

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

+ 24 - 0
Gem/Resources/MacLauncher/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>NetSoakTest</string>
+	<key>CFBundleExecutable</key>
+	<string>NetSoakTest.GameLauncher</string>
+	<key>CFBundleIdentifier</key>
+	<string>com.amazon.NetSoakTest</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleShortVersionString</key>
+	<string>1.5</string>
+	<key>CFBundleSignature</key>
+	<string>LMBR</string>
+	<key>CFBundleVersion</key>
+	<string>1.5</string>
+	<key>LSApplicationCategoryType</key>
+	<string>public.app-category.puzzle-games</string>
+</dict>
+</plist>

+ 10 - 0
Gem/gem.json

@@ -0,0 +1,10 @@
+{
+    "GemFormatVersion": 4,
+    "Uuid": "5111dee500ed4812a7905093a73d3837",
+    "Name": "NetSoakTest",
+    "DisplayName": "NetSoakTest",
+    "Summary": "NetSoakTest Project Gem. Indefinitely tests AzNetworking transport via loopback.",
+    "Tags": ["Game"],
+    "IconPath": "preview.png",
+    "IsGameGem": true
+}

+ 3 - 0
Gem/preview.png

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

+ 3 - 0
Levels/default/default.ly

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

+ 6 - 0
Levels/default/filelist.xml

@@ -0,0 +1,6 @@
+<download name="default" type="Map">
+ <index src="filelist.xml" dest="filelist.xml"/>
+ <files>
+  <file src="level.pak" dest="level.pak" size="40248" md5="bd89c3b7a18fc0e72f66692d003252c8"/>
+ </files>
+</download>

+ 3 - 0
Levels/default/level.pak

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

+ 14 - 0
Levels/default/leveldata/Environment.xml

@@ -0,0 +1,14 @@
+<Environment>
+ <Fog ViewDistance="8000" ViewDistanceLowSpec="1000"/>
+ <Terrain DetailLayersViewDistRatio="1.0" HeightMapAO="0"/>
+ <EnvState WindVector="1,0,0" BreezeGeneration="0" BreezeStrength="1.f" BreezeMovementSpeed="8.f" BreezeVariation="1.f" BreezeLifeTime="15.f" BreezeCount="4" BreezeSpawnRadius="25.f" BreezeSpread="0.f" BreezeRadius="5.f" ConsoleMergedMeshesPool="2750" ShowTerrainSurface="1" SunShadowsMinSpec="1" SunShadowsAdditionalCascadeMinSpec="0" SunShadowsClipPlaneRange="256.0f" SunShadowsClipPlaneRangeShift="0.0f" UseLayersActivation="0" SunLinkedToTOD="1"/>
+ <VolFogShadows Enable="0" EnableForClouds="0"/>
+ <CloudShadows CloudShadowTexture="" CloudShadowSpeed="0,0,0" CloudShadowTiling="1.0" CloudShadowBrightness="1.0" CloudShadowInvert="0"/>
+ <ParticleLighting AmbientMul="1.0" LightsMul="1.0"/>
+ <SkyBox Material="EngineAssets/Materials/Sky/Sky" MaterialLowSpec="EngineAssets/Materials/Sky/Sky" Angle="0" Stretching="0.5"/>
+ <Ocean Material="EngineAssets/Materials/Water/Ocean_default" CausticsDistanceAtten="100.0" CausticDepth="8.0" CausticIntensity="1.0" CausticsTilling="1.0"/>
+ <OceanAnimation WindDirection="1.0" WindSpeed="4.0" WavesAmount="1.5" WavesSize="0.4" WavesSpeed="1.0"/>
+ <Moon Latitude="240.0" Longitude="45.0" Size="0.5" Texture="Textures/Skys/Night/half_moon.dds"/>
+ <DynTexSource Width="256" Height="256"/>
+ <Total_Illumination_v2 Active="0" IntegrationMode="0" NumberOfBounces="1" DiffuseConeWidth="24" ConeMaxLength="12.0" UseLightProbes="0" InjectionMultiplier="1.0" AmbientOffsetRed="1.0" AmbientOffsetGreen="1.0" AmbientOffsetBlue="1.0" AmbientOffsetBias="0.1" Saturation="0.8" SSAOAmount="0.7"/>
+</Environment>

+ 5 - 0
Levels/default/leveldata/GameTokens.xml

@@ -0,0 +1,5 @@
+<GameTokens>
+ <GameTokensLibrary>
+  <LevelLibrary Name="Level"/>
+ </GameTokensLibrary>
+</GameTokens>

+ 3 - 0
Levels/default/leveldata/Heightmap.dat

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

+ 7 - 0
Levels/default/leveldata/TerrainTexture.xml

@@ -0,0 +1,7 @@
+<TerrainTexture TileCountX="1" TileCountY="1" TileResolution="512">
+ <RGBLayer>
+  <Tiles>
+   <tile X="0" Y="0" Size="512"/>
+  </Tiles>
+ </RGBLayer>
+</TerrainTexture>

+ 356 - 0
Levels/default/leveldata/TimeOfDay.xml

@@ -0,0 +1,356 @@
+<TimeOfDay Time="13.5" TimeStart="13.5" TimeEnd="13.5" TimeAnimSpeed="0">
+ <Variable Name="Sun color" Color="0.99989021,0.99946922,0.9991194">
+  <Spline Keys="-0.000628322:(0.783538:0.89627:0.930341):36,0:(0.783538:0.887923:0.921582):36,0.229167:(0.783538:0.879623:0.921582):36,0.25:(0.947307:0.745404:0.577581):36,0.458333:(1:1:1):36,0.5625:(1:1:1):36,0.75:(0.947307:0.745404:0.577581):36,0.770833:(0.783538:0.879623:0.921582):36,1:(0.783538:0.89627:0.930556):36,"/>
+ </Variable>
+ <Variable Name="Sun intensity" Value="92366.68">
+  <Spline Keys="0:1000:36,0.229167:1000:36,0.5:120000:36,0.770833:1000:65572,0.999306:1000:36,"/>
+ </Variable>
+ <Variable Name="Sun specular multiplier" Value="1">
+  <Spline Keys="0:1:36,0.25:1:36,0.5:1:36,0.75:1:36,1:1:36,"/>
+ </Variable>
+ <Variable Name="Fog color" Color="0.27049801,0.47353199,0.83076996">
+  <Spline Keys="0:(0.00651209:0.00972122:0.0137021):36,0.229167:(0.00604883:0.00972122:0.0137021):36,0.25:(0.270498:0.473532:0.83077):36,0.5:(0.270498:0.473532:0.83077):458788,0.75:(0.270498:0.473532:0.83077):36,0.770833:(0.00604883:0.00972122:0.0137021):36,1:(0.00651209:0.00972122:0.0137021):36,"/>
+ </Variable>
+ <Variable Name="Fog color multiplier" Value="1">
+  <Spline Keys="0:0.5:36,0.229167:0.5:36,0.25:1:36,0.5:1:36,0.75:1:36,0.770833:0.5:36,1:0.5:65572,"/>
+ </Variable>
+ <Variable Name="Fog height (bottom)" Value="0">
+  <Spline Keys="0:0:36,0.25:0:36,0.5:0:36,0.75:0:36,1:0:36,"/>
+ </Variable>
+ <Variable Name="Fog layer density (bottom)" Value="1">
+  <Spline Keys="0:1:36,0.25:1:36,0.5:1:36,0.75:1:36,1:1:36,"/>
+ </Variable>
+ <Variable Name="Fog color (top)" Color="0.597202,0.72305501,0.91309899">
+  <Spline Keys="0:(0.00699541:0.00972122:0.0122865):36,0.229167:(0.00699541:0.00972122:0.0122865):36,0.25:(0.597202:0.723055:0.913099):36,0.5:(0.597202:0.723055:0.913099):458788,0.75:(0.597202:0.723055:0.913099):36,0.770833:(0.00699541:0.00972122:0.0122865):36,1:(0.00699541:0.00972122:0.0122865):36,"/>
+ </Variable>
+ <Variable Name="Fog color (top) multiplier" Value="0.88389361">
+  <Spline Keys="-4.40702e-06:0.5:36,0.0297507:0.499195:36,0.229167:0.5:36,0.5:1:36,0.770833:0.5:36,1:0.5:36,"/>
+ </Variable>
+ <Variable Name="Fog height (top)" Value="100.00001">
+  <Spline Keys="0:100:36,0.25:100:36,0.5:100:36,0.75:100:65572,1:100:36,"/>
+ </Variable>
+ <Variable Name="Fog layer density (top)" Value="9.9999997e-05">
+  <Spline Keys="0:0.0001:36,0.25:0.0001:36,0.5:0.0001:65572,0.75:0.0001:36,1:0.0001:36,"/>
+ </Variable>
+ <Variable Name="Fog color height offset" Value="0">
+  <Spline Keys="0:0:36,0.25:0:36,0.5:0:36,0.75:0:36,1:0:65572,"/>
+ </Variable>
+ <Variable Name="Fog color (radial)" Color="0.78592348,0.52744436,0.17234583">
+  <Spline Keys="0:(0:0:0):36,0.229167:(0.00439144:0.00367651:0.00334654):36,0.25:(0.838799:0.564712:0.184475):36,0.5:(0.768151:0.514918:0.168269):458788,0.75:(0.838799:0.564712:0.184475):36,0.770833:(0.00402472:0.00334654:0.00303527):36,1:(0:0:0):36,"/>
+ </Variable>
+ <Variable Name="Fog color (radial) multiplier" Value="6">
+  <Spline Keys="0:0:36,0.25:6:36,0.5:6:36,0.75:6:36,1:0:36,"/>
+ </Variable>
+ <Variable Name="Fog radial size" Value="0.85000002">
+  <Spline Keys="0:0:36,0.25:0.85:65572,0.5:0.85:36,0.75:0.85:36,1:0:36,"/>
+ </Variable>
+ <Variable Name="Fog radial lobe" Value="0.75">
+  <Spline Keys="0:0:36,0.25:0.75:36,0.5:0.75:36,0.75:0.75:65572,1:0:36,"/>
+ </Variable>
+ <Variable Name="Volumetric fog: Final density clamp" Value="1">
+  <Spline Keys="0:1:36,0.25:1:36,0.5:1:65572,0.75:1:36,1:1:36,"/>
+ </Variable>
+ <Variable Name="Volumetric fog: Global density" Value="1.5">
+  <Spline Keys="0:1.5:36,0.25:1.5:36,0.5:1.5:65572,0.75:1.5:36,1:1.5:36,"/>
+ </Variable>
+ <Variable Name="Volumetric fog: Ramp start" Value="25.000002">
+  <Spline Keys="0:25:36,0.25:25:36,0.5:25:65572,0.75:25:36,1:25:36,"/>
+ </Variable>
+ <Variable Name="Volumetric fog: Ramp end" Value="1000.0001">
+  <Spline Keys="0:1000:36,0.25:1000:36,0.5:1000:65572,0.75:1000:36,1:1000:36,"/>
+ </Variable>
+ <Variable Name="Volumetric fog: Ramp influence" Value="0.69999993">
+  <Spline Keys="0:0.7:36,0.25:0.7:36,0.5:0.7:65572,0.75:0.7:36,1:0.7:36,"/>
+ </Variable>
+ <Variable Name="Volumetric fog: Shadow darkening" Value="0.20000002">
+  <Spline Keys="0:0.2:36,0.25:0.2:36,0.5:0.2:65572,0.75:0.2:36,1:0.2:36,"/>
+ </Variable>
+ <Variable Name="Volumetric fog: Shadow darkening sun" Value="0.5">
+  <Spline Keys="0:0.5:36,0.25:0.5:36,0.5:0.5:65572,0.75:0.5:36,1:0.5:36,"/>
+ </Variable>
+ <Variable Name="Volumetric fog: Shadow darkening ambient" Value="1">
+  <Spline Keys="0:1:36,0.25:1:36,0.5:1:65572,0.75:1:36,1:1:36,"/>
+ </Variable>
+ <Variable Name="Volumetric fog: Shadow range" Value="0.10000001">
+  <Spline Keys="0:0.1:36,0.25:0.1:36,0.5:0.1:65572,0.75:0.1:36,1:0.1:36,"/>
+ </Variable>
+ <Variable Name="Volumetric fog 2: Fog height (bottom)" Value="0">
+  <Spline Keys="0:0:0,1:0:0,"/>
+ </Variable>
+ <Variable Name="Volumetric fog 2: Fog layer density (bottom)" Value="1">
+  <Spline Keys="0:1:0,1:1:0,"/>
+ </Variable>
+ <Variable Name="Volumetric fog 2: Fog height (top)" Value="4000">
+  <Spline Keys="0:4000:0,1:4000:0,"/>
+ </Variable>
+ <Variable Name="Volumetric fog 2: Fog layer density (top)" Value="9.9999997e-05">
+  <Spline Keys="0:0.0001:0,1:0.0001:0,"/>
+ </Variable>
+ <Variable Name="Volumetric fog 2: Global fog density" Value="0.1">
+  <Spline Keys="0:0.1:0,1:0.1:0,"/>
+ </Variable>
+ <Variable Name="Volumetric fog 2: Ramp start" Value="0">
+  <Spline Keys="0:0:0,1:0:0,"/>
+ </Variable>
+ <Variable Name="Volumetric fog 2: Ramp end" Value="0">
+  <Spline Keys="0:0:0,1:0:0,"/>
+ </Variable>
+ <Variable Name="Volumetric fog 2: Fog albedo color (atmosphere)" Color="1,1,1">
+  <Spline Keys="0:(1:1:1):0,1:(1:1:1):0,"/>
+ </Variable>
+ <Variable Name="Volumetric fog 2: Anisotropy factor (atmosphere)" Value="0.60000002">
+  <Spline Keys="0:0.6:0,1:0.6:0,"/>
+ </Variable>
+ <Variable Name="Volumetric fog 2: Fog albedo color (sun radial)" Color="1,1,1">
+  <Spline Keys="0:(1:1:1):0,1:(1:1:1):0,"/>
+ </Variable>
+ <Variable Name="Volumetric fog 2: Anisotropy factor (sun radial)" Value="0.94999999">
+  <Spline Keys="0:0.95:0,1:0.95:0,"/>
+ </Variable>
+ <Variable Name="Volumetric fog 2: Blend factor for sun scattering" Value="1">
+  <Spline Keys="0:1:0,1:1:0,"/>
+ </Variable>
+ <Variable Name="Volumetric fog 2: Blend mode for sun scattering" Value="0">
+  <Spline Keys="0:0:0,1:0:0,"/>
+ </Variable>
+ <Variable Name="Volumetric fog 2: Fog albedo color (entities)" Color="1,1,1">
+  <Spline Keys="0:(1:1:1):0,1:(1:1:1):0,"/>
+ </Variable>
+ <Variable Name="Volumetric fog 2: Anisotropy factor (entities)" Value="0.60000002">
+  <Spline Keys="0:0.6:0,1:0.6:0,"/>
+ </Variable>
+ <Variable Name="Volumetric fog 2: Maximum range of ray-marching" Value="64">
+  <Spline Keys="0:64:0,1:64:0,"/>
+ </Variable>
+ <Variable Name="Volumetric fog 2: In-scattering factor" Value="1">
+  <Spline Keys="0:1:0,1:1:0,"/>
+ </Variable>
+ <Variable Name="Volumetric fog 2: Extinction factor" Value="0.30000001">
+  <Spline Keys="0:0.3:0,1:0.3:0,"/>
+ </Variable>
+ <Variable Name="Volumetric fog 2: Analytical volumetric fog visibility" Value="0.5">
+  <Spline Keys="0:0.5:0,1:0.5:0,"/>
+ </Variable>
+ <Variable Name="Volumetric fog 2: Final density clamp" Value="1">
+  <Spline Keys="0:1:0,0.5:1:36,1:1:0,"/>
+ </Variable>
+ <Variable Name="Sky light: Sun intensity" Color="1,1,1">
+  <Spline Keys="0:(1:1:1):36,0.25:(1:1:1):36,0.494381:(1:1:1):65572,0.5:(1:1:1):36,0.75:(1:1:1):36,1:(1:1:1):36,"/>
+ </Variable>
+ <Variable Name="Sky light: Sun intensity multiplier" Value="200.00002">
+  <Spline Keys="0:200:36,0.25:200:36,0.5:200:36,0.75:200:36,1:200:36,"/>
+ </Variable>
+ <Variable Name="Sky light: Mie scattering" Value="6.779707">
+  <Spline Keys="0:40:36,0.5:2:36,1:40:36,"/>
+ </Variable>
+ <Variable Name="Sky light: Rayleigh scattering" Value="0.20000002">
+  <Spline Keys="0:0.2:36,0.229167:0.2:36,0.25:1:36,0.291667:0.2:36,0.5:0.2:36,0.729167:0.2:36,0.75:1:36,0.770833:0.2:36,1:0.2:36,"/>
+ </Variable>
+ <Variable Name="Sky light: Sun anisotropy factor" Value="-0.99989998">
+  <Spline Keys="0:-0.9999:36,0.25:-0.9999:36,0.5:-0.9999:65572,0.75:-0.9999:36,1:-0.9999:36,"/>
+ </Variable>
+ <Variable Name="Sky light: Wavelength (R)" Value="694">
+  <Spline Keys="0:694:36,0.25:694:36,0.5:694:65572,0.75:694:36,1:694:36,"/>
+ </Variable>
+ <Variable Name="Sky light: Wavelength (G)" Value="596.99994">
+  <Spline Keys="0:597:36,0.25:597:36,0.5:597:36,0.75:597:36,1:597:36,"/>
+ </Variable>
+ <Variable Name="Sky light: Wavelength (B)" Value="488">
+  <Spline Keys="0:488:36,0.25:488:36,0.5:488:65572,0.75:488:36,1:488:36,"/>
+ </Variable>
+ <Variable Name="Night sky: Horizon color" Color="0.27049801,0.39157301,0.52711499">
+  <Spline Keys="0:(0.270498:0.391573:0.520996):36,0.25:(0.270498:0.391573:0.527115):36,0.5:(0.270498:0.391573:0.527115):262180,0.75:(0.270498:0.391573:0.527115):36,1:(0.270498:0.391573:0.520996):36,"/>
+ </Variable>
+ <Variable Name="Night sky: Horizon color multiplier" Value="0">
+  <Spline Keys="0:0.1:36,0.25:0:36,0.5:0:65572,0.75:0:36,1:0.1:36,"/>
+ </Variable>
+ <Variable Name="Night sky: Zenith color" Color="0.36130697,0.434154,0.46778399">
+  <Spline Keys="0:(0.361307:0.434154:0.467784):36,0.25:(0.361307:0.434154:0.467784):36,0.5:(0.361307:0.434154:0.467784):262180,0.75:(0.361307:0.434154:0.467784):36,1:(0.361307:0.434154:0.467784):36,"/>
+ </Variable>
+ <Variable Name="Night sky: Zenith color multiplier" Value="0">
+  <Spline Keys="0:0.02:36,0.25:0:36,0.5:0:65572,0.75:0:36,1:0.02:36,"/>
+ </Variable>
+ <Variable Name="Night sky: Zenith shift" Value="0.5">
+  <Spline Keys="0:0.5:36,0.25:0.5:36,0.5:0.5:65572,0.75:0.5:36,1:0.5:36,"/>
+ </Variable>
+ <Variable Name="Night sky: Star intensity" Value="0">
+  <Spline Keys="0:3:36,0.25:0:36,0.5:0:65572,0.75:0:36,0.836647:1.03977:36,1:3:36,"/>
+ </Variable>
+ <Variable Name="Night sky: Moon color" Color="1,1,1">
+  <Spline Keys="0:(1:1:1):36,0.25:(1:1:1):36,0.5:(1:1:1):458788,0.75:(1:1:1):36,1:(1:1:1):36,"/>
+ </Variable>
+ <Variable Name="Night sky: Moon color multiplier" Value="0">
+  <Spline Keys="0:0.4:36,0.25:0:36,0.5:0:36,0.75:0:65572,1:0.4:36,"/>
+ </Variable>
+ <Variable Name="Night sky: Moon inner corona color" Color="0.904661,1,1">
+  <Spline Keys="0:(0.89627:1:1):36,0.25:(0.904661:1:1):36,0.5:(0.904661:1:1):393252,0.75:(0.904661:1:1):36,0.836647:(0.89627:1:1):36,1:(0.89627:1:1):36,"/>
+ </Variable>
+ <Variable Name="Night sky: Moon inner corona color multiplier" Value="0">
+  <Spline Keys="0:0.1:36,0.25:0:36,0.5:0:65572,0.75:0:36,1:0.1:36,"/>
+ </Variable>
+ <Variable Name="Night sky: Moon inner corona scale" Value="0">
+  <Spline Keys="0:2:36,0.25:0:36,0.5:0:65572,0.75:0:36,0.836647:0.693178:36,1:2:36,"/>
+ </Variable>
+ <Variable Name="Night sky: Moon outer corona color" Color="0.201556,0.22696599,0.25415203">
+  <Spline Keys="0:(0.198069:0.226966:0.250158):36,0.25:(0.201556:0.226966:0.254152):36,0.5:(0.201556:0.226966:0.254152):36,0.75:(0.201556:0.226966:0.254152):36,1:(0.198069:0.226966:0.250158):36,"/>
+ </Variable>
+ <Variable Name="Night sky: Moon outer corona color multiplier" Value="0">
+  <Spline Keys="0:0.1:36,0.25:0:36,0.5:0:65572,0.75:0:36,1:0.1:36,"/>
+ </Variable>
+ <Variable Name="Night sky: Moon outer corona scale" Value="0">
+  <Spline Keys="0:0.01:36,0.25:0:36,0.5:0:65572,0.75:0:36,1:0.01:36,"/>
+ </Variable>
+ <Variable Name="Cloud shading: Sun light multiplier" Value="1">
+  <Spline Keys="0:1:36,0.25:1:36,0.5:1:65572,0.75:1:36,1:1:36,"/>
+ </Variable>
+ <Variable Name="Cloud shading: Sun custom color" Color="0.83076996,0.76815104,0.65837508">
+  <Spline Keys="0:(0.737911:0.737911:0.737911):36,0.25:(0.83077:0.768151:0.658375):36,0.5:(0.83077:0.768151:0.658375):458788,0.75:(0.83077:0.768151:0.658375):36,1:(0.737911:0.737911:0.737911):36,"/>
+ </Variable>
+ <Variable Name="Cloud shading: Sun custom color multiplier" Value="1">
+  <Spline Keys="0:0.1:36,0.25:1:36,0.5:1:65572,0.75:1:36,1:0.1:36,"/>
+ </Variable>
+ <Variable Name="Cloud shading: Sun custom color influence" Value="0">
+  <Spline Keys="0:0.5:36,0.25:0:36,0.5:0:65572,0.75:0:36,1:0.5:36,"/>
+ </Variable>
+ <Variable Name="Sun shafts visibility" Value="0">
+  <Spline Keys="0:0:36,0.25:0:36,0.5:0:65572,0.75:0:36,1:0:36,"/>
+ </Variable>
+ <Variable Name="Sun rays visibility" Value="1.5">
+  <Spline Keys="0:1:36,0.25:1.5:36,0.5:1.5:65572,0.75:1.5:36,1:1:36,"/>
+ </Variable>
+ <Variable Name="Sun rays attenuation" Value="1.5">
+  <Spline Keys="0:0.1:36,0.25:1.5:36,0.5:1.5:65572,0.75:1.5:36,1:0.1:36,"/>
+ </Variable>
+ <Variable Name="Sun rays suncolor influence" Value="0.5">
+  <Spline Keys="0:0.5:36,0.25:0.5:36,0.5:0.5:65572,0.75:0.5:36,1:0.5:36,"/>
+ </Variable>
+ <Variable Name="Sun rays custom color" Color="0.66538697,0.83879906,0.94730699">
+  <Spline Keys="0:(0.665387:0.838799:0.947307):36,0.25:(0.665387:0.838799:0.947307):36,0.5:(0.665387:0.838799:0.947307):458788,0.75:(0.665387:0.838799:0.947307):36,1:(0.665387:0.838799:0.947307):36,"/>
+ </Variable>
+ <Variable Name="Ocean fog color" Color="0.0012141101,0.0091340598,0.017642001">
+  <Spline Keys="0:(0.00121411:0.00913406:0.017642):36,0.25:(0.00121411:0.00913406:0.017642):36,0.5:(0.00121411:0.00913406:0.017642):458788,0.75:(0.00121411:0.00913406:0.017642):36,1:(0.00121411:0.00913406:0.017642):36,"/>
+ </Variable>
+ <Variable Name="Ocean fog color multiplier" Value="0.5">
+  <Spline Keys="0:0.5:36,0.25:0.5:36,0.5:0.5:65572,0.75:0.5:36,1:0.5:36,"/>
+ </Variable>
+ <Variable Name="Ocean fog density" Value="0.5">
+  <Spline Keys="0:0.5:36,0.25:0.5:36,0.5:0.5:65572,0.75:0.5:36,1:0.5:36,"/>
+ </Variable>
+ <Variable Name="Static skybox multiplier" Value="1">
+  <Spline Keys="0:1:0,1:1:0,"/>
+ </Variable>
+ <Variable Name="Film curve shoulder scale" Value="2.232213">
+  <Spline Keys="0:3:36,0.229167:3:36,0.5:2:36,0.770833:3:36,1:3:36,"/>
+ </Variable>
+ <Variable Name="Film curve midtones scale" Value="0.88389361">
+  <Spline Keys="0:0.5:36,0.229167:0.5:36,0.5:1:36,0.770833:0.5:36,1:0.5:36,"/>
+ </Variable>
+ <Variable Name="Film curve toe scale" Value="1">
+  <Spline Keys="0:1:36,0.25:1:36,0.5:1:65572,0.75:1:36,1:1:36,"/>
+ </Variable>
+ <Variable Name="Film curve whitepoint" Value="4">
+  <Spline Keys="0:4:36,0.25:4:36,0.5:4:65572,0.75:4:36,1:4:36,"/>
+ </Variable>
+ <Variable Name="Saturation" Value="1">
+  <Spline Keys="0:0.8:36,0.229167:0.8:36,0.5:1:36,0.751391:1:65572,0.770833:0.8:36,1:0.8:36,"/>
+ </Variable>
+ <Variable Name="Color balance" Color="1,1,1">
+  <Spline Keys="0:(1:1:1):36,0.25:(1:1:1):36,0.5:(1:1:1):36,0.75:(1:1:1):36,1:(1:1:1):36,"/>
+ </Variable>
+ <Variable Name="Scene key" Value="0.18000002">
+  <Spline Keys="0:0.18:36,0.25:0.18:36,0.5:0.18:65572,0.75:0.18:36,1:0.18:36,"/>
+ </Variable>
+ <Variable Name="Min exposure" Value="1">
+  <Spline Keys="0:1:36,0.25:1:36,0.5:1:65572,0.75:1:36,1:1:36,"/>
+ </Variable>
+ <Variable Name="Max exposure" Value="2.6142297">
+  <Spline Keys="0:2:36,0.229167:2:36,0.5:2.8:36,0.770833:2:36,1:2:36,"/>
+ </Variable>
+ <Variable Name="EV Min" Value="4.5">
+  <Spline Keys="0:4.5:0,1:4.5:0,"/>
+ </Variable>
+ <Variable Name="EV Max" Value="17">
+  <Spline Keys="0:17:0,1:17:0,"/>
+ </Variable>
+ <Variable Name="EV Auto compensation" Value="1.5">
+  <Spline Keys="0:1.5:0,1:1.5:0,"/>
+ </Variable>
+ <Variable Name="Bloom amount" Value="0.30899152">
+  <Spline Keys="0:1:36,0.229167:1:36,0.5:0.1:36,0.770833:1:36,1:1:36,"/>
+ </Variable>
+ <Variable Name="Filters: grain" Value="0">
+  <Spline Keys="0:0.3:65572,0.229167:0.3:36,0.25:0:36,0.5:0:36,0.75:0:36,1:0.3:36,"/>
+ </Variable>
+ <Variable Name="Filters: photofilter color" Color="0,0,0">
+  <Spline Keys="0:(0:0:0):36,0.25:(0:0:0):36,0.5:(0:0:0):458788,0.75:(0:0:0):36,1:(0:0:0):36,"/>
+ </Variable>
+ <Variable Name="Filters: photofilter density" Value="0">
+  <Spline Keys="0:0:36,0.25:0:36,0.5:0:36,0.75:0:36,1:0:36,"/>
+ </Variable>
+ <Variable Name="Dof: focus range" Value="500.00003">
+  <Spline Keys="0:500:36,0.25:500:36,0.5:500:65572,0.75:500:36,1:500:36,"/>
+ </Variable>
+ <Variable Name="Dof: blur amount" Value="0.10000001">
+  <Spline Keys="0:0.1:36,0.25:0.1:36,0.5:0.1:65572,0.75:0.1:36,1:0.1:36,"/>
+ </Variable>
+ <Variable Name="Cascade 0: Bias" Value="0.10000001">
+  <Spline Keys="0:0.1:36,0.25:0.1:36,0.5:0.1:65572,0.75:0.1:36,1:0.1:36,"/>
+ </Variable>
+ <Variable Name="Cascade 0: Slope Bias" Value="64">
+  <Spline Keys="0:64:36,0.25:64:36,0.5:64:65572,0.75:64:36,1:64:36,"/>
+ </Variable>
+ <Variable Name="Cascade 1: Bias" Value="0.10000001">
+  <Spline Keys="0:0.1:36,0.25:0.1:36,0.5:0.1:65572,0.75:0.1:36,1:0.1:36,"/>
+ </Variable>
+ <Variable Name="Cascade 1: Slope Bias" Value="23">
+  <Spline Keys="0:23:36,0.25:23:36,0.5:23:65572,0.75:23:36,1:23:36,"/>
+ </Variable>
+ <Variable Name="Cascade 2: Bias" Value="0.10000001">
+  <Spline Keys="0:0.1:36,0.25:0.1:36,0.5:0.1:65572,0.75:0.1:36,1:0.1:36,"/>
+ </Variable>
+ <Variable Name="Cascade 2: Slope Bias" Value="4">
+  <Spline Keys="0:4:36,0.25:4:36,0.5:4:65572,0.75:4:36,1:4:36,"/>
+ </Variable>
+ <Variable Name="Cascade 3: Bias" Value="0.10000001">
+  <Spline Keys="0:0.1:36,0.25:0.1:36,0.5:0.1:36,0.75:0.1:36,1:0.1:36,"/>
+ </Variable>
+ <Variable Name="Cascade 3: Slope Bias" Value="1">
+  <Spline Keys="0:1:36,0.25:1:36,0.5:1:65572,0.75:1:36,1:1:36,"/>
+ </Variable>
+ <Variable Name="Cascade 4: Bias" Value="0.10000001">
+  <Spline Keys="0:0.1:0,0.25:0.1:36,0.5:0.1:65572,0.75:0.1:36,1:0.1:36,"/>
+ </Variable>
+ <Variable Name="Cascade 4: Slope Bias" Value="1">
+  <Spline Keys="0:1:0,0.25:1:36,0.5:1:65572,0.75:1:36,1:1:36,"/>
+ </Variable>
+ <Variable Name="Cascade 5: Bias" Value="0.0099999998">
+  <Spline Keys="0:0.01:0,0.25:0.01:36,0.5:0.01:65572,0.75:0.01:36,1:0.01:36,"/>
+ </Variable>
+ <Variable Name="Cascade 5: Slope Bias" Value="1">
+  <Spline Keys="0:1:0,0.25:1:36,0.5:1:65572,0.75:1:36,1:1:36,"/>
+ </Variable>
+ <Variable Name="Cascade 6: Bias" Value="0.10000001">
+  <Spline Keys="0:0.1:0,0.25:0.1:36,0.5:0.1:36,0.75:0.1:36,1:0.1:36,"/>
+ </Variable>
+ <Variable Name="Cascade 6: Slope Bias" Value="1">
+  <Spline Keys="0:1:0,0.25:1:36,0.5:1:65572,0.75:1:36,1:1:36,"/>
+ </Variable>
+ <Variable Name="Cascade 7: Bias" Value="0.10000001">
+  <Spline Keys="0:0.1:0,0.25:0.1:36,0.5:0.1:36,0.75:0.1:36,1:0.1:36,"/>
+ </Variable>
+ <Variable Name="Cascade 7: Slope Bias" Value="1">
+  <Spline Keys="0:1:0,0.25:1:36,0.5:1:65572,0.75:1:36,1:1:36,"/>
+ </Variable>
+ <Variable Name="Shadow jittering" Value="2.4999998">
+  <Spline Keys="0:5:36,0.25:2.5:36,0.5:2.5:65572,0.75:2.5:36,1:5:0,"/>
+ </Variable>
+ <Variable Name="HDR dynamic power factor" Value="0">
+  <Spline Keys="0:0:36,0.25:0:36,0.5:0:65572,0.75:0:36,1:0:36,"/>
+ </Variable>
+ <Variable Name="Sky brightening (terrain occlusion)" Value="0">
+  <Spline Keys="0:0:36,0.25:0:36,0.5:0:36,0.75:0:36,1:0:36,"/>
+ </Variable>
+ <Variable Name="Sun color multiplier" Value="9.999999">
+  <Spline Keys="0:0.1:36,0.25:10:36,0.5:10:36,0.75:10:36,1:0.1:36,"/>
+ </Variable>
+</TimeOfDay>

+ 3 - 0
Levels/default/leveldata/VegetationMap.dat

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

+ 12 - 0
Levels/default/tags.txt

@@ -0,0 +1,12 @@
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0

+ 3 - 0
Levels/default/terrain/cover.ctc

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

+ 3 - 0
Levels/default/terraintexture.pak

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

+ 81 - 0
README.md

@@ -0,0 +1,81 @@
+# Atom StarterGame Project - Project Spectra Private Preview 
+
+## Confidentiality; Pre-Release Access  
+
+Welcome to the Project Spectra Private Preview.  This is a confidential pre-release project; your use is subject to the nondisclosure agreement between you (or your organization) and Amazon.  Do not disclose the existence of this project, your participation in it, or any of the  materials provided, to any unauthorized third party.  To request access for a third party, please contact [Royal O'Brien, [email protected]](mailto:[email protected]).
+
+## Download and Install
+
+This repository uses Git LFS for storing large binary files.  You will need to create a Github personal access token to authenticate with the LFS service.
+
+
+### Create a Git Personal Access Token
+
+You will need your personal access token credentials to authenticate when you clone the repository.
+
+[Create a personal access token with the 'repo' scope.](https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token)
+
+
+### (Recommended) Verify you have a credential manager installed to store your credentials 
+
+Recent versions of Git install a credential manager to store your credentials so you don't have to put in the credentials for every request.  
+It is highly recommended you check that you have a [credential manager installed and configured](https://github.com/microsoft/Git-Credential-Manager-Core)
+
+
+
+### Clone the repository 
+
+There are two options when installing a project
+
+#### Option #1 (Recommended) - Project-centric approach to building a project 
+
+This option lets you keep engine and project files in separate locations.
+
+```shell
+# clone the project into a folder outside your engine repository folder
+> git clone https://github.com/aws-lumberyard-dev/o3de-netsoaktest.git
+Cloning into 'o3de-netsoaktest'...
+
+# register the engine
+> C:/Path/To/o3de/scripts/o3de.bat register --this-engine
+
+# register the project 
+> C:/Path/To/o3de/scripts/o3de.bat register -p C:/Path/To/o3de-netsoaktest
+
+# example configure command
+> cmake -S C:/Path/To/o3de-netsoaktest -b C:/Path/To/o3de-netsoaktest/build -G "Visual Studio 16 2019" -DLY_3RDPARTY_PATH="C:/3rdparty"
+
+# example build command
+> cmake --build C:/Path/To/o3de-netsoaktest/build --target Editor NetSoakTest.GameLauncher --configure profile -- /m /nologo 
+```
+
+#### Option #2 - Engine-centric approach to building a project 
+
+This option models the legacy folder layout where all projects were in the same folder as the engine.
+If you use this approach you must also modify your engine's local git exclude file to ignore the project folder.
+
+```shell
+# clone the project in a folder named 'NetSoakTest' in your existing engine repository folder
+> git clone https://github.com/aws-lumberyard-dev/o3de-netsoaktest.git C:/path/to/engine/NetSoakTest
+Cloning into 'NetSoakTest'...
+
+# modify the local engine git exclude file to ignore the project folder
+> echo NetSoakTest > C:/Path/To/o3de/.git/info/exclude
+
+# the project now exists inside the engine folder but your engine repository will ignore all files in the project folder
+
+# example configure command
+> cmake -S C:/Path/To/o3de -b C:/Path/To/o3de/build -G "Visual Studio 16 2019" -DLY_3RDPARTY_PATH="C:/3rdparty" -DLY_PROJECTS=NetSoakTest 
+
+# example build command
+> cmake --build C:/Path/To/o3de/build --target Editor NetSoakTest.GameLauncher --configure profile -- /m /nologo 
+
+```
+
+If you have a Git credential helper configured, you should not be prompted for your credentials anymore.
+
+
+## License
+
+For terms please see the LICENSE*.TXT file at the root of this distribution.
+

+ 1 - 0
autoexec.cfg

@@ -0,0 +1 @@
+map default

+ 7 - 0
game.cfg

@@ -0,0 +1,7 @@
+sys_game_name = "NetSoakTest"
+sys_localization_folder = Localization
+ca_useIMG_CAF = 0
+
+-- Enable warnings when asset loads take longer than the given millisecond threshold
+cl_assetLoadWarningEnable=true
+cl_assetLoadWarningMsThreshold=100

+ 3 - 0
preview.png

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

+ 16 - 0
project.json

@@ -0,0 +1,16 @@
+{
+    "project_name": "NetSoakTest",
+    "product_name": "NetSoakTest",
+    "executable_name": "NetSoakTestLauncher",
+    "modules": [],
+    "project_id": "{5F3363D3-4A7C-47A6-B464-B21524771358}",
+    "android_settings": {
+        "package_name": "com.lumberyard.yourgame",
+        "version_number": 1,
+        "version_name": "1.0.0.0",
+        "orientation": "landscape"
+    },
+    "xenia_settings": {},
+    "provo_settings": {},
+    "engine": "o3de"
+}