diff --git a/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Homepage/2_ConfigureMultiplayerPlayMode.asset b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Homepage/2_ConfigureMultiplayerPlayMode.asset
new file mode 100644
index 000000000..d649b1f40
--- /dev/null
+++ b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Homepage/2_ConfigureMultiplayerPlayMode.asset
@@ -0,0 +1,37 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 89305aa391d1c5141bbe1628d930a2c5, type: 3}
+ m_Name: 2_ConfigureMultiplayerPlayMode
+ m_EditorClassIdentifier:
+ Modified:
+ m_PersistentCalls:
+ m_Calls: []
+ ParentContainer: {fileID: 11400000, guid: fe1f704f40b86474886be5fd9d91996b, type: 2}
+ OrderInView: 2
+ BackgroundImage: {fileID: 2800000, guid: 22516e77f839a40198de37712c3365d2, type: 3}
+ Title:
+ m_Untranslated: Multiplayer Workflows Configuration
+ Subtitle:
+ m_Untranslated: Learn how to enable Multiplayer workflows within your project.
+ Description:
+ m_Untranslated:
+ ProjectLayout: {fileID: 0}
+ Sections:
+ - OrderInView: 0
+ Heading:
+ m_Untranslated: Multiplayer Workflows Setup Guide
+ Text:
+ m_Untranslated: Learn how to enable Multiplayer workflows.
+ Metadata:
+ Url:
+ Image: {fileID: 2800000, guid: 0fd6a562b697746d79629bec3fdc257f, type: 3}
+ Tutorial: {fileID: 11400000, guid: 3fbaca52b7aa145468af4adcdc8de777, type: 2}
diff --git a/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Homepage/2_ConfigureMultiplayerPlayMode.asset.meta b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Homepage/2_ConfigureMultiplayerPlayMode.asset.meta
new file mode 100644
index 000000000..f80f6f389
--- /dev/null
+++ b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Homepage/2_ConfigureMultiplayerPlayMode.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 373672cf0fbe84b6aa0d006ed7aeaca7
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Homepage/3_SampleTutorials.asset b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Homepage/3_SampleTutorials.asset
new file mode 100644
index 000000000..7ee21612e
--- /dev/null
+++ b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Homepage/3_SampleTutorials.asset
@@ -0,0 +1,38 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 89305aa391d1c5141bbe1628d930a2c5, type: 3}
+ m_Name: 3_SampleTutorials
+ m_EditorClassIdentifier:
+ Modified:
+ m_PersistentCalls:
+ m_Calls: []
+ ParentContainer: {fileID: 11400000, guid: fe1f704f40b86474886be5fd9d91996b, type: 2}
+ OrderInView: 3
+ BackgroundImage: {fileID: 2800000, guid: 4e3cf75c7adda4408ac5f9c7d0cb1dfb, type: 3}
+ Title:
+ m_Untranslated: Sample Tutorials
+ Subtitle:
+ m_Untranslated: Learn about the specific features and workflows of this sample.
+ Description:
+ m_Untranslated:
+ ProjectLayout: {fileID: 0}
+ Sections:
+ - OrderInView: 0
+ Heading:
+ m_Untranslated: Content Selection
+ Text:
+ m_Untranslated: Learn how to filter gameplay content depending on Multiplayer
+ Roles.
+ Metadata:
+ Url:
+ Image: {fileID: 2800000, guid: 0fd6a562b697746d79629bec3fdc257f, type: 3}
+ Tutorial: {fileID: 11400000, guid: c70bd412514ea45c4b25ee87242c14a4, type: 2}
diff --git a/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Homepage/3_SampleTutorials.asset.meta b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Homepage/3_SampleTutorials.asset.meta
new file mode 100644
index 000000000..03f6cb71d
--- /dev/null
+++ b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Homepage/3_SampleTutorials.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3e9af0365bc004497997151633997a3c
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Images/Dedicated_Game_Server_Welcome.png.meta b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Images/Dedicated_Game_Server_Welcome.png.meta
index 12636daa6..3bb645e72 100644
--- a/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Images/Dedicated_Game_Server_Welcome.png.meta
+++ b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Images/Dedicated_Game_Server_Welcome.png.meta
@@ -97,21 +97,21 @@ TextureImporter:
serializedVersion: 2
sprites: []
outline: []
- customData:
+ customData:
physicsShape: []
bones: []
- spriteID:
+ spriteID:
internalID: 0
vertices: []
- indices:
+ indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
- mipmapLimitGroupName:
+ mipmapLimitGroupName:
pSDRemoveMatte: 0
- userData:
- assetBundleName:
- assetBundleVariant:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Images/Feature_Image_004.png b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Images/Feature_Image_004.png
new file mode 100644
index 000000000..489922b43
Binary files /dev/null and b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Images/Feature_Image_004.png differ
diff --git a/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Images/Feature_Image_004.png.meta b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Images/Feature_Image_004.png.meta
new file mode 100644
index 000000000..109d86788
--- /dev/null
+++ b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Images/Feature_Image_004.png.meta
@@ -0,0 +1,127 @@
+fileFormatVersion: 2
+guid: 1cb97f257e8994a5c8545f0976b6c8ce
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 12
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 0
+ swizzle: 50462976
+ cookieLightType: 0
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Standalone
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Android
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Images/Feature_Image_007.png b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Images/Feature_Image_007.png
new file mode 100644
index 000000000..f19361db7
Binary files /dev/null and b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Images/Feature_Image_007.png differ
diff --git a/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Images/Feature_Image_007.png.meta b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Images/Feature_Image_007.png.meta
new file mode 100644
index 000000000..56efaa277
--- /dev/null
+++ b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Images/Feature_Image_007.png.meta
@@ -0,0 +1,127 @@
+fileFormatVersion: 2
+guid: 4e3cf75c7adda4408ac5f9c7d0cb1dfb
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 12
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 0
+ swizzle: 50462976
+ cookieLightType: 0
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Standalone
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Android
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Images/Feature_Image_009.png b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Images/Feature_Image_009.png
new file mode 100644
index 000000000..9e7bf47e7
Binary files /dev/null and b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Images/Feature_Image_009.png differ
diff --git a/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Images/Feature_Image_009.png.meta b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Images/Feature_Image_009.png.meta
new file mode 100644
index 000000000..ac009c5b1
--- /dev/null
+++ b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Images/Feature_Image_009.png.meta
@@ -0,0 +1,143 @@
+fileFormatVersion: 2
+guid: 22516e77f839a40198de37712c3365d2
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 13
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 0
+ swizzle: 50462976
+ cookieLightType: 0
+ platformSettings:
+ - serializedVersion: 4
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 4
+ buildTarget: Standalone
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 4
+ buildTarget: Android
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 4
+ buildTarget: iOS
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ customData:
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ spriteCustomMetadata:
+ entries: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial1_SetupMultiplayerPlayMode.meta b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial1_SetupMultiplayerPlayMode.meta
new file mode 100644
index 000000000..0ab34d9c5
--- /dev/null
+++ b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial1_SetupMultiplayerPlayMode.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 12e994f3eefca4875b8a83792c6b9768
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial1_SetupMultiplayerPlayMode/1-Setup Multiplayer Play Mode.asset b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial1_SetupMultiplayerPlayMode/1-Setup Multiplayer Play Mode.asset
new file mode 100644
index 000000000..ae0ccb9d3
--- /dev/null
+++ b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial1_SetupMultiplayerPlayMode/1-Setup Multiplayer Play Mode.asset
@@ -0,0 +1,118 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: ff771ccdf4150419d9ff4d342b069aae, type: 3}
+ m_Name: 1-Setup Multiplayer Play Mode
+ m_EditorClassIdentifier:
+ Title:
+ m_Untranslated: Configure Multiplayer Workflows
+ m_Paragraphs:
+ m_Items:
+ - m_Type: 6
+ Title:
+ m_Untranslated:
+ Text:
+ m_Untranslated:
+ m_CodeSample:
+ m_PostInstructionImage: {fileID: 0}
+ m_Tutorial: {fileID: 0}
+ m_Image: {fileID: 0}
+ m_VideoUrl:
+ m_Video: {fileID: 0}
+ m_CriteriaCompletion: 0
+ m_Criteria:
+ m_Items: []
+ m_MaskingSettings:
+ m_MaskingEnabled: 1
+ m_UnmaskedViews: []
+ m_Summary:
+ m_Description:
+ m_InstructionBoxTitle:
+ m_InstructionText:
+ m_TutorialButtonText:
+ - m_Type: 0
+ Title:
+ m_Untranslated:
+ Text:
+ m_Untranslated: 'The Dedicated Game Server sample uses Multiplayer
+ Play Mode so that you can test multiplayer gameplay in multiple virtual
+ players. '
+ m_CodeSample:
+ m_PostInstructionImage: {fileID: 0}
+ m_Tutorial: {fileID: 0}
+ m_Image: {fileID: 0}
+ m_VideoUrl:
+ m_Video: {fileID: 0}
+ m_CriteriaCompletion: 0
+ m_Criteria:
+ m_Items: []
+ m_MaskingSettings:
+ m_MaskingEnabled: 0
+ m_UnmaskedViews: []
+ m_Summary:
+ m_Description:
+ m_InstructionBoxTitle:
+ m_InstructionText:
+ m_TutorialButtonText:
+ m_CameraSettings:
+ m_CameraMode: 0
+ m_FocusMode: 0
+ m_Orthographic: 0
+ m_Size: 0
+ m_Pivot: {x: 0, y: 0, z: 0}
+ m_Rotation: {x: 0, y: 0, z: 0, w: 0}
+ m_FrameObject:
+ m_SceneGuid:
+ m_GameObjectGuid:
+ m_SerializedComponentType:
+ m_TypeName:
+ m_ComponentIndex: 0
+ m_AssetObject: {fileID: 0}
+ m_Prefab: {fileID: 0}
+ m_Enabled: 0
+ NextButton:
+ m_Untranslated: Next
+ DoneButton:
+ m_Untranslated: Done
+ m_CompletedSound: {fileID: 0}
+ m_AutoAdvance: 0
+ Showing:
+ m_PersistentCalls:
+ m_Calls: []
+ Shown:
+ m_PersistentCalls:
+ m_Calls: []
+ Staying:
+ m_PersistentCalls:
+ m_Calls: []
+ CriteriaValidated:
+ m_PersistentCalls:
+ m_Calls: []
+ MaskingSettingsChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ NonMaskingSettingsChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnBeforePageShown:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnAfterPageShown:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnTutorialPageStay:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnBeforeTutorialQuit:
+ m_PersistentCalls:
+ m_Calls: []
+ m_NextButton: Next
+ m_DoneButton: Done
diff --git a/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial1_SetupMultiplayerPlayMode/1-Setup Multiplayer Play Mode.asset.meta b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial1_SetupMultiplayerPlayMode/1-Setup Multiplayer Play Mode.asset.meta
new file mode 100644
index 000000000..a7bfb3af3
--- /dev/null
+++ b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial1_SetupMultiplayerPlayMode/1-Setup Multiplayer Play Mode.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b174deab55cf04057bcdea33e476d712
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial1_SetupMultiplayerPlayMode/2-Create a Virtual Player.asset b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial1_SetupMultiplayerPlayMode/2-Create a Virtual Player.asset
new file mode 100644
index 000000000..ea0c9e5c2
--- /dev/null
+++ b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial1_SetupMultiplayerPlayMode/2-Create a Virtual Player.asset
@@ -0,0 +1,197 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: ff771ccdf4150419d9ff4d342b069aae, type: 3}
+ m_Name: 2-Create a Virtual Player
+ m_EditorClassIdentifier:
+ Title:
+ m_Untranslated: Multiplayer Play Mode Window
+ m_Paragraphs:
+ m_Items:
+ - m_Type: 6
+ Title:
+ m_Untranslated:
+ Text:
+ m_Untranslated:
+ m_CodeSample:
+ m_PostInstructionImage: {fileID: 0}
+ m_Tutorial: {fileID: 0}
+ m_Image: {fileID: 0}
+ m_VideoUrl:
+ m_Video: {fileID: 0}
+ m_CriteriaCompletion: 0
+ m_Criteria:
+ m_Items: []
+ m_MaskingSettings:
+ m_MaskingEnabled: 1
+ m_UnmaskedViews:
+ - m_SelectorType: 1
+ m_ViewType:
+ m_TypeName: UnityEditor.Toolbar, UnityEditor.CoreModule, Version=0.0.0.0,
+ Culture=neutral, PublicKeyToken=null
+ m_FocusEditorWindow: 1
+ m_EditorWindowType:
+ m_TypeName: Unity.Multiplayer.Playmode.WorkflowUI.Editor.MultiplayerWindow,
+ Unity.Multiplayer.Playmode.WorkflowUI.Editor, Version=0.0.0.0, Culture=neutral,
+ PublicKeyToken=null
+ m_AlternateEditorWindowTypes:
+ m_Items: []
+ m_MaskType: 0
+ m_MaskSizeModifier: 0
+ m_UnmaskedControls: []
+ m_Summary:
+ m_Description:
+ m_InstructionBoxTitle:
+ m_InstructionText:
+ m_TutorialButtonText:
+ - m_Type: 0
+ Title:
+ m_Untranslated:
+ Text:
+ m_Untranslated: "To open the Multiplayer Play Mode window: \n\n1. Go to
+ Window > Multiplayer > Multiplayer Play Mode.\n\n2.
+ Select the checkbox for Virtual Player 2. This player opens when you enter
+ Play mode.\n\n3. Wait for the Player status to change from inactive to
+ active for Virtual Player 2.\n\nWhen active, the Virtual Player(s) appear
+ in Play Mode in the main Editor Player window. A separate window opens
+ for each enabled Player with the Player name as the window title."
+ m_CodeSample:
+ m_PostInstructionImage: {fileID: 0}
+ m_Tutorial: {fileID: 0}
+ m_Image: {fileID: 0}
+ m_VideoUrl:
+ m_Video: {fileID: 0}
+ m_CriteriaCompletion: 0
+ m_Criteria:
+ m_Items: []
+ m_MaskingSettings:
+ m_MaskingEnabled: 0
+ m_UnmaskedViews: []
+ m_Summary:
+ m_Description:
+ m_InstructionBoxTitle:
+ m_InstructionText:
+ m_TutorialButtonText:
+ - m_Type: 1
+ Title:
+ m_Untranslated: Create a Virtual Player
+ Text:
+ m_Untranslated: Press Next to continue.
+ m_CodeSample:
+ m_PostInstructionImage: {fileID: 0}
+ m_Tutorial: {fileID: 0}
+ m_Image: {fileID: 0}
+ m_VideoUrl:
+ m_Video: {fileID: 0}
+ m_CriteriaCompletion: 0
+ m_Criteria:
+ m_Items:
+ - Type:
+ m_TypeName: Unity.Tutorials.Core.Editor.ArbitraryCriterion, Unity.Tutorials.Core.Editor,
+ Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
+ Criterion: {fileID: 3135031496739192239}
+ m_MaskingSettings:
+ m_MaskingEnabled: 0
+ m_UnmaskedViews: []
+ m_Summary:
+ m_Description:
+ m_InstructionBoxTitle:
+ m_InstructionText:
+ m_TutorialButtonText:
+ m_CameraSettings:
+ m_CameraMode: 0
+ m_FocusMode: 0
+ m_Orthographic: 0
+ m_Size: 0
+ m_Pivot: {x: 0, y: 0, z: 0}
+ m_Rotation: {x: 0, y: 0, z: 0, w: 0}
+ m_FrameObject:
+ m_SceneGuid:
+ m_GameObjectGuid:
+ m_SerializedComponentType:
+ m_TypeName:
+ m_ComponentIndex: 0
+ m_AssetObject: {fileID: 0}
+ m_Prefab: {fileID: 0}
+ m_Enabled: 0
+ NextButton:
+ m_Untranslated: Next
+ DoneButton:
+ m_Untranslated: Done
+ m_CompletedSound: {fileID: 0}
+ m_AutoAdvance: 1
+ Showing:
+ m_PersistentCalls:
+ m_Calls: []
+ Shown:
+ m_PersistentCalls:
+ m_Calls: []
+ Staying:
+ m_PersistentCalls:
+ m_Calls: []
+ CriteriaValidated:
+ m_PersistentCalls:
+ m_Calls: []
+ MaskingSettingsChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ NonMaskingSettingsChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnBeforePageShown:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnAfterPageShown:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnTutorialPageStay:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnBeforeTutorialQuit:
+ m_PersistentCalls:
+ m_Calls: []
+ m_NextButton: Next
+ m_DoneButton: Done
+--- !u!114 &3135031496739192239
+MonoBehaviour:
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 7231e8df50e16c74c979c4a2affab91b, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ Completed:
+ m_PersistentCalls:
+ m_Calls: []
+ Invalidated:
+ m_PersistentCalls:
+ m_Calls: []
+ isTesting: 0
+ m_Callback:
+ _target: {fileID: 11400000, guid: af1ac43a89738ed47bc67422d798da3e, type: 2}
+ _methodName: IsVirtualPlayerCreated
+ _args: []
+ _dynamic: 0
+ _typeName: Unity.Tutorials.Core.Editor.ArbitraryCriterion+BoolCallback, Unity.Tutorials.Core.Editor,
+ Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
+ dirty: 0
+ m_AutoCompleteCallback:
+ _target: {fileID: 11400000, guid: af1ac43a89738ed47bc67422d798da3e, type: 2}
+ _methodName: IsVirtualPlayerCreated
+ _args: []
+ _dynamic: 0
+ _typeName: Unity.Tutorials.Core.Editor.ArbitraryCriterion+BoolCallback, Unity.Tutorials.Core.Editor,
+ Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
+ dirty: 0
diff --git a/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial1_SetupMultiplayerPlayMode/2-Create a Virtual Player.asset.meta b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial1_SetupMultiplayerPlayMode/2-Create a Virtual Player.asset.meta
new file mode 100644
index 000000000..b501a62fb
--- /dev/null
+++ b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial1_SetupMultiplayerPlayMode/2-Create a Virtual Player.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e275b477b19b844bb914244333e5e528
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial1_SetupMultiplayerPlayMode/8-Virtual Player Successfully Created.asset b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial1_SetupMultiplayerPlayMode/8-Virtual Player Successfully Created.asset
new file mode 100644
index 000000000..d6d34d97b
--- /dev/null
+++ b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial1_SetupMultiplayerPlayMode/8-Virtual Player Successfully Created.asset
@@ -0,0 +1,182 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: ff771ccdf4150419d9ff4d342b069aae, type: 3}
+ m_Name: 8-Virtual Player Successfully Created
+ m_EditorClassIdentifier:
+ Title:
+ m_Untranslated: Multiplayer Workflows Setup Complete!
+ m_Paragraphs:
+ m_Items:
+ - m_Type: 6
+ Title:
+ m_Untranslated:
+ Text:
+ m_Untranslated:
+ m_CodeSample:
+ m_PostInstructionImage: {fileID: 0}
+ m_Tutorial: {fileID: 0}
+ m_Image: {fileID: 0}
+ m_VideoUrl:
+ m_Video: {fileID: 0}
+ m_CriteriaCompletion: 0
+ m_Criteria:
+ m_Items: []
+ m_MaskingSettings:
+ m_MaskingEnabled: 1
+ m_UnmaskedViews:
+ - m_SelectorType: 1
+ m_ViewType:
+ m_TypeName:
+ m_FocusEditorWindow: 0
+ m_EditorWindowType:
+ m_TypeName: UnityEditor.ProjectSettingsWindow, UnityEditor.CoreModule,
+ Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
+ m_AlternateEditorWindowTypes:
+ m_Items: []
+ m_MaskType: 0
+ m_MaskSizeModifier: 0
+ m_UnmaskedControls: []
+ m_Summary:
+ m_Description:
+ m_InstructionBoxTitle:
+ m_InstructionText:
+ m_TutorialButtonText:
+ - m_Type: 0
+ Title:
+ m_Untranslated: Page title
+ Text:
+ m_Untranslated: 'Your project is now ready to enter Play mode with a Virtual
+ Player.
+
+
+ Note: Virtual Players do not automatically deactivate
+ when you close the Virtual Player window. To deactivate a Virtual Player,
+ deselect the checkbox for the active Virtual Player.
+
+
+ Continue
+ to the next tutorial to learn how to use Network Scene Visualization.'
+ m_CodeSample:
+ m_PostInstructionImage: {fileID: 0}
+ m_Tutorial: {fileID: 0}
+ m_Image: {fileID: 0}
+ m_VideoUrl:
+ m_Video: {fileID: 0}
+ m_CriteriaCompletion: 0
+ m_Criteria:
+ m_Items: []
+ m_MaskingSettings:
+ m_MaskingEnabled: 0
+ m_UnmaskedViews: []
+ m_Summary:
+ m_Description:
+ m_InstructionBoxTitle:
+ m_InstructionText:
+ m_TutorialButtonText:
+ - m_Type: 1
+ Title:
+ m_Untranslated: Multiplayer Virtual Player created successfully
+ Text:
+ m_Untranslated: Select Done to exit this tutorial.
+ m_CodeSample:
+ m_PostInstructionImage: {fileID: 0}
+ m_Tutorial: {fileID: 0}
+ m_Image: {fileID: 0}
+ m_VideoUrl:
+ m_Video: {fileID: 0}
+ m_CriteriaCompletion: 0
+ m_Criteria:
+ m_Items: []
+ m_MaskingSettings:
+ m_MaskingEnabled: 0
+ m_UnmaskedViews: []
+ m_Summary:
+ m_Description:
+ m_InstructionBoxTitle:
+ m_InstructionText:
+ m_TutorialButtonText:
+ - m_Type: 2
+ Title:
+ m_Untranslated:
+ Text:
+ m_Untranslated: 'Next: Content Selection tutorial'
+ m_CodeSample:
+ m_PostInstructionImage: {fileID: 0}
+ m_Tutorial: {fileID: 11400000, guid: c70bd412514ea45c4b25ee87242c14a4, type: 2}
+ m_Image: {fileID: 0}
+ m_VideoUrl:
+ m_Video: {fileID: 0}
+ m_CriteriaCompletion: 0
+ m_Criteria:
+ m_Items: []
+ m_MaskingSettings:
+ m_MaskingEnabled: 0
+ m_UnmaskedViews: []
+ m_Summary:
+ m_Description:
+ m_InstructionBoxTitle:
+ m_InstructionText:
+ m_TutorialButtonText:
+ m_CameraSettings:
+ m_CameraMode: 0
+ m_FocusMode: 0
+ m_Orthographic: 0
+ m_Size: 0
+ m_Pivot: {x: 0, y: 0, z: 0}
+ m_Rotation: {x: 0, y: 0, z: 0, w: 0}
+ m_FrameObject:
+ m_SceneGuid:
+ m_GameObjectGuid:
+ m_SerializedComponentType:
+ m_TypeName:
+ m_ComponentIndex: 0
+ m_AssetObject: {fileID: 0}
+ m_Prefab: {fileID: 0}
+ m_Enabled: 0
+ NextButton:
+ m_Untranslated: Next
+ DoneButton:
+ m_Untranslated: Done
+ m_CompletedSound: {fileID: 0}
+ m_AutoAdvance: 0
+ Showing:
+ m_PersistentCalls:
+ m_Calls: []
+ Shown:
+ m_PersistentCalls:
+ m_Calls: []
+ Staying:
+ m_PersistentCalls:
+ m_Calls: []
+ CriteriaValidated:
+ m_PersistentCalls:
+ m_Calls: []
+ MaskingSettingsChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ NonMaskingSettingsChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnBeforePageShown:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnAfterPageShown:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnTutorialPageStay:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnBeforeTutorialQuit:
+ m_PersistentCalls:
+ m_Calls: []
+ m_NextButton: Next
+ m_DoneButton: Done
diff --git a/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial1_SetupMultiplayerPlayMode/8-Virtual Player Successfully Created.asset.meta b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial1_SetupMultiplayerPlayMode/8-Virtual Player Successfully Created.asset.meta
new file mode 100644
index 000000000..4fa712fa7
--- /dev/null
+++ b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial1_SetupMultiplayerPlayMode/8-Virtual Player Successfully Created.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 04b1c4018189045a2b1f8eaf533915eb
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial1_SetupMultiplayerPlayMode/Tutorial 1 - Multiplayer Play Mode Setup.asset b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial1_SetupMultiplayerPlayMode/Tutorial 1 - Multiplayer Play Mode Setup.asset
new file mode 100644
index 000000000..5409bfde8
--- /dev/null
+++ b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial1_SetupMultiplayerPlayMode/Tutorial 1 - Multiplayer Play Mode Setup.asset
@@ -0,0 +1,65 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 8f107dc6d4c984c45bdafd3bb15f98f0, type: 3}
+ m_Name: Tutorial 1 - Multiplayer Play Mode Setup
+ m_EditorClassIdentifier:
+ TutorialTitle:
+ m_Untranslated: Multiplayer Play Mode Setup
+ m_ProgressTrackingEnabled: 1
+ m_LessonId: 72333268-209d-437a-8b9f-648f2a5de6d3
+ m_Version: 1
+ m_ReturnToPreviousScenes: 1
+ m_SceneManagementBehavior: 1
+ m_Scenes: []
+ m_DefaultSceneCameraSettings:
+ m_CameraMode: 1
+ m_FocusMode: 0
+ m_Orthographic: 0
+ m_Size: 0.8660254
+ m_Pivot: {x: -0.057315156, y: 2.4025753, z: -3.1758358}
+ m_Rotation: {x: 0.11971389, y: 0.0000004947269, z: 0.0000045024267, w: 0.9928206}
+ m_FrameObject:
+ m_SceneGuid:
+ m_GameObjectGuid:
+ m_SerializedComponentType:
+ m_TypeName:
+ m_ComponentIndex: 0
+ m_AssetObject: {fileID: 0}
+ m_Prefab: {fileID: 0}
+ m_Enabled: 0
+ m_WindowLayout: {fileID: 0}
+ m_Pages:
+ m_Items:
+ - {fileID: 11400000, guid: b174deab55cf04057bcdea33e476d712, type: 2}
+ - {fileID: 11400000, guid: e275b477b19b844bb914244333e5e528, type: 2}
+ - {fileID: 11400000, guid: 04b1c4018189045a2b1f8eaf533915eb, type: 2}
+ CompletionDialog: {fileID: 0}
+ Modified:
+ m_PersistentCalls:
+ m_Calls: []
+ Initiated:
+ m_PersistentCalls:
+ m_Calls: []
+ PageInitiated:
+ m_PersistentCalls:
+ m_Calls: []
+ GoingBack:
+ m_PersistentCalls:
+ m_Calls: []
+ Completed:
+ m_PersistentCalls:
+ m_Calls: []
+ Quit:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Scene: {fileID: 0}
+ m_TutorialTitle:
diff --git a/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial1_SetupMultiplayerPlayMode/Tutorial 1 - Multiplayer Play Mode Setup.asset.meta b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial1_SetupMultiplayerPlayMode/Tutorial 1 - Multiplayer Play Mode Setup.asset.meta
new file mode 100644
index 000000000..c964b9d18
--- /dev/null
+++ b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial1_SetupMultiplayerPlayMode/Tutorial 1 - Multiplayer Play Mode Setup.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3fbaca52b7aa145468af4adcdc8de777
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection.meta b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection.meta
new file mode 100644
index 000000000..b9785c90d
--- /dev/null
+++ b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5c07da0d246f14b2c9bb239734a4840e
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection/1-Setup Content Selection.asset b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection/1-Setup Content Selection.asset
new file mode 100644
index 000000000..668d2a1c3
--- /dev/null
+++ b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection/1-Setup Content Selection.asset
@@ -0,0 +1,123 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: ff771ccdf4150419d9ff4d342b069aae, type: 3}
+ m_Name: 1-Setup Content Selection
+ m_EditorClassIdentifier:
+ Title:
+ m_Untranslated: Configure Content Selection
+ m_Paragraphs:
+ m_Items:
+ - m_Type: 6
+ Title:
+ m_Untranslated:
+ Text:
+ m_Untranslated:
+ m_CodeSample:
+ m_PostInstructionImage: {fileID: 0}
+ m_Tutorial: {fileID: 0}
+ m_Image: {fileID: 0}
+ m_VideoUrl:
+ m_Video: {fileID: 0}
+ m_CriteriaCompletion: 0
+ m_Criteria:
+ m_Items: []
+ m_MaskingSettings:
+ m_MaskingEnabled: 1
+ m_UnmaskedViews: []
+ m_Summary:
+ m_Description:
+ m_InstructionBoxTitle:
+ m_InstructionText:
+ m_TutorialButtonText:
+ - m_Type: 0
+ Title:
+ m_Untranslated:
+ Text:
+ m_Untranslated: 'The Dedicated Game Server sample leverages Content
+ Selection such that the Components that are present in a Server are different
+ to those on clients.
+
+
+ We''ll explore the manner in which Components
+ are segmented for each Multiplayer Role, and Prefabs and Scenes that filter
+ content.'
+ m_CodeSample:
+ m_PostInstructionImage: {fileID: 0}
+ m_Tutorial: {fileID: 0}
+ m_Image: {fileID: 0}
+ m_VideoUrl:
+ m_Video: {fileID: 0}
+ m_CriteriaCompletion: 0
+ m_Criteria:
+ m_Items: []
+ m_MaskingSettings:
+ m_MaskingEnabled: 0
+ m_UnmaskedViews: []
+ m_Summary:
+ m_Description:
+ m_InstructionBoxTitle:
+ m_InstructionText:
+ m_TutorialButtonText:
+ m_CameraSettings:
+ m_CameraMode: 0
+ m_FocusMode: 0
+ m_Orthographic: 0
+ m_Size: 0
+ m_Pivot: {x: 0, y: 0, z: 0}
+ m_Rotation: {x: 0, y: 0, z: 0, w: 0}
+ m_FrameObject:
+ m_SceneGuid:
+ m_GameObjectGuid:
+ m_SerializedComponentType:
+ m_TypeName:
+ m_ComponentIndex: 0
+ m_AssetObject: {fileID: 0}
+ m_Prefab: {fileID: 0}
+ m_Enabled: 0
+ NextButton:
+ m_Untranslated: Next
+ DoneButton:
+ m_Untranslated: Done
+ m_CompletedSound: {fileID: 0}
+ m_AutoAdvance: 0
+ Showing:
+ m_PersistentCalls:
+ m_Calls: []
+ Shown:
+ m_PersistentCalls:
+ m_Calls: []
+ Staying:
+ m_PersistentCalls:
+ m_Calls: []
+ CriteriaValidated:
+ m_PersistentCalls:
+ m_Calls: []
+ MaskingSettingsChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ NonMaskingSettingsChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnBeforePageShown:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnAfterPageShown:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnTutorialPageStay:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnBeforeTutorialQuit:
+ m_PersistentCalls:
+ m_Calls: []
+ m_NextButton: Next
+ m_DoneButton: Done
diff --git a/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection/1-Setup Content Selection.asset.meta b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection/1-Setup Content Selection.asset.meta
new file mode 100644
index 000000000..704fceef4
--- /dev/null
+++ b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection/1-Setup Content Selection.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: cd803241d34da43879aa1ee6ce5bec07
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection/2-Check Content Selection.asset b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection/2-Check Content Selection.asset
new file mode 100644
index 000000000..2f38b4576
--- /dev/null
+++ b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection/2-Check Content Selection.asset
@@ -0,0 +1,167 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: ff771ccdf4150419d9ff4d342b069aae, type: 3}
+ m_Name: 2-Check Content Selection
+ m_EditorClassIdentifier:
+ Title:
+ m_Untranslated: Multiplayer Roles Settings
+ m_Paragraphs:
+ m_Items:
+ - m_Type: 6
+ Title:
+ m_Untranslated:
+ Text:
+ m_Untranslated:
+ m_CodeSample:
+ m_PostInstructionImage: {fileID: 0}
+ m_Tutorial: {fileID: 0}
+ m_Image: {fileID: 0}
+ m_VideoUrl:
+ m_Video: {fileID: 0}
+ m_CriteriaCompletion: 0
+ m_Criteria:
+ m_Items: []
+ m_MaskingSettings:
+ m_MaskingEnabled: 1
+ m_UnmaskedViews:
+ - m_SelectorType: 1
+ m_ViewType:
+ m_TypeName:
+ m_FocusEditorWindow: 1
+ m_EditorWindowType:
+ m_TypeName: UnityEditor.ProjectSettingsWindow, UnityEditor.CoreModule,
+ Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
+ m_AlternateEditorWindowTypes:
+ m_Items: []
+ m_MaskType: 0
+ m_MaskSizeModifier: 0
+ m_UnmaskedControls: []
+ m_Summary:
+ m_Description:
+ m_InstructionBoxTitle:
+ m_InstructionText:
+ m_TutorialButtonText:
+ - m_Type: 0
+ Title:
+ m_Untranslated:
+ Text:
+ m_Untranslated: "To inspect and modify what Components are stripped per Multiplayer
+ Role:\n\n1. Go to Edit and select the Project Settings window.
+ \n\n2. Expand the Multiplayer tab and select Multiplayer Roles.\n\n3.
+ Here, the Server and the Clients tabs will display the custom components
+ that are stripped for each Multiplayer Role."
+ m_CodeSample:
+ m_PostInstructionImage: {fileID: 0}
+ m_Tutorial: {fileID: 0}
+ m_Image: {fileID: 0}
+ m_VideoUrl:
+ m_Video: {fileID: 0}
+ m_CriteriaCompletion: 0
+ m_Criteria:
+ m_Items: []
+ m_MaskingSettings:
+ m_MaskingEnabled: 0
+ m_UnmaskedViews: []
+ m_Summary:
+ m_Description:
+ m_InstructionBoxTitle:
+ m_InstructionText:
+ m_TutorialButtonText:
+ - m_Type: 1
+ Title:
+ m_Untranslated:
+ Text:
+ m_Untranslated:
+ m_CodeSample:
+ m_PostInstructionImage: {fileID: 0}
+ m_Tutorial: {fileID: 0}
+ m_Image: {fileID: 0}
+ m_VideoUrl:
+ m_Video: {fileID: 0}
+ m_CriteriaCompletion: 0
+ m_Criteria:
+ m_Items: []
+ m_MaskingSettings:
+ m_MaskingEnabled: 0
+ m_UnmaskedViews: []
+ m_Summary:
+ m_Description:
+ m_InstructionBoxTitle:
+ m_InstructionText:
+ m_TutorialButtonText:
+ m_CameraSettings:
+ m_CameraMode: 0
+ m_FocusMode: 0
+ m_Orthographic: 0
+ m_Size: 0
+ m_Pivot: {x: 0, y: 0, z: 0}
+ m_Rotation: {x: 0, y: 0, z: 0, w: 0}
+ m_FrameObject:
+ m_SceneGuid:
+ m_GameObjectGuid:
+ m_SerializedComponentType:
+ m_TypeName:
+ m_ComponentIndex: 0
+ m_AssetObject: {fileID: 0}
+ m_Prefab: {fileID: 0}
+ m_Enabled: 0
+ NextButton:
+ m_Untranslated: Next
+ DoneButton:
+ m_Untranslated: Done
+ m_CompletedSound: {fileID: 0}
+ m_AutoAdvance: 1
+ Showing:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 11400000, guid: af1ac43a89738ed47bc67422d798da3e, type: 2}
+ m_TargetAssemblyTypeName: Unity.DedicatedGameServerSample.Editor.Tutorials.TutorialCallbacks,
+ Unity.DedicatedGameServerSample.Editor.Tutorials
+ m_MethodName: ShowMultiplayerRolesSettings
+ m_Mode: 1
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 1
+ Shown:
+ m_PersistentCalls:
+ m_Calls: []
+ Staying:
+ m_PersistentCalls:
+ m_Calls: []
+ CriteriaValidated:
+ m_PersistentCalls:
+ m_Calls: []
+ MaskingSettingsChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ NonMaskingSettingsChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnBeforePageShown:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnAfterPageShown:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnTutorialPageStay:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnBeforeTutorialQuit:
+ m_PersistentCalls:
+ m_Calls: []
+ m_NextButton: Next
+ m_DoneButton: Done
diff --git a/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection/2-Check Content Selection.asset.meta b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection/2-Check Content Selection.asset.meta
new file mode 100644
index 000000000..26bb25a37
--- /dev/null
+++ b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection/2-Check Content Selection.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 25d4e36e4b2104b6a9d0cd8a73d9108a
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection/3-PlayerCharacter Prefab Overview.asset b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection/3-PlayerCharacter Prefab Overview.asset
new file mode 100644
index 000000000..f13b538bc
--- /dev/null
+++ b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection/3-PlayerCharacter Prefab Overview.asset
@@ -0,0 +1,158 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: ff771ccdf4150419d9ff4d342b069aae, type: 3}
+ m_Name: 3-PlayerCharacter Prefab Overview
+ m_EditorClassIdentifier:
+ Title:
+ m_Untranslated: PlayerCharacter Prefab
+ m_Paragraphs:
+ m_Items:
+ - m_Type: 6
+ Title:
+ m_Untranslated:
+ Text:
+ m_Untranslated:
+ m_CodeSample:
+ m_PostInstructionImage: {fileID: 0}
+ m_Tutorial: {fileID: 0}
+ m_Image: {fileID: 0}
+ m_VideoUrl:
+ m_Video: {fileID: 0}
+ m_CriteriaCompletion: 0
+ m_Criteria:
+ m_Items: []
+ m_MaskingSettings:
+ m_MaskingEnabled: 1
+ m_UnmaskedViews:
+ - m_SelectorType: 1
+ m_ViewType:
+ m_TypeName:
+ m_FocusEditorWindow: 0
+ m_EditorWindowType:
+ m_TypeName: UnityEditor.InspectorWindow, UnityEditor.CoreModule, Version=0.0.0.0,
+ Culture=neutral, PublicKeyToken=null
+ m_AlternateEditorWindowTypes:
+ m_Items: []
+ m_MaskType: 0
+ m_MaskSizeModifier: 0
+ m_UnmaskedControls: []
+ m_Summary:
+ m_Description:
+ m_InstructionBoxTitle:
+ m_InstructionText:
+ m_TutorialButtonText:
+ - m_Type: 0
+ Title:
+ m_Untranslated:
+ Text:
+ m_Untranslated: 'Let''s take a look at the PlayerCharacter Prefab.
+ This Prefab is composed of Components that only exist on Clients, on Servers,
+ and on both.
+
+
+ We''ll explore the scenario where Components are
+ set to exist on both Clients and the Server.
+
+
+ An example of
+ this is the NetworkedPlayerCharacter component.
+
+
+ This
+ script inherits from NetworkBehaviour. It synchronizes data and sends messages
+ between the server and clients. This Component exists on both clients and
+ the server, as is reflected by the Content Selection icon selected for
+ this Component.'
+ m_CodeSample:
+ m_PostInstructionImage: {fileID: 0}
+ m_Tutorial: {fileID: 0}
+ m_Image: {fileID: 0}
+ m_VideoUrl:
+ m_Video: {fileID: 0}
+ m_CriteriaCompletion: 0
+ m_Criteria:
+ m_Items: []
+ m_MaskingSettings:
+ m_MaskingEnabled: 0
+ m_UnmaskedViews: []
+ m_Summary:
+ m_Description:
+ m_InstructionBoxTitle:
+ m_InstructionText:
+ m_TutorialButtonText:
+ m_CameraSettings:
+ m_CameraMode: 0
+ m_FocusMode: 0
+ m_Orthographic: 0
+ m_Size: 0
+ m_Pivot: {x: 0, y: 0, z: 0}
+ m_Rotation: {x: 0, y: 0, z: 0, w: 0}
+ m_FrameObject:
+ m_SceneGuid:
+ m_GameObjectGuid:
+ m_SerializedComponentType:
+ m_TypeName:
+ m_ComponentIndex: 0
+ m_AssetObject: {fileID: 0}
+ m_Prefab: {fileID: 0}
+ m_Enabled: 0
+ NextButton:
+ m_Untranslated: Next
+ DoneButton:
+ m_Untranslated: Done
+ m_CompletedSound: {fileID: 0}
+ m_AutoAdvance: 0
+ Showing:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 11400000, guid: af1ac43a89738ed47bc67422d798da3e, type: 2}
+ m_TargetAssemblyTypeName: Unity.DedicatedGameServerSample.Editor.Tutorials.TutorialCallbacks,
+ Unity.DedicatedGameServerSample.Editor.Tutorials
+ m_MethodName: OpenPrefabView
+ m_Mode: 2
+ m_Arguments:
+ m_ObjectArgument: {fileID: 1092933507198879514, guid: 453db16f5dbae264a8d01c33e4839e6e, type: 3}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.GameObject, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 1
+ Shown:
+ m_PersistentCalls:
+ m_Calls: []
+ Staying:
+ m_PersistentCalls:
+ m_Calls: []
+ CriteriaValidated:
+ m_PersistentCalls:
+ m_Calls: []
+ MaskingSettingsChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ NonMaskingSettingsChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnBeforePageShown:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnAfterPageShown:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnTutorialPageStay:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnBeforeTutorialQuit:
+ m_PersistentCalls:
+ m_Calls: []
+ m_NextButton: Next
+ m_DoneButton: Done
diff --git a/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection/3-PlayerCharacter Prefab Overview.asset.meta b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection/3-PlayerCharacter Prefab Overview.asset.meta
new file mode 100644
index 000000000..f49314ce7
--- /dev/null
+++ b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection/3-PlayerCharacter Prefab Overview.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 778c547a6f27e4964b78979eeb4e5bab
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection/4-PlayerCharacter Prefab Client Components.asset b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection/4-PlayerCharacter Prefab Client Components.asset
new file mode 100644
index 000000000..9fc62a6be
--- /dev/null
+++ b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection/4-PlayerCharacter Prefab Client Components.asset
@@ -0,0 +1,152 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: ff771ccdf4150419d9ff4d342b069aae, type: 3}
+ m_Name: 4-PlayerCharacter Prefab Client Components
+ m_EditorClassIdentifier:
+ Title:
+ m_Untranslated: PlayerCharacter Prefab Client Components
+ m_Paragraphs:
+ m_Items:
+ - m_Type: 6
+ Title:
+ m_Untranslated:
+ Text:
+ m_Untranslated:
+ m_CodeSample:
+ m_PostInstructionImage: {fileID: 0}
+ m_Tutorial: {fileID: 0}
+ m_Image: {fileID: 0}
+ m_VideoUrl:
+ m_Video: {fileID: 0}
+ m_CriteriaCompletion: 0
+ m_Criteria:
+ m_Items: []
+ m_MaskingSettings:
+ m_MaskingEnabled: 1
+ m_UnmaskedViews:
+ - m_SelectorType: 1
+ m_ViewType:
+ m_TypeName:
+ m_FocusEditorWindow: 0
+ m_EditorWindowType:
+ m_TypeName: UnityEditor.InspectorWindow, UnityEditor.CoreModule, Version=0.0.0.0,
+ Culture=neutral, PublicKeyToken=null
+ m_AlternateEditorWindowTypes:
+ m_Items: []
+ m_MaskType: 0
+ m_MaskSizeModifier: 0
+ m_UnmaskedControls: []
+ m_Summary:
+ m_Description:
+ m_InstructionBoxTitle:
+ m_InstructionText:
+ m_TutorialButtonText:
+ - m_Type: 0
+ Title:
+ m_Untranslated:
+ Text:
+ m_Untranslated: 'The PlayerCharacter Prefab contains Components that
+ exist only on Client instances.
+
+
+ An example of this is the ClientPlayerColor
+ NetworkBehaviour. It uses the OwnerClientId assigned by Netcode for GameObjects
+ to determine what colour to display each Player.
+
+
+ As this is
+ purely a cosmetic gameplay matter, it can be safely filtered out from the
+ Server.'
+ m_CodeSample:
+ m_PostInstructionImage: {fileID: 0}
+ m_Tutorial: {fileID: 0}
+ m_Image: {fileID: 0}
+ m_VideoUrl:
+ m_Video: {fileID: 0}
+ m_CriteriaCompletion: 0
+ m_Criteria:
+ m_Items: []
+ m_MaskingSettings:
+ m_MaskingEnabled: 0
+ m_UnmaskedViews: []
+ m_Summary:
+ m_Description:
+ m_InstructionBoxTitle:
+ m_InstructionText:
+ m_TutorialButtonText:
+ m_CameraSettings:
+ m_CameraMode: 0
+ m_FocusMode: 0
+ m_Orthographic: 0
+ m_Size: 0
+ m_Pivot: {x: 0, y: 0, z: 0}
+ m_Rotation: {x: 0, y: 0, z: 0, w: 0}
+ m_FrameObject:
+ m_SceneGuid:
+ m_GameObjectGuid:
+ m_SerializedComponentType:
+ m_TypeName:
+ m_ComponentIndex: 0
+ m_AssetObject: {fileID: 0}
+ m_Prefab: {fileID: 0}
+ m_Enabled: 0
+ NextButton:
+ m_Untranslated: Next
+ DoneButton:
+ m_Untranslated: Done
+ m_CompletedSound: {fileID: 0}
+ m_AutoAdvance: 0
+ Showing:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 11400000, guid: af1ac43a89738ed47bc67422d798da3e, type: 2}
+ m_TargetAssemblyTypeName: Unity.DedicatedGameServerSample.Editor.Tutorials.TutorialCallbacks,
+ Unity.DedicatedGameServerSample.Editor.Tutorials
+ m_MethodName: OpenPrefabView
+ m_Mode: 2
+ m_Arguments:
+ m_ObjectArgument: {fileID: 1092933507198879514, guid: 453db16f5dbae264a8d01c33e4839e6e, type: 3}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.GameObject, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 1
+ Shown:
+ m_PersistentCalls:
+ m_Calls: []
+ Staying:
+ m_PersistentCalls:
+ m_Calls: []
+ CriteriaValidated:
+ m_PersistentCalls:
+ m_Calls: []
+ MaskingSettingsChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ NonMaskingSettingsChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnBeforePageShown:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnAfterPageShown:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnTutorialPageStay:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnBeforeTutorialQuit:
+ m_PersistentCalls:
+ m_Calls: []
+ m_NextButton: Next
+ m_DoneButton: Done
diff --git a/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection/4-PlayerCharacter Prefab Client Components.asset.meta b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection/4-PlayerCharacter Prefab Client Components.asset.meta
new file mode 100644
index 000000000..341dce4ca
--- /dev/null
+++ b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection/4-PlayerCharacter Prefab Client Components.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 49cf294c9406e4b7ca60b1628da84732
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection/5-GameScene01 Server Filtering.asset b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection/5-GameScene01 Server Filtering.asset
new file mode 100644
index 000000000..c2af0053a
--- /dev/null
+++ b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection/5-GameScene01 Server Filtering.asset
@@ -0,0 +1,168 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: ff771ccdf4150419d9ff4d342b069aae, type: 3}
+ m_Name: 5-GameScene01 Server Filtering
+ m_EditorClassIdentifier:
+ Title:
+ m_Untranslated: In-Scene GameObject Filtering
+ m_Paragraphs:
+ m_Items:
+ - m_Type: 6
+ Title:
+ m_Untranslated:
+ Text:
+ m_Untranslated:
+ m_CodeSample:
+ m_PostInstructionImage: {fileID: 0}
+ m_Tutorial: {fileID: 0}
+ m_Image: {fileID: 0}
+ m_VideoUrl:
+ m_Video: {fileID: 0}
+ m_CriteriaCompletion: 0
+ m_Criteria:
+ m_Items: []
+ m_MaskingSettings:
+ m_MaskingEnabled: 1
+ m_UnmaskedViews:
+ - m_SelectorType: 1
+ m_ViewType:
+ m_TypeName:
+ m_FocusEditorWindow: 0
+ m_EditorWindowType:
+ m_TypeName: UnityEditor.InspectorWindow, UnityEditor.CoreModule, Version=0.0.0.0,
+ Culture=neutral, PublicKeyToken=null
+ m_AlternateEditorWindowTypes:
+ m_Items: []
+ m_MaskType: 0
+ m_MaskSizeModifier: 0
+ m_UnmaskedControls: []
+ m_Summary:
+ m_Description:
+ m_InstructionBoxTitle:
+ m_InstructionText:
+ m_TutorialButtonText:
+ - m_Type: 0
+ Title:
+ m_Untranslated:
+ Text:
+ m_Untranslated: 'Lastly, we''ll take a look at GameObjects filtered out in
+ the context of a Scene.
+
+
+ We''ll open up the GameScene01
+ scene and navigate to the AICharacterSpawn GameObject.
+
+
+ The
+ ServerAISpawner is responsible for spawning the server-driven AI
+ characters.
+
+
+ This entire GameObject, and its Components are
+ stripped from Clients, as indicated by its Content Selection icon.'
+ m_CodeSample:
+ m_PostInstructionImage: {fileID: 0}
+ m_Tutorial: {fileID: 0}
+ m_Image: {fileID: 0}
+ m_VideoUrl:
+ m_Video: {fileID: 0}
+ m_CriteriaCompletion: 0
+ m_Criteria:
+ m_Items: []
+ m_MaskingSettings:
+ m_MaskingEnabled: 0
+ m_UnmaskedViews: []
+ m_Summary:
+ m_Description:
+ m_InstructionBoxTitle:
+ m_InstructionText:
+ m_TutorialButtonText:
+ m_CameraSettings:
+ m_CameraMode: 0
+ m_FocusMode: 0
+ m_Orthographic: 0
+ m_Size: 0
+ m_Pivot: {x: 0, y: 0, z: 0}
+ m_Rotation: {x: 0, y: 0, z: 0, w: 0}
+ m_FrameObject:
+ m_SceneGuid:
+ m_GameObjectGuid:
+ m_SerializedComponentType:
+ m_TypeName:
+ m_ComponentIndex: 0
+ m_AssetObject: {fileID: 0}
+ m_Prefab: {fileID: 0}
+ m_Enabled: 0
+ NextButton:
+ m_Untranslated: Next
+ DoneButton:
+ m_Untranslated: Done
+ m_CompletedSound: {fileID: 0}
+ m_AutoAdvance: 0
+ Showing:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 11400000, guid: af1ac43a89738ed47bc67422d798da3e, type: 2}
+ m_TargetAssemblyTypeName: Unity.DedicatedGameServerSample.Editor.Tutorials.TutorialCallbacks,
+ Unity.DedicatedGameServerSample.Editor.Tutorials
+ m_MethodName: LoadGameScene
+ m_Mode: 1
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 1
+ Shown:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 11400000, guid: af1ac43a89738ed47bc67422d798da3e, type: 2}
+ m_TargetAssemblyTypeName: Unity.DedicatedGameServerSample.Editor.Tutorials.TutorialCallbacks,
+ Unity.DedicatedGameServerSample.Editor.Tutorials
+ m_MethodName: SelectObjectInHierarchyByName
+ m_Mode: 5
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument: AICharacterSpawner
+ m_BoolArgument: 0
+ m_CallState: 1
+ Staying:
+ m_PersistentCalls:
+ m_Calls: []
+ CriteriaValidated:
+ m_PersistentCalls:
+ m_Calls: []
+ MaskingSettingsChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ NonMaskingSettingsChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnBeforePageShown:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnAfterPageShown:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnTutorialPageStay:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnBeforeTutorialQuit:
+ m_PersistentCalls:
+ m_Calls: []
+ m_NextButton: Next
+ m_DoneButton: Done
diff --git a/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection/5-GameScene01 Server Filtering.asset.meta b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection/5-GameScene01 Server Filtering.asset.meta
new file mode 100644
index 000000000..c93587fd0
--- /dev/null
+++ b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection/5-GameScene01 Server Filtering.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5c553cba2c8c34f9db598bbfb5616952
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection/6-Content Selection Overview Complete.asset b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection/6-Content Selection Overview Complete.asset
new file mode 100644
index 000000000..e651b08aa
--- /dev/null
+++ b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection/6-Content Selection Overview Complete.asset
@@ -0,0 +1,139 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: ff771ccdf4150419d9ff4d342b069aae, type: 3}
+ m_Name: 6-Content Selection Overview Complete
+ m_EditorClassIdentifier:
+ Title:
+ m_Untranslated: Content Selection Tutorial Complete
+ m_Paragraphs:
+ m_Items:
+ - m_Type: 6
+ Title:
+ m_Untranslated:
+ Text:
+ m_Untranslated:
+ m_CodeSample:
+ m_PostInstructionImage: {fileID: 0}
+ m_Tutorial: {fileID: 0}
+ m_Image: {fileID: 0}
+ m_VideoUrl:
+ m_Video: {fileID: 0}
+ m_CriteriaCompletion: 0
+ m_Criteria:
+ m_Items: []
+ m_MaskingSettings:
+ m_MaskingEnabled: 0
+ m_UnmaskedViews: []
+ m_Summary:
+ m_Description:
+ m_InstructionBoxTitle:
+ m_InstructionText:
+ m_TutorialButtonText:
+ - m_Type: 0
+ Title:
+ m_Untranslated:
+ Text:
+ m_Untranslated: You have now gone through the high level overview of Content
+ Selection.
+ m_CodeSample:
+ m_PostInstructionImage: {fileID: 0}
+ m_Tutorial: {fileID: 0}
+ m_Image: {fileID: 0}
+ m_VideoUrl:
+ m_Video: {fileID: 0}
+ m_CriteriaCompletion: 0
+ m_Criteria:
+ m_Items: []
+ m_MaskingSettings:
+ m_MaskingEnabled: 0
+ m_UnmaskedViews: []
+ m_Summary:
+ m_Description:
+ m_InstructionBoxTitle:
+ m_InstructionText:
+ m_TutorialButtonText:
+ - m_Type: 1
+ Title:
+ m_Untranslated: Content Selection Overview complete
+ Text:
+ m_Untranslated: Select Done to exit this tutorial.
+ m_CodeSample:
+ m_PostInstructionImage: {fileID: 0}
+ m_Tutorial: {fileID: 0}
+ m_Image: {fileID: 0}
+ m_VideoUrl:
+ m_Video: {fileID: 0}
+ m_CriteriaCompletion: 0
+ m_Criteria:
+ m_Items: []
+ m_MaskingSettings:
+ m_MaskingEnabled: 0
+ m_UnmaskedViews: []
+ m_Summary:
+ m_Description:
+ m_InstructionBoxTitle:
+ m_InstructionText:
+ m_TutorialButtonText:
+ m_CameraSettings:
+ m_CameraMode: 0
+ m_FocusMode: 0
+ m_Orthographic: 0
+ m_Size: 0
+ m_Pivot: {x: 0, y: 0, z: 0}
+ m_Rotation: {x: 0, y: 0, z: 0, w: 0}
+ m_FrameObject:
+ m_SceneGuid:
+ m_GameObjectGuid:
+ m_SerializedComponentType:
+ m_TypeName:
+ m_ComponentIndex: 0
+ m_AssetObject: {fileID: 0}
+ m_Prefab: {fileID: 0}
+ m_Enabled: 0
+ NextButton:
+ m_Untranslated: Next
+ DoneButton:
+ m_Untranslated: Done
+ m_CompletedSound: {fileID: 0}
+ m_AutoAdvance: 0
+ Showing:
+ m_PersistentCalls:
+ m_Calls: []
+ Shown:
+ m_PersistentCalls:
+ m_Calls: []
+ Staying:
+ m_PersistentCalls:
+ m_Calls: []
+ CriteriaValidated:
+ m_PersistentCalls:
+ m_Calls: []
+ MaskingSettingsChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ NonMaskingSettingsChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnBeforePageShown:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnAfterPageShown:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnTutorialPageStay:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnBeforeTutorialQuit:
+ m_PersistentCalls:
+ m_Calls: []
+ m_NextButton: Next
+ m_DoneButton: Done
diff --git a/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection/6-Content Selection Overview Complete.asset.meta b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection/6-Content Selection Overview Complete.asset.meta
new file mode 100644
index 000000000..5f566a2c8
--- /dev/null
+++ b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection/6-Content Selection Overview Complete.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 073fb1cb3c2ae4519b030408ec60d861
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection/Tutorial 2 - Content Selection.asset b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection/Tutorial 2 - Content Selection.asset
new file mode 100644
index 000000000..c25531055
--- /dev/null
+++ b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection/Tutorial 2 - Content Selection.asset
@@ -0,0 +1,81 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 8f107dc6d4c984c45bdafd3bb15f98f0, type: 3}
+ m_Name: Tutorial 2 - Content Selection
+ m_EditorClassIdentifier:
+ TutorialTitle:
+ m_Untranslated: Content Selection Overview
+ m_ProgressTrackingEnabled: 1
+ m_LessonId: e2d148c4-7ac3-4a47-8e5e-f7eb1df22ae8
+ m_Version: 0
+ m_ReturnToPreviousScenes: 1
+ m_SceneManagementBehavior: 0
+ m_Scenes: []
+ m_DefaultSceneCameraSettings:
+ m_CameraMode: 0
+ m_FocusMode: 0
+ m_Orthographic: 0
+ m_Size: 0
+ m_Pivot: {x: 0, y: 0, z: 0}
+ m_Rotation: {x: 0, y: 0, z: 0, w: 0}
+ m_FrameObject:
+ m_SceneGuid:
+ m_GameObjectGuid:
+ m_SerializedComponentType:
+ m_TypeName:
+ m_ComponentIndex: 0
+ m_AssetObject: {fileID: 0}
+ m_Prefab: {fileID: 0}
+ m_Enabled: 0
+ m_WindowLayout: {fileID: 0}
+ m_Pages:
+ m_Items:
+ - {fileID: 11400000, guid: cd803241d34da43879aa1ee6ce5bec07, type: 2}
+ - {fileID: 11400000, guid: 25d4e36e4b2104b6a9d0cd8a73d9108a, type: 2}
+ - {fileID: 11400000, guid: 778c547a6f27e4964b78979eeb4e5bab, type: 2}
+ - {fileID: 11400000, guid: 49cf294c9406e4b7ca60b1628da84732, type: 2}
+ - {fileID: 11400000, guid: 5c553cba2c8c34f9db598bbfb5616952, type: 2}
+ - {fileID: 11400000, guid: 073fb1cb3c2ae4519b030408ec60d861, type: 2}
+ CompletionDialog: {fileID: 0}
+ Modified:
+ m_PersistentCalls:
+ m_Calls: []
+ Initiated:
+ m_PersistentCalls:
+ m_Calls: []
+ PageInitiated:
+ m_PersistentCalls:
+ m_Calls: []
+ GoingBack:
+ m_PersistentCalls:
+ m_Calls: []
+ Completed:
+ m_PersistentCalls:
+ m_Calls: []
+ Quit:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 11400000, guid: af1ac43a89738ed47bc67422d798da3e, type: 2}
+ m_TargetAssemblyTypeName: Unity.DedicatedGameServerSample.Editor.Tutorials.TutorialCallbacks,
+ Unity.DedicatedGameServerSample.Editor.Tutorials
+ m_MethodName: ExitPrefabView
+ m_Mode: 1
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 2
+ m_Scene: {fileID: 0}
+ m_TutorialTitle:
diff --git a/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection/Tutorial 2 - Content Selection.asset.meta b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection/Tutorial 2 - Content Selection.asset.meta
new file mode 100644
index 000000000..69a601086
--- /dev/null
+++ b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/Tutorial2_ContentSelection/Tutorial 2 - Content Selection.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c70bd412514ea45c4b25ee87242c14a4
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/TutorialCallbacks.asset b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/TutorialCallbacks.asset
index 889f3160c..3d339e15b 100644
--- a/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/TutorialCallbacks.asset
+++ b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/TutorialCallbacks.asset
@@ -13,3 +13,4 @@ MonoBehaviour:
m_Name: TutorialCallbacks
m_EditorClassIdentifier:
m_BootstrapScene: {fileID: 102900000, guid: 6e5c529b4669aaf4e9530f6c3f5e45f4, type: 3}
+ m_GameScene: {fileID: 102900000, guid: 59b8ab2dc12914f49abb89d9bf130ec3, type: 3}
diff --git a/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/TutorialCallbacks.cs b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/TutorialCallbacks.cs
index 6e571b7b2..c2346133f 100644
--- a/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/TutorialCallbacks.cs
+++ b/Experimental/DedicatedGameServer/Assets/Editor/Tutorials/TutorialCallbacks.cs
@@ -1,14 +1,11 @@
using System;
using System.IO;
-using Unity.Multiplayer.Tools.Editor.MultiplayerToolsWindow;
using Newtonsoft.Json.Linq;
-using Unity.Services.Authentication;
-using Unity.Services.Core;
using Unity.Services.Multiplayer;
using UnityEngine;
using UnityEditor;
using Unity.Tutorials.Core.Editor;
-using UnityEngine.UIElements;
+using UnityEditor.SceneManagement;
namespace Unity.DedicatedGameServerSample.Editor.Tutorials
{
@@ -18,7 +15,11 @@ namespace Unity.DedicatedGameServerSample.Editor.Tutorials
[CreateAssetMenu(fileName = k_DefaultFileName, menuName = "Tutorials/" + k_DefaultFileName + " Instance")]
public class TutorialCallbacks : ScriptableObject
{
- [SerializeField] SceneAsset m_BootstrapScene;
+ [SerializeField]
+ SceneAsset m_BootstrapScene;
+
+ [SerializeField]
+ SceneAsset m_GameScene;
///
/// The default file name used to create asset of this class type.
@@ -29,14 +30,10 @@ public class TutorialCallbacks : ScriptableObject
bool m_IsEditorWindowFocused;
- const float k_QuerySessionsInterval = 5f;
-
bool m_IsSessionCreatedByVirtualPlayer;
bool m_IsSessionJoinedByEditor;
- float m_TimeSinceLastSessionUpdate;
-
ISession m_JoinedSession;
///
@@ -68,7 +65,25 @@ public void OpenURL(string url)
public void LoadBootstrapScene()
{
- UnityEditor.SceneManagement.EditorSceneManager.OpenScene(AssetDatabase.GetAssetPath(m_BootstrapScene));
+ EditorSceneManager.OpenScene(AssetDatabase.GetAssetPath(m_BootstrapScene));
+ }
+
+ public void LoadGameScene()
+ {
+ EditorSceneManager.OpenScene(AssetDatabase.GetAssetPath(m_GameScene));
+ }
+
+ public void SelectObjectInHierarchyByName(string objecName)
+ {
+ var obj = GameObject.Find(objecName);
+ if (obj != null)
+ {
+ Selection.activeObject = obj;
+ }
+ else
+ {
+ Debug.LogError($"Object with name {objecName} not found in scene.");
+ }
}
public bool IsConnectedToUgs()
@@ -81,10 +96,9 @@ public void ShowServicesSettings()
SettingsService.OpenProjectSettings("Project/Services");
}
- [ContextMenu("Show Vivox Settings")]
- public void ShowVivoxSettings()
+ public void ShowMultiplayerRolesSettings()
{
- SettingsService.OpenProjectSettings("Project/Services/Vivox");
+ SettingsService.OpenProjectSettings("Project/Multiplayer");
}
public bool IsVirtualPlayerCreated()
@@ -107,52 +121,6 @@ public bool IsVirtualPlayerCreated()
return false;
}
- public void OnOpenMultiplayerToolsWindowTutorialStarted()
- {
- MultiplayerToolsWindow.Open();
- m_IsEditorWindowFocused = false;
- }
-
- public bool IsSceneViewFocused()
- {
- if (EditorWindow.focusedWindow != null && EditorWindow.focusedWindow.titleContent.text == "Scene")
- {
- m_IsEditorWindowFocused = true;
- }
-
- return m_IsEditorWindowFocused;
- }
-
- VisualElement m_SceneRoot;
-
- public void OnEnableNetSceneVisTutorialStarted()
- {
- m_SceneRoot = EditorWindow.GetWindow().rootVisualElement;
- while (m_SceneRoot.parent != null)
- {
- m_SceneRoot = m_SceneRoot.parent;
- }
- }
-
- public bool IsNetworkVisualizationOverlayDisplayed()
- {
- return m_SceneRoot != null && m_SceneRoot.Q("NetVisToolbarOverlay") != null;
- }
-
- public void ForceNetworkVisualizationOverlayDisplayed()
- {
- if (m_SceneRoot.Q("NetVisToolbarOverlay") == null)
- {
- var netSceneVis = m_SceneRoot.Q("Network Visualization");
- var netSceneVisButton = netSceneVis.Q