Replace the connection-approval role selection with a server-authoritative match flow built on NGO additive scene management: - Scenes: Main is the persistent foundation (NetworkManager, GameModeManager, cameras, HUD); Lobby and Test Map load/unload additively. Add Lobby + Test Map to the build settings; remove the obsolete SampleScene. - MatchManager (plain MonoBehaviour singleton): loads Lobby on server start, StartMatchTrigger lets the host start the match, rolls one random Hunter (rest Hider), swaps Lobby -> Test Map (strictly serialized per NGO), respawns each player as its role variant. Forces additive client sync mode so clients keep Main instead of single-loading it (fixes "Destination scene is not valid"). - Server-driven spawning: null out NetworkConfig.PlayerPrefab at runtime to disable auto-spawn, then spawn players after the lobby floor exists (fixes falling through the floor) with double-spawn and transition guards. - StartMatchTrigger: server-gated OnTriggerEnter, only the host's own player starts the match. - NetworkBootstrap: drop role selection / connection approval; everyone spawns as the neutral Player prefab. Host/Client/Server/Shutdown buttons stay. - NetworkPlayerSetup.ScopedModes flag (baked on Hunter/Hider prefabs): lobby avatar gets the full mode set, match variants get the role-scoped set. - GameModeManager.BindLocalPlayer reads ScopedModes and rebinds the painter unconditionally (fixes stale painter binding on respawn -> brush painting in every mode). - MeshPainter.PaintingEnabled defaults to false (unbound/pre-spawn/remote never paints); PaintHud visibility now also gates on a bound painter (fixes the HUD showing at startup before any avatar exists). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
365 lines
9.9 KiB
Plaintext
365 lines
9.9 KiB
Plaintext
%YAML 1.1
|
|
%TAG !u! tag:unity3d.com,2011:
|
|
--- !u!29 &1
|
|
OcclusionCullingSettings:
|
|
m_ObjectHideFlags: 0
|
|
serializedVersion: 2
|
|
m_OcclusionBakeSettings:
|
|
smallestOccluder: 5
|
|
smallestHole: 0.25
|
|
backfaceThreshold: 100
|
|
m_SceneGUID: 00000000000000000000000000000000
|
|
m_OcclusionCullingData: {fileID: 0}
|
|
--- !u!104 &2
|
|
RenderSettings:
|
|
m_ObjectHideFlags: 0
|
|
serializedVersion: 10
|
|
m_Fog: 0
|
|
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
|
|
m_FogMode: 3
|
|
m_FogDensity: 0.01
|
|
m_LinearFogStart: 0
|
|
m_LinearFogEnd: 300
|
|
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
|
|
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
|
|
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
|
|
m_AmbientIntensity: 1
|
|
m_AmbientMode: 0
|
|
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
|
|
m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
|
|
m_HaloStrength: 0.5
|
|
m_FlareStrength: 1
|
|
m_FlareFadeSpeed: 3
|
|
m_HaloTexture: {fileID: 0}
|
|
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
|
|
m_DefaultReflectionMode: 0
|
|
m_DefaultReflectionResolution: 128
|
|
m_ReflectionBounces: 1
|
|
m_ReflectionIntensity: 1
|
|
m_CustomReflection: {fileID: 0}
|
|
m_Sun: {fileID: 0}
|
|
m_UseRadianceAmbientProbe: 0
|
|
--- !u!157 &3
|
|
LightmapSettings:
|
|
m_ObjectHideFlags: 0
|
|
serializedVersion: 13
|
|
m_BakeOnSceneLoad: 0
|
|
m_GISettings:
|
|
serializedVersion: 2
|
|
m_BounceScale: 1
|
|
m_IndirectOutputScale: 1
|
|
m_AlbedoBoost: 1
|
|
m_EnvironmentLightingMode: 0
|
|
m_EnableBakedLightmaps: 1
|
|
m_EnableRealtimeLightmaps: 0
|
|
m_LightmapEditorSettings:
|
|
serializedVersion: 12
|
|
m_Resolution: 2
|
|
m_BakeResolution: 40
|
|
m_AtlasSize: 1024
|
|
m_AO: 0
|
|
m_AOMaxDistance: 1
|
|
m_CompAOExponent: 1
|
|
m_CompAOExponentDirect: 0
|
|
m_ExtractAmbientOcclusion: 0
|
|
m_Padding: 2
|
|
m_LightmapParameters: {fileID: 0}
|
|
m_LightmapsBakeMode: 1
|
|
m_TextureCompression: 1
|
|
m_ReflectionCompression: 2
|
|
m_MixedBakeMode: 2
|
|
m_BakeBackend: 2
|
|
m_PVRSampling: 1
|
|
m_PVRDirectSampleCount: 32
|
|
m_PVRSampleCount: 512
|
|
m_PVRBounces: 2
|
|
m_PVREnvironmentSampleCount: 256
|
|
m_PVREnvironmentReferencePointCount: 2048
|
|
m_PVRFilteringMode: 1
|
|
m_PVRDenoiserTypeDirect: 1
|
|
m_PVRDenoiserTypeIndirect: 1
|
|
m_PVRDenoiserTypeAO: 1
|
|
m_PVRFilterTypeDirect: 0
|
|
m_PVRFilterTypeIndirect: 0
|
|
m_PVRFilterTypeAO: 0
|
|
m_PVREnvironmentMIS: 1
|
|
m_PVRCulling: 1
|
|
m_PVRFilteringGaussRadiusDirect: 1
|
|
m_PVRFilteringGaussRadiusIndirect: 1
|
|
m_PVRFilteringGaussRadiusAO: 1
|
|
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
|
|
m_PVRFilteringAtrousPositionSigmaIndirect: 2
|
|
m_PVRFilteringAtrousPositionSigmaAO: 1
|
|
m_ExportTrainingData: 0
|
|
m_TrainingDataDestination: TrainingData
|
|
m_LightProbeSampleCountMultiplier: 4
|
|
m_LightingDataAsset: {fileID: 20201, guid: 0000000000000000f000000000000000, type: 0}
|
|
m_LightingSettings: {fileID: 0}
|
|
--- !u!196 &4
|
|
NavMeshSettings:
|
|
serializedVersion: 2
|
|
m_ObjectHideFlags: 0
|
|
m_BuildSettings:
|
|
serializedVersion: 3
|
|
agentTypeID: 0
|
|
agentRadius: 0.5
|
|
agentHeight: 2
|
|
agentSlope: 45
|
|
agentClimb: 0.4
|
|
ledgeDropHeight: 0
|
|
maxJumpAcrossDistance: 0
|
|
minRegionArea: 2
|
|
manualCellSize: 0
|
|
cellSize: 0.16666667
|
|
manualTileSize: 0
|
|
tileSize: 256
|
|
buildHeightMesh: 0
|
|
maxJobWorkers: 0
|
|
preserveTilesOutsideBounds: 0
|
|
debug:
|
|
m_Flags: 0
|
|
m_NavMeshData: {fileID: 0}
|
|
--- !u!1 &968373997
|
|
GameObject:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
serializedVersion: 6
|
|
m_Component:
|
|
- component: {fileID: 968374001}
|
|
- component: {fileID: 968374000}
|
|
- component: {fileID: 968373999}
|
|
- component: {fileID: 968373998}
|
|
m_Layer: 0
|
|
m_Name: Floor
|
|
m_TagString: Untagged
|
|
m_Icon: {fileID: 0}
|
|
m_NavMeshLayer: 0
|
|
m_StaticEditorFlags: 0
|
|
m_IsActive: 1
|
|
--- !u!65 &968373998
|
|
BoxCollider:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 968373997}
|
|
m_Material: {fileID: 0}
|
|
m_IncludeLayers:
|
|
serializedVersion: 2
|
|
m_Bits: 0
|
|
m_ExcludeLayers:
|
|
serializedVersion: 2
|
|
m_Bits: 0
|
|
m_LayerOverridePriority: 0
|
|
m_IsTrigger: 0
|
|
m_ProvidesContacts: 0
|
|
m_Enabled: 1
|
|
serializedVersion: 3
|
|
m_Size: {x: 1, y: 1, z: 1}
|
|
m_Center: {x: 0, y: 0, z: 0}
|
|
--- !u!23 &968373999
|
|
MeshRenderer:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 968373997}
|
|
m_Enabled: 1
|
|
m_CastShadows: 1
|
|
m_ReceiveShadows: 1
|
|
m_DynamicOccludee: 1
|
|
m_StaticShadowCaster: 0
|
|
m_MotionVectors: 1
|
|
m_LightProbeUsage: 1
|
|
m_ReflectionProbeUsage: 1
|
|
m_RayTracingMode: 2
|
|
m_RayTraceProcedural: 0
|
|
m_RayTracingAccelStructBuildFlagsOverride: 0
|
|
m_RayTracingAccelStructBuildFlags: 1
|
|
m_SmallMeshCulling: 1
|
|
m_ForceMeshLod: -1
|
|
m_MeshLodSelectionBias: 0
|
|
m_RenderingLayerMask: 1
|
|
m_RendererPriority: 0
|
|
m_Materials:
|
|
- {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2}
|
|
m_StaticBatchInfo:
|
|
firstSubMesh: 0
|
|
subMeshCount: 0
|
|
m_StaticBatchRoot: {fileID: 0}
|
|
m_ProbeAnchor: {fileID: 0}
|
|
m_LightProbeVolumeOverride: {fileID: 0}
|
|
m_ScaleInLightmap: 1
|
|
m_ReceiveGI: 1
|
|
m_PreserveUVs: 0
|
|
m_IgnoreNormalsForChartDetection: 0
|
|
m_ImportantGI: 0
|
|
m_StitchLightmapSeams: 1
|
|
m_SelectedEditorRenderState: 3
|
|
m_MinimumChartSize: 4
|
|
m_AutoUVMaxDistance: 0.5
|
|
m_AutoUVMaxAngle: 89
|
|
m_LightmapParameters: {fileID: 0}
|
|
m_GlobalIlluminationMeshLod: 0
|
|
m_SortingLayerID: 0
|
|
m_SortingLayer: 0
|
|
m_SortingOrder: 0
|
|
m_MaskInteraction: 0
|
|
m_AdditionalVertexStreams: {fileID: 0}
|
|
--- !u!33 &968374000
|
|
MeshFilter:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 968373997}
|
|
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
|
|
--- !u!4 &968374001
|
|
Transform:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 968373997}
|
|
serializedVersion: 2
|
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
m_LocalPosition: {x: 0, y: -1, z: 0}
|
|
m_LocalScale: {x: 10, y: 1, z: 10}
|
|
m_ConstrainProportionsScale: 0
|
|
m_Children: []
|
|
m_Father: {fileID: 0}
|
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
--- !u!1 &2141865149
|
|
GameObject:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
serializedVersion: 6
|
|
m_Component:
|
|
- component: {fileID: 2141865153}
|
|
- component: {fileID: 2141865152}
|
|
- component: {fileID: 2141865151}
|
|
- component: {fileID: 2141865150}
|
|
- component: {fileID: 2141865154}
|
|
m_Layer: 0
|
|
m_Name: Start Match
|
|
m_TagString: Untagged
|
|
m_Icon: {fileID: 0}
|
|
m_NavMeshLayer: 0
|
|
m_StaticEditorFlags: 0
|
|
m_IsActive: 1
|
|
--- !u!65 &2141865150
|
|
BoxCollider:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 2141865149}
|
|
m_Material: {fileID: 0}
|
|
m_IncludeLayers:
|
|
serializedVersion: 2
|
|
m_Bits: 0
|
|
m_ExcludeLayers:
|
|
serializedVersion: 2
|
|
m_Bits: 0
|
|
m_LayerOverridePriority: 0
|
|
m_IsTrigger: 1
|
|
m_ProvidesContacts: 0
|
|
m_Enabled: 1
|
|
serializedVersion: 3
|
|
m_Size: {x: 1, y: 1, z: 1}
|
|
m_Center: {x: 0, y: 0, z: 0}
|
|
--- !u!23 &2141865151
|
|
MeshRenderer:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 2141865149}
|
|
m_Enabled: 1
|
|
m_CastShadows: 1
|
|
m_ReceiveShadows: 1
|
|
m_DynamicOccludee: 1
|
|
m_StaticShadowCaster: 0
|
|
m_MotionVectors: 1
|
|
m_LightProbeUsage: 1
|
|
m_ReflectionProbeUsage: 1
|
|
m_RayTracingMode: 2
|
|
m_RayTraceProcedural: 0
|
|
m_RayTracingAccelStructBuildFlagsOverride: 0
|
|
m_RayTracingAccelStructBuildFlags: 1
|
|
m_SmallMeshCulling: 1
|
|
m_ForceMeshLod: -1
|
|
m_MeshLodSelectionBias: 0
|
|
m_RenderingLayerMask: 1
|
|
m_RendererPriority: 0
|
|
m_Materials:
|
|
- {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2}
|
|
m_StaticBatchInfo:
|
|
firstSubMesh: 0
|
|
subMeshCount: 0
|
|
m_StaticBatchRoot: {fileID: 0}
|
|
m_ProbeAnchor: {fileID: 0}
|
|
m_LightProbeVolumeOverride: {fileID: 0}
|
|
m_ScaleInLightmap: 1
|
|
m_ReceiveGI: 1
|
|
m_PreserveUVs: 0
|
|
m_IgnoreNormalsForChartDetection: 0
|
|
m_ImportantGI: 0
|
|
m_StitchLightmapSeams: 1
|
|
m_SelectedEditorRenderState: 3
|
|
m_MinimumChartSize: 4
|
|
m_AutoUVMaxDistance: 0.5
|
|
m_AutoUVMaxAngle: 89
|
|
m_LightmapParameters: {fileID: 0}
|
|
m_GlobalIlluminationMeshLod: 0
|
|
m_SortingLayerID: 0
|
|
m_SortingLayer: 0
|
|
m_SortingOrder: 0
|
|
m_MaskInteraction: 0
|
|
m_AdditionalVertexStreams: {fileID: 0}
|
|
--- !u!33 &2141865152
|
|
MeshFilter:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 2141865149}
|
|
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
|
|
--- !u!4 &2141865153
|
|
Transform:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 2141865149}
|
|
serializedVersion: 2
|
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
m_LocalPosition: {x: -3.89, y: 0, z: 0}
|
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
m_ConstrainProportionsScale: 0
|
|
m_Children: []
|
|
m_Father: {fileID: 0}
|
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
--- !u!114 &2141865154
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 2141865149}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: dbc3790cccc4958458bb38d883b69afb, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier: Assembly-CSharp::StartMatchTrigger
|
|
--- !u!1660057539 &9223372036854775807
|
|
SceneRoots:
|
|
m_ObjectHideFlags: 0
|
|
m_Roots:
|
|
- {fileID: 968374001}
|
|
- {fileID: 2141865153}
|