init
This commit is contained in:
commit
483027fca6
|
|
@ -0,0 +1,105 @@
|
||||||
|
# This .gitignore file should be placed at the root of your Unity project directory
|
||||||
|
#
|
||||||
|
# Get latest from https://github.com/github/gitignore/blob/main/Unity.gitignore
|
||||||
|
#
|
||||||
|
.utmp/
|
||||||
|
/[Ll]ibrary/
|
||||||
|
/[Tt]emp/
|
||||||
|
/[Oo]bj/
|
||||||
|
/[Bb]uild/
|
||||||
|
/[Bb]uilds/
|
||||||
|
/[Ll]ogs/
|
||||||
|
/[Uu]ser[Ss]ettings/
|
||||||
|
*.log
|
||||||
|
|
||||||
|
# MemoryCaptures can get excessive in size.
|
||||||
|
# They also could contain extremely sensitive data
|
||||||
|
/[Mm]emoryCaptures/
|
||||||
|
|
||||||
|
# Recordings can get excessive in size
|
||||||
|
/[Rr]ecordings/
|
||||||
|
|
||||||
|
# Uncomment this line if you wish to ignore the asset store tools plugin
|
||||||
|
# /[Aa]ssets/AssetStoreTools*
|
||||||
|
|
||||||
|
# Autogenerated Jetbrains Rider plugin
|
||||||
|
/[Aa]ssets/Plugins/Editor/JetBrains*
|
||||||
|
|
||||||
|
# Visual Studio cache directory
|
||||||
|
.vs/
|
||||||
|
|
||||||
|
# Rider cache directory
|
||||||
|
.idea/
|
||||||
|
*.iml
|
||||||
|
cmake-build-*/
|
||||||
|
|
||||||
|
# Gradle cache directory
|
||||||
|
.gradle/
|
||||||
|
|
||||||
|
# Autogenerated VS/MD/Consulo solution and project files
|
||||||
|
ExportedObj/
|
||||||
|
.consulo/
|
||||||
|
*.csproj
|
||||||
|
*.unityproj
|
||||||
|
*.sln
|
||||||
|
*.suo
|
||||||
|
*.tmp
|
||||||
|
*.user
|
||||||
|
*.userprefs
|
||||||
|
*.pidb
|
||||||
|
*.booproj
|
||||||
|
*.svd
|
||||||
|
*.pdb
|
||||||
|
*.mdb
|
||||||
|
*.opendb
|
||||||
|
*.VC.db
|
||||||
|
|
||||||
|
# Unity3D generated meta files
|
||||||
|
*.pidb.meta
|
||||||
|
*.pdb.meta
|
||||||
|
*.mdb.meta
|
||||||
|
|
||||||
|
# Unity3D generated file on crash reports
|
||||||
|
sysinfo.txt
|
||||||
|
|
||||||
|
# Builds
|
||||||
|
*.apk
|
||||||
|
*.aab
|
||||||
|
*.unitypackage
|
||||||
|
*.unitypackage.meta
|
||||||
|
*.app
|
||||||
|
|
||||||
|
# Crashlytics generated file
|
||||||
|
crashlytics-build.properties
|
||||||
|
|
||||||
|
# Packed Addressables
|
||||||
|
/[Aa]ssets/[Aa]ddressable[Aa]ssets[Dd]ata/*/*.bin*
|
||||||
|
|
||||||
|
# Temporary auto-generated Android Assets
|
||||||
|
/[Aa]ssets/[Ss]treamingAssets/
|
||||||
|
|
||||||
|
/AGENTS.md
|
||||||
|
/GameDesign.md
|
||||||
|
|
||||||
|
/Assets/RawResources
|
||||||
|
|
||||||
|
/.vscode
|
||||||
|
|
||||||
|
# Excel temporary lock files
|
||||||
|
~$*.xls
|
||||||
|
~$*.xlsx
|
||||||
|
~$*.xlsm
|
||||||
|
~$*.xlsb
|
||||||
|
|
||||||
|
/数据表/__pycache__
|
||||||
|
|
||||||
|
/Release
|
||||||
|
/AssetBundles
|
||||||
|
/Android
|
||||||
|
/bin
|
||||||
|
/.omc
|
||||||
|
/.omx
|
||||||
|
/.dotnet_home
|
||||||
|
/.dotnet
|
||||||
|
/.claude
|
||||||
|
/.codex
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8506913695ad92246a9667a19411db6a
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -0,0 +1,407 @@
|
||||||
|
%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: 9
|
||||||
|
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_IndirectSpecularColor: {r: 0.18028305, g: 0.22571313, b: 0.3069213, a: 1}
|
||||||
|
m_UseRadianceAmbientProbe: 0
|
||||||
|
--- !u!157 &3
|
||||||
|
LightmapSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 12
|
||||||
|
m_GIWorkflowMode: 1
|
||||||
|
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_FinalGather: 0
|
||||||
|
m_FinalGatherFiltering: 1
|
||||||
|
m_FinalGatherRayCount: 256
|
||||||
|
m_ReflectionCompression: 2
|
||||||
|
m_MixedBakeMode: 2
|
||||||
|
m_BakeBackend: 1
|
||||||
|
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: 5
|
||||||
|
m_PVRFilteringGaussRadiusAO: 2
|
||||||
|
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
|
||||||
|
m_PVRFilteringAtrousPositionSigmaIndirect: 2
|
||||||
|
m_PVRFilteringAtrousPositionSigmaAO: 1
|
||||||
|
m_ExportTrainingData: 0
|
||||||
|
m_TrainingDataDestination: TrainingData
|
||||||
|
m_LightProbeSampleCountMultiplier: 4
|
||||||
|
m_LightingDataAsset: {fileID: 0}
|
||||||
|
m_LightingSettings: {fileID: 0}
|
||||||
|
--- !u!196 &4
|
||||||
|
NavMeshSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_BuildSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
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
|
||||||
|
accuratePlacement: 0
|
||||||
|
maxJobWorkers: 0
|
||||||
|
preserveTilesOutsideBounds: 0
|
||||||
|
debug:
|
||||||
|
m_Flags: 0
|
||||||
|
m_NavMeshData: {fileID: 0}
|
||||||
|
--- !u!1 &330585543
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 330585546}
|
||||||
|
- component: {fileID: 330585545}
|
||||||
|
- component: {fileID: 330585544}
|
||||||
|
- component: {fileID: 330585547}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Main Camera
|
||||||
|
m_TagString: MainCamera
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!81 &330585544
|
||||||
|
AudioListener:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 330585543}
|
||||||
|
m_Enabled: 1
|
||||||
|
--- !u!20 &330585545
|
||||||
|
Camera:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 330585543}
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 2
|
||||||
|
m_ClearFlags: 1
|
||||||
|
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
|
||||||
|
m_projectionMatrixMode: 1
|
||||||
|
m_GateFitMode: 2
|
||||||
|
m_FOVAxisMode: 0
|
||||||
|
m_SensorSize: {x: 36, y: 24}
|
||||||
|
m_LensShift: {x: 0, y: 0}
|
||||||
|
m_FocalLength: 50
|
||||||
|
m_NormalizedViewPortRect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 1
|
||||||
|
height: 1
|
||||||
|
near clip plane: 0.3
|
||||||
|
far clip plane: 1000
|
||||||
|
field of view: 60
|
||||||
|
orthographic: 0
|
||||||
|
orthographic size: 5
|
||||||
|
m_Depth: -1
|
||||||
|
m_CullingMask:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_RenderingPath: -1
|
||||||
|
m_TargetTexture: {fileID: 0}
|
||||||
|
m_TargetDisplay: 0
|
||||||
|
m_TargetEye: 3
|
||||||
|
m_HDR: 1
|
||||||
|
m_AllowMSAA: 1
|
||||||
|
m_AllowDynamicResolution: 0
|
||||||
|
m_ForceIntoRT: 0
|
||||||
|
m_OcclusionCulling: 1
|
||||||
|
m_StereoConvergence: 10
|
||||||
|
m_StereoSeparation: 0.022
|
||||||
|
--- !u!4 &330585546
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 330585543}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 1, z: -10}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &330585547
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 330585543}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_RenderShadows: 1
|
||||||
|
m_RequiresDepthTextureOption: 2
|
||||||
|
m_RequiresOpaqueTextureOption: 2
|
||||||
|
m_CameraType: 0
|
||||||
|
m_Cameras: []
|
||||||
|
m_RendererIndex: -1
|
||||||
|
m_VolumeLayerMask:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 1
|
||||||
|
m_VolumeTrigger: {fileID: 0}
|
||||||
|
m_VolumeFrameworkUpdateModeOption: 2
|
||||||
|
m_RenderPostProcessing: 1
|
||||||
|
m_Antialiasing: 0
|
||||||
|
m_AntialiasingQuality: 2
|
||||||
|
m_StopNaN: 0
|
||||||
|
m_Dithering: 0
|
||||||
|
m_ClearDepth: 1
|
||||||
|
m_AllowXRRendering: 1
|
||||||
|
m_RequiresDepthTexture: 0
|
||||||
|
m_RequiresColorTexture: 0
|
||||||
|
m_Version: 2
|
||||||
|
--- !u!1 &410087039
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 410087041}
|
||||||
|
- component: {fileID: 410087040}
|
||||||
|
- component: {fileID: 410087042}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Directional Light
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!108 &410087040
|
||||||
|
Light:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 410087039}
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 10
|
||||||
|
m_Type: 1
|
||||||
|
m_Shape: 0
|
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_Intensity: 2
|
||||||
|
m_Range: 10
|
||||||
|
m_SpotAngle: 30
|
||||||
|
m_InnerSpotAngle: 21.80208
|
||||||
|
m_CookieSize: 10
|
||||||
|
m_Shadows:
|
||||||
|
m_Type: 2
|
||||||
|
m_Resolution: -1
|
||||||
|
m_CustomResolution: -1
|
||||||
|
m_Strength: 1
|
||||||
|
m_Bias: 0.05
|
||||||
|
m_NormalBias: 0.4
|
||||||
|
m_NearPlane: 0.2
|
||||||
|
m_CullingMatrixOverride:
|
||||||
|
e00: 1
|
||||||
|
e01: 0
|
||||||
|
e02: 0
|
||||||
|
e03: 0
|
||||||
|
e10: 0
|
||||||
|
e11: 1
|
||||||
|
e12: 0
|
||||||
|
e13: 0
|
||||||
|
e20: 0
|
||||||
|
e21: 0
|
||||||
|
e22: 1
|
||||||
|
e23: 0
|
||||||
|
e30: 0
|
||||||
|
e31: 0
|
||||||
|
e32: 0
|
||||||
|
e33: 1
|
||||||
|
m_UseCullingMatrixOverride: 0
|
||||||
|
m_Cookie: {fileID: 0}
|
||||||
|
m_DrawHalo: 0
|
||||||
|
m_Flare: {fileID: 0}
|
||||||
|
m_RenderMode: 0
|
||||||
|
m_CullingMask:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_RenderingLayerMask: 1
|
||||||
|
m_Lightmapping: 4
|
||||||
|
m_LightShadowCasterMode: 0
|
||||||
|
m_AreaSize: {x: 1, y: 1}
|
||||||
|
m_BounceIntensity: 1
|
||||||
|
m_ColorTemperature: 5000
|
||||||
|
m_UseColorTemperature: 1
|
||||||
|
m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_UseBoundingSphereOverride: 0
|
||||||
|
m_UseViewFrustumForShadowCasterCull: 1
|
||||||
|
m_ShadowRadius: 0
|
||||||
|
m_ShadowAngle: 0
|
||||||
|
--- !u!4 &410087041
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 410087039}
|
||||||
|
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
|
||||||
|
m_LocalPosition: {x: 0, y: 3, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_RootOrder: 1
|
||||||
|
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
|
||||||
|
--- !u!114 &410087042
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 410087039}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Version: 1
|
||||||
|
m_UsePipelineSettings: 1
|
||||||
|
m_AdditionalLightsShadowResolutionTier: 2
|
||||||
|
m_LightLayerMask: 1
|
||||||
|
m_CustomShadowLayers: 0
|
||||||
|
m_ShadowLayerMask: 1
|
||||||
|
m_LightCookieSize: {x: 1, y: 1}
|
||||||
|
m_LightCookieOffset: {x: 0, y: 0}
|
||||||
|
--- !u!1 &832575517
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 832575519}
|
||||||
|
- component: {fileID: 832575518}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Global Volume
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!114 &832575518
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 832575517}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 172515602e62fb746b5d573b38a5fe58, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_IsGlobal: 1
|
||||||
|
priority: 0
|
||||||
|
blendDistance: 0
|
||||||
|
weight: 1
|
||||||
|
sharedProfile: {fileID: 11400000, guid: a6560a915ef98420e9faacc1c7438823, type: 2}
|
||||||
|
--- !u!4 &832575519
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 832575517}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_RootOrder: 2
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 99c9720ab356a0642a771bea13969a05
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 709f11a7f3c4041caa4ef136ea32d874
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -0,0 +1,123 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &-7893295128165547882
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
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: 0b2db86121404754db890f4c8dfe81b2, type: 3}
|
||||||
|
m_Name: Bloom
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
m_AdvancedMode: 0
|
||||||
|
threshold:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
min: 0
|
||||||
|
intensity:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
min: 0
|
||||||
|
scatter:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 0.7
|
||||||
|
min: 0
|
||||||
|
max: 1
|
||||||
|
clamp:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 65472
|
||||||
|
min: 0
|
||||||
|
tint:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
hdr: 0
|
||||||
|
showAlpha: 0
|
||||||
|
showEyeDropper: 1
|
||||||
|
highQualityFiltering:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 0
|
||||||
|
skipIterations:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 1
|
||||||
|
min: 0
|
||||||
|
max: 16
|
||||||
|
dirtTexture:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: {fileID: 0}
|
||||||
|
dirtIntensity:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 0
|
||||||
|
min: 0
|
||||||
|
--- !u!114 &-7011558710299706105
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
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: 899c54efeace73346a0a16faa3afe726, type: 3}
|
||||||
|
m_Name: Vignette
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
m_AdvancedMode: 0
|
||||||
|
color:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: {r: 0, g: 0, b: 0, a: 1}
|
||||||
|
hdr: 0
|
||||||
|
showAlpha: 0
|
||||||
|
showEyeDropper: 1
|
||||||
|
center:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: {x: 0.5, y: 0.5}
|
||||||
|
intensity:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.25
|
||||||
|
min: 0
|
||||||
|
max: 1
|
||||||
|
smoothness:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.4
|
||||||
|
min: 0.01
|
||||||
|
max: 1
|
||||||
|
rounded:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 0
|
||||||
|
--- !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: d7fd9488000d3734a9e00ee676215985, type: 3}
|
||||||
|
m_Name: SampleSceneProfile
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
components:
|
||||||
|
- {fileID: 849379129802519247}
|
||||||
|
- {fileID: -7893295128165547882}
|
||||||
|
- {fileID: -7011558710299706105}
|
||||||
|
--- !u!114 &849379129802519247
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
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: 97c23e3b12dc18c42a140437e53d3951, type: 3}
|
||||||
|
m_Name: Tonemapping
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
m_AdvancedMode: 0
|
||||||
|
mode:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: a6560a915ef98420e9faacc1c7438823
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -0,0 +1,76 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &-1878332245247344467
|
||||||
|
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: f62c9c65cf3354c93be831c8bc075510, type: 3}
|
||||||
|
m_Name: SSAO
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Active: 1
|
||||||
|
m_Shader: {fileID: 0}
|
||||||
|
m_Settings:
|
||||||
|
Downsample: 1
|
||||||
|
AfterOpaque: 0
|
||||||
|
Source: 0
|
||||||
|
NormalSamples: 0
|
||||||
|
Intensity: 0.5
|
||||||
|
DirectLightingStrength: 0.25
|
||||||
|
Radius: 0.25
|
||||||
|
SampleCount: 4
|
||||||
|
--- !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: de640fe3d0db1804a85f9fc8f5cadab6, type: 3}
|
||||||
|
m_Name: URP-Balanced-Renderer
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
debugShaders:
|
||||||
|
debugReplacementPS: {fileID: 4800000, guid: cf852408f2e174538bcd9b7fda1c5ae7,
|
||||||
|
type: 3}
|
||||||
|
m_RendererFeatures:
|
||||||
|
- {fileID: -1878332245247344467}
|
||||||
|
m_RendererFeatureMap: adc0de57c6d2eee5
|
||||||
|
m_UseNativeRenderPass: 0
|
||||||
|
postProcessData: {fileID: 11400000, guid: 41439944d30ece34e96484bdb6645b55, type: 2}
|
||||||
|
shaders:
|
||||||
|
blitPS: {fileID: 4800000, guid: c17132b1f77d20942aa75f8429c0f8bc, type: 3}
|
||||||
|
copyDepthPS: {fileID: 4800000, guid: d6dae50ee9e1bfa4db75f19f99355220, type: 3}
|
||||||
|
screenSpaceShadowPS: {fileID: 0}
|
||||||
|
samplingPS: {fileID: 4800000, guid: 04c410c9937594faa893a11dceb85f7e, type: 3}
|
||||||
|
stencilDeferredPS: {fileID: 4800000, guid: e9155b26e1bc55942a41e518703fe304, type: 3}
|
||||||
|
fallbackErrorPS: {fileID: 4800000, guid: e6e9a19c3678ded42a3bc431ebef7dbd, type: 3}
|
||||||
|
materialErrorPS: {fileID: 4800000, guid: 5fd9a8feb75a4b5894c241777f519d4e, type: 3}
|
||||||
|
coreBlitPS: {fileID: 0}
|
||||||
|
coreBlitColorAndDepthPS: {fileID: 0}
|
||||||
|
cameraMotionVector: {fileID: 0}
|
||||||
|
objectMotionVector: {fileID: 0}
|
||||||
|
m_OpaqueLayerMask:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_TransparentLayerMask:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_DefaultStencilState:
|
||||||
|
overrideStencilState: 0
|
||||||
|
stencilReference: 0
|
||||||
|
stencilCompareFunction: 8
|
||||||
|
passOperation: 2
|
||||||
|
failOperation: 0
|
||||||
|
zFailOperation: 0
|
||||||
|
m_ShadowTransparentReceive: 1
|
||||||
|
m_RenderingMode: 0
|
||||||
|
m_DepthPrimingMode: 0
|
||||||
|
m_AccurateGbufferNormals: 0
|
||||||
|
m_ClusteredRendering: 0
|
||||||
|
m_TileSize: 32
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: e634585d5c4544dd297acaee93dc2beb
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -0,0 +1,114 @@
|
||||||
|
%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: bf2edee5c58d82540a51f03df9d42094, type: 3}
|
||||||
|
m_Name: URP-Balanced
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
k_AssetVersion: 11
|
||||||
|
k_AssetPreviousVersion: 11
|
||||||
|
m_RendererType: 1
|
||||||
|
m_RendererData: {fileID: 0}
|
||||||
|
m_RendererDataList:
|
||||||
|
- {fileID: 11400000, guid: e634585d5c4544dd297acaee93dc2beb, type: 2}
|
||||||
|
m_DefaultRendererIndex: 0
|
||||||
|
m_RequireDepthTexture: 0
|
||||||
|
m_RequireOpaqueTexture: 0
|
||||||
|
m_OpaqueDownsampling: 1
|
||||||
|
m_SupportsTerrainHoles: 1
|
||||||
|
m_SupportsHDR: 1
|
||||||
|
m_HDRColorBufferPrecision: 0
|
||||||
|
m_MSAA: 1
|
||||||
|
m_RenderScale: 1
|
||||||
|
m_UpscalingFilter: 0
|
||||||
|
m_FsrOverrideSharpness: 0
|
||||||
|
m_FsrSharpness: 0.92
|
||||||
|
m_EnableLODCrossFade: 1
|
||||||
|
m_LODCrossFadeDitheringType: 1
|
||||||
|
m_ShEvalMode: 0
|
||||||
|
m_MainLightRenderingMode: 1
|
||||||
|
m_MainLightShadowsSupported: 1
|
||||||
|
m_MainLightShadowmapResolution: 1024
|
||||||
|
m_AdditionalLightsRenderingMode: 1
|
||||||
|
m_AdditionalLightsPerObjectLimit: 2
|
||||||
|
m_AdditionalLightShadowsSupported: 0
|
||||||
|
m_AdditionalLightsShadowmapResolution: 512
|
||||||
|
m_AdditionalLightsShadowResolutionTierLow: 128
|
||||||
|
m_AdditionalLightsShadowResolutionTierMedium: 256
|
||||||
|
m_AdditionalLightsShadowResolutionTierHigh: 512
|
||||||
|
m_ReflectionProbeBlending: 0
|
||||||
|
m_ReflectionProbeBoxProjection: 0
|
||||||
|
m_ShadowDistance: 50
|
||||||
|
m_ShadowCascadeCount: 1
|
||||||
|
m_Cascade2Split: 0.25
|
||||||
|
m_Cascade3Split: {x: 0.1, y: 0.3}
|
||||||
|
m_Cascade4Split: {x: 0.067, y: 0.2, z: 0.467}
|
||||||
|
m_CascadeBorder: 0.1
|
||||||
|
m_ShadowDepthBias: 1
|
||||||
|
m_ShadowNormalBias: 1
|
||||||
|
m_AnyShadowsSupported: 1
|
||||||
|
m_SoftShadowsSupported: 1
|
||||||
|
m_ConservativeEnclosingSphere: 0
|
||||||
|
m_NumIterationsEnclosingSphere: 64
|
||||||
|
m_SoftShadowQuality: 2
|
||||||
|
m_AdditionalLightsCookieResolution: 512
|
||||||
|
m_AdditionalLightsCookieFormat: 1
|
||||||
|
m_UseSRPBatcher: 1
|
||||||
|
m_SupportsDynamicBatching: 0
|
||||||
|
m_MixedLightingSupported: 1
|
||||||
|
m_SupportsLightCookies: 1
|
||||||
|
m_SupportsLightLayers: 0
|
||||||
|
m_DebugLevel: 0
|
||||||
|
m_StoreActionsOptimization: 0
|
||||||
|
m_EnableRenderGraph: 0
|
||||||
|
m_UseAdaptivePerformance: 1
|
||||||
|
m_ColorGradingMode: 0
|
||||||
|
m_ColorGradingLutSize: 32
|
||||||
|
m_UseFastSRGBLinearConversion: 0
|
||||||
|
m_SupportDataDrivenLensFlare: 1
|
||||||
|
m_ShadowType: 1
|
||||||
|
m_LocalShadowsSupported: 0
|
||||||
|
m_LocalShadowsAtlasResolution: 256
|
||||||
|
m_MaxPixelLights: 0
|
||||||
|
m_ShadowAtlasResolution: 256
|
||||||
|
m_VolumeFrameworkUpdateMode: 0
|
||||||
|
m_Textures:
|
||||||
|
blueNoise64LTex: {fileID: 2800000, guid: e3d24661c1e055f45a7560c033dbb837, type: 3}
|
||||||
|
bayerMatrixTex: {fileID: 2800000, guid: f9ee4ed84c1d10c49aabb9b210b0fc44, type: 3}
|
||||||
|
m_PrefilteringModeMainLightShadows: 1
|
||||||
|
m_PrefilteringModeAdditionalLight: 4
|
||||||
|
m_PrefilteringModeAdditionalLightShadows: 1
|
||||||
|
m_PrefilterXRKeywords: 0
|
||||||
|
m_PrefilteringModeForwardPlus: 1
|
||||||
|
m_PrefilteringModeDeferredRendering: 1
|
||||||
|
m_PrefilteringModeScreenSpaceOcclusion: 1
|
||||||
|
m_PrefilterDebugKeywords: 0
|
||||||
|
m_PrefilterWriteRenderingLayers: 0
|
||||||
|
m_PrefilterHDROutput: 0
|
||||||
|
m_PrefilterSSAODepthNormals: 0
|
||||||
|
m_PrefilterSSAOSourceDepthLow: 0
|
||||||
|
m_PrefilterSSAOSourceDepthMedium: 0
|
||||||
|
m_PrefilterSSAOSourceDepthHigh: 0
|
||||||
|
m_PrefilterSSAOInterleaved: 0
|
||||||
|
m_PrefilterSSAOBlueNoise: 0
|
||||||
|
m_PrefilterSSAOSampleCountLow: 0
|
||||||
|
m_PrefilterSSAOSampleCountMedium: 0
|
||||||
|
m_PrefilterSSAOSampleCountHigh: 0
|
||||||
|
m_PrefilterDBufferMRT1: 0
|
||||||
|
m_PrefilterDBufferMRT2: 0
|
||||||
|
m_PrefilterDBufferMRT3: 0
|
||||||
|
m_PrefilterSoftShadowsQualityLow: 0
|
||||||
|
m_PrefilterSoftShadowsQualityMedium: 0
|
||||||
|
m_PrefilterSoftShadowsQualityHigh: 0
|
||||||
|
m_PrefilterSoftShadows: 0
|
||||||
|
m_PrefilterScreenCoord: 0
|
||||||
|
m_PrefilterNativeRenderPass: 0
|
||||||
|
m_ShaderVariantLogLevel: 0
|
||||||
|
m_ShadowCascades: 0
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: e1260c1148f6143b28bae5ace5e9c5d1
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -0,0 +1,104 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &-1878332245247344467
|
||||||
|
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: f62c9c65cf3354c93be831c8bc075510, type: 3}
|
||||||
|
m_Name: SSAO
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Active: 1
|
||||||
|
m_Settings:
|
||||||
|
AOMethod: 1
|
||||||
|
Downsample: 0
|
||||||
|
AfterOpaque: 0
|
||||||
|
Source: 1
|
||||||
|
NormalSamples: 1
|
||||||
|
Intensity: 0.5
|
||||||
|
DirectLightingStrength: 0.25
|
||||||
|
Radius: 0.25
|
||||||
|
Samples: 0
|
||||||
|
BlurQuality: 0
|
||||||
|
Falloff: 100
|
||||||
|
SampleCount: -1
|
||||||
|
m_BlueNoise256Textures:
|
||||||
|
- {fileID: 2800000, guid: 36f118343fc974119bee3d09e2111500, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 4b7b083e6b6734e8bb2838b0b50a0bc8, type: 3}
|
||||||
|
- {fileID: 2800000, guid: c06cc21c692f94f5fb5206247191eeee, type: 3}
|
||||||
|
- {fileID: 2800000, guid: cb76dd40fa7654f9587f6a344f125c9a, type: 3}
|
||||||
|
- {fileID: 2800000, guid: e32226222ff144b24bf3a5a451de54bc, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 3302065f671a8450b82c9ddf07426f3a, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 56a77a3e8d64f47b6afe9e3c95cb57d5, type: 3}
|
||||||
|
m_Shader: {fileID: 4800000, guid: 0849e84e3d62649e8882e9d6f056a017, type: 3}
|
||||||
|
--- !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: de640fe3d0db1804a85f9fc8f5cadab6, type: 3}
|
||||||
|
m_Name: URP-HighFidelity-Renderer
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
debugShaders:
|
||||||
|
debugReplacementPS: {fileID: 4800000, guid: cf852408f2e174538bcd9b7fda1c5ae7,
|
||||||
|
type: 3}
|
||||||
|
hdrDebugViewPS: {fileID: 4800000, guid: 573620ae32aec764abd4d728906d2587, type: 3}
|
||||||
|
m_RendererFeatures:
|
||||||
|
- {fileID: -1878332245247344467}
|
||||||
|
m_RendererFeatureMap: adc0de57c6d2eee5
|
||||||
|
m_UseNativeRenderPass: 0
|
||||||
|
postProcessData: {fileID: 11400000, guid: 41439944d30ece34e96484bdb6645b55, type: 2}
|
||||||
|
xrSystemData: {fileID: 11400000, guid: 60e1133243b97e347b653163a8c01b64, type: 2}
|
||||||
|
shaders:
|
||||||
|
blitPS: {fileID: 4800000, guid: c17132b1f77d20942aa75f8429c0f8bc, type: 3}
|
||||||
|
copyDepthPS: {fileID: 4800000, guid: d6dae50ee9e1bfa4db75f19f99355220, type: 3}
|
||||||
|
screenSpaceShadowPS: {fileID: 0}
|
||||||
|
samplingPS: {fileID: 4800000, guid: 04c410c9937594faa893a11dceb85f7e, type: 3}
|
||||||
|
stencilDeferredPS: {fileID: 4800000, guid: e9155b26e1bc55942a41e518703fe304, type: 3}
|
||||||
|
fallbackErrorPS: {fileID: 4800000, guid: e6e9a19c3678ded42a3bc431ebef7dbd, type: 3}
|
||||||
|
fallbackLoadingPS: {fileID: 4800000, guid: 7f888aff2ac86494babad1c2c5daeee2, type: 3}
|
||||||
|
materialErrorPS: {fileID: 4800000, guid: 5fd9a8feb75a4b5894c241777f519d4e, type: 3}
|
||||||
|
coreBlitPS: {fileID: 4800000, guid: 93446b5c5339d4f00b85c159e1159b7c, type: 3}
|
||||||
|
coreBlitColorAndDepthPS: {fileID: 4800000, guid: d104b2fc1ca6445babb8e90b0758136b,
|
||||||
|
type: 3}
|
||||||
|
blitHDROverlay: {fileID: 4800000, guid: a89bee29cffa951418fc1e2da94d1959, type: 3}
|
||||||
|
cameraMotionVector: {fileID: 4800000, guid: c56b7e0d4c7cb484e959caeeedae9bbf,
|
||||||
|
type: 3}
|
||||||
|
objectMotionVector: {fileID: 4800000, guid: 7b3ede40266cd49a395def176e1bc486,
|
||||||
|
type: 3}
|
||||||
|
dataDrivenLensFlare: {fileID: 4800000, guid: 6cda457ac28612740adb23da5d39ea92,
|
||||||
|
type: 3}
|
||||||
|
terrainDetailLitPS: {fileID: 4800000, guid: f6783ab646d374f94b199774402a5144,
|
||||||
|
type: 3}
|
||||||
|
terrainDetailGrassPS: {fileID: 4800000, guid: e507fdfead5ca47e8b9a768b51c291a1,
|
||||||
|
type: 3}
|
||||||
|
terrainDetailGrassBillboardPS: {fileID: 4800000, guid: 29868e73b638e48ca99a19ea58c48d90,
|
||||||
|
type: 3}
|
||||||
|
m_AssetVersion: 2
|
||||||
|
m_OpaqueLayerMask:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_TransparentLayerMask:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_DefaultStencilState:
|
||||||
|
overrideStencilState: 0
|
||||||
|
stencilReference: 0
|
||||||
|
stencilCompareFunction: 8
|
||||||
|
passOperation: 2
|
||||||
|
failOperation: 0
|
||||||
|
zFailOperation: 0
|
||||||
|
m_ShadowTransparentReceive: 1
|
||||||
|
m_RenderingMode: 0
|
||||||
|
m_DepthPrimingMode: 0
|
||||||
|
m_CopyDepthMode: 0
|
||||||
|
m_AccurateGbufferNormals: 0
|
||||||
|
m_IntermediateTextureMode: 1
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c40be3174f62c4acf8c1216858c64956
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -0,0 +1,114 @@
|
||||||
|
%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: bf2edee5c58d82540a51f03df9d42094, type: 3}
|
||||||
|
m_Name: URP-HighFidelity
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
k_AssetVersion: 11
|
||||||
|
k_AssetPreviousVersion: 11
|
||||||
|
m_RendererType: 1
|
||||||
|
m_RendererData: {fileID: 0}
|
||||||
|
m_RendererDataList:
|
||||||
|
- {fileID: 11400000, guid: c40be3174f62c4acf8c1216858c64956, type: 2}
|
||||||
|
m_DefaultRendererIndex: 0
|
||||||
|
m_RequireDepthTexture: 0
|
||||||
|
m_RequireOpaqueTexture: 0
|
||||||
|
m_OpaqueDownsampling: 1
|
||||||
|
m_SupportsTerrainHoles: 1
|
||||||
|
m_SupportsHDR: 1
|
||||||
|
m_HDRColorBufferPrecision: 0
|
||||||
|
m_MSAA: 4
|
||||||
|
m_RenderScale: 1
|
||||||
|
m_UpscalingFilter: 0
|
||||||
|
m_FsrOverrideSharpness: 0
|
||||||
|
m_FsrSharpness: 0.92
|
||||||
|
m_EnableLODCrossFade: 1
|
||||||
|
m_LODCrossFadeDitheringType: 1
|
||||||
|
m_ShEvalMode: 0
|
||||||
|
m_MainLightRenderingMode: 1
|
||||||
|
m_MainLightShadowsSupported: 1
|
||||||
|
m_MainLightShadowmapResolution: 4096
|
||||||
|
m_AdditionalLightsRenderingMode: 1
|
||||||
|
m_AdditionalLightsPerObjectLimit: 8
|
||||||
|
m_AdditionalLightShadowsSupported: 1
|
||||||
|
m_AdditionalLightsShadowmapResolution: 4096
|
||||||
|
m_AdditionalLightsShadowResolutionTierLow: 128
|
||||||
|
m_AdditionalLightsShadowResolutionTierMedium: 256
|
||||||
|
m_AdditionalLightsShadowResolutionTierHigh: 512
|
||||||
|
m_ReflectionProbeBlending: 1
|
||||||
|
m_ReflectionProbeBoxProjection: 1
|
||||||
|
m_ShadowDistance: 150
|
||||||
|
m_ShadowCascadeCount: 4
|
||||||
|
m_Cascade2Split: 0.25
|
||||||
|
m_Cascade3Split: {x: 0.1, y: 0.3}
|
||||||
|
m_Cascade4Split: {x: 0.067, y: 0.2, z: 0.467}
|
||||||
|
m_CascadeBorder: 0.1
|
||||||
|
m_ShadowDepthBias: 1
|
||||||
|
m_ShadowNormalBias: 1
|
||||||
|
m_AnyShadowsSupported: 1
|
||||||
|
m_SoftShadowsSupported: 1
|
||||||
|
m_ConservativeEnclosingSphere: 0
|
||||||
|
m_NumIterationsEnclosingSphere: 64
|
||||||
|
m_SoftShadowQuality: 2
|
||||||
|
m_AdditionalLightsCookieResolution: 4096
|
||||||
|
m_AdditionalLightsCookieFormat: 4
|
||||||
|
m_UseSRPBatcher: 1
|
||||||
|
m_SupportsDynamicBatching: 0
|
||||||
|
m_MixedLightingSupported: 1
|
||||||
|
m_SupportsLightCookies: 1
|
||||||
|
m_SupportsLightLayers: 0
|
||||||
|
m_DebugLevel: 0
|
||||||
|
m_StoreActionsOptimization: 0
|
||||||
|
m_EnableRenderGraph: 0
|
||||||
|
m_UseAdaptivePerformance: 1
|
||||||
|
m_ColorGradingMode: 0
|
||||||
|
m_ColorGradingLutSize: 32
|
||||||
|
m_UseFastSRGBLinearConversion: 0
|
||||||
|
m_SupportDataDrivenLensFlare: 1
|
||||||
|
m_ShadowType: 1
|
||||||
|
m_LocalShadowsSupported: 0
|
||||||
|
m_LocalShadowsAtlasResolution: 256
|
||||||
|
m_MaxPixelLights: 0
|
||||||
|
m_ShadowAtlasResolution: 256
|
||||||
|
m_VolumeFrameworkUpdateMode: 0
|
||||||
|
m_Textures:
|
||||||
|
blueNoise64LTex: {fileID: 2800000, guid: e3d24661c1e055f45a7560c033dbb837, type: 3}
|
||||||
|
bayerMatrixTex: {fileID: 2800000, guid: f9ee4ed84c1d10c49aabb9b210b0fc44, type: 3}
|
||||||
|
m_PrefilteringModeMainLightShadows: 1
|
||||||
|
m_PrefilteringModeAdditionalLight: 4
|
||||||
|
m_PrefilteringModeAdditionalLightShadows: 1
|
||||||
|
m_PrefilterXRKeywords: 0
|
||||||
|
m_PrefilteringModeForwardPlus: 1
|
||||||
|
m_PrefilteringModeDeferredRendering: 1
|
||||||
|
m_PrefilteringModeScreenSpaceOcclusion: 1
|
||||||
|
m_PrefilterDebugKeywords: 0
|
||||||
|
m_PrefilterWriteRenderingLayers: 0
|
||||||
|
m_PrefilterHDROutput: 0
|
||||||
|
m_PrefilterSSAODepthNormals: 0
|
||||||
|
m_PrefilterSSAOSourceDepthLow: 0
|
||||||
|
m_PrefilterSSAOSourceDepthMedium: 0
|
||||||
|
m_PrefilterSSAOSourceDepthHigh: 0
|
||||||
|
m_PrefilterSSAOInterleaved: 0
|
||||||
|
m_PrefilterSSAOBlueNoise: 0
|
||||||
|
m_PrefilterSSAOSampleCountLow: 0
|
||||||
|
m_PrefilterSSAOSampleCountMedium: 0
|
||||||
|
m_PrefilterSSAOSampleCountHigh: 0
|
||||||
|
m_PrefilterDBufferMRT1: 0
|
||||||
|
m_PrefilterDBufferMRT2: 0
|
||||||
|
m_PrefilterDBufferMRT3: 0
|
||||||
|
m_PrefilterSoftShadowsQualityLow: 0
|
||||||
|
m_PrefilterSoftShadowsQualityMedium: 0
|
||||||
|
m_PrefilterSoftShadowsQualityHigh: 0
|
||||||
|
m_PrefilterSoftShadows: 0
|
||||||
|
m_PrefilterScreenCoord: 0
|
||||||
|
m_PrefilterNativeRenderPass: 0
|
||||||
|
m_ShaderVariantLogLevel: 0
|
||||||
|
m_ShadowCascades: 1
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 7b7fd9122c28c4d15b667c7040e3b3fd
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -0,0 +1,52 @@
|
||||||
|
%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: de640fe3d0db1804a85f9fc8f5cadab6, type: 3}
|
||||||
|
m_Name: URP-Performant-Renderer
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
debugShaders:
|
||||||
|
debugReplacementPS: {fileID: 4800000, guid: cf852408f2e174538bcd9b7fda1c5ae7,
|
||||||
|
type: 3}
|
||||||
|
m_RendererFeatures: []
|
||||||
|
m_RendererFeatureMap:
|
||||||
|
m_UseNativeRenderPass: 0
|
||||||
|
postProcessData: {fileID: 11400000, guid: 41439944d30ece34e96484bdb6645b55, type: 2}
|
||||||
|
shaders:
|
||||||
|
blitPS: {fileID: 4800000, guid: c17132b1f77d20942aa75f8429c0f8bc, type: 3}
|
||||||
|
copyDepthPS: {fileID: 4800000, guid: d6dae50ee9e1bfa4db75f19f99355220, type: 3}
|
||||||
|
screenSpaceShadowPS: {fileID: 0}
|
||||||
|
samplingPS: {fileID: 4800000, guid: 04c410c9937594faa893a11dceb85f7e, type: 3}
|
||||||
|
stencilDeferredPS: {fileID: 4800000, guid: e9155b26e1bc55942a41e518703fe304, type: 3}
|
||||||
|
fallbackErrorPS: {fileID: 4800000, guid: e6e9a19c3678ded42a3bc431ebef7dbd, type: 3}
|
||||||
|
materialErrorPS: {fileID: 4800000, guid: 5fd9a8feb75a4b5894c241777f519d4e, type: 3}
|
||||||
|
coreBlitPS: {fileID: 0}
|
||||||
|
coreBlitColorAndDepthPS: {fileID: 0}
|
||||||
|
cameraMotionVector: {fileID: 0}
|
||||||
|
objectMotionVector: {fileID: 0}
|
||||||
|
m_OpaqueLayerMask:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_TransparentLayerMask:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_DefaultStencilState:
|
||||||
|
overrideStencilState: 0
|
||||||
|
stencilReference: 0
|
||||||
|
stencilCompareFunction: 8
|
||||||
|
passOperation: 2
|
||||||
|
failOperation: 0
|
||||||
|
zFailOperation: 0
|
||||||
|
m_ShadowTransparentReceive: 1
|
||||||
|
m_RenderingMode: 0
|
||||||
|
m_DepthPrimingMode: 0
|
||||||
|
m_AccurateGbufferNormals: 0
|
||||||
|
m_ClusteredRendering: 0
|
||||||
|
m_TileSize: 32
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 707360a9c581a4bd7aa53bfeb1429f71
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -0,0 +1,114 @@
|
||||||
|
%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: bf2edee5c58d82540a51f03df9d42094, type: 3}
|
||||||
|
m_Name: URP-Performant
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
k_AssetVersion: 11
|
||||||
|
k_AssetPreviousVersion: 11
|
||||||
|
m_RendererType: 1
|
||||||
|
m_RendererData: {fileID: 0}
|
||||||
|
m_RendererDataList:
|
||||||
|
- {fileID: 11400000, guid: 707360a9c581a4bd7aa53bfeb1429f71, type: 2}
|
||||||
|
m_DefaultRendererIndex: 0
|
||||||
|
m_RequireDepthTexture: 0
|
||||||
|
m_RequireOpaqueTexture: 0
|
||||||
|
m_OpaqueDownsampling: 1
|
||||||
|
m_SupportsTerrainHoles: 1
|
||||||
|
m_SupportsHDR: 0
|
||||||
|
m_HDRColorBufferPrecision: 0
|
||||||
|
m_MSAA: 1
|
||||||
|
m_RenderScale: 1
|
||||||
|
m_UpscalingFilter: 0
|
||||||
|
m_FsrOverrideSharpness: 0
|
||||||
|
m_FsrSharpness: 0.92
|
||||||
|
m_EnableLODCrossFade: 1
|
||||||
|
m_LODCrossFadeDitheringType: 1
|
||||||
|
m_ShEvalMode: 0
|
||||||
|
m_MainLightRenderingMode: 1
|
||||||
|
m_MainLightShadowsSupported: 0
|
||||||
|
m_MainLightShadowmapResolution: 1024
|
||||||
|
m_AdditionalLightsRenderingMode: 0
|
||||||
|
m_AdditionalLightsPerObjectLimit: 4
|
||||||
|
m_AdditionalLightShadowsSupported: 0
|
||||||
|
m_AdditionalLightsShadowmapResolution: 512
|
||||||
|
m_AdditionalLightsShadowResolutionTierLow: 128
|
||||||
|
m_AdditionalLightsShadowResolutionTierMedium: 256
|
||||||
|
m_AdditionalLightsShadowResolutionTierHigh: 512
|
||||||
|
m_ReflectionProbeBlending: 0
|
||||||
|
m_ReflectionProbeBoxProjection: 0
|
||||||
|
m_ShadowDistance: 50
|
||||||
|
m_ShadowCascadeCount: 1
|
||||||
|
m_Cascade2Split: 0.25
|
||||||
|
m_Cascade3Split: {x: 0.1, y: 0.3}
|
||||||
|
m_Cascade4Split: {x: 0.067, y: 0.2, z: 0.467}
|
||||||
|
m_CascadeBorder: 0.1
|
||||||
|
m_ShadowDepthBias: 1
|
||||||
|
m_ShadowNormalBias: 1
|
||||||
|
m_AnyShadowsSupported: 1
|
||||||
|
m_SoftShadowsSupported: 0
|
||||||
|
m_ConservativeEnclosingSphere: 0
|
||||||
|
m_NumIterationsEnclosingSphere: 64
|
||||||
|
m_SoftShadowQuality: 2
|
||||||
|
m_AdditionalLightsCookieResolution: 2048
|
||||||
|
m_AdditionalLightsCookieFormat: 3
|
||||||
|
m_UseSRPBatcher: 1
|
||||||
|
m_SupportsDynamicBatching: 0
|
||||||
|
m_MixedLightingSupported: 1
|
||||||
|
m_SupportsLightCookies: 1
|
||||||
|
m_SupportsLightLayers: 0
|
||||||
|
m_DebugLevel: 0
|
||||||
|
m_StoreActionsOptimization: 0
|
||||||
|
m_EnableRenderGraph: 0
|
||||||
|
m_UseAdaptivePerformance: 1
|
||||||
|
m_ColorGradingMode: 0
|
||||||
|
m_ColorGradingLutSize: 16
|
||||||
|
m_UseFastSRGBLinearConversion: 0
|
||||||
|
m_SupportDataDrivenLensFlare: 1
|
||||||
|
m_ShadowType: 1
|
||||||
|
m_LocalShadowsSupported: 0
|
||||||
|
m_LocalShadowsAtlasResolution: 256
|
||||||
|
m_MaxPixelLights: 0
|
||||||
|
m_ShadowAtlasResolution: 256
|
||||||
|
m_VolumeFrameworkUpdateMode: 0
|
||||||
|
m_Textures:
|
||||||
|
blueNoise64LTex: {fileID: 2800000, guid: e3d24661c1e055f45a7560c033dbb837, type: 3}
|
||||||
|
bayerMatrixTex: {fileID: 2800000, guid: f9ee4ed84c1d10c49aabb9b210b0fc44, type: 3}
|
||||||
|
m_PrefilteringModeMainLightShadows: 1
|
||||||
|
m_PrefilteringModeAdditionalLight: 4
|
||||||
|
m_PrefilteringModeAdditionalLightShadows: 1
|
||||||
|
m_PrefilterXRKeywords: 0
|
||||||
|
m_PrefilteringModeForwardPlus: 1
|
||||||
|
m_PrefilteringModeDeferredRendering: 1
|
||||||
|
m_PrefilteringModeScreenSpaceOcclusion: 1
|
||||||
|
m_PrefilterDebugKeywords: 0
|
||||||
|
m_PrefilterWriteRenderingLayers: 0
|
||||||
|
m_PrefilterHDROutput: 0
|
||||||
|
m_PrefilterSSAODepthNormals: 0
|
||||||
|
m_PrefilterSSAOSourceDepthLow: 0
|
||||||
|
m_PrefilterSSAOSourceDepthMedium: 0
|
||||||
|
m_PrefilterSSAOSourceDepthHigh: 0
|
||||||
|
m_PrefilterSSAOInterleaved: 0
|
||||||
|
m_PrefilterSSAOBlueNoise: 0
|
||||||
|
m_PrefilterSSAOSampleCountLow: 0
|
||||||
|
m_PrefilterSSAOSampleCountMedium: 0
|
||||||
|
m_PrefilterSSAOSampleCountHigh: 0
|
||||||
|
m_PrefilterDBufferMRT1: 0
|
||||||
|
m_PrefilterDBufferMRT2: 0
|
||||||
|
m_PrefilterDBufferMRT3: 0
|
||||||
|
m_PrefilterSoftShadowsQualityLow: 0
|
||||||
|
m_PrefilterSoftShadowsQualityMedium: 0
|
||||||
|
m_PrefilterSoftShadowsQualityHigh: 0
|
||||||
|
m_PrefilterSoftShadows: 0
|
||||||
|
m_PrefilterScreenCoord: 0
|
||||||
|
m_PrefilterNativeRenderPass: 0
|
||||||
|
m_ShaderVariantLogLevel: 0
|
||||||
|
m_ShadowCascades: 0
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d0e2fc18fe036412f8223b3b3d9ad574
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -0,0 +1,41 @@
|
||||||
|
%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: 2ec995e51a6e251468d2a3fd8a686257, type: 3}
|
||||||
|
m_Name: UniversalRenderPipelineGlobalSettings
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
k_AssetVersion: 3
|
||||||
|
m_RenderingLayerNames:
|
||||||
|
- Light Layer default
|
||||||
|
- Light Layer 1
|
||||||
|
- Light Layer 2
|
||||||
|
- Light Layer 3
|
||||||
|
- Light Layer 4
|
||||||
|
- Light Layer 5
|
||||||
|
- Light Layer 6
|
||||||
|
- Light Layer 7
|
||||||
|
m_ValidRenderingLayers: 255
|
||||||
|
lightLayerName0: Light Layer default
|
||||||
|
lightLayerName1: Light Layer 1
|
||||||
|
lightLayerName2: Light Layer 2
|
||||||
|
lightLayerName3: Light Layer 3
|
||||||
|
lightLayerName4: Light Layer 4
|
||||||
|
lightLayerName5: Light Layer 5
|
||||||
|
lightLayerName6: Light Layer 6
|
||||||
|
lightLayerName7: Light Layer 7
|
||||||
|
m_StripDebugVariants: 1
|
||||||
|
m_StripUnusedPostProcessingVariants: 1
|
||||||
|
m_StripUnusedVariants: 1
|
||||||
|
m_StripUnusedLODCrossFadeVariants: 1
|
||||||
|
m_StripScreenCoordOverrideVariants: 1
|
||||||
|
supportRuntimeDebugDisplay: 0
|
||||||
|
m_ShaderVariantLogLevel: 0
|
||||||
|
m_ExportShaderVariants: 1
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 18dc0cd2c080841dea60987a38ce93fa
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -0,0 +1,79 @@
|
||||||
|
# CLAUDE.md
|
||||||
|
|
||||||
|
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||||
|
|
||||||
|
## Project Overview
|
||||||
|
|
||||||
|
VampireAct — Unity game project currently in pre-production. Uses the **Claude Code Game Studios (CCGS)** multi-agent architecture for game development workflow.
|
||||||
|
|
||||||
|
## Engine & Build
|
||||||
|
|
||||||
|
- **Unity Version**: 2022.3.62f3c1
|
||||||
|
- **Render Pipeline**: URP 14.0.12
|
||||||
|
- **Template**: `com.unity.template.urp-blank@14.0.0`
|
||||||
|
- **Color Space**: Linear
|
||||||
|
- **Target Platforms**: Standalone (Windows), Android, iOS
|
||||||
|
|
||||||
|
Open the project in Unity Editor to build and run. The default scene is `Assets/Scenes/SampleScene.unity`.
|
||||||
|
|
||||||
|
## Project Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
Assets/
|
||||||
|
Scenes/ — Currently only SampleScene.unity
|
||||||
|
Settings/ — URP quality/renderer profiles (Performant, Balanced, HighFidelity)
|
||||||
|
Claude-Code-Game-Studios/
|
||||||
|
.claude/
|
||||||
|
agents/ — 48 specialized AI agent definitions
|
||||||
|
skills/ — CCGS slash commands and workflows
|
||||||
|
docs/ — Development framework documentation
|
||||||
|
hooks/ — Git hooks for quality gates
|
||||||
|
Packages/ — Unity package manifest (URP, TextMeshPro, Timeline, etc.)
|
||||||
|
ProjectSettings/ — Unity project configuration
|
||||||
|
```
|
||||||
|
|
||||||
|
## Development Workflow (CCGS)
|
||||||
|
|
||||||
|
This project uses the CCGS game studio agent architecture. The framework provides:
|
||||||
|
|
||||||
|
**Agent Hierarchy:**
|
||||||
|
- **Tier 1 (Directors)**: `creative-director`, `technical-director`, `producer` — high-level decisions
|
||||||
|
- **Tier 2 (Leads)**: `game-designer`, `lead-programmer`, `art-director`, `audio-director`, `narrative-director`, `qa-lead`
|
||||||
|
- **Tier 3 (Specialists)**: Unity-specific agents include `unity-specialist`, `unity-shader-specialist`, `unity-addressables-specialist`, `unity-ui-specialist`, `unity-dots-specialist`
|
||||||
|
|
||||||
|
**Key Slash Commands:**
|
||||||
|
- `/start` — First-time onboarding
|
||||||
|
- `/brainstorm` — Game concept ideation
|
||||||
|
- `/map-systems` — Decompose concept into systems
|
||||||
|
- `/design-system [name]` — GDD authoring for a system
|
||||||
|
- `/create-architecture` — Master architecture blueprint
|
||||||
|
- `/create-epics` / `/create-stories` — Translate designs into work items
|
||||||
|
- `/dev-story` — Implement a story (routes to appropriate programmer agent)
|
||||||
|
- `/code-review` — Code quality review
|
||||||
|
- `/gate-check` — Validate phase readiness
|
||||||
|
- `/prototype` — Rapid prototyping
|
||||||
|
|
||||||
|
**Code Standards (from CCGS):**
|
||||||
|
- Gameplay values must be data-driven, never hardcoded
|
||||||
|
- Public methods must be unit-testable (dependency injection over singletons)
|
||||||
|
- All public APIs need doc comments
|
||||||
|
- Every system must have an Architecture Decision Record in `docs/architecture/`
|
||||||
|
- Tests must be deterministic, isolated, and not depend on execution order
|
||||||
|
|
||||||
|
See `Claude-Code-Game-Studios/CLAUDE.md` and `Claude-Code-Game-Studios/.claude/docs/quick-start.md` for full framework documentation.
|
||||||
|
|
||||||
|
## Current State
|
||||||
|
|
||||||
|
- **Stage**: Pre-production — no custom scripts or game systems implemented yet
|
||||||
|
- **Technical preferences**: Not yet configured (run `/setup-engine unity` to populate)
|
||||||
|
- **GDDs**: None written
|
||||||
|
- **Architecture**: None defined
|
||||||
|
- **Scenes**: Only the default URP blank template SampleScene
|
||||||
|
|
||||||
|
## Unity-Specific Notes
|
||||||
|
|
||||||
|
- C# scripts belong in `Assets/` under appropriate subdirectories (e.g., `Assets/Scripts/`, `Assets/Scripts/Gameplay/`)
|
||||||
|
- URP quality tiers (Performant, Balanced, HighFidelity) are pre-configured in `Assets/Settings/`
|
||||||
|
- The project uses the standard Unity package manager — dependencies are in `Packages/manifest.json`
|
||||||
|
- Test framework: Unity Test Framework 1.1.33 (via `com.unity.test-framework`)
|
||||||
|
- CI for Unity tests uses `game-ci/unity-test-runner@v4` GitHub Action
|
||||||
|
|
@ -0,0 +1,45 @@
|
||||||
|
{
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.collab-proxy": "2.12.4",
|
||||||
|
"com.unity.ide.rider": "3.0.36",
|
||||||
|
"com.unity.ide.visualstudio": "2.0.22",
|
||||||
|
"com.unity.ide.vscode": "1.2.5",
|
||||||
|
"com.unity.render-pipelines.universal": "14.0.12",
|
||||||
|
"com.unity.test-framework": "1.1.33",
|
||||||
|
"com.unity.textmeshpro": "3.0.7",
|
||||||
|
"com.unity.timeline": "1.7.7",
|
||||||
|
"com.unity.ugui": "1.0.0",
|
||||||
|
"com.unity.visualscripting": "1.9.4",
|
||||||
|
"com.unity.modules.ai": "1.0.0",
|
||||||
|
"com.unity.modules.androidjni": "1.0.0",
|
||||||
|
"com.unity.modules.animation": "1.0.0",
|
||||||
|
"com.unity.modules.assetbundle": "1.0.0",
|
||||||
|
"com.unity.modules.audio": "1.0.0",
|
||||||
|
"com.unity.modules.cloth": "1.0.0",
|
||||||
|
"com.unity.modules.director": "1.0.0",
|
||||||
|
"com.unity.modules.imageconversion": "1.0.0",
|
||||||
|
"com.unity.modules.imgui": "1.0.0",
|
||||||
|
"com.unity.modules.jsonserialize": "1.0.0",
|
||||||
|
"com.unity.modules.particlesystem": "1.0.0",
|
||||||
|
"com.unity.modules.physics": "1.0.0",
|
||||||
|
"com.unity.modules.physics2d": "1.0.0",
|
||||||
|
"com.unity.modules.screencapture": "1.0.0",
|
||||||
|
"com.unity.modules.terrain": "1.0.0",
|
||||||
|
"com.unity.modules.terrainphysics": "1.0.0",
|
||||||
|
"com.unity.modules.tilemap": "1.0.0",
|
||||||
|
"com.unity.modules.ui": "1.0.0",
|
||||||
|
"com.unity.modules.uielements": "1.0.0",
|
||||||
|
"com.unity.modules.umbra": "1.0.0",
|
||||||
|
"com.unity.modules.unityanalytics": "1.0.0",
|
||||||
|
"com.unity.modules.unitywebrequest": "1.0.0",
|
||||||
|
"com.unity.modules.unitywebrequestassetbundle": "1.0.0",
|
||||||
|
"com.unity.modules.unitywebrequestaudio": "1.0.0",
|
||||||
|
"com.unity.modules.unitywebrequesttexture": "1.0.0",
|
||||||
|
"com.unity.modules.unitywebrequestwww": "1.0.0",
|
||||||
|
"com.unity.modules.vehicles": "1.0.0",
|
||||||
|
"com.unity.modules.video": "1.0.0",
|
||||||
|
"com.unity.modules.vr": "1.0.0",
|
||||||
|
"com.unity.modules.wind": "1.0.0",
|
||||||
|
"com.unity.modules.xr": "1.0.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,401 @@
|
||||||
|
{
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.burst": {
|
||||||
|
"version": "1.8.21",
|
||||||
|
"depth": 1,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.mathematics": "1.2.1",
|
||||||
|
"com.unity.modules.jsonserialize": "1.0.0"
|
||||||
|
},
|
||||||
|
"url": "https://packages.unity.cn"
|
||||||
|
},
|
||||||
|
"com.unity.collab-proxy": {
|
||||||
|
"version": "2.12.4",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {},
|
||||||
|
"url": "https://packages.unity.cn"
|
||||||
|
},
|
||||||
|
"com.unity.ext.nunit": {
|
||||||
|
"version": "1.0.6",
|
||||||
|
"depth": 1,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {},
|
||||||
|
"url": "https://packages.unity.cn"
|
||||||
|
},
|
||||||
|
"com.unity.ide.rider": {
|
||||||
|
"version": "3.0.36",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.ext.nunit": "1.0.6"
|
||||||
|
},
|
||||||
|
"url": "https://packages.unity.cn"
|
||||||
|
},
|
||||||
|
"com.unity.ide.visualstudio": {
|
||||||
|
"version": "2.0.22",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.test-framework": "1.1.9"
|
||||||
|
},
|
||||||
|
"url": "https://packages.unity.cn"
|
||||||
|
},
|
||||||
|
"com.unity.ide.vscode": {
|
||||||
|
"version": "1.2.5",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {},
|
||||||
|
"url": "https://packages.unity.cn"
|
||||||
|
},
|
||||||
|
"com.unity.mathematics": {
|
||||||
|
"version": "1.2.6",
|
||||||
|
"depth": 1,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {},
|
||||||
|
"url": "https://packages.unity.cn"
|
||||||
|
},
|
||||||
|
"com.unity.render-pipelines.core": {
|
||||||
|
"version": "14.0.12",
|
||||||
|
"depth": 1,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.ugui": "1.0.0",
|
||||||
|
"com.unity.modules.physics": "1.0.0",
|
||||||
|
"com.unity.modules.terrain": "1.0.0",
|
||||||
|
"com.unity.modules.jsonserialize": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.render-pipelines.universal": {
|
||||||
|
"version": "14.0.12",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.mathematics": "1.2.1",
|
||||||
|
"com.unity.burst": "1.8.9",
|
||||||
|
"com.unity.render-pipelines.core": "14.0.12",
|
||||||
|
"com.unity.shadergraph": "14.0.12",
|
||||||
|
"com.unity.render-pipelines.universal-config": "14.0.9"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.render-pipelines.universal-config": {
|
||||||
|
"version": "14.0.10",
|
||||||
|
"depth": 1,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.render-pipelines.core": "14.0.10"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.searcher": {
|
||||||
|
"version": "4.9.2",
|
||||||
|
"depth": 2,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {},
|
||||||
|
"url": "https://packages.unity.cn"
|
||||||
|
},
|
||||||
|
"com.unity.shadergraph": {
|
||||||
|
"version": "14.0.12",
|
||||||
|
"depth": 1,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.render-pipelines.core": "14.0.12",
|
||||||
|
"com.unity.searcher": "4.9.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.test-framework": {
|
||||||
|
"version": "1.1.33",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.ext.nunit": "1.0.6",
|
||||||
|
"com.unity.modules.imgui": "1.0.0",
|
||||||
|
"com.unity.modules.jsonserialize": "1.0.0"
|
||||||
|
},
|
||||||
|
"url": "https://packages.unity.cn"
|
||||||
|
},
|
||||||
|
"com.unity.textmeshpro": {
|
||||||
|
"version": "3.0.7",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.ugui": "1.0.0"
|
||||||
|
},
|
||||||
|
"url": "https://packages.unity.cn"
|
||||||
|
},
|
||||||
|
"com.unity.timeline": {
|
||||||
|
"version": "1.7.7",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.audio": "1.0.0",
|
||||||
|
"com.unity.modules.director": "1.0.0",
|
||||||
|
"com.unity.modules.animation": "1.0.0",
|
||||||
|
"com.unity.modules.particlesystem": "1.0.0"
|
||||||
|
},
|
||||||
|
"url": "https://packages.unity.cn"
|
||||||
|
},
|
||||||
|
"com.unity.ugui": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.ui": "1.0.0",
|
||||||
|
"com.unity.modules.imgui": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.visualscripting": {
|
||||||
|
"version": "1.9.4",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.ugui": "1.0.0",
|
||||||
|
"com.unity.modules.jsonserialize": "1.0.0"
|
||||||
|
},
|
||||||
|
"url": "https://packages.unity.cn"
|
||||||
|
},
|
||||||
|
"com.unity.modules.ai": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.androidjni": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.animation": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.assetbundle": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.audio": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.cloth": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.physics": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.director": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.audio": "1.0.0",
|
||||||
|
"com.unity.modules.animation": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.imageconversion": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.imgui": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.jsonserialize": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.particlesystem": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.physics": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.physics2d": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.screencapture": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.imageconversion": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.subsystems": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 1,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.jsonserialize": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.terrain": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.terrainphysics": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.physics": "1.0.0",
|
||||||
|
"com.unity.modules.terrain": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.tilemap": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.physics2d": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.ui": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.uielements": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.ui": "1.0.0",
|
||||||
|
"com.unity.modules.imgui": "1.0.0",
|
||||||
|
"com.unity.modules.jsonserialize": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.umbra": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.unityanalytics": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.unitywebrequest": "1.0.0",
|
||||||
|
"com.unity.modules.jsonserialize": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.unitywebrequest": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.unitywebrequestassetbundle": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.assetbundle": "1.0.0",
|
||||||
|
"com.unity.modules.unitywebrequest": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.unitywebrequestaudio": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.unitywebrequest": "1.0.0",
|
||||||
|
"com.unity.modules.audio": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.unitywebrequesttexture": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.unitywebrequest": "1.0.0",
|
||||||
|
"com.unity.modules.imageconversion": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.unitywebrequestwww": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.unitywebrequest": "1.0.0",
|
||||||
|
"com.unity.modules.unitywebrequestassetbundle": "1.0.0",
|
||||||
|
"com.unity.modules.unitywebrequestaudio": "1.0.0",
|
||||||
|
"com.unity.modules.audio": "1.0.0",
|
||||||
|
"com.unity.modules.assetbundle": "1.0.0",
|
||||||
|
"com.unity.modules.imageconversion": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.vehicles": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.physics": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.video": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.audio": "1.0.0",
|
||||||
|
"com.unity.modules.ui": "1.0.0",
|
||||||
|
"com.unity.modules.unitywebrequest": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.vr": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.jsonserialize": "1.0.0",
|
||||||
|
"com.unity.modules.physics": "1.0.0",
|
||||||
|
"com.unity.modules.xr": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.wind": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.xr": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.physics": "1.0.0",
|
||||||
|
"com.unity.modules.jsonserialize": "1.0.0",
|
||||||
|
"com.unity.modules.subsystems": "1.0.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!11 &1
|
||||||
|
AudioManager:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Volume: 1
|
||||||
|
Rolloff Scale: 1
|
||||||
|
Doppler Factor: 1
|
||||||
|
Default Speaker Mode: 2
|
||||||
|
m_SampleRate: 0
|
||||||
|
m_DSPBufferSize: 1024
|
||||||
|
m_VirtualVoiceCount: 512
|
||||||
|
m_RealVoiceCount: 32
|
||||||
|
m_SpatializerPlugin:
|
||||||
|
m_AmbisonicDecoderPlugin:
|
||||||
|
m_DisableAudio: 0
|
||||||
|
m_VirtualizeEffects: 1
|
||||||
|
m_RequestedDSPBufferSize: 0
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
{
|
||||||
|
"MonoBehaviour": {
|
||||||
|
"Version": 3,
|
||||||
|
"EnableBurstCompilation": true,
|
||||||
|
"EnableOptimisations": true,
|
||||||
|
"EnableSafetyChecks": false,
|
||||||
|
"EnableDebugInAllBuilds": false,
|
||||||
|
"UsePlatformSDKLinker": false,
|
||||||
|
"CpuMinTargetX32": 0,
|
||||||
|
"CpuMaxTargetX32": 0,
|
||||||
|
"CpuMinTargetX64": 0,
|
||||||
|
"CpuMaxTargetX64": 0,
|
||||||
|
"CpuTargetsX32": 6,
|
||||||
|
"CpuTargetsX64": 72
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!236 &1
|
||||||
|
ClusterInputManager:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_Inputs: []
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"MonoBehaviour": {
|
||||||
|
"Version": 3,
|
||||||
|
"DisabledWarnings": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,36 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!55 &1
|
||||||
|
PhysicsManager:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 13
|
||||||
|
m_Gravity: {x: 0, y: -9.81, z: 0}
|
||||||
|
m_DefaultMaterial: {fileID: 0}
|
||||||
|
m_BounceThreshold: 2
|
||||||
|
m_SleepThreshold: 0.005
|
||||||
|
m_DefaultContactOffset: 0.01
|
||||||
|
m_DefaultSolverIterations: 6
|
||||||
|
m_DefaultSolverVelocityIterations: 1
|
||||||
|
m_QueriesHitBackfaces: 0
|
||||||
|
m_QueriesHitTriggers: 1
|
||||||
|
m_EnableAdaptiveForce: 0
|
||||||
|
m_ClothInterCollisionDistance: 0.1
|
||||||
|
m_ClothInterCollisionStiffness: 0.2
|
||||||
|
m_ContactsGeneration: 1
|
||||||
|
m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||||
|
m_AutoSimulation: 1
|
||||||
|
m_AutoSyncTransforms: 0
|
||||||
|
m_ReuseCollisionCallbacks: 1
|
||||||
|
m_ClothInterCollisionSettingsToggle: 0
|
||||||
|
m_ClothGravity: {x: 0, y: -9.81, z: 0}
|
||||||
|
m_ContactPairsMode: 0
|
||||||
|
m_BroadphaseType: 0
|
||||||
|
m_WorldBounds:
|
||||||
|
m_Center: {x: 0, y: 0, z: 0}
|
||||||
|
m_Extent: {x: 250, y: 250, z: 250}
|
||||||
|
m_WorldSubdivisions: 8
|
||||||
|
m_FrictionType: 0
|
||||||
|
m_EnableEnhancedDeterminism: 0
|
||||||
|
m_EnableUnifiedHeightmaps: 1
|
||||||
|
m_SolverType: 0
|
||||||
|
m_DefaultMaxAngularSpeed: 50
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1045 &1
|
||||||
|
EditorBuildSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Scenes:
|
||||||
|
- enabled: 1
|
||||||
|
path: Assets/Scenes/SampleScene.unity
|
||||||
|
guid: 99c9720ab356a0642a771bea13969a05
|
||||||
|
m_configObjects: {}
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!159 &1
|
||||||
|
EditorSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 9
|
||||||
|
m_ExternalVersionControlSupport: Visible Meta Files
|
||||||
|
m_SerializationMode: 2
|
||||||
|
m_LineEndingsForNewScripts: 2
|
||||||
|
m_DefaultBehaviorMode: 0
|
||||||
|
m_PrefabRegularEnvironment: {fileID: 0}
|
||||||
|
m_PrefabUIEnvironment: {fileID: 0}
|
||||||
|
m_SpritePackerMode: 0
|
||||||
|
m_SpritePackerPaddingPower: 1
|
||||||
|
m_EtcTextureCompressorBehavior: 1
|
||||||
|
m_EtcTextureFastCompressor: 1
|
||||||
|
m_EtcTextureNormalCompressor: 2
|
||||||
|
m_EtcTextureBestCompressor: 4
|
||||||
|
m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;asmref;rsp
|
||||||
|
m_ProjectGenerationRootNamespace:
|
||||||
|
m_CollabEditorSettings:
|
||||||
|
inProgressEnabled: 1
|
||||||
|
m_EnableTextureStreamingInEditMode: 1
|
||||||
|
m_EnableTextureStreamingInPlayMode: 1
|
||||||
|
m_AsyncShaderCompilation: 1
|
||||||
|
m_EnterPlayModeOptionsEnabled: 0
|
||||||
|
m_EnterPlayModeOptions: 3
|
||||||
|
m_ShowLightmapResolutionOverlay: 1
|
||||||
|
m_UseLegacyProbeSampleCount: 0
|
||||||
|
m_AssetPipelineMode: 1
|
||||||
|
m_CacheServerMode: 0
|
||||||
|
m_CacheServerEndpoint:
|
||||||
|
m_CacheServerNamespacePrefix: default
|
||||||
|
m_CacheServerEnableDownload: 1
|
||||||
|
m_CacheServerEnableUpload: 1
|
||||||
|
|
@ -0,0 +1,70 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!30 &1
|
||||||
|
GraphicsSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 14
|
||||||
|
m_Deferred:
|
||||||
|
m_Mode: 1
|
||||||
|
m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_DeferredReflections:
|
||||||
|
m_Mode: 1
|
||||||
|
m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_ScreenSpaceShadows:
|
||||||
|
m_Mode: 1
|
||||||
|
m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_LegacyDeferred:
|
||||||
|
m_Mode: 1
|
||||||
|
m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_DepthNormals:
|
||||||
|
m_Mode: 1
|
||||||
|
m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_MotionVectors:
|
||||||
|
m_Mode: 1
|
||||||
|
m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_LightHalo:
|
||||||
|
m_Mode: 1
|
||||||
|
m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_LensFlare:
|
||||||
|
m_Mode: 1
|
||||||
|
m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_VideoShadersIncludeMode: 2
|
||||||
|
m_AlwaysIncludedShaders:
|
||||||
|
- {fileID: 7, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
- {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
- {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
- {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
- {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
- {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
- {fileID: 10783, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_PreloadedShaders: []
|
||||||
|
m_PreloadShadersBatchTimeLimit: -1
|
||||||
|
m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000,
|
||||||
|
type: 0}
|
||||||
|
m_CustomRenderPipeline: {fileID: 11400000, guid: 7b7fd9122c28c4d15b667c7040e3b3fd,
|
||||||
|
type: 2}
|
||||||
|
m_TransparencySortMode: 0
|
||||||
|
m_TransparencySortAxis: {x: 0, y: 0, z: 1}
|
||||||
|
m_DefaultRenderingPath: 1
|
||||||
|
m_DefaultMobileRenderingPath: 1
|
||||||
|
m_TierSettings: []
|
||||||
|
m_LightmapStripping: 0
|
||||||
|
m_FogStripping: 0
|
||||||
|
m_InstancingStripping: 0
|
||||||
|
m_LightmapKeepPlain: 1
|
||||||
|
m_LightmapKeepDirCombined: 1
|
||||||
|
m_LightmapKeepDynamicPlain: 1
|
||||||
|
m_LightmapKeepDynamicDirCombined: 1
|
||||||
|
m_LightmapKeepShadowMask: 1
|
||||||
|
m_LightmapKeepSubtractive: 1
|
||||||
|
m_FogKeepLinear: 1
|
||||||
|
m_FogKeepExp: 1
|
||||||
|
m_FogKeepExp2: 1
|
||||||
|
m_AlbedoSwatchInfos: []
|
||||||
|
m_LightsUseLinearIntensity: 1
|
||||||
|
m_LightsUseColorTemperature: 1
|
||||||
|
m_DefaultRenderingLayerMask: 1
|
||||||
|
m_LogWhenShaderIsCompiled: 0
|
||||||
|
m_SRPDefaultSettings:
|
||||||
|
UnityEngine.Rendering.Universal.UniversalRenderPipeline: {fileID: 11400000, guid: 18dc0cd2c080841dea60987a38ce93fa,
|
||||||
|
type: 2}
|
||||||
|
|
@ -0,0 +1,487 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!13 &1
|
||||||
|
InputManager:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Axes:
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Horizontal
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton: left
|
||||||
|
positiveButton: right
|
||||||
|
altNegativeButton: a
|
||||||
|
altPositiveButton: d
|
||||||
|
gravity: 3
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 3
|
||||||
|
snap: 1
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Vertical
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton: down
|
||||||
|
positiveButton: up
|
||||||
|
altNegativeButton: s
|
||||||
|
altPositiveButton: w
|
||||||
|
gravity: 3
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 3
|
||||||
|
snap: 1
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Fire1
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: left ctrl
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton: mouse 0
|
||||||
|
gravity: 1000
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 1000
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Fire2
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: left alt
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton: mouse 1
|
||||||
|
gravity: 1000
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 1000
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Fire3
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: left shift
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton: mouse 2
|
||||||
|
gravity: 1000
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 1000
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Jump
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: space
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton:
|
||||||
|
gravity: 1000
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 1000
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Mouse X
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton:
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton:
|
||||||
|
gravity: 0
|
||||||
|
dead: 0
|
||||||
|
sensitivity: 0.1
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 1
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Mouse Y
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton:
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton:
|
||||||
|
gravity: 0
|
||||||
|
dead: 0
|
||||||
|
sensitivity: 0.1
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 1
|
||||||
|
axis: 1
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Mouse ScrollWheel
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton:
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton:
|
||||||
|
gravity: 0
|
||||||
|
dead: 0
|
||||||
|
sensitivity: 0.1
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 1
|
||||||
|
axis: 2
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Horizontal
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton:
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton:
|
||||||
|
gravity: 0
|
||||||
|
dead: 0.19
|
||||||
|
sensitivity: 1
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 2
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Vertical
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton:
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton:
|
||||||
|
gravity: 0
|
||||||
|
dead: 0.19
|
||||||
|
sensitivity: 1
|
||||||
|
snap: 0
|
||||||
|
invert: 1
|
||||||
|
type: 2
|
||||||
|
axis: 1
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Fire1
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: joystick button 0
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton:
|
||||||
|
gravity: 1000
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 1000
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Fire2
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: joystick button 1
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton:
|
||||||
|
gravity: 1000
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 1000
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Fire3
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: joystick button 2
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton:
|
||||||
|
gravity: 1000
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 1000
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Jump
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: joystick button 3
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton:
|
||||||
|
gravity: 1000
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 1000
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Submit
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: return
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton: joystick button 0
|
||||||
|
gravity: 1000
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 1000
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Submit
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: enter
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton: space
|
||||||
|
gravity: 1000
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 1000
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Cancel
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: escape
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton: joystick button 1
|
||||||
|
gravity: 1000
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 1000
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Enable Debug Button 1
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: left ctrl
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton: joystick button 8
|
||||||
|
gravity: 0
|
||||||
|
dead: 0
|
||||||
|
sensitivity: 0
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Enable Debug Button 2
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: backspace
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton: joystick button 9
|
||||||
|
gravity: 0
|
||||||
|
dead: 0
|
||||||
|
sensitivity: 0
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Debug Reset
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: left alt
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton: joystick button 1
|
||||||
|
gravity: 0
|
||||||
|
dead: 0
|
||||||
|
sensitivity: 0
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Debug Next
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: page down
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton: joystick button 5
|
||||||
|
gravity: 0
|
||||||
|
dead: 0
|
||||||
|
sensitivity: 0
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Debug Previous
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: page up
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton: joystick button 4
|
||||||
|
gravity: 0
|
||||||
|
dead: 0
|
||||||
|
sensitivity: 0
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Debug Validate
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: return
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton: joystick button 0
|
||||||
|
gravity: 0
|
||||||
|
dead: 0
|
||||||
|
sensitivity: 0
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Debug Persistent
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: right shift
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton: joystick button 2
|
||||||
|
gravity: 0
|
||||||
|
dead: 0
|
||||||
|
sensitivity: 0
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Debug Multiplier
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: left shift
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton: joystick button 3
|
||||||
|
gravity: 0
|
||||||
|
dead: 0
|
||||||
|
sensitivity: 0
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Debug Horizontal
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton: left
|
||||||
|
positiveButton: right
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton:
|
||||||
|
gravity: 1000
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 1000
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Debug Vertical
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton: down
|
||||||
|
positiveButton: up
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton:
|
||||||
|
gravity: 1000
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 1000
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Debug Vertical
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton: down
|
||||||
|
positiveButton: up
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton:
|
||||||
|
gravity: 1000
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 1000
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 2
|
||||||
|
axis: 6
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Debug Horizontal
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton: left
|
||||||
|
positiveButton: right
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton:
|
||||||
|
gravity: 1000
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 1000
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 2
|
||||||
|
axis: 5
|
||||||
|
joyNum: 0
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!387306366 &1
|
||||||
|
MemorySettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_EditorMemorySettings:
|
||||||
|
m_MainAllocatorBlockSize: -1
|
||||||
|
m_ThreadAllocatorBlockSize: -1
|
||||||
|
m_MainGfxBlockSize: -1
|
||||||
|
m_ThreadGfxBlockSize: -1
|
||||||
|
m_CacheBlockSize: -1
|
||||||
|
m_TypetreeBlockSize: -1
|
||||||
|
m_ProfilerBlockSize: -1
|
||||||
|
m_ProfilerEditorBlockSize: -1
|
||||||
|
m_BucketAllocatorGranularity: -1
|
||||||
|
m_BucketAllocatorBucketsCount: -1
|
||||||
|
m_BucketAllocatorBlockSize: -1
|
||||||
|
m_BucketAllocatorBlockCount: -1
|
||||||
|
m_ProfilerBucketAllocatorGranularity: -1
|
||||||
|
m_ProfilerBucketAllocatorBucketsCount: -1
|
||||||
|
m_ProfilerBucketAllocatorBlockSize: -1
|
||||||
|
m_ProfilerBucketAllocatorBlockCount: -1
|
||||||
|
m_TempAllocatorSizeMain: -1
|
||||||
|
m_JobTempAllocatorBlockSize: -1
|
||||||
|
m_BackgroundJobTempAllocatorBlockSize: -1
|
||||||
|
m_JobTempAllocatorReducedBlockSize: -1
|
||||||
|
m_TempAllocatorSizeGIBakingWorker: -1
|
||||||
|
m_TempAllocatorSizeNavMeshWorker: -1
|
||||||
|
m_TempAllocatorSizeAudioWorker: -1
|
||||||
|
m_TempAllocatorSizeCloudWorker: -1
|
||||||
|
m_TempAllocatorSizeGfx: -1
|
||||||
|
m_TempAllocatorSizeJobWorker: -1
|
||||||
|
m_TempAllocatorSizeBackgroundWorker: -1
|
||||||
|
m_TempAllocatorSizePreloadManager: -1
|
||||||
|
m_PlatformMemorySettings: {}
|
||||||
|
|
@ -0,0 +1,91 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!126 &1
|
||||||
|
NavMeshProjectSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
areas:
|
||||||
|
- name: Walkable
|
||||||
|
cost: 1
|
||||||
|
- name: Not Walkable
|
||||||
|
cost: 1
|
||||||
|
- name: Jump
|
||||||
|
cost: 2
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
m_LastAgentTypeID: -887442657
|
||||||
|
m_Settings:
|
||||||
|
- serializedVersion: 2
|
||||||
|
agentTypeID: 0
|
||||||
|
agentRadius: 0.5
|
||||||
|
agentHeight: 2
|
||||||
|
agentSlope: 45
|
||||||
|
agentClimb: 0.75
|
||||||
|
ledgeDropHeight: 0
|
||||||
|
maxJumpAcrossDistance: 0
|
||||||
|
minRegionArea: 2
|
||||||
|
manualCellSize: 0
|
||||||
|
cellSize: 0.16666667
|
||||||
|
manualTileSize: 0
|
||||||
|
tileSize: 256
|
||||||
|
accuratePlacement: 0
|
||||||
|
debug:
|
||||||
|
m_Flags: 0
|
||||||
|
m_SettingNames:
|
||||||
|
- Humanoid
|
||||||
|
|
@ -0,0 +1,36 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &1
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 61
|
||||||
|
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: 13964, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_EnablePreReleasePackages: 0
|
||||||
|
m_AdvancedSettingsExpanded: 1
|
||||||
|
m_ScopedRegistriesSettingsExpanded: 1
|
||||||
|
m_SeeAllPackageVersions: 0
|
||||||
|
m_DismissPreviewPackagesInUse: 0
|
||||||
|
oneTimeWarningShown: 0
|
||||||
|
m_Registries:
|
||||||
|
- m_Id: main
|
||||||
|
m_Name:
|
||||||
|
m_Url: https://packages.unity.cn
|
||||||
|
m_Scopes: []
|
||||||
|
m_IsDefault: 1
|
||||||
|
m_Capabilities: 7
|
||||||
|
m_ConfigSource: 0
|
||||||
|
m_UserSelectedRegistryName:
|
||||||
|
m_UserAddingNewScopedRegistry: 0
|
||||||
|
m_RegistryInfoDraft:
|
||||||
|
m_Modified: 0
|
||||||
|
m_ErrorMessage:
|
||||||
|
m_UserModificationsInstanceId: -854
|
||||||
|
m_OriginalInstanceId: -856
|
||||||
|
m_LoadAssets: 0
|
||||||
|
|
@ -0,0 +1,56 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!19 &1
|
||||||
|
Physics2DSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 4
|
||||||
|
m_Gravity: {x: 0, y: -9.81}
|
||||||
|
m_DefaultMaterial: {fileID: 0}
|
||||||
|
m_VelocityIterations: 8
|
||||||
|
m_PositionIterations: 3
|
||||||
|
m_VelocityThreshold: 1
|
||||||
|
m_MaxLinearCorrection: 0.2
|
||||||
|
m_MaxAngularCorrection: 8
|
||||||
|
m_MaxTranslationSpeed: 100
|
||||||
|
m_MaxRotationSpeed: 360
|
||||||
|
m_BaumgarteScale: 0.2
|
||||||
|
m_BaumgarteTimeOfImpactScale: 0.75
|
||||||
|
m_TimeToSleep: 0.5
|
||||||
|
m_LinearSleepTolerance: 0.01
|
||||||
|
m_AngularSleepTolerance: 2
|
||||||
|
m_DefaultContactOffset: 0.01
|
||||||
|
m_JobOptions:
|
||||||
|
serializedVersion: 2
|
||||||
|
useMultithreading: 0
|
||||||
|
useConsistencySorting: 0
|
||||||
|
m_InterpolationPosesPerJob: 100
|
||||||
|
m_NewContactsPerJob: 30
|
||||||
|
m_CollideContactsPerJob: 100
|
||||||
|
m_ClearFlagsPerJob: 200
|
||||||
|
m_ClearBodyForcesPerJob: 200
|
||||||
|
m_SyncDiscreteFixturesPerJob: 50
|
||||||
|
m_SyncContinuousFixturesPerJob: 50
|
||||||
|
m_FindNearestContactsPerJob: 100
|
||||||
|
m_UpdateTriggerContactsPerJob: 100
|
||||||
|
m_IslandSolverCostThreshold: 100
|
||||||
|
m_IslandSolverBodyCostScale: 1
|
||||||
|
m_IslandSolverContactCostScale: 10
|
||||||
|
m_IslandSolverJointCostScale: 10
|
||||||
|
m_IslandSolverBodiesPerJob: 50
|
||||||
|
m_IslandSolverContactsPerJob: 50
|
||||||
|
m_AutoSimulation: 1
|
||||||
|
m_QueriesHitTriggers: 1
|
||||||
|
m_QueriesStartInColliders: 1
|
||||||
|
m_CallbacksOnDisable: 1
|
||||||
|
m_ReuseCollisionCallbacks: 0
|
||||||
|
m_AutoSyncTransforms: 0
|
||||||
|
m_AlwaysShowColliders: 0
|
||||||
|
m_ShowColliderSleep: 1
|
||||||
|
m_ShowColliderContacts: 0
|
||||||
|
m_ShowColliderAABB: 0
|
||||||
|
m_ContactArrowScale: 0.2
|
||||||
|
m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412}
|
||||||
|
m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432}
|
||||||
|
m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745}
|
||||||
|
m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804}
|
||||||
|
m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1386491679 &1
|
||||||
|
PresetManager:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_DefaultPresets: {}
|
||||||
|
|
@ -0,0 +1,933 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!129 &1
|
||||||
|
PlayerSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 26
|
||||||
|
productGUID: b4e53d9b99cb374438c36b1943669687
|
||||||
|
AndroidProfiler: 0
|
||||||
|
AndroidFilterTouchesWhenObscured: 0
|
||||||
|
AndroidEnableSustainedPerformanceMode: 0
|
||||||
|
defaultScreenOrientation: 4
|
||||||
|
targetDevice: 2
|
||||||
|
useOnDemandResources: 0
|
||||||
|
accelerometerFrequency: 60
|
||||||
|
companyName: DefaultCompany
|
||||||
|
productName: VampireAct
|
||||||
|
defaultCursor: {fileID: 0}
|
||||||
|
cursorHotspot: {x: 0, y: 0}
|
||||||
|
m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1}
|
||||||
|
m_ShowUnitySplashScreen: 1
|
||||||
|
m_ShowUnitySplashLogo: 1
|
||||||
|
m_SplashScreenOverlayOpacity: 1
|
||||||
|
m_SplashScreenAnimation: 1
|
||||||
|
m_SplashScreenLogoStyle: 1
|
||||||
|
m_SplashScreenDrawMode: 0
|
||||||
|
m_SplashScreenBackgroundAnimationZoom: 1
|
||||||
|
m_SplashScreenLogoAnimationZoom: 1
|
||||||
|
m_SplashScreenBackgroundLandscapeAspect: 1
|
||||||
|
m_SplashScreenBackgroundPortraitAspect: 1
|
||||||
|
m_SplashScreenBackgroundLandscapeUvs:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 1
|
||||||
|
height: 1
|
||||||
|
m_SplashScreenBackgroundPortraitUvs:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 1
|
||||||
|
height: 1
|
||||||
|
m_SplashScreenLogos: []
|
||||||
|
m_VirtualRealitySplashScreen: {fileID: 0}
|
||||||
|
m_HolographicTrackingLossScreen: {fileID: 0}
|
||||||
|
defaultScreenWidth: 1024
|
||||||
|
defaultScreenHeight: 768
|
||||||
|
defaultScreenWidthWeb: 960
|
||||||
|
defaultScreenHeightWeb: 600
|
||||||
|
m_StereoRenderingPath: 0
|
||||||
|
m_ActiveColorSpace: 1
|
||||||
|
unsupportedMSAAFallback: 0
|
||||||
|
m_SpriteBatchVertexThreshold: 300
|
||||||
|
m_MTRendering: 1
|
||||||
|
mipStripping: 0
|
||||||
|
numberOfMipsStripped: 0
|
||||||
|
numberOfMipsStrippedPerMipmapLimitGroup: {}
|
||||||
|
m_StackTraceTypes: 010000000100000001000000010000000100000001000000
|
||||||
|
iosShowActivityIndicatorOnLoading: -1
|
||||||
|
androidShowActivityIndicatorOnLoading: -1
|
||||||
|
iosUseCustomAppBackgroundBehavior: 0
|
||||||
|
allowedAutorotateToPortrait: 1
|
||||||
|
allowedAutorotateToPortraitUpsideDown: 1
|
||||||
|
allowedAutorotateToLandscapeRight: 1
|
||||||
|
allowedAutorotateToLandscapeLeft: 1
|
||||||
|
useOSAutorotation: 1
|
||||||
|
use32BitDisplayBuffer: 1
|
||||||
|
preserveFramebufferAlpha: 0
|
||||||
|
disableDepthAndStencilBuffers: 0
|
||||||
|
androidStartInFullscreen: 1
|
||||||
|
androidRenderOutsideSafeArea: 1
|
||||||
|
androidUseSwappy: 0
|
||||||
|
androidBlitType: 0
|
||||||
|
androidResizableWindow: 0
|
||||||
|
androidDefaultWindowWidth: 1920
|
||||||
|
androidDefaultWindowHeight: 1080
|
||||||
|
androidMinimumWindowWidth: 400
|
||||||
|
androidMinimumWindowHeight: 300
|
||||||
|
androidFullscreenMode: 1
|
||||||
|
androidAutoRotationBehavior: 1
|
||||||
|
androidPredictiveBackSupport: 1
|
||||||
|
defaultIsNativeResolution: 1
|
||||||
|
macRetinaSupport: 1
|
||||||
|
runInBackground: 0
|
||||||
|
captureSingleScreen: 0
|
||||||
|
muteOtherAudioSources: 0
|
||||||
|
Prepare IOS For Recording: 0
|
||||||
|
Force IOS Speakers When Recording: 0
|
||||||
|
audioSpatialExperience: 0
|
||||||
|
deferSystemGesturesMode: 0
|
||||||
|
hideHomeButton: 0
|
||||||
|
submitAnalytics: 1
|
||||||
|
usePlayerLog: 1
|
||||||
|
dedicatedServerOptimizations: 0
|
||||||
|
bakeCollisionMeshes: 0
|
||||||
|
forceSingleInstance: 0
|
||||||
|
useFlipModelSwapchain: 1
|
||||||
|
resizableWindow: 0
|
||||||
|
useMacAppStoreValidation: 0
|
||||||
|
macAppStoreCategory: public.app-category.games
|
||||||
|
gpuSkinning: 1
|
||||||
|
xboxPIXTextureCapture: 0
|
||||||
|
xboxEnableAvatar: 0
|
||||||
|
xboxEnableKinect: 0
|
||||||
|
xboxEnableKinectAutoTracking: 0
|
||||||
|
xboxEnableFitness: 0
|
||||||
|
visibleInBackground: 1
|
||||||
|
allowFullscreenSwitch: 1
|
||||||
|
fullscreenMode: 1
|
||||||
|
xboxSpeechDB: 0
|
||||||
|
xboxEnableHeadOrientation: 0
|
||||||
|
xboxEnableGuest: 0
|
||||||
|
xboxEnablePIXSampling: 0
|
||||||
|
metalFramebufferOnly: 0
|
||||||
|
xboxOneResolution: 0
|
||||||
|
xboxOneSResolution: 0
|
||||||
|
xboxOneXResolution: 3
|
||||||
|
xboxOneMonoLoggingLevel: 0
|
||||||
|
xboxOneLoggingLevel: 1
|
||||||
|
xboxOneDisableEsram: 0
|
||||||
|
xboxOneEnableTypeOptimization: 0
|
||||||
|
xboxOnePresentImmediateThreshold: 0
|
||||||
|
switchQueueCommandMemory: 1048576
|
||||||
|
switchQueueControlMemory: 16384
|
||||||
|
switchQueueComputeMemory: 262144
|
||||||
|
switchNVNShaderPoolsGranularity: 33554432
|
||||||
|
switchNVNDefaultPoolsGranularity: 16777216
|
||||||
|
switchNVNOtherPoolsGranularity: 16777216
|
||||||
|
switchGpuScratchPoolGranularity: 2097152
|
||||||
|
switchAllowGpuScratchShrinking: 0
|
||||||
|
switchNVNMaxPublicTextureIDCount: 0
|
||||||
|
switchNVNMaxPublicSamplerIDCount: 0
|
||||||
|
switchNVNGraphicsFirmwareMemory: 32
|
||||||
|
switchMaxWorkerMultiple: 8
|
||||||
|
stadiaPresentMode: 0
|
||||||
|
stadiaTargetFramerate: 0
|
||||||
|
vulkanNumSwapchainBuffers: 3
|
||||||
|
vulkanEnableSetSRGBWrite: 0
|
||||||
|
vulkanEnablePreTransform: 1
|
||||||
|
vulkanEnableLateAcquireNextImage: 0
|
||||||
|
vulkanEnableCommandBufferRecycling: 1
|
||||||
|
loadStoreDebugModeEnabled: 0
|
||||||
|
visionOSBundleVersion: 1.0
|
||||||
|
tvOSBundleVersion: 1.0
|
||||||
|
bundleVersion: 0.1.0
|
||||||
|
preloadedAssets: []
|
||||||
|
metroInputSource: 0
|
||||||
|
wsaTransparentSwapchain: 0
|
||||||
|
m_HolographicPauseOnTrackingLoss: 1
|
||||||
|
xboxOneDisableKinectGpuReservation: 1
|
||||||
|
xboxOneEnable7thCore: 1
|
||||||
|
vrSettings:
|
||||||
|
enable360StereoCapture: 0
|
||||||
|
isWsaHolographicRemotingEnabled: 0
|
||||||
|
enableFrameTimingStats: 0
|
||||||
|
enableOpenGLProfilerGPURecorders: 1
|
||||||
|
allowHDRDisplaySupport: 0
|
||||||
|
useHDRDisplay: 0
|
||||||
|
hdrBitDepth: 0
|
||||||
|
m_ColorGamuts: 00000000
|
||||||
|
targetPixelDensity: 30
|
||||||
|
resolutionScalingMode: 0
|
||||||
|
resetResolutionOnWindowResize: 0
|
||||||
|
androidSupportedAspectRatio: 1
|
||||||
|
androidMaxAspectRatio: 2.1
|
||||||
|
applicationIdentifier:
|
||||||
|
Android: com.UnityTechnologies.com.unity.template.urpblank
|
||||||
|
Standalone: com.Unity-Technologies.com.unity.template.urp-blank
|
||||||
|
iPhone: com.Unity-Technologies.com.unity.template.urp-blank
|
||||||
|
buildNumber:
|
||||||
|
Standalone: 0
|
||||||
|
VisionOS: 0
|
||||||
|
iPhone: 0
|
||||||
|
tvOS: 0
|
||||||
|
overrideDefaultApplicationIdentifier: 1
|
||||||
|
AndroidBundleVersionCode: 1
|
||||||
|
AndroidMinSdkVersion: 22
|
||||||
|
AndroidTargetSdkVersion: 0
|
||||||
|
AndroidPreferredInstallLocation: 1
|
||||||
|
aotOptions:
|
||||||
|
stripEngineCode: 1
|
||||||
|
iPhoneStrippingLevel: 0
|
||||||
|
iPhoneScriptCallOptimization: 0
|
||||||
|
ForceInternetPermission: 0
|
||||||
|
ForceSDCardPermission: 0
|
||||||
|
CreateWallpaper: 0
|
||||||
|
APKExpansionFiles: 0
|
||||||
|
keepLoadedShadersAlive: 0
|
||||||
|
StripUnusedMeshComponents: 0
|
||||||
|
strictShaderVariantMatching: 0
|
||||||
|
VertexChannelCompressionMask: 4054
|
||||||
|
iPhoneSdkVersion: 988
|
||||||
|
iOSSimulatorArchitecture: 0
|
||||||
|
iOSTargetOSVersionString: 12.0
|
||||||
|
tvOSSdkVersion: 0
|
||||||
|
tvOSSimulatorArchitecture: 0
|
||||||
|
tvOSRequireExtendedGameController: 0
|
||||||
|
tvOSTargetOSVersionString: 12.0
|
||||||
|
VisionOSSdkVersion: 0
|
||||||
|
VisionOSTargetOSVersionString: 1.0
|
||||||
|
uIPrerenderedIcon: 0
|
||||||
|
uIRequiresPersistentWiFi: 0
|
||||||
|
uIRequiresFullScreen: 1
|
||||||
|
uIStatusBarHidden: 1
|
||||||
|
uIExitOnSuspend: 0
|
||||||
|
uIStatusBarStyle: 0
|
||||||
|
appleTVSplashScreen: {fileID: 0}
|
||||||
|
appleTVSplashScreen2x: {fileID: 0}
|
||||||
|
tvOSSmallIconLayers: []
|
||||||
|
tvOSSmallIconLayers2x: []
|
||||||
|
tvOSLargeIconLayers: []
|
||||||
|
tvOSLargeIconLayers2x: []
|
||||||
|
tvOSTopShelfImageLayers: []
|
||||||
|
tvOSTopShelfImageLayers2x: []
|
||||||
|
tvOSTopShelfImageWideLayers: []
|
||||||
|
tvOSTopShelfImageWideLayers2x: []
|
||||||
|
iOSLaunchScreenType: 0
|
||||||
|
iOSLaunchScreenPortrait: {fileID: 0}
|
||||||
|
iOSLaunchScreenLandscape: {fileID: 0}
|
||||||
|
iOSLaunchScreenBackgroundColor:
|
||||||
|
serializedVersion: 2
|
||||||
|
rgba: 0
|
||||||
|
iOSLaunchScreenFillPct: 100
|
||||||
|
iOSLaunchScreenSize: 100
|
||||||
|
iOSLaunchScreenCustomXibPath:
|
||||||
|
iOSLaunchScreeniPadType: 0
|
||||||
|
iOSLaunchScreeniPadImage: {fileID: 0}
|
||||||
|
iOSLaunchScreeniPadBackgroundColor:
|
||||||
|
serializedVersion: 2
|
||||||
|
rgba: 0
|
||||||
|
iOSLaunchScreeniPadFillPct: 100
|
||||||
|
iOSLaunchScreeniPadSize: 100
|
||||||
|
iOSLaunchScreeniPadCustomXibPath:
|
||||||
|
iOSLaunchScreenCustomStoryboardPath:
|
||||||
|
iOSLaunchScreeniPadCustomStoryboardPath:
|
||||||
|
iOSDeviceRequirements: []
|
||||||
|
iOSURLSchemes: []
|
||||||
|
macOSURLSchemes: []
|
||||||
|
iOSBackgroundModes: 0
|
||||||
|
iOSMetalForceHardShadows: 0
|
||||||
|
metalEditorSupport: 1
|
||||||
|
metalAPIValidation: 1
|
||||||
|
metalCompileShaderBinary: 0
|
||||||
|
iOSRenderExtraFrameOnPause: 0
|
||||||
|
iosCopyPluginsCodeInsteadOfSymlink: 0
|
||||||
|
appleDeveloperTeamID:
|
||||||
|
iOSManualSigningProvisioningProfileID:
|
||||||
|
tvOSManualSigningProvisioningProfileID:
|
||||||
|
VisionOSManualSigningProvisioningProfileID:
|
||||||
|
iOSManualSigningProvisioningProfileType: 0
|
||||||
|
tvOSManualSigningProvisioningProfileType: 0
|
||||||
|
VisionOSManualSigningProvisioningProfileType: 0
|
||||||
|
appleEnableAutomaticSigning: 0
|
||||||
|
iOSRequireARKit: 0
|
||||||
|
iOSAutomaticallyDetectAndAddCapabilities: 1
|
||||||
|
appleEnableProMotion: 0
|
||||||
|
shaderPrecisionModel: 0
|
||||||
|
clonedFromGUID: 3c72c65a16f0acb438eed22b8b16c24a
|
||||||
|
templatePackageId: com.unity.template.urp-blank@14.0.0
|
||||||
|
templateDefaultScene: Assets/Scenes/SampleScene.unity
|
||||||
|
useCustomMainManifest: 0
|
||||||
|
useCustomLauncherManifest: 0
|
||||||
|
useCustomMainGradleTemplate: 0
|
||||||
|
useCustomLauncherGradleManifest: 0
|
||||||
|
useCustomBaseGradleTemplate: 0
|
||||||
|
useCustomGradlePropertiesTemplate: 0
|
||||||
|
useCustomGradleSettingsTemplate: 0
|
||||||
|
useCustomProguardFile: 0
|
||||||
|
AndroidTargetArchitectures: 1
|
||||||
|
AndroidTargetDevices: 0
|
||||||
|
AndroidSplashScreenScale: 0
|
||||||
|
androidSplashScreen: {fileID: 0}
|
||||||
|
AndroidKeystoreName:
|
||||||
|
AndroidKeyaliasName:
|
||||||
|
AndroidEnableArmv9SecurityFeatures: 0
|
||||||
|
AndroidBuildApkPerCpuArchitecture: 0
|
||||||
|
AndroidTVCompatibility: 0
|
||||||
|
AndroidIsGame: 1
|
||||||
|
AndroidEnableTango: 0
|
||||||
|
androidEnableBanner: 1
|
||||||
|
androidUseLowAccuracyLocation: 0
|
||||||
|
androidUseCustomKeystore: 0
|
||||||
|
m_AndroidBanners:
|
||||||
|
- width: 320
|
||||||
|
height: 180
|
||||||
|
banner: {fileID: 0}
|
||||||
|
androidGamepadSupportLevel: 0
|
||||||
|
chromeosInputEmulation: 1
|
||||||
|
AndroidMinifyRelease: 0
|
||||||
|
AndroidMinifyDebug: 0
|
||||||
|
AndroidValidateAppBundleSize: 1
|
||||||
|
AndroidAppBundleSizeToValidate: 150
|
||||||
|
m_BuildTargetIcons: []
|
||||||
|
m_BuildTargetPlatformIcons:
|
||||||
|
- m_BuildTarget: iPhone
|
||||||
|
m_Icons:
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 180
|
||||||
|
m_Height: 180
|
||||||
|
m_Kind: 0
|
||||||
|
m_SubKind: iPhone
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 120
|
||||||
|
m_Height: 120
|
||||||
|
m_Kind: 0
|
||||||
|
m_SubKind: iPhone
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 167
|
||||||
|
m_Height: 167
|
||||||
|
m_Kind: 0
|
||||||
|
m_SubKind: iPad
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 152
|
||||||
|
m_Height: 152
|
||||||
|
m_Kind: 0
|
||||||
|
m_SubKind: iPad
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 76
|
||||||
|
m_Height: 76
|
||||||
|
m_Kind: 0
|
||||||
|
m_SubKind: iPad
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 120
|
||||||
|
m_Height: 120
|
||||||
|
m_Kind: 3
|
||||||
|
m_SubKind: iPhone
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 80
|
||||||
|
m_Height: 80
|
||||||
|
m_Kind: 3
|
||||||
|
m_SubKind: iPhone
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 80
|
||||||
|
m_Height: 80
|
||||||
|
m_Kind: 3
|
||||||
|
m_SubKind: iPad
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 40
|
||||||
|
m_Height: 40
|
||||||
|
m_Kind: 3
|
||||||
|
m_SubKind: iPad
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 87
|
||||||
|
m_Height: 87
|
||||||
|
m_Kind: 1
|
||||||
|
m_SubKind: iPhone
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 58
|
||||||
|
m_Height: 58
|
||||||
|
m_Kind: 1
|
||||||
|
m_SubKind: iPhone
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 29
|
||||||
|
m_Height: 29
|
||||||
|
m_Kind: 1
|
||||||
|
m_SubKind: iPhone
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 58
|
||||||
|
m_Height: 58
|
||||||
|
m_Kind: 1
|
||||||
|
m_SubKind: iPad
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 29
|
||||||
|
m_Height: 29
|
||||||
|
m_Kind: 1
|
||||||
|
m_SubKind: iPad
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 60
|
||||||
|
m_Height: 60
|
||||||
|
m_Kind: 2
|
||||||
|
m_SubKind: iPhone
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 40
|
||||||
|
m_Height: 40
|
||||||
|
m_Kind: 2
|
||||||
|
m_SubKind: iPhone
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 40
|
||||||
|
m_Height: 40
|
||||||
|
m_Kind: 2
|
||||||
|
m_SubKind: iPad
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 20
|
||||||
|
m_Height: 20
|
||||||
|
m_Kind: 2
|
||||||
|
m_SubKind: iPad
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 1024
|
||||||
|
m_Height: 1024
|
||||||
|
m_Kind: 4
|
||||||
|
m_SubKind: App Store
|
||||||
|
- m_BuildTarget: Android
|
||||||
|
m_Icons:
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 432
|
||||||
|
m_Height: 432
|
||||||
|
m_Kind: 2
|
||||||
|
m_SubKind:
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 324
|
||||||
|
m_Height: 324
|
||||||
|
m_Kind: 2
|
||||||
|
m_SubKind:
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 216
|
||||||
|
m_Height: 216
|
||||||
|
m_Kind: 2
|
||||||
|
m_SubKind:
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 162
|
||||||
|
m_Height: 162
|
||||||
|
m_Kind: 2
|
||||||
|
m_SubKind:
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 108
|
||||||
|
m_Height: 108
|
||||||
|
m_Kind: 2
|
||||||
|
m_SubKind:
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 81
|
||||||
|
m_Height: 81
|
||||||
|
m_Kind: 2
|
||||||
|
m_SubKind:
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 192
|
||||||
|
m_Height: 192
|
||||||
|
m_Kind: 1
|
||||||
|
m_SubKind:
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 144
|
||||||
|
m_Height: 144
|
||||||
|
m_Kind: 1
|
||||||
|
m_SubKind:
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 96
|
||||||
|
m_Height: 96
|
||||||
|
m_Kind: 1
|
||||||
|
m_SubKind:
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 72
|
||||||
|
m_Height: 72
|
||||||
|
m_Kind: 1
|
||||||
|
m_SubKind:
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 48
|
||||||
|
m_Height: 48
|
||||||
|
m_Kind: 1
|
||||||
|
m_SubKind:
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 36
|
||||||
|
m_Height: 36
|
||||||
|
m_Kind: 1
|
||||||
|
m_SubKind:
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 192
|
||||||
|
m_Height: 192
|
||||||
|
m_Kind: 0
|
||||||
|
m_SubKind:
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 144
|
||||||
|
m_Height: 144
|
||||||
|
m_Kind: 0
|
||||||
|
m_SubKind:
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 96
|
||||||
|
m_Height: 96
|
||||||
|
m_Kind: 0
|
||||||
|
m_SubKind:
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 72
|
||||||
|
m_Height: 72
|
||||||
|
m_Kind: 0
|
||||||
|
m_SubKind:
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 48
|
||||||
|
m_Height: 48
|
||||||
|
m_Kind: 0
|
||||||
|
m_SubKind:
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 36
|
||||||
|
m_Height: 36
|
||||||
|
m_Kind: 0
|
||||||
|
m_SubKind:
|
||||||
|
- m_BuildTarget: tvOS
|
||||||
|
m_Icons:
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 1280
|
||||||
|
m_Height: 768
|
||||||
|
m_Kind: 0
|
||||||
|
m_SubKind:
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 800
|
||||||
|
m_Height: 480
|
||||||
|
m_Kind: 0
|
||||||
|
m_SubKind:
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 400
|
||||||
|
m_Height: 240
|
||||||
|
m_Kind: 0
|
||||||
|
m_SubKind:
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 4640
|
||||||
|
m_Height: 1440
|
||||||
|
m_Kind: 1
|
||||||
|
m_SubKind:
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 2320
|
||||||
|
m_Height: 720
|
||||||
|
m_Kind: 1
|
||||||
|
m_SubKind:
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 3840
|
||||||
|
m_Height: 1440
|
||||||
|
m_Kind: 1
|
||||||
|
m_SubKind:
|
||||||
|
- m_Textures: []
|
||||||
|
m_Width: 1920
|
||||||
|
m_Height: 720
|
||||||
|
m_Kind: 1
|
||||||
|
m_SubKind:
|
||||||
|
m_BuildTargetBatching: []
|
||||||
|
m_BuildTargetShaderSettings: []
|
||||||
|
m_BuildTargetGraphicsJobs: []
|
||||||
|
m_BuildTargetGraphicsJobMode: []
|
||||||
|
m_BuildTargetGraphicsAPIs:
|
||||||
|
- m_BuildTarget: iOSSupport
|
||||||
|
m_APIs: 10000000
|
||||||
|
m_Automatic: 1
|
||||||
|
- m_BuildTarget: AndroidPlayer
|
||||||
|
m_APIs: 150000000b000000
|
||||||
|
m_Automatic: 0
|
||||||
|
m_BuildTargetVRSettings: []
|
||||||
|
m_DefaultShaderChunkSizeInMB: 16
|
||||||
|
m_DefaultShaderChunkCount: 0
|
||||||
|
openGLRequireES31: 0
|
||||||
|
openGLRequireES31AEP: 0
|
||||||
|
openGLRequireES32: 0
|
||||||
|
m_TemplateCustomTags: {}
|
||||||
|
mobileMTRendering:
|
||||||
|
Android: 1
|
||||||
|
iPhone: 1
|
||||||
|
tvOS: 1
|
||||||
|
m_BuildTargetGroupLightmapEncodingQuality:
|
||||||
|
- m_BuildTarget: Android
|
||||||
|
m_EncodingQuality: 1
|
||||||
|
m_BuildTargetGroupHDRCubemapEncodingQuality:
|
||||||
|
- m_BuildTarget: Android
|
||||||
|
m_EncodingQuality: 1
|
||||||
|
m_BuildTargetGroupLightmapSettings: []
|
||||||
|
m_BuildTargetGroupLoadStoreDebugModeSettings: []
|
||||||
|
m_BuildTargetNormalMapEncoding:
|
||||||
|
- m_BuildTarget: Android
|
||||||
|
m_Encoding: 1
|
||||||
|
m_BuildTargetDefaultTextureCompressionFormat:
|
||||||
|
- m_BuildTarget: Android
|
||||||
|
m_Format: 3
|
||||||
|
playModeTestRunnerEnabled: 0
|
||||||
|
runPlayModeTestAsEditModeTest: 0
|
||||||
|
actionOnDotNetUnhandledException: 1
|
||||||
|
enableInternalProfiler: 0
|
||||||
|
logObjCUncaughtExceptions: 1
|
||||||
|
enableCrashReportAPI: 0
|
||||||
|
cameraUsageDescription:
|
||||||
|
locationUsageDescription:
|
||||||
|
microphoneUsageDescription:
|
||||||
|
bluetoothUsageDescription:
|
||||||
|
macOSTargetOSVersion: 10.13.0
|
||||||
|
switchNMETAOverride:
|
||||||
|
switchNetLibKey:
|
||||||
|
switchSocketMemoryPoolSize: 6144
|
||||||
|
switchSocketAllocatorPoolSize: 128
|
||||||
|
switchSocketConcurrencyLimit: 14
|
||||||
|
switchScreenResolutionBehavior: 2
|
||||||
|
switchUseCPUProfiler: 0
|
||||||
|
switchEnableFileSystemTrace: 0
|
||||||
|
switchLTOSetting: 0
|
||||||
|
switchApplicationID: 0x01004b9000490000
|
||||||
|
switchNSODependencies:
|
||||||
|
switchCompilerFlags:
|
||||||
|
switchTitleNames_0:
|
||||||
|
switchTitleNames_1:
|
||||||
|
switchTitleNames_2:
|
||||||
|
switchTitleNames_3:
|
||||||
|
switchTitleNames_4:
|
||||||
|
switchTitleNames_5:
|
||||||
|
switchTitleNames_6:
|
||||||
|
switchTitleNames_7:
|
||||||
|
switchTitleNames_8:
|
||||||
|
switchTitleNames_9:
|
||||||
|
switchTitleNames_10:
|
||||||
|
switchTitleNames_11:
|
||||||
|
switchTitleNames_12:
|
||||||
|
switchTitleNames_13:
|
||||||
|
switchTitleNames_14:
|
||||||
|
switchTitleNames_15:
|
||||||
|
switchPublisherNames_0:
|
||||||
|
switchPublisherNames_1:
|
||||||
|
switchPublisherNames_2:
|
||||||
|
switchPublisherNames_3:
|
||||||
|
switchPublisherNames_4:
|
||||||
|
switchPublisherNames_5:
|
||||||
|
switchPublisherNames_6:
|
||||||
|
switchPublisherNames_7:
|
||||||
|
switchPublisherNames_8:
|
||||||
|
switchPublisherNames_9:
|
||||||
|
switchPublisherNames_10:
|
||||||
|
switchPublisherNames_11:
|
||||||
|
switchPublisherNames_12:
|
||||||
|
switchPublisherNames_13:
|
||||||
|
switchPublisherNames_14:
|
||||||
|
switchPublisherNames_15:
|
||||||
|
switchIcons_0: {fileID: 0}
|
||||||
|
switchIcons_1: {fileID: 0}
|
||||||
|
switchIcons_2: {fileID: 0}
|
||||||
|
switchIcons_3: {fileID: 0}
|
||||||
|
switchIcons_4: {fileID: 0}
|
||||||
|
switchIcons_5: {fileID: 0}
|
||||||
|
switchIcons_6: {fileID: 0}
|
||||||
|
switchIcons_7: {fileID: 0}
|
||||||
|
switchIcons_8: {fileID: 0}
|
||||||
|
switchIcons_9: {fileID: 0}
|
||||||
|
switchIcons_10: {fileID: 0}
|
||||||
|
switchIcons_11: {fileID: 0}
|
||||||
|
switchIcons_12: {fileID: 0}
|
||||||
|
switchIcons_13: {fileID: 0}
|
||||||
|
switchIcons_14: {fileID: 0}
|
||||||
|
switchIcons_15: {fileID: 0}
|
||||||
|
switchSmallIcons_0: {fileID: 0}
|
||||||
|
switchSmallIcons_1: {fileID: 0}
|
||||||
|
switchSmallIcons_2: {fileID: 0}
|
||||||
|
switchSmallIcons_3: {fileID: 0}
|
||||||
|
switchSmallIcons_4: {fileID: 0}
|
||||||
|
switchSmallIcons_5: {fileID: 0}
|
||||||
|
switchSmallIcons_6: {fileID: 0}
|
||||||
|
switchSmallIcons_7: {fileID: 0}
|
||||||
|
switchSmallIcons_8: {fileID: 0}
|
||||||
|
switchSmallIcons_9: {fileID: 0}
|
||||||
|
switchSmallIcons_10: {fileID: 0}
|
||||||
|
switchSmallIcons_11: {fileID: 0}
|
||||||
|
switchSmallIcons_12: {fileID: 0}
|
||||||
|
switchSmallIcons_13: {fileID: 0}
|
||||||
|
switchSmallIcons_14: {fileID: 0}
|
||||||
|
switchSmallIcons_15: {fileID: 0}
|
||||||
|
switchManualHTML:
|
||||||
|
switchAccessibleURLs:
|
||||||
|
switchLegalInformation:
|
||||||
|
switchMainThreadStackSize: 1048576
|
||||||
|
switchPresenceGroupId:
|
||||||
|
switchLogoHandling: 0
|
||||||
|
switchReleaseVersion: 0
|
||||||
|
switchDisplayVersion: 1.0.0
|
||||||
|
switchStartupUserAccount: 0
|
||||||
|
switchSupportedLanguagesMask: 0
|
||||||
|
switchLogoType: 0
|
||||||
|
switchApplicationErrorCodeCategory:
|
||||||
|
switchUserAccountSaveDataSize: 0
|
||||||
|
switchUserAccountSaveDataJournalSize: 0
|
||||||
|
switchApplicationAttribute: 0
|
||||||
|
switchCardSpecSize: -1
|
||||||
|
switchCardSpecClock: -1
|
||||||
|
switchRatingsMask: 0
|
||||||
|
switchRatingsInt_0: 0
|
||||||
|
switchRatingsInt_1: 0
|
||||||
|
switchRatingsInt_2: 0
|
||||||
|
switchRatingsInt_3: 0
|
||||||
|
switchRatingsInt_4: 0
|
||||||
|
switchRatingsInt_5: 0
|
||||||
|
switchRatingsInt_6: 0
|
||||||
|
switchRatingsInt_7: 0
|
||||||
|
switchRatingsInt_8: 0
|
||||||
|
switchRatingsInt_9: 0
|
||||||
|
switchRatingsInt_10: 0
|
||||||
|
switchRatingsInt_11: 0
|
||||||
|
switchRatingsInt_12: 0
|
||||||
|
switchLocalCommunicationIds_0:
|
||||||
|
switchLocalCommunicationIds_1:
|
||||||
|
switchLocalCommunicationIds_2:
|
||||||
|
switchLocalCommunicationIds_3:
|
||||||
|
switchLocalCommunicationIds_4:
|
||||||
|
switchLocalCommunicationIds_5:
|
||||||
|
switchLocalCommunicationIds_6:
|
||||||
|
switchLocalCommunicationIds_7:
|
||||||
|
switchParentalControl: 0
|
||||||
|
switchAllowsScreenshot: 1
|
||||||
|
switchAllowsVideoCapturing: 1
|
||||||
|
switchAllowsRuntimeAddOnContentInstall: 0
|
||||||
|
switchDataLossConfirmation: 0
|
||||||
|
switchUserAccountLockEnabled: 0
|
||||||
|
switchSystemResourceMemory: 16777216
|
||||||
|
switchSupportedNpadStyles: 22
|
||||||
|
switchNativeFsCacheSize: 32
|
||||||
|
switchIsHoldTypeHorizontal: 0
|
||||||
|
switchSupportedNpadCount: 8
|
||||||
|
switchEnableTouchScreen: 1
|
||||||
|
switchSocketConfigEnabled: 0
|
||||||
|
switchTcpInitialSendBufferSize: 32
|
||||||
|
switchTcpInitialReceiveBufferSize: 64
|
||||||
|
switchTcpAutoSendBufferSizeMax: 256
|
||||||
|
switchTcpAutoReceiveBufferSizeMax: 256
|
||||||
|
switchUdpSendBufferSize: 9
|
||||||
|
switchUdpReceiveBufferSize: 42
|
||||||
|
switchSocketBufferEfficiency: 4
|
||||||
|
switchSocketInitializeEnabled: 1
|
||||||
|
switchNetworkInterfaceManagerInitializeEnabled: 1
|
||||||
|
switchDisableHTCSPlayerConnection: 0
|
||||||
|
switchUseNewStyleFilepaths: 0
|
||||||
|
switchUseLegacyFmodPriorities: 0
|
||||||
|
switchUseMicroSleepForYield: 1
|
||||||
|
switchEnableRamDiskSupport: 0
|
||||||
|
switchMicroSleepForYieldTime: 25
|
||||||
|
switchRamDiskSpaceSize: 12
|
||||||
|
ps4NPAgeRating: 12
|
||||||
|
ps4NPTitleSecret:
|
||||||
|
ps4NPTrophyPackPath:
|
||||||
|
ps4ParentalLevel: 11
|
||||||
|
ps4ContentID: ED1633-NPXX51362_00-0000000000000000
|
||||||
|
ps4Category: 0
|
||||||
|
ps4MasterVersion: 01.00
|
||||||
|
ps4AppVersion: 01.00
|
||||||
|
ps4AppType: 0
|
||||||
|
ps4ParamSfxPath:
|
||||||
|
ps4VideoOutPixelFormat: 0
|
||||||
|
ps4VideoOutInitialWidth: 1920
|
||||||
|
ps4VideoOutBaseModeInitialWidth: 1920
|
||||||
|
ps4VideoOutReprojectionRate: 60
|
||||||
|
ps4PronunciationXMLPath:
|
||||||
|
ps4PronunciationSIGPath:
|
||||||
|
ps4BackgroundImagePath:
|
||||||
|
ps4StartupImagePath:
|
||||||
|
ps4StartupImagesFolder:
|
||||||
|
ps4IconImagesFolder:
|
||||||
|
ps4SaveDataImagePath:
|
||||||
|
ps4SdkOverride:
|
||||||
|
ps4BGMPath:
|
||||||
|
ps4ShareFilePath:
|
||||||
|
ps4ShareOverlayImagePath:
|
||||||
|
ps4PrivacyGuardImagePath:
|
||||||
|
ps4ExtraSceSysFile:
|
||||||
|
ps4NPtitleDatPath:
|
||||||
|
ps4RemotePlayKeyAssignment: -1
|
||||||
|
ps4RemotePlayKeyMappingDir:
|
||||||
|
ps4PlayTogetherPlayerCount: 0
|
||||||
|
ps4EnterButtonAssignment: 2
|
||||||
|
ps4ApplicationParam1: 0
|
||||||
|
ps4ApplicationParam2: 0
|
||||||
|
ps4ApplicationParam3: 0
|
||||||
|
ps4ApplicationParam4: 0
|
||||||
|
ps4DownloadDataSize: 0
|
||||||
|
ps4GarlicHeapSize: 2048
|
||||||
|
ps4ProGarlicHeapSize: 2560
|
||||||
|
playerPrefsMaxSize: 32768
|
||||||
|
ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ
|
||||||
|
ps4pnSessions: 1
|
||||||
|
ps4pnPresence: 1
|
||||||
|
ps4pnFriends: 1
|
||||||
|
ps4pnGameCustomData: 1
|
||||||
|
playerPrefsSupport: 0
|
||||||
|
enableApplicationExit: 0
|
||||||
|
resetTempFolder: 1
|
||||||
|
restrictedAudioUsageRights: 0
|
||||||
|
ps4UseResolutionFallback: 0
|
||||||
|
ps4ReprojectionSupport: 0
|
||||||
|
ps4UseAudio3dBackend: 0
|
||||||
|
ps4UseLowGarlicFragmentationMode: 1
|
||||||
|
ps4SocialScreenEnabled: 0
|
||||||
|
ps4ScriptOptimizationLevel: 2
|
||||||
|
ps4Audio3dVirtualSpeakerCount: 14
|
||||||
|
ps4attribCpuUsage: 0
|
||||||
|
ps4PatchPkgPath:
|
||||||
|
ps4PatchLatestPkgPath:
|
||||||
|
ps4PatchChangeinfoPath:
|
||||||
|
ps4PatchDayOne: 0
|
||||||
|
ps4attribUserManagement: 0
|
||||||
|
ps4attribMoveSupport: 0
|
||||||
|
ps4attrib3DSupport: 0
|
||||||
|
ps4attribShareSupport: 0
|
||||||
|
ps4attribExclusiveVR: 0
|
||||||
|
ps4disableAutoHideSplash: 0
|
||||||
|
ps4videoRecordingFeaturesUsed: 0
|
||||||
|
ps4contentSearchFeaturesUsed: 0
|
||||||
|
ps4CompatibilityPS5: 0
|
||||||
|
ps4AllowPS5Detection: 0
|
||||||
|
ps4GPU800MHz: 1
|
||||||
|
ps4attribEyeToEyeDistanceSettingVR: 0
|
||||||
|
ps4IncludedModules: []
|
||||||
|
ps4attribVROutputEnabled: 0
|
||||||
|
monoEnv:
|
||||||
|
splashScreenBackgroundSourceLandscape: {fileID: 0}
|
||||||
|
splashScreenBackgroundSourcePortrait: {fileID: 0}
|
||||||
|
blurSplashScreenBackground: 1
|
||||||
|
spritePackerPolicy:
|
||||||
|
webGLMemorySize: 32
|
||||||
|
webGLExceptionSupport: 1
|
||||||
|
webGLNameFilesAsHashes: 0
|
||||||
|
webGLShowDiagnostics: 0
|
||||||
|
webGLDataCaching: 1
|
||||||
|
webGLDebugSymbols: 0
|
||||||
|
webGLEmscriptenArgs:
|
||||||
|
webGLModulesDirectory:
|
||||||
|
webGLTemplate: APPLICATION:Default
|
||||||
|
webGLAnalyzeBuildSize: 0
|
||||||
|
webGLUseEmbeddedResources: 0
|
||||||
|
webGLCompressionFormat: 0
|
||||||
|
webGLWasmArithmeticExceptions: 0
|
||||||
|
webGLLinkerTarget: 1
|
||||||
|
webGLThreadsSupport: 0
|
||||||
|
webGLDecompressionFallback: 0
|
||||||
|
webGLInitialMemorySize: 32
|
||||||
|
webGLMaximumMemorySize: 2048
|
||||||
|
webGLMemoryGrowthMode: 2
|
||||||
|
webGLMemoryLinearGrowthStep: 16
|
||||||
|
webGLMemoryGeometricGrowthStep: 0.2
|
||||||
|
webGLMemoryGeometricGrowthCap: 96
|
||||||
|
webGLPowerPreference: 2
|
||||||
|
scriptingDefineSymbols: {}
|
||||||
|
additionalCompilerArguments: {}
|
||||||
|
platformArchitecture: {}
|
||||||
|
scriptingBackend: {}
|
||||||
|
il2cppCompilerConfiguration: {}
|
||||||
|
il2cppCodeGeneration: {}
|
||||||
|
managedStrippingLevel:
|
||||||
|
EmbeddedLinux: 1
|
||||||
|
GameCoreScarlett: 1
|
||||||
|
GameCoreXboxOne: 1
|
||||||
|
Nintendo Switch: 1
|
||||||
|
PS4: 1
|
||||||
|
PS5: 1
|
||||||
|
QNX: 1
|
||||||
|
Stadia: 1
|
||||||
|
VisionOS: 1
|
||||||
|
WebGL: 1
|
||||||
|
Windows Store Apps: 1
|
||||||
|
XboxOne: 1
|
||||||
|
iPhone: 1
|
||||||
|
tvOS: 1
|
||||||
|
incrementalIl2cppBuild: {}
|
||||||
|
suppressCommonWarnings: 1
|
||||||
|
allowUnsafeCode: 0
|
||||||
|
useDeterministicCompilation: 1
|
||||||
|
additionalIl2CppArgs:
|
||||||
|
scriptingRuntimeVersion: 1
|
||||||
|
gcIncremental: 1
|
||||||
|
gcWBarrierValidation: 0
|
||||||
|
apiCompatibilityLevelPerPlatform: {}
|
||||||
|
m_RenderingPath: 1
|
||||||
|
m_MobileRenderingPath: 1
|
||||||
|
metroPackageName: VampireAct
|
||||||
|
metroPackageVersion:
|
||||||
|
metroCertificatePath:
|
||||||
|
metroCertificatePassword:
|
||||||
|
metroCertificateSubject:
|
||||||
|
metroCertificateIssuer:
|
||||||
|
metroCertificateNotAfter: 0000000000000000
|
||||||
|
metroApplicationDescription: VampireAct
|
||||||
|
wsaImages: {}
|
||||||
|
metroTileShortName:
|
||||||
|
metroTileShowName: 0
|
||||||
|
metroMediumTileShowName: 0
|
||||||
|
metroLargeTileShowName: 0
|
||||||
|
metroWideTileShowName: 0
|
||||||
|
metroSupportStreamingInstall: 0
|
||||||
|
metroLastRequiredScene: 0
|
||||||
|
metroDefaultTileSize: 1
|
||||||
|
metroTileForegroundText: 2
|
||||||
|
metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0}
|
||||||
|
metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628,
|
||||||
|
a: 1}
|
||||||
|
metroSplashScreenUseBackgroundColor: 0
|
||||||
|
syncCapabilities: 0
|
||||||
|
platformCapabilities: {}
|
||||||
|
metroTargetDeviceFamilies: {}
|
||||||
|
metroFTAName:
|
||||||
|
metroFTAFileTypes: []
|
||||||
|
metroProtocolName:
|
||||||
|
vcxProjDefaultLanguage:
|
||||||
|
XboxOneProductId:
|
||||||
|
XboxOneUpdateKey:
|
||||||
|
XboxOneSandboxId:
|
||||||
|
XboxOneContentId:
|
||||||
|
XboxOneTitleId:
|
||||||
|
XboxOneSCId:
|
||||||
|
XboxOneGameOsOverridePath:
|
||||||
|
XboxOnePackagingOverridePath:
|
||||||
|
XboxOneAppManifestOverridePath:
|
||||||
|
XboxOneVersion: 1.0.0.0
|
||||||
|
XboxOnePackageEncryption: 0
|
||||||
|
XboxOnePackageUpdateGranularity: 2
|
||||||
|
XboxOneDescription:
|
||||||
|
XboxOneLanguage:
|
||||||
|
- enus
|
||||||
|
XboxOneCapability: []
|
||||||
|
XboxOneGameRating: {}
|
||||||
|
XboxOneIsContentPackage: 0
|
||||||
|
XboxOneEnhancedXboxCompatibilityMode: 0
|
||||||
|
XboxOneEnableGPUVariability: 1
|
||||||
|
XboxOneSockets: {}
|
||||||
|
XboxOneSplashScreen: {fileID: 0}
|
||||||
|
XboxOneAllowedProductIds: []
|
||||||
|
XboxOnePersistentLocalStorageSize: 0
|
||||||
|
XboxOneXTitleMemory: 8
|
||||||
|
XboxOneOverrideIdentityName:
|
||||||
|
XboxOneOverrideIdentityPublisher:
|
||||||
|
vrEditorSettings: {}
|
||||||
|
cloudServicesEnabled: {}
|
||||||
|
luminIcon:
|
||||||
|
m_Name:
|
||||||
|
m_ModelFolderPath:
|
||||||
|
m_PortalFolderPath:
|
||||||
|
luminCert:
|
||||||
|
m_CertPath:
|
||||||
|
m_SignPackage: 1
|
||||||
|
luminIsChannelApp: 0
|
||||||
|
luminVersion:
|
||||||
|
m_VersionCode: 1
|
||||||
|
m_VersionName:
|
||||||
|
hmiPlayerDataPath:
|
||||||
|
hmiForceSRGBBlit: 1
|
||||||
|
embeddedLinuxEnableGamepadInput: 1
|
||||||
|
hmiLogStartupTiming: 0
|
||||||
|
hmiCpuConfiguration:
|
||||||
|
apiCompatibilityLevel: 6
|
||||||
|
activeInputHandler: 0
|
||||||
|
windowsGamepadBackendHint: 0
|
||||||
|
cloudProjectId:
|
||||||
|
framebufferDepthMemorylessMode: 0
|
||||||
|
qualitySettingsNames: []
|
||||||
|
projectName:
|
||||||
|
organizationId:
|
||||||
|
cloudEnabled: 0
|
||||||
|
legacyClampBlendShapeWeights: 0
|
||||||
|
hmiLoadingImage: {fileID: 0}
|
||||||
|
platformRequiresReadableAssets: 0
|
||||||
|
virtualTexturingSupportEnabled: 0
|
||||||
|
insecureHttpOption: 0
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
m_EditorVersion: 2022.3.62f3c1
|
||||||
|
m_EditorVersionWithRevision: 2022.3.62f3c1 (1623fc0bbb97)
|
||||||
|
|
@ -0,0 +1,136 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!47 &1
|
||||||
|
QualitySettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 5
|
||||||
|
m_CurrentQuality: 2
|
||||||
|
m_QualitySettings:
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: Performant
|
||||||
|
pixelLightCount: 0
|
||||||
|
shadows: 0
|
||||||
|
shadowResolution: 0
|
||||||
|
shadowProjection: 1
|
||||||
|
shadowCascades: 1
|
||||||
|
shadowDistance: 20
|
||||||
|
shadowNearPlaneOffset: 3
|
||||||
|
shadowCascade2Split: 0.33333334
|
||||||
|
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
|
||||||
|
shadowmaskMode: 0
|
||||||
|
skinWeights: 2
|
||||||
|
textureQuality: 0
|
||||||
|
anisotropicTextures: 0
|
||||||
|
antiAliasing: 0
|
||||||
|
softParticles: 0
|
||||||
|
softVegetation: 0
|
||||||
|
realtimeReflectionProbes: 0
|
||||||
|
billboardsFaceCameraPosition: 0
|
||||||
|
vSyncCount: 0
|
||||||
|
lodBias: 0.4
|
||||||
|
maximumLODLevel: 0
|
||||||
|
streamingMipmapsActive: 0
|
||||||
|
streamingMipmapsAddAllCameras: 1
|
||||||
|
streamingMipmapsMemoryBudget: 512
|
||||||
|
streamingMipmapsRenderersPerFrame: 512
|
||||||
|
streamingMipmapsMaxLevelReduction: 2
|
||||||
|
streamingMipmapsMaxFileIORequests: 1024
|
||||||
|
particleRaycastBudget: 4
|
||||||
|
asyncUploadTimeSlice: 2
|
||||||
|
asyncUploadBufferSize: 16
|
||||||
|
asyncUploadPersistentBuffer: 1
|
||||||
|
resolutionScalingFixedDPIFactor: 1
|
||||||
|
customRenderPipeline: {fileID: 11400000, guid: d0e2fc18fe036412f8223b3b3d9ad574,
|
||||||
|
type: 2}
|
||||||
|
excludedTargetPlatforms: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: Balanced
|
||||||
|
pixelLightCount: 1
|
||||||
|
shadows: 1
|
||||||
|
shadowResolution: 0
|
||||||
|
shadowProjection: 1
|
||||||
|
shadowCascades: 1
|
||||||
|
shadowDistance: 20
|
||||||
|
shadowNearPlaneOffset: 3
|
||||||
|
shadowCascade2Split: 0.33333334
|
||||||
|
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
|
||||||
|
shadowmaskMode: 0
|
||||||
|
skinWeights: 4
|
||||||
|
textureQuality: 0
|
||||||
|
anisotropicTextures: 1
|
||||||
|
antiAliasing: 0
|
||||||
|
softParticles: 0
|
||||||
|
softVegetation: 0
|
||||||
|
realtimeReflectionProbes: 0
|
||||||
|
billboardsFaceCameraPosition: 0
|
||||||
|
vSyncCount: 1
|
||||||
|
lodBias: 1
|
||||||
|
maximumLODLevel: 0
|
||||||
|
streamingMipmapsActive: 0
|
||||||
|
streamingMipmapsAddAllCameras: 1
|
||||||
|
streamingMipmapsMemoryBudget: 512
|
||||||
|
streamingMipmapsRenderersPerFrame: 512
|
||||||
|
streamingMipmapsMaxLevelReduction: 2
|
||||||
|
streamingMipmapsMaxFileIORequests: 1024
|
||||||
|
particleRaycastBudget: 64
|
||||||
|
asyncUploadTimeSlice: 2
|
||||||
|
asyncUploadBufferSize: 16
|
||||||
|
asyncUploadPersistentBuffer: 1
|
||||||
|
resolutionScalingFixedDPIFactor: 1
|
||||||
|
customRenderPipeline: {fileID: 11400000, guid: e1260c1148f6143b28bae5ace5e9c5d1,
|
||||||
|
type: 2}
|
||||||
|
excludedTargetPlatforms: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: High Fidelity
|
||||||
|
pixelLightCount: 2
|
||||||
|
shadows: 2
|
||||||
|
shadowResolution: 1
|
||||||
|
shadowProjection: 1
|
||||||
|
shadowCascades: 2
|
||||||
|
shadowDistance: 40
|
||||||
|
shadowNearPlaneOffset: 3
|
||||||
|
shadowCascade2Split: 0.33333334
|
||||||
|
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
|
||||||
|
shadowmaskMode: 1
|
||||||
|
skinWeights: 255
|
||||||
|
textureQuality: 0
|
||||||
|
anisotropicTextures: 2
|
||||||
|
antiAliasing: 4
|
||||||
|
softParticles: 0
|
||||||
|
softVegetation: 1
|
||||||
|
realtimeReflectionProbes: 1
|
||||||
|
billboardsFaceCameraPosition: 1
|
||||||
|
vSyncCount: 1
|
||||||
|
lodBias: 2
|
||||||
|
maximumLODLevel: 0
|
||||||
|
streamingMipmapsActive: 0
|
||||||
|
streamingMipmapsAddAllCameras: 1
|
||||||
|
streamingMipmapsMemoryBudget: 512
|
||||||
|
streamingMipmapsRenderersPerFrame: 512
|
||||||
|
streamingMipmapsMaxLevelReduction: 2
|
||||||
|
streamingMipmapsMaxFileIORequests: 1024
|
||||||
|
particleRaycastBudget: 2048
|
||||||
|
asyncUploadTimeSlice: 2
|
||||||
|
asyncUploadBufferSize: 16
|
||||||
|
asyncUploadPersistentBuffer: 1
|
||||||
|
resolutionScalingFixedDPIFactor: 1
|
||||||
|
customRenderPipeline: {fileID: 11400000, guid: 7b7fd9122c28c4d15b667c7040e3b3fd,
|
||||||
|
type: 2}
|
||||||
|
excludedTargetPlatforms: []
|
||||||
|
m_PerPlatformDefaultQuality:
|
||||||
|
Android: 1
|
||||||
|
CloudRendering: 2
|
||||||
|
Lumin: 2
|
||||||
|
GameCoreScarlett: 2
|
||||||
|
GameCoreXboxOne: 2
|
||||||
|
Nintendo Switch: 2
|
||||||
|
PS4: 2
|
||||||
|
PS5: 2
|
||||||
|
Server: 0
|
||||||
|
Stadia: 2
|
||||||
|
Standalone: 2
|
||||||
|
WebGL: 1
|
||||||
|
Windows Store Apps: 2
|
||||||
|
XboxOne: 2
|
||||||
|
iPhone: 1
|
||||||
|
tvOS: 1
|
||||||
|
|
@ -0,0 +1,167 @@
|
||||||
|
{
|
||||||
|
"templatePinStates": [],
|
||||||
|
"dependencyTypeInfos": [
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.AnimationClip",
|
||||||
|
"ignore": false,
|
||||||
|
"defaultInstantiationMode": 0,
|
||||||
|
"supportsModification": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEditor.Animations.AnimatorController",
|
||||||
|
"ignore": false,
|
||||||
|
"defaultInstantiationMode": 0,
|
||||||
|
"supportsModification": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.AnimatorOverrideController",
|
||||||
|
"ignore": false,
|
||||||
|
"defaultInstantiationMode": 0,
|
||||||
|
"supportsModification": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEditor.Audio.AudioMixerController",
|
||||||
|
"ignore": false,
|
||||||
|
"defaultInstantiationMode": 0,
|
||||||
|
"supportsModification": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.ComputeShader",
|
||||||
|
"ignore": true,
|
||||||
|
"defaultInstantiationMode": 1,
|
||||||
|
"supportsModification": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.Cubemap",
|
||||||
|
"ignore": false,
|
||||||
|
"defaultInstantiationMode": 0,
|
||||||
|
"supportsModification": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.GameObject",
|
||||||
|
"ignore": false,
|
||||||
|
"defaultInstantiationMode": 0,
|
||||||
|
"supportsModification": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEditor.LightingDataAsset",
|
||||||
|
"ignore": false,
|
||||||
|
"defaultInstantiationMode": 0,
|
||||||
|
"supportsModification": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.LightingSettings",
|
||||||
|
"ignore": false,
|
||||||
|
"defaultInstantiationMode": 0,
|
||||||
|
"supportsModification": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.Material",
|
||||||
|
"ignore": false,
|
||||||
|
"defaultInstantiationMode": 0,
|
||||||
|
"supportsModification": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEditor.MonoScript",
|
||||||
|
"ignore": true,
|
||||||
|
"defaultInstantiationMode": 1,
|
||||||
|
"supportsModification": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.PhysicMaterial",
|
||||||
|
"ignore": false,
|
||||||
|
"defaultInstantiationMode": 0,
|
||||||
|
"supportsModification": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.PhysicsMaterial2D",
|
||||||
|
"ignore": false,
|
||||||
|
"defaultInstantiationMode": 0,
|
||||||
|
"supportsModification": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.Rendering.PostProcessing.PostProcessProfile",
|
||||||
|
"ignore": false,
|
||||||
|
"defaultInstantiationMode": 0,
|
||||||
|
"supportsModification": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.Rendering.PostProcessing.PostProcessResources",
|
||||||
|
"ignore": false,
|
||||||
|
"defaultInstantiationMode": 0,
|
||||||
|
"supportsModification": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.Rendering.VolumeProfile",
|
||||||
|
"ignore": false,
|
||||||
|
"defaultInstantiationMode": 0,
|
||||||
|
"supportsModification": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEditor.SceneAsset",
|
||||||
|
"ignore": false,
|
||||||
|
"defaultInstantiationMode": 0,
|
||||||
|
"supportsModification": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.Shader",
|
||||||
|
"ignore": true,
|
||||||
|
"defaultInstantiationMode": 1,
|
||||||
|
"supportsModification": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.ShaderVariantCollection",
|
||||||
|
"ignore": true,
|
||||||
|
"defaultInstantiationMode": 1,
|
||||||
|
"supportsModification": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.Texture",
|
||||||
|
"ignore": false,
|
||||||
|
"defaultInstantiationMode": 0,
|
||||||
|
"supportsModification": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.Texture2D",
|
||||||
|
"ignore": false,
|
||||||
|
"defaultInstantiationMode": 0,
|
||||||
|
"supportsModification": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.Timeline.TimelineAsset",
|
||||||
|
"ignore": false,
|
||||||
|
"defaultInstantiationMode": 0,
|
||||||
|
"supportsModification": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"defaultDependencyTypeInfo": {
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "<default_scene_template_dependencies>",
|
||||||
|
"ignore": false,
|
||||||
|
"defaultInstantiationMode": 1,
|
||||||
|
"supportsModification": true
|
||||||
|
},
|
||||||
|
"newSceneOverride": 0
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &1
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 61
|
||||||
|
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: de02f9e1d18f588468e474319d09a723, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
shaderVariantLimit: 2048
|
||||||
|
customInterpolatorErrorThreshold: 32
|
||||||
|
customInterpolatorWarningThreshold: 16
|
||||||
|
|
@ -0,0 +1,43 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!78 &1
|
||||||
|
TagManager:
|
||||||
|
serializedVersion: 2
|
||||||
|
tags: []
|
||||||
|
layers:
|
||||||
|
- Default
|
||||||
|
- TransparentFX
|
||||||
|
- Ignore Raycast
|
||||||
|
-
|
||||||
|
- Water
|
||||||
|
- UI
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
m_SortingLayers:
|
||||||
|
- name: Default
|
||||||
|
uniqueID: 0
|
||||||
|
locked: 0
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!5 &1
|
||||||
|
TimeManager:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
Fixed Timestep: 0.02
|
||||||
|
Maximum Allowed Timestep: 0.33333334
|
||||||
|
m_TimeScale: 1
|
||||||
|
Maximum Particle Timestep: 0.03
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &1
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 61
|
||||||
|
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: 247994e1f5a72c2419c26a37e9334c01, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_LastMaterialVersion: 7
|
||||||
|
|
@ -0,0 +1,38 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!310 &1
|
||||||
|
UnityConnectSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 1
|
||||||
|
m_Enabled: 0
|
||||||
|
m_TestMode: 0
|
||||||
|
m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events
|
||||||
|
m_EventUrl: https://cdp.cloud.unity3d.com/v1/events
|
||||||
|
m_ConfigUrl: https://config.uca.cloud.unity3d.com
|
||||||
|
m_DashboardUrl: https://dashboard.unity3d.com
|
||||||
|
m_CNEventUrl: https://cdp.cloud.unity.cn/v1/events
|
||||||
|
m_CNConfigUrl: https://cdp.cloud.unity.cn/config
|
||||||
|
m_TestInitMode: 0
|
||||||
|
CrashReportingSettings:
|
||||||
|
m_EventUrl: https://perf-events.cloud.unity3d.com
|
||||||
|
m_Enabled: 0
|
||||||
|
m_LogBufferSize: 10
|
||||||
|
m_CaptureEditorExceptions: 1
|
||||||
|
UnityPurchasingSettings:
|
||||||
|
m_Enabled: 0
|
||||||
|
m_TestMode: 0
|
||||||
|
UnityAnalyticsSettings:
|
||||||
|
m_Enabled: 0
|
||||||
|
m_TestMode: 0
|
||||||
|
m_InitializeOnStartup: 1
|
||||||
|
m_PackageRequiringCoreStatsPresent: 0
|
||||||
|
UnityAdsSettings:
|
||||||
|
m_Enabled: 0
|
||||||
|
m_InitializeOnStartup: 1
|
||||||
|
m_TestMode: 0
|
||||||
|
m_IosGameId:
|
||||||
|
m_AndroidGameId:
|
||||||
|
m_GameIds: {}
|
||||||
|
m_GameId:
|
||||||
|
PerformanceReportingSettings:
|
||||||
|
m_Enabled: 0
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!937362698 &1
|
||||||
|
VFXManager:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_IndirectShader: {fileID: 0}
|
||||||
|
m_CopyBufferShader: {fileID: 0}
|
||||||
|
m_SortShader: {fileID: 0}
|
||||||
|
m_StripUpdateShader: {fileID: 0}
|
||||||
|
m_RenderPipeSettingsPath:
|
||||||
|
m_FixedTimeStep: 0.016666668
|
||||||
|
m_MaxDeltaTime: 0.05
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!890905787 &1
|
||||||
|
VersionControlSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_Mode: Visible Meta Files
|
||||||
|
m_CollabEditorSettings:
|
||||||
|
inProgressEnabled: 1
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"m_SettingKeys": [
|
||||||
|
"VR Device Disabled",
|
||||||
|
"VR Device User Alert"
|
||||||
|
],
|
||||||
|
"m_SettingValues": [
|
||||||
|
"False",
|
||||||
|
"False"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,106 @@
|
||||||
|
# Art Bible: 夜裔 (Nightborn)
|
||||||
|
|
||||||
|
*Created: 2026-04-27*
|
||||||
|
*Status: Draft — Sections 1–4*
|
||||||
|
*Review Mode: Lean*
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Visual Identity Statement
|
||||||
|
|
||||||
|
**One-line visual rule**: 几何即是表达——三种形态用纯几何体和色彩区分,每个视觉元素服务于战场可读性,每个粒子都是游戏信息。
|
||||||
|
|
||||||
|
### Supporting Principles
|
||||||
|
|
||||||
|
**Principle 1: 色彩即身份 (Color is Identity)**
|
||||||
|
当玩家需要判断自己当前形态时,色彩是第一信号(不是图标、不是文字)。人形=冷银/白、狼躯=暗红/黑、雾形=幽紫/半透明。切换形态时,色彩的过渡本身就是操作反馈。
|
||||||
|
|
||||||
|
*Design test*: 截图给不玩游戏的人看,3秒内说出当前形态——如果不能,色彩区分不够。
|
||||||
|
|
||||||
|
**Principle 2: 剪影即信息 (Silhouette is Information)**
|
||||||
|
三种形态的几何轮廓必须有明显差异:人形直立三角、狼躯低伏四边、雾形扩散圆形。所有敌人类型在最高密度时必须靠剪影区分。
|
||||||
|
|
||||||
|
*Design test*: 把所有模型换成纯黑,只看剪影——能不能分辨形态和敌人类型?
|
||||||
|
|
||||||
|
**Principle 3: 粒子即反馈 (Particles are Feedback)**
|
||||||
|
形态切换用粒子爆发表达,攻击命中用几何碎片反馈。没有复杂动画——几何体的缩放、旋转、位移本身就是美感。
|
||||||
|
|
||||||
|
*Design test*: 关掉音效玩一局——仅靠视觉反馈,你能感受到操作的"重量"吗?
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Mood & Atmosphere
|
||||||
|
|
||||||
|
### Emotional Targets by Game State
|
||||||
|
|
||||||
|
| State | Emotion | Lighting | Atmosphere | Energy |
|
||||||
|
|-------|---------|----------|------------|--------|
|
||||||
|
| **Combat** | Focus & Control — player "conducts" not "reacts" | Dark base + high-saturation form colors. Player self-illuminates via form color radiation | Sharp, clear, high-contrast, tense | Frenetic |
|
||||||
|
| **Wave Break** | Brief respite & assessment — space to read the next wave | Light rises slightly, contrast drops, giving eyes a "deep breath" | Empty, quiet, anticipatory | Measured |
|
||||||
|
| **Boss** | Awe & focus — the boss is a visual event, not a bigger mob | Boss is the brightest and largest geometry, light focuses on it | Oppressive, solemn, concentrated | Frenetic |
|
||||||
|
| **Death** | Fast, clear, unfrustrating — death is information, not punishment | Screen desaturates instantly, player form shatters into geometric fragments | Clean, calm | Pause |
|
||||||
|
| **Menu/HUD** | Clear, quiet, subordinate — UI serves combat info, belongs to the world | Semi-transparent dark base + geometric wireframe elements | Minimal, restrained, functional | Contemplative |
|
||||||
|
|
||||||
|
**Core emotional through-line**: Control the battlefield with geometric color in the darkness.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Shape Language
|
||||||
|
|
||||||
|
### Character Silhouette Philosophy
|
||||||
|
|
||||||
|
| Form | Primary Shape | Emotional Read | Visual Priority |
|
||||||
|
|------|--------------|----------------|-----------------|
|
||||||
|
| **Human** | Upright **Triangle** △ | Stable, precise, upward | Player self-identification |
|
||||||
|
| **Wolf** | Crouched **Rectangle** ▬ | Aggressive, fast, forward | Threat direction indicator |
|
||||||
|
| **Mist** | Diffuse **Circle** ◯ | Fluid, elusive, omnipresent | Area coverage read |
|
||||||
|
|
||||||
|
Enemy silhouettes must contrast with all three form silhouettes — distinguishable in maximum density melee.
|
||||||
|
|
||||||
|
### Environment Geometry
|
||||||
|
|
||||||
|
- **Dominant**: Sharp angles + straight lines — gothic arch motifs and angularity, echoing the vampire dark-world aesthetic
|
||||||
|
- **Contrast**: Flat ground geometry (rectangular platforms, circular arenas) for clear spatial reading during combat
|
||||||
|
- **Rule**: Functional geometry over decorative geometry — every surface exists for battlefield legibility
|
||||||
|
|
||||||
|
### UI Shape Grammar
|
||||||
|
|
||||||
|
- Wireframe geometry + semi-transparent fills — echoes world aesthetic without competing for attention
|
||||||
|
- UI elements use **perfect circles and rectangles**, contrasting with the world's "fractured" geometry — UI is order, world is chaos
|
||||||
|
- Blood energy gauge: gradient geometric ring or segmented rectangle
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Color System
|
||||||
|
|
||||||
|
### Primary Palette
|
||||||
|
|
||||||
|
| Color | Hex | Role | Meaning in This World |
|
||||||
|
|-------|-----|------|----------------------|
|
||||||
|
| **Void Black** | `#0D0A12` | Background / negative space | The darkness between forms — the canvas everything fights on |
|
||||||
|
| **Silver White** | `#D4D9E5` | Human form primary | Precision, clarity, blade-edge — the color of deliberate action |
|
||||||
|
| **Crimson Red** | `#C41E3A` | Wolf form primary | Blood, burst, aggression — the color of committed violence |
|
||||||
|
| **Void Purple** | `#7B2D8E` | Mist form primary | Ethereal, pervasive, transformation — the color of liminal states |
|
||||||
|
| **Ash Grey** | `#3A3540` | Environment geometry | Stone, architecture, permanence — the unchanging world |
|
||||||
|
| **Ghost Cyan** | `#5CE0E6` | Enemy highlight / threat | The only cool color — stands out against the warm/dark palette, reserved for danger |
|
||||||
|
| **Amber Gold** | `#E8A840` | Blood energy / resource | Warm glow of gathered power — the color the player hunts for |
|
||||||
|
|
||||||
|
### Semantic Color Vocabulary
|
||||||
|
|
||||||
|
| Meaning | Color | Backup Cue (for colorblind safety) |
|
||||||
|
|---------|-------|-----------------------------------|
|
||||||
|
| **Player / Safety** | Silver White | Triangle shape, centered position |
|
||||||
|
| **Aggression / Power** | Crimson Red | Rectangle shape, forward-leaning motion |
|
||||||
|
| **Evasion / Phase** | Void Purple | Circle shape, transparency fade |
|
||||||
|
| **Threat / Danger** | Ghost Cyan | Enemy triangles pointing AT player, pulsing glow |
|
||||||
|
| **Resource / Reward** | Amber Gold | Orbiting particles, upward motion toward HUD |
|
||||||
|
|
||||||
|
### UI Palette
|
||||||
|
|
||||||
|
UI lives on a semi-transparent black (`#0D0A12` at 60–80% opacity) layer. Form colors appear in HUD minimally — only the active form indicator uses the form's primary color. Blood energy gauge uses Amber Gold gradient. All UI text is Silver White over dark backing.
|
||||||
|
|
||||||
|
### Colorblind Considerations
|
||||||
|
|
||||||
|
- **Red-Green (most common)**: Crimson and Ghost Cyan are far apart in hue; Red vs. Purple is the risky pair — Wolf and Mist are differentiated by silhouette (rectangle vs. circle) as primary fallback
|
||||||
|
- **Blue-Yellow**: Cyan threat indicators have brightness pulse as backup
|
||||||
|
- **Complete monochromacy**: Silhouette and motion are the fallback readability system — color is never the sole information channel
|
||||||
|
|
@ -0,0 +1,220 @@
|
||||||
|
# Blood Energy Economy
|
||||||
|
|
||||||
|
> **Status**: In Design
|
||||||
|
> **Author**: SepComet + Claude
|
||||||
|
> **Last Updated**: 2026-04-27
|
||||||
|
> **Implements Pillar**: 操作优于数值 (Skill Over Stats), 切换即承诺 (Switch is Commitment)
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
Blood Energy Economy 是夜裔的核心资源系统——管理玩家用于切换形态的"血能"资源。血能通过攻击敌人和承受伤害两种方式获取,仅用于支付形态切换的消耗。它不是"攒大招"的能量槽,而是一个强制性的战术节奏控制器:你必须在前线积极战斗来赚取血能,然后在正确的时机消费它来切换形态。没有血能系统,形态切换退化为"CD好了就切",失去"切换即承诺"的战术重量。
|
||||||
|
|
||||||
|
## Player Fantasy
|
||||||
|
|
||||||
|
此系统是纯基础设施——玩家感知的是它赋能的操作(切形态),而非血能数字本身。不展开独立幻想章节。
|
||||||
|
|
||||||
|
## Detailed Design
|
||||||
|
|
||||||
|
### Core Rules
|
||||||
|
|
||||||
|
**1. Blood Energy Gain**
|
||||||
|
|
||||||
|
Blood energy is earned through aggressive play:
|
||||||
|
|
||||||
|
- **Attack Hit**: `baseAttackGain × enemyTypeMultiplier` per hit
|
||||||
|
- **Enemy Kill**: `baseKillGain × enemyTypeMultiplier` per kill
|
||||||
|
- **Taking Damage**: `baseHurtGain × (damageTaken / maxHealth)` — compensation ensures the player is never fully locked out of switching
|
||||||
|
- **Wave Clear**: `fixedBonus × waveNumber` — reward for completing a wave
|
||||||
|
|
||||||
|
**2. Blood Energy Spending**
|
||||||
|
|
||||||
|
Blood energy has exactly one use: form switching.
|
||||||
|
|
||||||
|
- **Switch Cost**: `baseSwitchCost × (1.0 - skillDiscount)`
|
||||||
|
- **Interrupted Switch**: Blood energy is consumed on switch request (at Windup start). If the switch is interrupted, the energy is NOT refunded. This is the core punishment for switching at the wrong time.
|
||||||
|
|
||||||
|
**3. Constraints**
|
||||||
|
|
||||||
|
| Rule | Value |
|
||||||
|
|------|-------|
|
||||||
|
| Valid range | `[0.0, maxEnergy]` |
|
||||||
|
| Initial value (game start) | `0` |
|
||||||
|
| On death | Reset to `0` |
|
||||||
|
| Maximum value | `baseMax × (1.0 + upgradeBonus)` |
|
||||||
|
| Cannot exceed max | `Add()` clamps to max |
|
||||||
|
| Cannot go below 0 | `Spend()` returns false if insufficient |
|
||||||
|
|
||||||
|
### States and Transitions
|
||||||
|
|
||||||
|
Blood Energy Economy has no complex states — it is a single float value with three meaningful thresholds:
|
||||||
|
|
||||||
|
| Threshold | Event | Significance |
|
||||||
|
|-----------|-------|-------------|
|
||||||
|
| `Current == 0` | `OnEnergyEmpty` | Player is locked out of switching — must attack or take damage |
|
||||||
|
| `Current >= switchCost` | (check via `CanSpend()`) | Switching is possible |
|
||||||
|
| `Current == Max` | `OnEnergyFull` | Further gains are wasted — signals "you should switch now" |
|
||||||
|
|
||||||
|
Every value change fires `OnEnergyChanged(current, max)` for HUD/L1 consumption.
|
||||||
|
|
||||||
|
### Interactions with Other Systems
|
||||||
|
|
||||||
|
| System | Direction | Interface |
|
||||||
|
|--------|-----------|-----------|
|
||||||
|
| Form Switch SM | Consumes | Calls `CanSpend(cost)` before switching, `Spend(cost)` on switch start |
|
||||||
|
| HUD (L2) | Reads | Subscribes to `OnEnergyChanged` for display |
|
||||||
|
| Skill Tree | Modifies | Can set `GainRate`, `baseSwitchCost`, `baseMax`, `skillDiscount` |
|
||||||
|
| Death/Respawn | Resets | Calls `Reset()` on player death |
|
||||||
|
|
||||||
|
## Formulas
|
||||||
|
|
||||||
|
### Attack Gain
|
||||||
|
|
||||||
|
```
|
||||||
|
energyGain_attack = baseAttackGain × enemyTypeMultiplier
|
||||||
|
```
|
||||||
|
|
||||||
|
| Variable | Symbol | Type | Range | Description |
|
||||||
|
|----------|--------|------|-------|-------------|
|
||||||
|
| Base attack gain | `baseAttackGain` | float | 2–8 | Energy gained per hit |
|
||||||
|
| Enemy type multiplier | `enemyTypeMultiplier` | float | 0.5–2.0 | Riskier enemies reward more |
|
||||||
|
|
||||||
|
**Output**: 1–16 per hit | **Extreme**: Swarm enemies low (0.5x), Brute/Stalker high (1.5–2.0x)
|
||||||
|
|
||||||
|
### Kill Gain
|
||||||
|
|
||||||
|
```
|
||||||
|
energyGain_kill = baseKillGain × enemyTypeMultiplier
|
||||||
|
```
|
||||||
|
|
||||||
|
| Variable | Symbol | Type | Range | Description |
|
||||||
|
|----------|--------|------|-------|-------------|
|
||||||
|
| Base kill gain | `baseKillGain` | float | 10–25 | Kill reward significantly higher than hit |
|
||||||
|
| Enemy type multiplier | `enemyTypeMultiplier` | float | 0.5–2.0 | Same as attack formula |
|
||||||
|
|
||||||
|
**Output**: 5–50 | **Example**: Brute kill (2.0x) = 25 × 2.0 = 50 energy
|
||||||
|
|
||||||
|
### Hurt Gain
|
||||||
|
|
||||||
|
```
|
||||||
|
energyGain_hurt = baseHurtGain × (damageTaken / maxHealth)
|
||||||
|
```
|
||||||
|
|
||||||
|
| Variable | Symbol | Type | Range | Description |
|
||||||
|
|----------|--------|------|-------|-------------|
|
||||||
|
| Base hurt gain | `baseHurtGain` | float | 8–20 | Compensation to prevent deadlock |
|
||||||
|
| Damage ratio | `damageTaken / maxHealth` | float | 0.0–1.0 | Bigger hits give more energy |
|
||||||
|
|
||||||
|
**Intent**: Ensures pressured players can earn a switch-out resource.
|
||||||
|
|
||||||
|
### Switch Cost
|
||||||
|
|
||||||
|
```
|
||||||
|
switchCost = baseSwitchCost × (1.0 - skillDiscount)
|
||||||
|
```
|
||||||
|
|
||||||
|
| Variable | Symbol | Type | Range | Description |
|
||||||
|
|----------|--------|------|-------|-------------|
|
||||||
|
| Base switch cost | `baseSwitchCost` | float | 25–60 | ~5-12 attack hits to earn one switch (at default ratio ≈8) |
|
||||||
|
| Skill discount | `skillDiscount` | float | 0.0–0.4 | Skill Tree cost reduction |
|
||||||
|
|
||||||
|
**Output**: 18–50 | **Example**: baseSwitchCost=40, no discount → cost=40
|
||||||
|
|
||||||
|
### Wave Clear Bonus
|
||||||
|
|
||||||
|
```
|
||||||
|
waveClearBonus = min(fixedBonus × waveNumber, 2 × fixedBonus)
|
||||||
|
```
|
||||||
|
|
||||||
|
| Variable | Symbol | Type | Range | Description |
|
||||||
|
|----------|--------|------|-------|-------------|
|
||||||
|
| Fixed bonus | `fixedBonus` | float | 20–40 | Base reward per cleared wave |
|
||||||
|
| Wave number | `waveNumber` | int | 1–N | Caps at 2× fixedBonus to prevent late-wave overflow |
|
||||||
|
|
||||||
|
**Output**: 20–80 | **Cap ensures** wave bonuses don't exceed ~80% of maxEnergy in one reward
|
||||||
|
|
||||||
|
### Max Energy
|
||||||
|
|
||||||
|
```
|
||||||
|
maxEnergy = baseMax × (1.0 + upgradeBonus)
|
||||||
|
```
|
||||||
|
|
||||||
|
| Variable | Symbol | Type | Range | Description |
|
||||||
|
|----------|--------|------|-------|-------------|
|
||||||
|
| Base max | `baseMax` | float | 80–150 | Initial energy cap (default 100) |
|
||||||
|
| Upgrade bonus | `upgradeBonus` | float | 0.0–0.5 | Skill Tree capacity growth |
|
||||||
|
|
||||||
|
**Output**: 100–150
|
||||||
|
|
||||||
|
## Edge Cases
|
||||||
|
|
||||||
|
| # | Condition | Resolution | Rationale |
|
||||||
|
|---|-----------|------------|-----------|
|
||||||
|
| 1 | `Add()` would exceed `MaxEnergy` | Clamp to Max, fire `OnEnergyFull` | Overflow waste — incentivizes spending before full |
|
||||||
|
| 2 | `Spend()` amount exceeds current | Return `false`, no side effects, no events | Silent failure — UI should prevent this via CanSpend |
|
||||||
|
| 3 | `Add()` called while dead | Ignore, return immediately | Dead players don't accumulate resources |
|
||||||
|
| 4 | Switch interrupted (`Interrupt()`) | Energy NOT refunded — deducted at Windup start | Core punishment of "Switch is Commitment" |
|
||||||
|
| 5 | `skillDiscount` pushes cost near 0 | Enforce minimum cost of `1.0` | Switching always has a cost |
|
||||||
|
| 6 | Simultaneous Gain and Spend in same frame | Process Gains first, then Spends | Kill reward can enable immediate switch |
|
||||||
|
| 7 | Wave bonus causes overflow | Clamp to Max (same as #1) | Incentivize spending before wave end |
|
||||||
|
| 8 | `skillTree` undo reduces `maxEnergy` below `current` | Force `current = min(current, newMax)` | Cannot hold more than new cap |
|
||||||
|
|
||||||
|
## Dependencies
|
||||||
|
|
||||||
|
| System | Relationship | Data Flow |
|
||||||
|
|--------|-------------|-----------|
|
||||||
|
| Form Switch SM | Downstream consumer | Calls `CanSpend()` / `Spend()` |
|
||||||
|
| HUD (L2) | Downstream display | Subscribes to `OnEnergyChanged` |
|
||||||
|
| Skill Tree | Upstream modifier | Sets `GainRate`, `baseMax`, `skillDiscount` |
|
||||||
|
| Death/Respawn | Upstream reset | Calls `Reset()` |
|
||||||
|
|
||||||
|
No upstream dependencies — this is a Foundation layer system.
|
||||||
|
|
||||||
|
## Tuning Knobs
|
||||||
|
|
||||||
|
| Parameter | Default | Safe Range | Too Low | Too High |
|
||||||
|
|-----------|---------|------------|---------|----------|
|
||||||
|
| `baseAttackGain` | 5 | 2–8 | Switching too slow, stuck in one form | Switching too frequent, no tactical weight |
|
||||||
|
| `baseKillGain` | 20 | 10–30 | Kills not worth prioritizing | Kill-chasing replaces form strategy |
|
||||||
|
| `baseHurtGain` | 12 | 8–20 | Being pressured = no comeback | Deliberate self-damage becomes optimal |
|
||||||
|
| `baseSwitchCost` | 40 | 25–60 | Switching has almost no threshold | Gap too long, player afraid to switch |
|
||||||
|
| `baseMax` | 100 | 80–150 | Energy always capped → waste anxiety | Decision window too large → no urgency |
|
||||||
|
| `fixedBonus` | 30 | 20–40 | Wave bonus imperceptible | Between-wave switching too lenient |
|
||||||
|
|
||||||
|
**Key tuning pair**: `baseSwitchCost / baseAttackGain ≈ 8` — roughly 8 attack hits to earn one switch. This ratio defines the core combat rhythm.
|
||||||
|
|
||||||
|
## Visual/Audio Requirements
|
||||||
|
|
||||||
|
This system has no direct visual output. Its presentation is via:
|
||||||
|
- **HUD (L2)**: Blood energy bar with fill animation, drain animation on switch, color flash on value change
|
||||||
|
- **VFX Spawner (L1)**: Brief player glow on `OnEnergyFull` — visual cue "switch now"
|
||||||
|
- **Audio Player (L1)**: Warning sound on `OnEnergyEmpty` — audio cue "cannot switch"
|
||||||
|
|
||||||
|
## UI Requirements
|
||||||
|
|
||||||
|
| Element | Position | Content |
|
||||||
|
|---------|----------|---------|
|
||||||
|
| Blood Energy Bar | HUD bottom/side | Amber Gold gradient, fill ratio `current / max` |
|
||||||
|
| Form Switch Buttons | HUD corner | One per form: grey = insufficient energy, bright = can switch, highlighted = current |
|
||||||
|
| Full Energy Indicator | Next to bar | Pulse effect when `OnEnergyFull` fires |
|
||||||
|
|
||||||
|
## Acceptance Criteria
|
||||||
|
|
||||||
|
| # | GIVEN | WHEN | THEN |
|
||||||
|
|---|-------|------|------|
|
||||||
|
| 1 | Blood energy is 0 | Player attacks and hits an enemy | Energy increases by `baseAttackGain × enemyTypeMultiplier` |
|
||||||
|
| 2 | Blood energy is 50, cost is 40 | Player requests a form switch | `CanSpend(40)` returns true, `Spend(40)` succeeds, energy = 10 |
|
||||||
|
| 3 | Blood energy is 10, cost is 40 | Player requests a form switch | `CanSpend(40)` returns false, `Spend(40)` returns false, energy stays 10 |
|
||||||
|
| 4 | Blood energy is 95, gain is 10 | Player gains energy | Energy becomes 100 (clamped), `OnEnergyFull` fires |
|
||||||
|
| 5 | Energy was 60, 40 deducted on switch | Player is hit during Windup | Switch interrupted, energy stays at 20 (deducted cost not refunded, remainder preserved) |
|
||||||
|
| 6 | Player dies | `Reset()` called | Energy becomes 0 |
|
||||||
|
| 7 | Energy reaches 0 | Any cause | `OnEnergyEmpty` fires |
|
||||||
|
| 8 | `skillDiscount`=0.4, `baseSwitchCost`=40 | Player switches | Cost = 24, energy decreased by 24 |
|
||||||
|
| 9 | Energy changes (any cause) | Per frame or event | `OnEnergyChanged(current, max)` fires with correct values |
|
||||||
|
| 10 | `baseMax` changed from 100 to 50, `current` is 80 | Skill tree update | Current clamps to 50 |
|
||||||
|
| 11 | `skillDiscount` set to 1.0, `baseSwitchCost` = 40 | Player requests switch | Cost = max(40 × 0.0, 1.0) = 1.0 (minimum cost enforced) |
|
||||||
|
| 12 | Player is dead, `Add(10)` called | Energy gain event | Gain ignored, energy unchanged |
|
||||||
|
|
||||||
|
## Open Questions
|
||||||
|
|
||||||
|
- Final `baseSwitchCost` value (recommended 40) needs prototype validation — actual game feel will determine the right "attacks-per-switch" rhythm
|
||||||
|
- Should there be a "low health → increased energy gain" comeback mechanic? Currently handled by hurt gain; revisit if playtest shows deadlock issues in low-health situations
|
||||||
|
|
@ -0,0 +1,212 @@
|
||||||
|
# Combat Logic
|
||||||
|
|
||||||
|
> **Status**: In Design
|
||||||
|
> **Author**: SepComet + Claude
|
||||||
|
> **Last Updated**: 2026-04-27
|
||||||
|
> **Implements Pillar**: 操作优于数值 (Skill Over Stats), 战场即信息 (Battlefield is Information)
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
Combat Logic 是夜裔的即时战斗判定核心——负责"打中了没有""伤害是多少""是否暴击"。它接收攻击数据(形状、伤害值、来源形态),对目标进行几何相交检测,产出 DamageResult。系统完全纯C#,使用 ADR-003 定义的 Circle/Rect/Sector 进行形状判定。它不产生任何视觉或音频效果——而是通过 C# event 将结果传递给 L1/L2。设计原则:**判定必须确定、反馈必须清晰、计算必须快速**(每帧数百次判定在 1ms 内完成)。
|
||||||
|
|
||||||
|
## Player Fantasy
|
||||||
|
|
||||||
|
夜裔的战斗幻想不是"数字在涨",而是**每一击都有形状、有重量、有来由**。当你用人形精准弹反——扇形判定区恰好覆盖精英的攻击前摇——一个金色暴击数字弹出,你感觉自己不是"按了攻击键",而是用几何体"接住了"对方的攻击。当你切到狼躯冲刺——矩形判定贯穿一排敌人——敌人被击退的轨迹本身就是你所画的一条线。当雾形圆形AOE笼罩整个屏幕的杂兵,那种"我画了一个圈,圈里全死"的掌控感,就是 Combat Logic 要传达的幻想。参考 RE4 弹反的"接住"反馈 + DMC 的判定可视化 + 割草的密度感。
|
||||||
|
|
||||||
|
## Detailed Design
|
||||||
|
|
||||||
|
### Attack Shape Definitions
|
||||||
|
|
||||||
|
Each form maps to one attack geometry type (via ADR-003):
|
||||||
|
|
||||||
|
| Form | Shape | Parameters | Visual Read |
|
||||||
|
|------|-------|------------|-------------|
|
||||||
|
| **Human** | `Sector` | Angle=90°, Radius=3.0 | Forward fan — parry judgment zone |
|
||||||
|
| **Wolf** | `Rect` | Width=1.5, Length=5.0 | Forward rectangle — dash trajectory |
|
||||||
|
| **Mist** | `Circle` | Radius=5.0 | Self-centered circle — full AOE |
|
||||||
|
|
||||||
|
### Data Structures
|
||||||
|
|
||||||
|
```
|
||||||
|
AttackData {
|
||||||
|
Vector3 Origin // Attack origin (player position)
|
||||||
|
float Direction // Facing angle
|
||||||
|
Shape HitShape // Circle / Rect / Sector
|
||||||
|
FormType SourceForm // Form that launched the attack
|
||||||
|
float BaseDamage // From Form Switch SM's AttackStyle
|
||||||
|
float CritChance // Base 0.05, upgradable
|
||||||
|
float CritMultiplier // Default 1.5x
|
||||||
|
float KnockbackForce
|
||||||
|
}
|
||||||
|
|
||||||
|
DamageResult {
|
||||||
|
int TargetId
|
||||||
|
float FinalDamage
|
||||||
|
bool IsCritical
|
||||||
|
Vector3 HitPoint // For VFX positioning
|
||||||
|
bool IsKillingBlow
|
||||||
|
FormType SourceForm
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Hit Resolution Pipeline (called once per frame)
|
||||||
|
|
||||||
|
```
|
||||||
|
CombatLogic.ResolveAttacks(attacks, enemies, deltaTime)
|
||||||
|
|
||||||
|
1. COLLECT: Receive List<AttackData> + List<EnemyState>
|
||||||
|
2. CULL: Remove dead enemies, skip enemies outside attack range (coarse filter)
|
||||||
|
3. INTERSECT: For each attack × potential target, call ADR-003 Shape.Intersects()
|
||||||
|
4. DAMAGE: For each hit pair, execute damage formula (Section D)
|
||||||
|
5. SORT: Descending by damage — high damage resolves first
|
||||||
|
6. DEDUPLICATE: Same attack can hit multiple enemies; same enemy can be hit by multiple attacks — but each attack hits each enemy at most once per frame
|
||||||
|
7. EMIT: OnHit(DamageResult), OnKill(DamageResult), OnCrit(DamageResult)
|
||||||
|
8. RETURN: List<DamageResult> grouped by TargetId
|
||||||
|
```
|
||||||
|
|
||||||
|
### Target Filtering Rules
|
||||||
|
|
||||||
|
- Enemy state = Dead → skip
|
||||||
|
- Attack shape has no intersection with enemy hit shape → skip
|
||||||
|
- Same attack already hit this enemy this frame → skip (dedup)
|
||||||
|
|
||||||
|
### Events
|
||||||
|
|
||||||
|
| Event | Trigger | Payload |
|
||||||
|
|-------|---------|---------|
|
||||||
|
| `OnHit` | Every successful hit | `DamageResult` |
|
||||||
|
| `OnKill` | Hit reduces enemy health to 0 | `DamageResult` |
|
||||||
|
| `OnCrit` | Hit triggers critical | `DamageResult` |
|
||||||
|
| `OnAttackResolved` | Attack resolution complete (fires even if 0 hits) | `AttackData, int hitCount` |
|
||||||
|
|
||||||
|
### Interactions with Other Systems
|
||||||
|
|
||||||
|
| System | Direction | Interface |
|
||||||
|
|--------|-----------|-----------|
|
||||||
|
| Form Switch SM | Upstream | Reads `AttackStyle` for shape + base damage per form |
|
||||||
|
| Enemy AI Logic | Downstream | Enemy receives damage, updates health, may trigger behavior change |
|
||||||
|
| VFX Spawner (L1) | Downstream | Subscribes to `OnHit`/`OnKill`/`OnCrit` for visual feedback |
|
||||||
|
| Death/Respawn | Downstream | `OnKill` with IsKillingBlow triggers death check |
|
||||||
|
|
||||||
|
## Formulas
|
||||||
|
|
||||||
|
### Damage Formula
|
||||||
|
|
||||||
|
```
|
||||||
|
finalDamage = baseDamage × critFactor
|
||||||
|
|
||||||
|
where critFactor = critMultiplier if random(0,1) < critChance, else 1.0
|
||||||
|
```
|
||||||
|
|
||||||
|
| Variable | Symbol | Type | Range | Description |
|
||||||
|
|----------|--------|------|-------|-------------|
|
||||||
|
| Base damage | `baseDamage` | float | 5–50 | From AttackStyle, determined by form and upgrades |
|
||||||
|
| Crit chance | `critChance` | float | 0.0–0.30 | Baseline 0.05, grows via Skill Tree |
|
||||||
|
| Crit multiplier | `critMultiplier` | float | 1.2–3.0 | Baseline 1.5 |
|
||||||
|
| Crit factor | `critFactor` | float | 1.0 or critMultiplier | Dice roll per hit |
|
||||||
|
|
||||||
|
**Output Range**: 5–150 (extreme: baseDamage=50 × critMultiplier=3.0 = 150)
|
||||||
|
**Design Intent**: Combat Logic applies only base damage. Enemy resistance modifiers and form affinity bonuses are defined in Enemy AI GDD. Skill damage bonuses are defined in Skill Tree GDD. This keeps Combat Logic single-responsibility.
|
||||||
|
|
||||||
|
### Knockback Formula
|
||||||
|
|
||||||
|
```
|
||||||
|
knockbackDistance = knockbackForce / enemyWeight × (IsCritical ? 1.5 : 1.0)
|
||||||
|
```
|
||||||
|
|
||||||
|
| Variable | Symbol | Type | Range | Description |
|
||||||
|
|----------|--------|------|-------|-------------|
|
||||||
|
| Knockback force | `knockbackForce` | float | 0–10 | From AttackStyle |
|
||||||
|
| Enemy weight | `enemyWeight` | float | 1–10 | Heavier enemies resist knockback |
|
||||||
|
|
||||||
|
**Output**: 0–15 units | Critical hits add 1.5× knockback
|
||||||
|
|
||||||
|
## Edge Cases
|
||||||
|
|
||||||
|
| # | Condition | Resolution | Rationale |
|
||||||
|
|---|-----------|------------|-----------|
|
||||||
|
| 1 | Attack shape has zero area (radius=0, width=0) | Skip, return empty list | Degenerate shape — no valid hit possible |
|
||||||
|
| 2 | Enemy has no hit shape defined | Skip that enemy | Incomplete data — should not happen at runtime |
|
||||||
|
| 3 | Same attack hits same enemy twice (edge overlap) | Dedup: count only first hit | One attack = one hit per target per frame |
|
||||||
|
| 4 | `critChance` exceeds 1.0 via buffs | Clamp to 1.0 | Guaranteed crit is the ceiling |
|
||||||
|
| 5 | `baseDamage` = 0 (status effect attack) | Still perform hit test, emit OnHit with 0 damage | Knockback may still apply |
|
||||||
|
| 6 | Multiple attacks in same frame against same enemy | Resolve all, sort by damage desc | Independent attacks stack |
|
||||||
|
| 7 | Enemy killed mid-frame by attack #1 | Attacks #2-N skip this enemy (dead filter) | Dead enemies don't accumulate damage |
|
||||||
|
| 8 | `knockbackForce` = 0 | Return 0, skip calculation | No force applied |
|
||||||
|
| 9 | deltaTime = 0 (pause) | Return empty list, no events | Paused game = no combat resolution |
|
||||||
|
| 10 | Empty enemies list | Return empty list, no events | No targets to hit |
|
||||||
|
| 11 | Shape intersection at exact tangent point | Count as miss (requires overlap > epsilon) | Prevents degenerate edge-touch = hit |
|
||||||
|
|
||||||
|
## Dependencies
|
||||||
|
|
||||||
|
| System | Relationship | Interface |
|
||||||
|
|--------|-------------|-----------|
|
||||||
|
| Form Switch SM | Upstream | Reads `AttackStyle.BaseDamage`, `AttackStyle.AttackShape` per form |
|
||||||
|
| Enemy AI Logic | Downstream | Enemy receives `DamageResult` for health subtraction and behavior response |
|
||||||
|
| VFX Spawner (L1) | Downstream | Subscribes to `OnHit`, `OnKill`, `OnCrit` for visual feedback |
|
||||||
|
| Death/Respawn | Downstream | `OnKill(IsKillingBlow=true)` triggers death check |
|
||||||
|
| ADR-003 Geometry | Foundation | Uses `Circle`, `Rect`, `Sector` for all intersection tests |
|
||||||
|
|
||||||
|
No upstream GDD dependencies — this is a Foundation layer system. Form Switch SM GDD is undesigned; the expected `AttackStyle` contract is defined here as provisional until that GDD is written.
|
||||||
|
|
||||||
|
## Tuning Knobs
|
||||||
|
|
||||||
|
| Parameter | Default | Safe Range | Too Low | Too High |
|
||||||
|
|-----------|---------|------------|---------|----------|
|
||||||
|
| `baseDamage` (Human) | 15 | 8–25 | Parry feels unrewarding | Parry out-damages other forms |
|
||||||
|
| `baseDamage` (Wolf) | 25 | 15–40 | Burst doesn't feel bursty | Wolf becomes the only viable form |
|
||||||
|
| `baseDamage` (Mist) | 8 | 4–15 | AOE feels useless | Mist clears everything, no switching needed |
|
||||||
|
| `critChance` | 0.05 | 0.02–0.10 | Crits never seen | Crits too frequent, lose impact |
|
||||||
|
| `critMultiplier` | 1.5 | 1.2–2.5 | Crits not noticeable | Damage spikes too wild |
|
||||||
|
| Human Sector Angle | 90° | 60–120° | Too narrow, parry frustrating | Too wide, parry trivial |
|
||||||
|
| Wolf Rect Length | 5.0 | 3.0–8.0 | Dash feels short | Range competes with Mist |
|
||||||
|
| Mist Circle Radius | 5.0 | 3.0–8.0 | AOE feels cramped | Covers whole screen, no positioning |
|
||||||
|
|
||||||
|
## Visual/Audio Requirements
|
||||||
|
|
||||||
|
Combat is a visual system — Visual/Audio is REQUIRED.
|
||||||
|
|
||||||
|
**VFX (via L1 VFX Spawner):**
|
||||||
|
- `OnHit`: Geometric particle burst at `DamageResult.HitPoint` — color matches `SourceForm`
|
||||||
|
- `OnCrit`: Larger burst + screen shake micro — gold/amber tint
|
||||||
|
- `OnKill`: Enemy shatter into geometric fragments — fragment color = enemy type
|
||||||
|
- Debug overlay: Semi-transparent fill of Sector/Rect/Circle during attack frames
|
||||||
|
|
||||||
|
**Audio (via L1 Audio Player):**
|
||||||
|
- `OnHit`: Impact SFX — varies by form (Human=sharp slash, Wolf=heavy thud, Mist=ethereal whoosh)
|
||||||
|
- `OnCrit`: Distinct "clink" + bass emphasis
|
||||||
|
- `OnKill`: Shatter sound — pitch varies by enemy size
|
||||||
|
|
||||||
|
**Art Bible Alignment**: Principle 1 (Color is Identity — hit VFX color = form color), Principle 3 (Particles are Feedback — geometric fragments = information).
|
||||||
|
|
||||||
|
## UI Requirements
|
||||||
|
|
||||||
|
| Element | Position | Content |
|
||||||
|
|---------|----------|---------|
|
||||||
|
| Damage Numbers | Floating at hit point | Numeric value, color = form color, crit = larger + gold |
|
||||||
|
| Hit Indicator | Screen edge | Directional flash when player takes damage |
|
||||||
|
| Kill Counter | HUD | Combo/kill streak (fed by `OnKill` event) |
|
||||||
|
|
||||||
|
## Acceptance Criteria
|
||||||
|
|
||||||
|
| # | GIVEN | WHEN | THEN |
|
||||||
|
|---|-------|------|------|
|
||||||
|
| 1 | Player in Human form, enemy in sector zone | `ResolveAttacks` called | Hit detected, `OnHit` fires with SourceForm=Human |
|
||||||
|
| 2 | Player in Wolf form, enemy 6 units away | `ResolveAttacks` (Rect length=5) | No hit (beyond range), 0 results |
|
||||||
|
| 3 | Player in Mist form, 5 enemies in 4-unit radius | `ResolveAttacks` (Circle radius=5) | All 5 enemies hit, 5 results returned |
|
||||||
|
| 4 | Enemy at exact edge of shape boundary | Intersection test | Miss (epsilon threshold > tangent) |
|
||||||
|
| 5 | critChance=0.3, 100 attacks | `ResolveAttacks` × 100 | ~30 hits critical (±5 tolerance) |
|
||||||
|
| 6 | Enemy health=10, baseDamage=15 | Hit resolves | `OnKill` fires, IsKillingBlow=true |
|
||||||
|
| 7 | Enemy health=10, baseDamage=5 | Hit resolves | Health → 5, `OnHit` fires, no `OnKill` |
|
||||||
|
| 8 | knockbackForce=10, enemyWeight=2 | Hit resolves | knockbackDistance = 5.0 |
|
||||||
|
| 9 | Dead enemy in list | `ResolveAttacks` | Dead enemy skipped |
|
||||||
|
| 10 | critChance buffed to 1.2 | Crit roll | Clamped 1.0, all hits crit |
|
||||||
|
| 11 | 3 attacks vs same enemy in one frame | `ResolveAttacks` | 3 independent hits, damage summed |
|
||||||
|
| 12 | Attack misses everything | `ResolveAttacks` | `OnAttackResolved` fires with hitCount=0 |
|
||||||
|
| 13 | deltaTime=0 (pause) | `ResolveAttacks` | Returns empty, no events |
|
||||||
|
|
||||||
|
## Open Questions
|
||||||
|
|
||||||
|
- Should enemies have different hit shape sizes (e.g., Brute larger than Swarm) or uniform? — Defer to Enemy AI GDD
|
||||||
|
- Should there be a "perfect timing" bonus for Human parry (hitting within narrow enemy attack window)? — Candidate for Skill Tree / Form Switch SM GDD
|
||||||
|
- Attack shape size scaling: should Skill Tree upgrades increase shape dimensions, or only damage? — Defer to Skill Tree GDD
|
||||||
|
|
@ -0,0 +1,281 @@
|
||||||
|
# Game Concept: 夜裔 (Nightborn)
|
||||||
|
|
||||||
|
*Created: 2026-04-27*
|
||||||
|
*Status: Draft*
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Elevator Pitch
|
||||||
|
|
||||||
|
> 夜裔是一款吸血鬼题材的动作割草游戏,你在三种血族形态之间切换——人形的精准弹反、狼躯的近战爆发、雾形的范围控制——用资源驱动的形态切换在敌群中跳舞。不同于靠武器词条堆叠的传统割草游戏,你的构筑方向全部在角色自身的性能上,每一次切换都是一个需要预判的微型决策。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Core Identity
|
||||||
|
|
||||||
|
| Aspect | Detail |
|
||||||
|
| ---- | ---- |
|
||||||
|
| **Genre** | 动作割草 (Hack-and-Slash / Musou-like) |
|
||||||
|
| **Platform** | PC (Steam) |
|
||||||
|
| **Target Audience** | 动作游戏核心玩家,偏好操作表达与系统深度 |
|
||||||
|
| **Player Count** | 单人 |
|
||||||
|
| **Session Length** | 30-90 分钟 |
|
||||||
|
| **Monetization** | 买断制 (Premium) |
|
||||||
|
| **Estimated Scope** | 中等 (4-6个月,单人开发) |
|
||||||
|
| **Comparable Titles** | 鬼泣5 (风格切换), Hades (构筑深度), 吸血鬼幸存者 (割草框架) |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Core Fantasy
|
||||||
|
|
||||||
|
玩家化身为拥有多种血族形态的猎食者。在数量碾压的敌群中,你不是靠刷武器词条来变强,而是靠**读懂战场、预判时机、精准切换形态**来掌控局势。
|
||||||
|
|
||||||
|
核心情感承诺:**在绝境中,用智慧和反应翻盘**。当你被包围时切雾形穿透敌群、落地切狼躯爆发秒掉高威胁目标、再切人形弹反精英——这条连锁决策让你感觉自己不是在"刷怪",而是在指挥一场战斗。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Unique Hook
|
||||||
|
|
||||||
|
"像鬼泣一样切换风格 + 吸血鬼幸存者式的割草密度"。
|
||||||
|
|
||||||
|
不同于传统割草游戏把构筑集中在武器tag和技能组合上,夜裔的构筑围绕**角色自身的形态性能**展开。你不是在优化武器搭配——你是在**优化你的形态切换节奏和技能分支**。这让每个玩家的打法真正不同,而不是换了一套武器数值。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Player Experience Analysis (MDA Framework)
|
||||||
|
|
||||||
|
### Target Aesthetics (What the player FEELS)
|
||||||
|
|
||||||
|
| Aesthetic | Priority | How We Deliver It |
|
||||||
|
| ---- | ---- | ---- |
|
||||||
|
| **Expression** (self-expression, creativity) | 1 (Primary) | 3种形态 × 多种技能分支 = 每个人的切换节奏和形态偏好都不同 |
|
||||||
|
| **Challenge** (obstacle course, mastery) | 2 | 切换有前摇有风险,掌握时机需要练习;高难度下切错即死 |
|
||||||
|
| **Sensation** (sensory pleasure) | 3 | 形态切换的视觉/音效反馈、连锁击杀的粒子爆发 |
|
||||||
|
| **Fantasy** (make-believe, role-playing) | 4 | 吸血鬼血统、多形态猎食者的身份认同 |
|
||||||
|
| **Narrative** (drama, story arc) | Supporting | 通过关卡推进和环境叙事展现古老血族的世界 |
|
||||||
|
| **Discovery** (exploration, secrets) | Minimal | 形态技能的隐藏协同效果 |
|
||||||
|
| **Fellowship** (social connection) | N/A | 纯单人游戏 |
|
||||||
|
| **Submission** (relaxation, comfort zone) | N/A | 本游戏刻意追求操作张力,不提供放松模式 |
|
||||||
|
|
||||||
|
### Key Dynamics (Emergent player behaviors)
|
||||||
|
|
||||||
|
- 玩家会发展出个人化的形态偏好和切换节奏——有人以人形为主偶尔爆发切换,有人高频切换游走于三种形态之间
|
||||||
|
- 面对不同敌群构成,玩家会自发建立"什么局面切什么形态"的经验法则
|
||||||
|
- 在资源(血能)紧张时,玩家必须在"贪攻击赚资源"和"安全第一不切换"之间做实时权衡
|
||||||
|
- 技能分支选择将塑造完全不同的打法风格
|
||||||
|
|
||||||
|
### Core Mechanics (Systems we build)
|
||||||
|
|
||||||
|
1. **形态切换系统** — 3种形态,资源驱动(血能),切换有前摇动画,切对战场角色匹配则获得优势
|
||||||
|
2. **实时割草战斗** — 敌群波次系统,敌人在数量上压制,不同类型敌人促使形态切换
|
||||||
|
3. **血能经济** — 通过攻击和受击获取血能,消耗血能切换形态——构建"进攻→赚资源→切换→创造更多进攻机会"的正反馈循环
|
||||||
|
4. **形态技能树** — 每个形态有独立的技能强化分支,构筑方向在解锁和选择这些分支
|
||||||
|
5. **关卡与波次设计** — 固定关卡 + 波次遭遇战 + Boss战
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Player Motivation Profile
|
||||||
|
|
||||||
|
### Primary Psychological Needs Served
|
||||||
|
|
||||||
|
| Need | How This Game Satisfies It | Strength |
|
||||||
|
| ---- | ---- | ---- |
|
||||||
|
| **Autonomy** (freedom, meaningful choice) | 玩家自由选择形态偏好、切换节奏和技能分支——没有"最优解"只有个人风格 | Core |
|
||||||
|
| **Competence** (mastery, skill growth) | 形态切换时机的掌握、敌群可读性的提升、连招流畅度的进步都是可感知的成长 | Core |
|
||||||
|
| **Relatedness** (connection, belonging) | 通过世界观设定和关卡环境叙事建立对血族世界的归属感 | Supporting |
|
||||||
|
|
||||||
|
### Player Type Appeal (Bartle Taxonomy)
|
||||||
|
|
||||||
|
- [x] **Achievers** (goal completion, collection, progression) — How: 形态技能树的解锁和升级、关卡完成度的追求
|
||||||
|
- [x] **Explorers** (discovery, understanding systems, finding secrets) — How: 发现形态间的隐藏协同效果、探索不同技能分支组合
|
||||||
|
- [ ] **Socializers** — 纯单人游戏,不服务此类型
|
||||||
|
- [x] **Killers/Competitors** (domination, PvP, leaderboards) — How: 挑战模式、速通排行榜
|
||||||
|
|
||||||
|
### Flow State Design
|
||||||
|
|
||||||
|
- **Onboarding curve**: 第一关只用一种形态(人形),教会基础操作;第二关解锁第二种形态(狼躯),引入切换教学;第三关解锁第三种形态(雾形),完整三角呈现
|
||||||
|
- **Difficulty scaling**: 敌人类型逐步引入,从单一类型→混合编制→精英+Boss;波次密度和敌人攻击欲望随关卡递增
|
||||||
|
- **Feedback clarity**: 形态切换有鲜明的视觉/音效反馈;切对形态攻击相克敌人时明显的伤害数字和粒子效果;切错被击中时有清晰的负面反馈
|
||||||
|
- **Recovery from failure**: 死亡后在检查点快速重生;切形态失败被击中的惩罚是失去血能(而不是直接死亡),给予纠正机会
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Core Loop
|
||||||
|
|
||||||
|
### Moment-to-Moment (30 seconds)
|
||||||
|
玩家在敌群中战斗:攻击赚血能 → 观察敌群构成判断需要什么攻击风格 → 消耗血能切换形态(承受前摇风险)→ 用对的形式攻击 → 赚更多血能 → 寻找下一个切换窗口。核心操作密度高,每10-30秒至少切换一次形态。
|
||||||
|
|
||||||
|
### Short-Term (5-15 minutes)
|
||||||
|
清除一波遭遇战。每波敌人有不同构成——大量杂兵(适合雾形AOE)、精英单体(适合人形弹反)、高威胁秒杀单位(适合狼躯爆发)。波次间有短暂喘息(10-20秒),玩家可以重新评估形态和资源状态。
|
||||||
|
|
||||||
|
### Session-Level (30-90 minutes)
|
||||||
|
完成一个关卡:穿越多个战斗区域,最终面对Boss。区域之间有升级点(形态技能树),Boss战是形态切换能力的综合考验——Boss的不同阶段需要不同攻击风格应对。
|
||||||
|
|
||||||
|
### Long-Term Progression
|
||||||
|
- 解锁新形态技能分支
|
||||||
|
- 提升形态基础性能(切换速度、血能获取效率、攻击伤害)
|
||||||
|
- 解锁形态间协同效果(如:从雾形切到狼躯获得短暂伤害buff)
|
||||||
|
- 通关更多关卡和挑战模式
|
||||||
|
|
||||||
|
### Retention Hooks
|
||||||
|
- **Curiosity**: 未解锁的技能分支、未探索的形态协同效果
|
||||||
|
- **Investment**: 形态技能树的投入、个人打法的养成
|
||||||
|
- **Mastery**: 切形态时机的精进、更高难度关卡的挑战、速通排行
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Game Pillars
|
||||||
|
|
||||||
|
### Pillar 1: 形态即战术 (Form is Tactics)
|
||||||
|
你选择的不只是攻击方式,而是整个战斗姿态。每个形态有明确的战场角色和不可替代的时刻。
|
||||||
|
|
||||||
|
*Design test*: 如果纠结于给某个形态加新能力,先问——这个能力强化了该形态的核心攻击风格,还是模糊了形态之间的战术边界?后者一律不加。
|
||||||
|
|
||||||
|
### Pillar 2: 切换即承诺 (Switch is Commitment)
|
||||||
|
切形态不是免费的。有前摇、有消耗、有风险。切对了翻盘,切错了付出代价。
|
||||||
|
|
||||||
|
*Design test*: 如果玩家可以无缝零惩罚地切换形态,系统出了问题。每一次切换必须是值得权衡的微型决策。
|
||||||
|
|
||||||
|
### Pillar 3: 战场即信息 (The Field is Information)
|
||||||
|
敌群构成、位置分布、波次节奏必须清晰可读——因为玩家的每个切换决策都建立在看懂战场之上。
|
||||||
|
|
||||||
|
*Design test*: 如果测试玩家在战斗中看不懂为什么要切形态,说明敌人设计或视觉传达出了问题。
|
||||||
|
|
||||||
|
### Pillar 4: 操作优于数值 (Skill Over Stats)
|
||||||
|
数值成长是为了开启更多操作可能性,而不是让操作变得不必要。变强是"选择更多",不是"数字更大"。
|
||||||
|
|
||||||
|
*Design test*: 如果玩家可以靠刷数值碾压而完全不用切形态,数值膨胀破坏了核心体验。
|
||||||
|
|
||||||
|
### Anti-Pillars (What This Game Is NOT)
|
||||||
|
|
||||||
|
- **不做武器收集和武器Tag构筑**: 会稀释形态切换的核心地位。构筑方向100%在角色性能上。
|
||||||
|
- **不做被动数值堆叠的"挂机流"**: 违背"操作优于数值"。任何不依赖操作的成长路径都是反设计。
|
||||||
|
- **不做"一个形态打到底"的最优解**: 违背"形态即战术"。如果游戏退化成单形态游戏,核心体验已经失效。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Visual Identity Anchor
|
||||||
|
|
||||||
|
**视觉方向**: 极简几何 (Minimalist Geometric)
|
||||||
|
|
||||||
|
**一句话视觉规则**: 每种形态用鲜明的色彩和几何造型区分,确保在密集敌群中玩家的形态状态始终一眼可辨。
|
||||||
|
|
||||||
|
**视觉原则**:
|
||||||
|
1. **色彩即身份** — 人形=冷银/白、狼躯=暗红/黑、雾形=幽紫/半透明,切换时用色彩过渡表达形态变化
|
||||||
|
2. **剪影即信息** — 三种形态的几何轮廓必须有明显差异(人形直立、狼躯低伏、雾形扩散),保证敌人密度最高时仍能辨识
|
||||||
|
3. **粒子即反馈** — 形态切换用粒子爆发表达,攻击命中用几何碎片反馈,不做复杂动画——几何体的运动本身就是美感
|
||||||
|
|
||||||
|
**色彩哲学**: 黑暗背景(深紫/黑)+ 高饱和度高对比度的形态色彩 = 最大限度保证战场可读性
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Inspiration and References
|
||||||
|
|
||||||
|
| Reference | What We Take From It | What We Do Differently | Why It Matters |
|
||||||
|
| ---- | ---- | ---- | ---- |
|
||||||
|
| 鬼泣5 | 风格切换的操作自由度和流畅感 | 我们的切换有节奏(前摇+消耗),是战术决策而非连招延伸 | 验证了多形态切换的核心趣味性 |
|
||||||
|
| 吸血鬼幸存者 | 割草密度和波次节奏框架 | 我们的构筑不在武器tag而在形态性能,操作维度更高 | 验证了割草品类的市场接受度和"一局又一局"的循环 |
|
||||||
|
| 生化危机4重制 | 条件触发→完美执行→化险为夷的爽感链条 | 我们的触发条件是形态切换,而非武器交互 | 验证了精准操作在高压下的满足感 |
|
||||||
|
| Celeste | 死亡→快速重生→再尝试的循环设计 | 我们的恢复机制是失去血能而非重来,惩罚更轻 | 验证了"失败是学习"而非"失败是挫折"的设计哲学 |
|
||||||
|
|
||||||
|
**非游戏灵感**: 吸血鬼文学(血族变身概念)、武术中的架势切换(每个架势有不同的攻防特征)、极简主义艺术(少即是多的视觉表达)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Target Player Profile
|
||||||
|
|
||||||
|
| Attribute | Detail |
|
||||||
|
| ---- | ---- |
|
||||||
|
| **Age range** | 18-35 |
|
||||||
|
| **Gaming experience** | Mid-core 到 Hardcore——玩过动作游戏,享受操作深度 |
|
||||||
|
| **Time availability** | 工作日晚间30-60分钟,周末更长 |
|
||||||
|
| **Platform preference** | PC (Steam) |
|
||||||
|
| **Current games they play** | 鬼泣、黑帝斯、死亡细胞、只狼 |
|
||||||
|
| **What they're looking for** | 一款可以用操作表达自我风格的动作游戏,不是靠刷而是靠练 |
|
||||||
|
| **What would turn them away** | 数值碾压可以替代操作;形态之间差异不够大导致打法同质化 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Technical Considerations
|
||||||
|
|
||||||
|
| Consideration | Assessment |
|
||||||
|
| ---- | ---- |
|
||||||
|
| **Recommended Engine** | Unity 2022.3 URP (已配置) |
|
||||||
|
| **Key Technical Challenges** | 形态切换动画的状态机设计;大量敌人同屏的性能优化;敌群AI的波次编排 |
|
||||||
|
| **Art Style** | 3D 极简几何 (Low-poly stylized geometric) |
|
||||||
|
| **Art Pipeline Complexity** | Low——几何体建模 + 材质着色 + 粒子特效,单人可完成 |
|
||||||
|
| **Audio Needs** | Moderate——战斗节奏需要音频反馈来强化切换手感和连招满足感 |
|
||||||
|
| **Networking** | None |
|
||||||
|
| **Content Volume** | MVP: 1-2关, 3种形态, 3-5种敌人, 1个Boss; Full: 5+关, 6+种敌人, 3+Boss |
|
||||||
|
| **Procedural Systems** | None——固定关卡 + 手调波次,保证战斗设计品质 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Risks and Open Questions
|
||||||
|
|
||||||
|
### Design Risks
|
||||||
|
- **切换手感校准**: 前摇太长则卡手,太短则失去承诺感。需要早期原型大量迭代
|
||||||
|
- **形态平衡**: 如果某个形态在多数情况下最优,切换失去意义。需要精心设计敌人类型来创造每种形态的"时刻"
|
||||||
|
- **核心循环重复感**: 如果切形态的决策空间不够大,游戏会退化为"哪个形态CD好了切哪个"
|
||||||
|
|
||||||
|
### Technical Risks
|
||||||
|
- **大量敌人同屏性能**: Unity中数百个敌人 + 粒子特效 + 形态切换动画的帧率稳定性
|
||||||
|
- **极简几何下的可读性**: 几何体数量少时,不同敌人类型的辨识度是核心挑战
|
||||||
|
|
||||||
|
### Market Risks
|
||||||
|
- **割草品类饱和**: 吸血鬼幸存者like已有大量竞品,差异化必须足够明显
|
||||||
|
- **操作门槛 vs 受众规模**: 动作游戏核心玩家群体有限,但Steam生态对此类游戏有稳定需求
|
||||||
|
|
||||||
|
### Scope Risks
|
||||||
|
- **形态动画打磨**: 三种形态的切换前摇、攻击动画、受击反馈——动画量是隐藏的成本大头
|
||||||
|
- **Boss设计**: 需要为三种形态设计有意义的Boss交互,不是简单的高血量精英
|
||||||
|
|
||||||
|
### Open Questions
|
||||||
|
- 形态切换前摇的最优时长是多少帧?——需要原型验证
|
||||||
|
- 血能获取速率的最优区间?——需要调参测试
|
||||||
|
- 是否需要第四种形态作为DLC/更新内容?——暂不做,但架构上预留扩展点
|
||||||
|
- 关卡结构是房间制还是线性推进?——建议先以线性推进做MVP,房间制作为后续选项
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## MVP Definition
|
||||||
|
|
||||||
|
**Core hypothesis**: 玩家会在三种形态的切换决策中找到操作的表达空间,并愿意在30分钟以上的session中反复体验这个循环。
|
||||||
|
|
||||||
|
**Required for MVP**:
|
||||||
|
1. 3种形态的完整切换系统(含前摇动画、血能消耗、形态差异化的攻击风格)
|
||||||
|
2. 3-5种敌人类型(每种对应鼓励不同形态的使用)
|
||||||
|
3. 1个完整关卡(含波次系统 + 小型Boss)
|
||||||
|
4. 基础血能经济(攻击获取、受击获取、切换消耗)
|
||||||
|
5. 死亡重生循环
|
||||||
|
|
||||||
|
**Explicitly NOT in MVP** (defer to later):
|
||||||
|
- 形态技能树(MVP只做基础形态,技能树在验证核心循环后加入)
|
||||||
|
- 形态间协同效果
|
||||||
|
- 挑战模式和排行榜
|
||||||
|
- 完整叙事
|
||||||
|
|
||||||
|
### Scope Tiers
|
||||||
|
|
||||||
|
| Tier | Content | Features | Timeline |
|
||||||
|
| ---- | ---- | ---- | ---- |
|
||||||
|
| **MVP** | 1关, 3形态, 3-5敌人, 1 Boss | 核心切换 + 血能经济 + 波次系统 + 死亡重生 | 2-3个月 |
|
||||||
|
| **Vertical Slice** | 2关, 3形态, 5敌人, 2 Boss | MVP + 基础技能树 + 音效 | 3-4个月 |
|
||||||
|
| **Alpha** | 3关, 3形态, 全部敌人, 全部Boss | VS + 完整技能树 + 形态协同 | 4-5个月 |
|
||||||
|
| **Full Vision** | 5+关, 全部内容, 挑战模式 | Alpha + 完整叙事 + 排行榜 + 全平台打磨 | 5-6个月 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
- [ ] Configure engine technical preferences (`/setup-engine`)
|
||||||
|
- [ ] Create visual identity specification (`/art-bible`)
|
||||||
|
- [ ] Validate concept completeness (`/design-review design/gdd/game-concept.md`)
|
||||||
|
- [ ] Decompose concept into systems (`/map-systems`)
|
||||||
|
- [ ] Author per-system GDDs (`/design-system`)
|
||||||
|
- [ ] Produce master architecture blueprint (`/create-architecture`)
|
||||||
|
- [ ] Record key architectural decisions (`/architecture-decision`)
|
||||||
|
- [ ] Validate phase readiness (`/gate-check`)
|
||||||
|
- [ ] Prototype core loop (`/prototype`)
|
||||||
|
- [ ] Validate core loop with playtest (`/playtest-report`)
|
||||||
|
- [ ] Plan first sprint (`/sprint-plan new`)
|
||||||
|
|
@ -0,0 +1,161 @@
|
||||||
|
# Systems Index: 夜裔 (Nightborn)
|
||||||
|
|
||||||
|
> **Status**: Draft
|
||||||
|
> **Created**: 2026-04-27
|
||||||
|
> **Last Updated**: 2026-04-27
|
||||||
|
> **Source Concept**: design/gdd/game-concept.md
|
||||||
|
> **Architecture Note**: L0 = Pure C# (no Unity), L1 = Unity Adapter, L2 = Unity Presentation
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
夜裔需要17个系统,分布在三层架构中:L0纯C#核心逻辑(10个系统,零Unity依赖,可直接NUnit测试)、L1 Unity适配层(5个系统,薄MonoBehaviour封装)、L2 Unity表现层(2个系统)。Combat Logic和Form Switch State Machine是瓶颈系统——它们的设计质量直接决定核心循环是否成立。所有系统设计遵循操作优于数值、形态即战术的核心支柱。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Systems Enumeration
|
||||||
|
|
||||||
|
| # | System Name | Layer | Category | Priority | Status | Design Doc | Depends On |
|
||||||
|
|---|-------------|-------|----------|----------|--------|------------|------------|
|
||||||
|
| 1 | Blood Energy Economy | L0 | Combat Logic | MVP | Approved | [GDD](blood-energy-economy.md) | — |
|
||||||
|
| 2 | Combat Logic | L0 | Combat Logic | MVP | Designed | [GDD](combat-logic.md) | — |
|
||||||
|
| 3 | Form Switch State Machine | L0 | Combat Logic | MVP | Not Started | — | Blood Energy Economy |
|
||||||
|
| 4 | Enemy AI Logic | L0 | Combat Logic | MVP | Not Started | — | Combat Logic |
|
||||||
|
| 5 | Boss AI Logic | L0 | Combat Logic | MVP | Not Started | — | Enemy AI Logic, Combat Logic |
|
||||||
|
| 6 | Wave Manager Logic | L0 | Combat Logic | MVP | Not Started | — | Enemy AI Logic |
|
||||||
|
| 7 | Death/Respawn Rules | L0 | Player | MVP | Not Started | — | Combat Logic |
|
||||||
|
| 8 | Skill Tree Data & Rules | L0 | Progression | VS | Not Started | — | Form Switch State Machine |
|
||||||
|
| 9 | Save/Load Logic | L0 | Persistence | VS | Not Started | — | Skill Tree Data & Rules |
|
||||||
|
| 10 | Score Calculator | L0 | Meta | Full | Not Started | — | Combat Logic, Wave Manager Logic |
|
||||||
|
| 11 | Input Adapter | L1 | Unity Adapter | MVP | Not Started | — | — |
|
||||||
|
| 12 | Camera Controller | L1 | Unity Adapter | MVP | Not Started | — | — |
|
||||||
|
| 13 | Level Loader | L1 | Unity Adapter | MVP | Not Started | — | — |
|
||||||
|
| 14 | Audio Player | L1 | Unity Adapter | MVP | Not Started | — | — |
|
||||||
|
| 15 | VFX Spawner | L1 | Unity Adapter | MVP | Not Started | — | Combat Logic, Form Switch State Machine |
|
||||||
|
| 16 | UI/HUD | L2 | Presentation | MVP | Not Started | — | Blood Energy, Form Switch, Combat, Wave Manager |
|
||||||
|
| 17 | Menu System | L2 | Presentation | VS | Not Started | — | Input Adapter, Level Loader, Save/Load Logic |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Categories
|
||||||
|
|
||||||
|
| Category | Description | Systems |
|
||||||
|
|----------|-------------|---------|
|
||||||
|
| **Combat Logic** | Pure-C# systems driving the moment-to-moment combat | Blood Energy, Combat Logic, Form Switch, Enemy AI, Boss AI, Wave Manager |
|
||||||
|
| **Player** | Player-state systems | Death/Respawn Rules |
|
||||||
|
| **Progression** | Growth and unlocks over sessions | Skill Tree Data & Rules |
|
||||||
|
| **Persistence** | Save state and continuity | Save/Load Logic |
|
||||||
|
| **Meta** | Secondary game systems | Score Calculator |
|
||||||
|
| **Unity Adapter** | Thin MonoBehaviour wrappers bridging to Unity | Input Adapter, Camera Controller, Level Loader, Audio Player, VFX Spawner |
|
||||||
|
| **Presentation** | Player-facing displays | UI/HUD, Menu System |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Priority Tiers
|
||||||
|
|
||||||
|
| Tier | Definition | Target Milestone | Systems |
|
||||||
|
|------|------------|------------------|---------|
|
||||||
|
| **MVP** | Required for core loop — "is this fun?" | First playable (2-3 months) | 14 systems (all L0 combat + L1 + minimal L2) |
|
||||||
|
| **Vertical Slice** | One polished area, full experience demo | Demo (3-4 months) | 3 systems (Skill Tree, Save/Load, Menu) |
|
||||||
|
| **Full Vision** | Complete content and polish | Release (4-6 months) | 2 systems (Score Calculator, full Boss AI) |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Dependency Map
|
||||||
|
|
||||||
|
### L0 — Pure C# Logic Layer
|
||||||
|
|
||||||
|
**Foundation (no dependencies)**:
|
||||||
|
1. Blood Energy Economy — standalone resource ruleset, feeds every combat decision
|
||||||
|
2. Combat Logic — standalone damage formulas and hit geometry
|
||||||
|
|
||||||
|
**Core (depends on Foundation)**:
|
||||||
|
3. Form Switch State Machine — depends on: Blood Energy Economy
|
||||||
|
4. Enemy AI Logic — depends on: Combat Logic
|
||||||
|
5. Death/Respawn Rules — depends on: Combat Logic
|
||||||
|
|
||||||
|
**Feature (depends on Core)**:
|
||||||
|
6. Boss AI Logic — depends on: Enemy AI Logic, Combat Logic
|
||||||
|
7. Wave Manager Logic — depends on: Enemy AI Logic
|
||||||
|
8. Skill Tree Data & Rules — depends on: Form Switch State Machine
|
||||||
|
9. Save/Load Logic — depends on: Skill Tree Data & Rules
|
||||||
|
10. Score Calculator — depends on: Combat Logic, Wave Manager Logic
|
||||||
|
|
||||||
|
### L1 — Unity Adapter Layer
|
||||||
|
|
||||||
|
11. Input Adapter — no game-logic dependencies (reads Unity Input, emits C# events)
|
||||||
|
12. Camera Controller — no game-logic dependencies (reads C# player position, drives Unity Camera)
|
||||||
|
13. Level Loader — no game-logic dependencies (loads Unity scenes per C# level data)
|
||||||
|
14. Audio Player — depends on: Combat Logic, Form Switch State Machine (listens to C# events)
|
||||||
|
15. VFX Spawner — depends on: Combat Logic, Form Switch State Machine (listens to C# events)
|
||||||
|
|
||||||
|
### L2 — Unity Presentation Layer
|
||||||
|
|
||||||
|
16. UI/HUD — depends on: Blood Energy, Form Switch, Combat, Wave Manager (reads C# state)
|
||||||
|
17. Menu System — depends on: Input Adapter, Level Loader, Save/Load Logic
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Recommended Design Order
|
||||||
|
|
||||||
|
| Order | System | Priority | Layer | Rationale | Est. Effort |
|
||||||
|
|-------|--------|----------|-------|-----------|-------------|
|
||||||
|
| 1 | Blood Energy Economy | MVP | L0 | Foundation resource — Form Switch depends on it | S |
|
||||||
|
| 2 | Combat Logic | MVP | L0 | Foundation hit/damage — Enemy AI depends on it | S |
|
||||||
|
| 3 | Form Switch State Machine | MVP | L0 | **Core pillar system** — the entire game feel starts here | M |
|
||||||
|
| 4 | Enemy AI Logic | MVP | L0 | Enemy behavior must exercise the switching loop | M |
|
||||||
|
| 5 | Wave Manager Logic | MVP | L0 | Encounter structure — the 5-minute loop | M |
|
||||||
|
| 6 | Death/Respawn Rules | MVP | L0 | Game loop closure — lose, learn, retry | S |
|
||||||
|
| 7 | Input Adapter | MVP | L1 | No input = can't test anything | S |
|
||||||
|
| 8 | Camera Controller | MVP | L1 | Basic visibility for testing | S |
|
||||||
|
| 9 | Level Loader | MVP | L1 | Scene infrastructure | S |
|
||||||
|
| 10 | VFX Spawner | MVP | L1 | Visual feedback for switching and hits | M |
|
||||||
|
| 11 | Audio Player | MVP | L1 | Minimum audio feedback for hits and switches | S |
|
||||||
|
| 12 | UI/HUD | MVP | L2 | Blood energy and form indicator — minimum playable info | S |
|
||||||
|
| 13 | Boss AI Logic | MVP | L0 | Single-phase boss — tests the full switching loop under pressure | M |
|
||||||
|
| 14 | Skill Tree Data & Rules | VS | L0 | Progression depth after core loop validated | M |
|
||||||
|
| 15 | Save/Load Logic | VS | L0 | Persistence needed once progression exists | S |
|
||||||
|
| 16 | Menu System | VS | L2 | Proper main menu + pause | S |
|
||||||
|
| 17 | Score Calculator | Full | L0 | Performance tracking for challenge mode | S |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Circular Dependencies
|
||||||
|
|
||||||
|
- None found ✓
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## High-Risk Systems
|
||||||
|
|
||||||
|
| System | Risk Type | Risk Description | Mitigation |
|
||||||
|
|--------|-----------|-----------------|------------|
|
||||||
|
| Form Switch State Machine | Design | Switch feel calibration — too tight feels clunky, too loose loses meaning | Prototype first with placeholder art, iterate timing with playtest |
|
||||||
|
| Wave Manager Logic | Design | Enemy composition must create meaningful form-switching pressure — if all forms work equally well, switching becomes optional | Design enemy types and wave compositions together, not separately |
|
||||||
|
| Enemy AI Logic | Scope | Each enemy type must strongly encourage a specific form — designing 3-5 types with clear form affinity is the core design challenge | Start with 3 enemy types, each with a hard "favors one form" rule |
|
||||||
|
| VFX Spawner | Technical | Geometric particle system performance at high enemy density on target hardware | Profile early with 100+ enemies; fallback: reduce particle count per event |
|
||||||
|
| UI/HUD | Design | Must convey form state, blood energy, and threat in <200ms glance — readability at frenetic pace | Test HUD mockups with static screenshots before implementation |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Progress Tracker
|
||||||
|
|
||||||
|
| Metric | Count |
|
||||||
|
|--------|-------|
|
||||||
|
| Total systems identified | 17 |
|
||||||
|
| Design docs started | 2 |
|
||||||
|
| Design docs reviewed | 0 |
|
||||||
|
| Design docs approved | 1 |
|
||||||
|
| MVP systems designed | 1/14 |
|
||||||
|
| Vertical Slice systems designed | 0/3 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
- [ ] Design MVP-tier systems in dependency order — start with Blood Energy Economy
|
||||||
|
- [ ] Run `/design-system Blood Energy Economy` to author the first GDD
|
||||||
|
- [ ] Run `/prototype form-switch-state-machine` on the highest-risk system early
|
||||||
|
- [ ] Run `/design-review` on each completed GDD
|
||||||
|
- [ ] Run `/gate-check pre-production` when all MVP GDDs are authored and reviewed
|
||||||
|
|
@ -0,0 +1,60 @@
|
||||||
|
# ADR-001: Three-Layer Architecture & Code Isolation
|
||||||
|
|
||||||
|
**Status**: Accepted
|
||||||
|
**Date**: 2026-04-27
|
||||||
|
**Engine**: Unity 2022.3.62f3c1
|
||||||
|
**GDD Requirements Addressed**: All L0/L1/L2 system boundaries from systems-index.md
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Context
|
||||||
|
|
||||||
|
夜裔的架构要求在 L0(纯 C# 核心逻辑)、L1(Unity 适配层)、L2(Unity 表现层)之间建立严格的代码隔离。L0 必须零 UnityEngine 依赖以支持独立测试和未来复用。外部开发者需要清晰的物理边界来理解什么代码属于哪一层。
|
||||||
|
|
||||||
|
## Decision
|
||||||
|
|
||||||
|
### Directory Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
Assets/Scripts/
|
||||||
|
Core/ # L0 — Zero UnityEngine dependency
|
||||||
|
Core.asmdef
|
||||||
|
Combat/ # BloodEnergyEconomy, CombatLogic, FormSwitchSM, AttackStyle
|
||||||
|
Enemy/ # EnemyAILogic, BossAILogic, WaveManagerLogic
|
||||||
|
Player/ # DeathRespawnRules
|
||||||
|
Progression/ # SkillTreeRules
|
||||||
|
Persistence/ # SaveLoadLogic
|
||||||
|
Meta/ # ScoreCalculator
|
||||||
|
Geometry/ # Vector3, Shape, MathUtil (pure C#)
|
||||||
|
Adapters/ # L1 — Thin MonoBehaviour wrappers
|
||||||
|
Adapters.asmdef
|
||||||
|
InputAdapter.cs, CameraController.cs, LevelLoader.cs,
|
||||||
|
AudioPlayer.cs, VFXSpawner.cs
|
||||||
|
Presentation/ # L2 — UI Rendering
|
||||||
|
Presentation.asmdef
|
||||||
|
HUDManager.cs, HUDState.cs, MenuSystem.cs
|
||||||
|
```
|
||||||
|
|
||||||
|
### asmdef Reference Chain
|
||||||
|
|
||||||
|
| Assembly | References | Prohibited |
|
||||||
|
|----------|-----------|------------|
|
||||||
|
| Core | (none) | All UnityEngine packages |
|
||||||
|
| Adapters | Core | Presentation |
|
||||||
|
| Presentation | Core, Adapters | — |
|
||||||
|
| Core.Tests | Core | Unity (NUnit standalone) |
|
||||||
|
| Adapter.Tests | Core, Adapters | — |
|
||||||
|
|
||||||
|
### Enforcement Rules
|
||||||
|
|
||||||
|
1. `using UnityEngine;` in any L0 file → violation
|
||||||
|
2. `MonoBehaviour` inheritance in L0 → violation
|
||||||
|
3. L1 classes may NOT contain game rule logic — forwarding and subscription only
|
||||||
|
4. asmdef reference chain is strictly one-way: Core ← Adapters ← Presentation
|
||||||
|
|
||||||
|
## Consequences
|
||||||
|
|
||||||
|
- L0 compiles and tests via `dotnet test` + NUnit without Unity, enabling fast feedback
|
||||||
|
- External developers cannot accidentally put game logic in MonoBehaviour — asmdef enforces it
|
||||||
|
- If the project migrates engines or adds server-side, L0 is directly reusable
|
||||||
|
- Tradeoff: small systems (e.g., ScoreCalculator) pay the adapter abstraction cost
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
# ADR-002: Event Bus & Cross-Layer Communication Pattern
|
||||||
|
|
||||||
|
**Status**: Accepted
|
||||||
|
**Date**: 2026-04-27
|
||||||
|
**Engine**: Unity 2022.3.62f3c1
|
||||||
|
**GDD Requirements Addressed**: All L0→L1 communication from systems-index.md
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Context
|
||||||
|
|
||||||
|
Architecture requires L0 to never call L1 or L2. All upward communication must go through an event mechanism. Need to choose: C# built-in `event` vs. a dedicated EventBus class. This decision affects every L0 module's interface design and memory safety.
|
||||||
|
|
||||||
|
## Decision
|
||||||
|
|
||||||
|
**Use C# built-in `event` + `Action<T>`. No dedicated EventBus class.**
|
||||||
|
|
||||||
|
Rationale:
|
||||||
|
- L0 has a fixed set of 10 modules — direct `event` declarations are manageable without a central registry
|
||||||
|
- C# `event` provides compile-time type safety; parameter mismatches are caught at build time, not runtime
|
||||||
|
- Zero external dependencies — no third-party messaging library
|
||||||
|
- Each L0 module's events are part of its public API contract, visible and self-documenting for external developers
|
||||||
|
|
||||||
|
**Subscription lifecycle**:
|
||||||
|
```
|
||||||
|
L1/L2 subscribe to L0 events in OnEnable()
|
||||||
|
L1/L2 unsubscribe in OnDisable()
|
||||||
|
(NOT OnDestroy — avoids lost subscriptions on disable/re-enable cycles)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Naming convention**: `On[What]` — e.g., `OnFormChanged`, `OnEnergyChanged`, `OnWaveStart`
|
||||||
|
|
||||||
|
**Parameter convention**: Use lightweight structs or primitive types. Never pass mutable L0 internal object references to subscribers (prevents L1 from mutating L0 state).
|
||||||
|
|
||||||
|
**Hot path exception**: Attack resolution and damage calculation use per-frame method calls (`CombatLogic.ResolveAttacks()`), not events. Events are reserved for low-frequency state transition notifications.
|
||||||
|
|
||||||
|
## Consequences
|
||||||
|
|
||||||
|
- Each L0 module's event surface is explicitly visible, making inter-system communication self-documenting
|
||||||
|
- No centralized message registry reduces coupling
|
||||||
|
- L1 developers MUST follow OnEnable/OnDisable subscription discipline — leaks or null refs otherwise
|
||||||
|
- If system count grows beyond ~20, a refactor to a dedicated EventBus may be warranted
|
||||||
|
|
@ -0,0 +1,43 @@
|
||||||
|
# ADR-003: Pure C# Geometry & Math Library
|
||||||
|
|
||||||
|
**Status**: Accepted
|
||||||
|
**Date**: 2026-04-27
|
||||||
|
**Engine**: Unity 2022.3.62f3c1
|
||||||
|
**GDD Requirements Addressed**: Combat Logic (hit detection), Form Switch SM (attack style shapes), Enemy AI (distance/range checks)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Context
|
||||||
|
|
||||||
|
L0 must not reference `UnityEngine`, but Combat Logic requires geometric intersection tests (circle vs rect vs sector), Form Switch SM needs distance calculations, and all systems need basic math utilities. A self-contained geometry/math library is required.
|
||||||
|
|
||||||
|
## Decision
|
||||||
|
|
||||||
|
**Build a minimal geometry library implementing only what Nightborn's combat systems actually need.**
|
||||||
|
|
||||||
|
### Type Inventory
|
||||||
|
|
||||||
|
| Type | Fields | Methods | Consumer |
|
||||||
|
|------|--------|---------|----------|
|
||||||
|
| `Vector3` | `float X, Y, Z` | `Distance(Vector3)`, `Normalize()`, `Length`, `Dot`, `Cross`, `+`, `-`, `*` | All modules |
|
||||||
|
| `Circle` | `Vector3 Center`, `float Radius` | `Intersects(Circle)`, `Intersects(Rect)`, `Contains(Vector3)` | Combat (Mist form AOE) |
|
||||||
|
| `Rect` | `Vector3 Center`, `float Width`, `float Height`, `float Rotation` | `Intersects(Circle)`, `Intersects(Rect)`, `Contains(Vector3)` | Combat (Wolf form dash) |
|
||||||
|
| `Sector` | `Vector3 Origin`, `float Radius`, `float Angle`, `float Direction` | `Intersects(Circle)`, `Contains(Vector3)` | Combat (Human form parry fan) |
|
||||||
|
| `MathUtil` | — | `Clamp`, `Lerp`, `InverseLerp`, `Remap`, `Approximately` | All modules |
|
||||||
|
|
||||||
|
### Explicitly Out of Scope
|
||||||
|
|
||||||
|
- Full 3D geometry library — Nightborn is top-down/isometric, needs XZ plane only
|
||||||
|
- Matrix operations — use `System.Numerics.Matrix4x4` (.NET Standard 2.1 built-in)
|
||||||
|
- Physics collision engine — only static intersection tests between geometric shapes
|
||||||
|
|
||||||
|
### Why Not System.Numerics.Vector3
|
||||||
|
|
||||||
|
`System.Numerics.Vector3` is available but its field names and method surface overlap with Unity's Vector3. Self-building avoids confusion for external developers juggling two Vector3 types. If SIMD performance becomes needed later, switching to System.Numerics is a drop-in replacement.
|
||||||
|
|
||||||
|
## Consequences
|
||||||
|
|
||||||
|
- Combat hit detection is fully self-contained and testable without Unity
|
||||||
|
- Geometric types precisely match game needs (Sector directly addresses Human form's parry shape detection)
|
||||||
|
- Tradeoff: maintaining a micro math library (~500 lines maximum)
|
||||||
|
- If complex physics is needed later, re-evaluate against third-party libraries
|
||||||
|
|
@ -0,0 +1,90 @@
|
||||||
|
# ADR-004: Form Switch State Machine Design
|
||||||
|
|
||||||
|
**Status**: Accepted
|
||||||
|
**Date**: 2026-04-27
|
||||||
|
**Engine**: Unity 2022.3.62f3c1
|
||||||
|
**GDD Requirements Addressed**: Form Switch State Machine (systems-index.md #3)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Context
|
||||||
|
|
||||||
|
Form switching is Nightborn's core operation — every switch is a risky commitment action. The state machine must balance "responsive feel" against "decisions have weight." It must also support future switch-speed upgrades from the Skill Tree.
|
||||||
|
|
||||||
|
## Decision
|
||||||
|
|
||||||
|
### Four-Phase Linear State Machine
|
||||||
|
|
||||||
|
```
|
||||||
|
RequestSwitch(Wolf)
|
||||||
|
Idle ─────────────────────────────→ Windup
|
||||||
|
↑ │
|
||||||
|
│ timer >= recovery │ timer >= windup
|
||||||
|
│ │
|
||||||
|
│ ┌─────────────────────────────┐ │
|
||||||
|
│ │ Hit during Windup → │←──│
|
||||||
|
│ │ OnSwitchInterrupted │ │
|
||||||
|
│ └─────────────────────────────┘ ↓
|
||||||
|
│ Switching (i-frames)
|
||||||
|
Recovery ←───────────────────────────┘
|
||||||
|
timer >= switch
|
||||||
|
```
|
||||||
|
|
||||||
|
### Phase Parameters (baseline, modifiable by Skill Tree)
|
||||||
|
|
||||||
|
| Phase | Duration | Can Act | Interruptible | Can Re-Switch |
|
||||||
|
|-------|----------|---------|---------------|---------------|
|
||||||
|
| **Idle** | — | Full | — | — |
|
||||||
|
| **Windup** | 0.25s | Cannot attack | Yes (hit → lose Blood Energy) | No |
|
||||||
|
| **Switching** | 0.10s | Cannot act | No (i-frames) | No |
|
||||||
|
| **Recovery** | 0.15s | Can attack/move | No | No |
|
||||||
|
|
||||||
|
**Total switch time**: 0.50s. Danger window: 0.25s (Windup).
|
||||||
|
|
||||||
|
### Interrupt Rules
|
||||||
|
|
||||||
|
- Hit during Windup → `OnSwitchInterrupted` → Blood Energy already spent, switch fails → return to Idle
|
||||||
|
- This IS the "switched at the wrong time" punishment — core to the Switch is Commitment pillar
|
||||||
|
|
||||||
|
### Post-Switch Cooldown
|
||||||
|
|
||||||
|
After Recovery ends, an additional 0.3s cooldown before another switch is allowed (minimum 0.8s between switches) — prevents switch spam and preserves rhythmic feel.
|
||||||
|
|
||||||
|
### Implementation
|
||||||
|
|
||||||
|
```csharp
|
||||||
|
// L0 — Pure C#, zero Unity
|
||||||
|
public class FormSwitchStateMachine
|
||||||
|
{
|
||||||
|
public FormType CurrentForm { get; private set; } = FormType.Human;
|
||||||
|
public SwitchPhase Phase { get; private set; } = SwitchPhase.Idle;
|
||||||
|
public float PhaseTimer { get; private set; }
|
||||||
|
|
||||||
|
// Tunable (Skill Tree can modify)
|
||||||
|
public float WindupDuration = 0.25f;
|
||||||
|
public float SwitchDuration = 0.10f;
|
||||||
|
public float RecoveryDuration = 0.15f;
|
||||||
|
public float CooldownDuration = 0.3f;
|
||||||
|
|
||||||
|
public SwitchResult RequestSwitch(FormType target, BloodEnergyEconomy energy);
|
||||||
|
public void Update(float deltaTime);
|
||||||
|
public void Interrupt();
|
||||||
|
|
||||||
|
public event Action<FormType, FormType> OnFormChanged;
|
||||||
|
public event Action<SwitchPhase> OnPhaseChanged;
|
||||||
|
public event Action<FormType> OnSwitchInterrupted;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Why a Simple Linear FSM
|
||||||
|
|
||||||
|
- 4 phases progress sequentially — no Hierarchical FSM or Behavior Tree needed
|
||||||
|
- Only Idle accepts input — logic is straightforward for external developers
|
||||||
|
- If a future form needs a different flow, it can subclass with its own state machine
|
||||||
|
|
||||||
|
## Consequences
|
||||||
|
|
||||||
|
- Switch feel is controlled by exactly 4 parameters (WindupDuration, SwitchDuration, RecoveryDuration, CooldownDuration) — tuning is centralized
|
||||||
|
- Interrupt during Windup creates clear "wrong time to switch" punishment, reinforcing Switch is Commitment
|
||||||
|
- Skill Tree can directly modify these 4 parameters for switch-speed upgrades
|
||||||
|
- Windup duration (0.25s) is the critical feel parameter — MUST be validated through prototype, likely iterating between 0.15s–0.35s
|
||||||
|
|
@ -0,0 +1,84 @@
|
||||||
|
# ADR-005: Enemy AI Decision Model
|
||||||
|
|
||||||
|
**Status**: Accepted
|
||||||
|
**Date**: 2026-04-27
|
||||||
|
**Engine**: Unity 2022.3.62f3c1
|
||||||
|
**GDD Requirements Addressed**: Enemy AI Logic, Boss AI Logic (systems-index.md #4, #5)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Context
|
||||||
|
|
||||||
|
Nightborn's enemy AI doesn't need complex tactical reasoning, but has a special requirement: each enemy type must strongly favor a specific form, creating "I need to switch" pressure. MVP scope is 3-5 enemy types. The AI model must be simple to implement, produce predictable behavior, and be easily understood and tested by external developers.
|
||||||
|
|
||||||
|
## Decision
|
||||||
|
|
||||||
|
**Use lightweight per-type Finite State Machines. Reject Behavior Trees and Utility AI.**
|
||||||
|
|
||||||
|
### Base FSM Structure (shared by all enemy types)
|
||||||
|
|
||||||
|
```
|
||||||
|
Idle ──→ Chase ──→ Attack ──→ Cooldown
|
||||||
|
↑ │ │
|
||||||
|
└────────────────────┴──────────┘
|
||||||
|
If too far, return to Chase
|
||||||
|
```
|
||||||
|
|
||||||
|
### Per-Type Differentiation in the Attack State
|
||||||
|
|
||||||
|
| Enemy Type | Attack Behavior | Encouraged Form | Why |
|
||||||
|
|------------|----------------|-----------------|-----|
|
||||||
|
| **Swarm** | Many simultaneous small-area hits | Mist | Mist's circular AOE clears groups at once |
|
||||||
|
| **Brute** | Slow, high-damage single strike | Human | Human's parry window is clear and precise against it |
|
||||||
|
| **Stalker** | Fast rush + point-blank flurry | Wolf | Wolf's rectangular dash collides for a stagger counter |
|
||||||
|
| **Shooter** | Ranged projectile barrage from periphery | Mist/Wolf | Mist phases through to close, or Wolf bursts to eliminate |
|
||||||
|
| **Boss** | Multi-phase mixed patterns | All forms | Phase transitions require form adaptation |
|
||||||
|
|
||||||
|
### Why Not Behavior Trees
|
||||||
|
|
||||||
|
BTs excel at complex decision chains (e.g., FPS cover-shooter AI). Nightborn enemies need only 4 states. The tree's maintenance cost exceeds its value.
|
||||||
|
|
||||||
|
### Why Not Utility AI
|
||||||
|
|
||||||
|
Scoring systems produce "optimal" behavior but aren't predictable enough — players can't learn enemy patterns, violating the "Battlefield is Information" pillar.
|
||||||
|
|
||||||
|
### Implementation
|
||||||
|
|
||||||
|
```csharp
|
||||||
|
// L0 — Pure C#, returns one AICommand per frame
|
||||||
|
public enum EnemyStateType { Idle, Chase, Attack, Cooldown }
|
||||||
|
|
||||||
|
public class EnemyAILogic
|
||||||
|
{
|
||||||
|
public EnemyTypeConfig Config;
|
||||||
|
|
||||||
|
public AICommand ComputeAction(EnemyState self, PlayerState player)
|
||||||
|
{
|
||||||
|
TransitionState(self, player);
|
||||||
|
return CurrentState switch
|
||||||
|
{
|
||||||
|
Idle => ScanForPlayer(player),
|
||||||
|
Chase => MoveToward(player),
|
||||||
|
Attack => ExecuteAttack(self.AttackPattern, player),
|
||||||
|
Cooldown => WaitAndReset(self.CooldownTimer),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
// Per-type override for unique transition logic
|
||||||
|
protected virtual void TransitionState(EnemyState self, PlayerState player) { }
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Boss Extension
|
||||||
|
|
||||||
|
Boss AI extends the base FSM with:
|
||||||
|
- `BossPhase` enum (additional state dimension)
|
||||||
|
- Phase transition conditions (health thresholds, timer triggers)
|
||||||
|
- `OnPhaseChanged` event for L1 VFX/Audio synchronization
|
||||||
|
|
||||||
|
## Consequences
|
||||||
|
|
||||||
|
- External developers can understand an enemy's behavior from `EnemyTypeConfig` alone — no need to parse behavior trees
|
||||||
|
- Enemy behavior is predictable and learnable — satisfies "Battlefield is Information" pillar
|
||||||
|
- Each enemy type's Attack pattern naturally points to one form counter — reinforces "Form is Tactics"
|
||||||
|
- If future enemies need more intelligence (cover, coordination), the FSM base can be extended without replacement
|
||||||
|
|
@ -0,0 +1,405 @@
|
||||||
|
# 夜裔 (Nightborn) — Master Architecture
|
||||||
|
|
||||||
|
## Document Status
|
||||||
|
|
||||||
|
- **Version**: 1.0
|
||||||
|
- **Last Updated**: 2026-04-27
|
||||||
|
- **Engine**: Unity 2022.3.62f3c1 (URP 14.0.12)
|
||||||
|
- **Language**: C# (.NET Standard 2.1)
|
||||||
|
- **GDDs Covered**: game-concept.md, systems-index.md
|
||||||
|
- **ADRs Referenced**: None yet — see Required ADRs section
|
||||||
|
- **Review Mode**: Lean (no director sign-off)
|
||||||
|
- **Architecture**: L0 Pure C# / L1 Unity Adapter / L2 Unity Presentation
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Engine Knowledge Gap Summary
|
||||||
|
|
||||||
|
| Risk Level | Domains | Implication |
|
||||||
|
|------------|---------|-------------|
|
||||||
|
| **LOW** | All domains | Unity 2022.3 LTS is within LLM training data (cutoff May 2025). No engine knowledge gaps. |
|
||||||
|
| **Note** | New Input System | Project uses Input System package (not legacy Input Manager), consistent with best practices |
|
||||||
|
| **Note** | URP 14.x | Render pipeline is stable and well-documented |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Architecture Principles
|
||||||
|
|
||||||
|
These are non-negotiable technical rules derived from the game pillars and design concept.
|
||||||
|
|
||||||
|
1. **L0 is pure** — No `UnityEngine` reference in any L0 source file. L0 compiles as a standalone .NET library.
|
||||||
|
2. **L0 doesn't know it's in Unity** — L0 communicates only via C# primitives and events. It never calls up.
|
||||||
|
3. **L1 is thin** — MonoBehaviour classes in L1 contain only Unity lifecycle wiring and event forwarding. No game logic.
|
||||||
|
4. **Events go up, methods go down** — L0 emits events (L1/L2 subscribe). L1 calls methods on L0. Never the reverse.
|
||||||
|
5. **Data owned by L0, rendered by L1/L2** — All game state lives in L0. L1 and L2 are stateless regarding game rules.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## System Layer Map
|
||||||
|
|
||||||
|
```
|
||||||
|
┌──────────────────────────────────────────────────────────┐
|
||||||
|
│ L2: Unity 表现层 │
|
||||||
|
│ ┌─────────────┐ ┌──────────────┐ │
|
||||||
|
│ │ UI/HUD │ │ Menu System │ │
|
||||||
|
│ │ Canvas │ │ Canvas │ │
|
||||||
|
│ └──────┬──────┘ └──────┬───────┘ │
|
||||||
|
│ │ │ │
|
||||||
|
│ └───────┬────────┘ │
|
||||||
|
│ │ 只读L0状态 │
|
||||||
|
├─────────────────┼────────────────────────────────────────┤
|
||||||
|
│ L1: Unity 适配层 │
|
||||||
|
│ ┌──────────────┐ ┌──────────┐ ┌───────────┐ │
|
||||||
|
│ │Input Adapter │ │ Camera │ │Level │ │
|
||||||
|
│ │InputSystem │ │ Ctrl │ │Loader │ │
|
||||||
|
│ └──────┬───────┘ └────┬─────┘ └─────┬─────┘ │
|
||||||
|
│ ┌──────┴───────┐ ┌────┴─────┐ │
|
||||||
|
│ │ VFX Spawner │ │ Audio │ │
|
||||||
|
│ │ ParticleSys │ │ Player │ │
|
||||||
|
│ └──────┬───────┘ └────┬─────┘ │
|
||||||
|
│ │ │ │
|
||||||
|
│ └──────┬───────┘ │
|
||||||
|
│ │ 方法调用↓ 事件订阅↑ │
|
||||||
|
├────────────────┼────────────────────────────────────────────┤
|
||||||
|
│ L0: 纯C# 核心逻辑层 (零Unity依赖) │
|
||||||
|
│ ┌──────────────┐ ┌──────────┐ ┌──────────────┐ │
|
||||||
|
│ │Blood Energy │ │ Combat │ │Form Switch │ │
|
||||||
|
│ │Economy │ │ Logic │ │State Machine │ │
|
||||||
|
│ └──────┬───────┘ └────┬─────┘ └──────┬───────┘ │
|
||||||
|
│ ┌──────┴───────┐ ┌────┴─────┐ ┌──────┴───────┐ │
|
||||||
|
│ │Enemy AI │ │Boss AI │ │Wave Manager │ │
|
||||||
|
│ │Logic │ │Logic │ │Logic │ │
|
||||||
|
│ └──────────────┘ └──────────┘ └──────────────┘ │
|
||||||
|
│ ┌──────────────┐ ┌──────────┐ ┌──────────────┐ │
|
||||||
|
│ │Death/Respawn │ │Skill Tree│ │Save/Load │ │
|
||||||
|
│ │Rules │ │Rules │ │Logic │ │
|
||||||
|
│ └──────────────┘ └──────────┘ └──────────────┘ │
|
||||||
|
│ ┌──────────────┐ │
|
||||||
|
│ │Score Calc │ │
|
||||||
|
│ └──────────────┘ │
|
||||||
|
└─────────────────────────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
### Communication Rules
|
||||||
|
|
||||||
|
| Direction | Allowed | Mechanism |
|
||||||
|
|-----------|---------|-----------|
|
||||||
|
| L0 → L0 | ✓ | Direct method call, C# event |
|
||||||
|
| L0 → L1 | ✗ | L0 does NOT call L1. L0 emits C# events; L1 subscribes. |
|
||||||
|
| L0 → L2 | ✗ | L2 reads L0 state through L1 or direct POCO access |
|
||||||
|
| L1 → L0 | ✓ | Method calls (e.g., `combat.Attack()`), property reads |
|
||||||
|
| L1 → L2 | ✓ | Method calls (e.g., `hud.Refresh(state)`) |
|
||||||
|
| L2 → L0 | ✓ | Read-only access to L0 public properties and state aggregates |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Module Ownership
|
||||||
|
|
||||||
|
### L0 — Pure C# Logic Layer
|
||||||
|
|
||||||
|
| Module | Owns | Exposes | Consumes | Unity Deps |
|
||||||
|
|--------|------|---------|----------|-----------|
|
||||||
|
| **Blood Energy Economy** | Current/max energy, gain/spend rules, decay formula | `float Current`, `float Max`, `void Add(float)`, `bool Spend(float)`, `event OnEnergyChanged` | — | Zero |
|
||||||
|
| **Combat Logic** | Hit detection (geometry intersection), damage formula, crit rules | `DamageResult Attack(AttackData)`, `bool HitTest(Shape, Shape)` | — (uses own geometry lib) | Zero |
|
||||||
|
| **Form Switch SM** | Current form, switch state machine, windup timer, switch conditions | `FormType CurrentForm`, `SwitchResult RequestSwitch(FormType)`, `AttackStyle GetAttackStyle(FormType)`, `event OnFormChanged` | Blood Energy (check/spend) | Zero |
|
||||||
|
| **Enemy AI Logic** | Per-type behavior rules, target selection, attack decisions | `AICommand Update(EnemyState, PlayerState)` | Combat Logic (damage calc) | Zero |
|
||||||
|
| **Boss AI Logic** | Phase logic, phase transition conditions, phase-specific behaviors | `BossCommand Update(BossState, PlayerState)`, `event OnPhaseChanged` | Enemy AI, Combat Logic | Zero |
|
||||||
|
| **Wave Manager Logic** | Wave composition data, spawn timers, wave state | `WaveComposition GetNextWave()`, `bool IsWaveComplete()`, `event OnWaveStart`, `event OnWaveBreak` | Enemy AI (types) | Zero |
|
||||||
|
| **Death/Respawn Rules** | Death trigger, checkpoint state, respawn logic | `bool IsDead(float)`, `Vector3 RespawnPoint`, `event OnDeath`, `event OnRespawn` | Combat Logic (health) | Zero |
|
||||||
|
| **Skill Tree Rules** | Unlock conditions, upgrade formulas, form synergy effects | `bool CanUnlock(SkillNode)`, `void Unlock(SkillNode)` | Form Switch SM | Zero |
|
||||||
|
| **Save/Load Logic** | Serialization format, file paths, version migration | `void Save(GameState)`, `GameState Load()`, `bool SaveExists(int)` | Skill Tree Rules | Zero |
|
||||||
|
| **Score Calculator** | Score formula, combo tracking, per-wave stats | `int Score`, `float StyleRank`, `void OnKill(KillData)` | Combat Logic, Wave Manager | Zero |
|
||||||
|
|
||||||
|
### L1 — Unity Adapter Layer
|
||||||
|
|
||||||
|
| Module | Owns | Exposes | Consumes | Key Unity APIs |
|
||||||
|
|--------|------|---------|----------|---------------|
|
||||||
|
| **Input Adapter** | Input Action bindings, action map config | `event OnAttack`, `event OnSwitch(FormType)`, `Vector2 MoveInput` | — | `InputAction`, `PlayerInput` |
|
||||||
|
| **Camera Controller** | Camera component, follow logic, shake | `void SetTarget(Vector3)`, `void Shake(float)` | L0 player position (read) | `Camera`, `Transform` |
|
||||||
|
| **Level Loader** | Scene refs, load progress | `void LoadLevel(string)`, `event OnLevelLoaded` | — | `SceneManager`, `AsyncOperation` |
|
||||||
|
| **Audio Player** | AudioSource pool, clip mappings | `void Play(SfxType)`, `void SetMusic(MusicTrack)` | L0 events (subscribes) | `AudioSource`, `AudioMixer` |
|
||||||
|
| **VFX Spawner** | ParticleSystem pool, geometric preset library | `void Spawn(VfxType, Vector3)`, `void SetFormColor(FormType)` | L0 events (subscribes) | `ParticleSystem`, `ObjectPool<T>` |
|
||||||
|
|
||||||
|
### L2 — Unity Presentation Layer
|
||||||
|
|
||||||
|
| Module | Owns | Exposes | Consumes | Key Unity APIs |
|
||||||
|
|--------|------|---------|----------|---------------|
|
||||||
|
| **UI/HUD** | Canvas, form indicator, blood energy bar, wave info | `void Refresh(HUDState)` | L0 state (read only) | `Canvas`, `UI.Image`, `TMP_Text` |
|
||||||
|
| **Menu System** | Main menu, pause panel, skill tree UI, settings | `void ShowMainMenu()`, `void ShowPause()` | Input Adapter, Level Loader, Save/Load | `Canvas`, `UI.Button` |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Data Flow
|
||||||
|
|
||||||
|
### Combat Frame Path
|
||||||
|
```
|
||||||
|
Unity Update (L1)
|
||||||
|
→ Input Adapter reads Input System → fires C# events
|
||||||
|
→ L1 calls L0: CombatSystem.Attack(), FormSwitchSM.Update()
|
||||||
|
→ L0 resolves: hit tests, damage, AI decisions, state machine ticks
|
||||||
|
→ L0 fires events: OnHit, OnFormChanged, OnEnergyChanged
|
||||||
|
→ L1 subscribers: VFX.Spawn(), Audio.Play()
|
||||||
|
→ L1 reads L0 state: Camera.SetTarget(), HUD.Refresh(state)
|
||||||
|
→ Unity renders to screen
|
||||||
|
```
|
||||||
|
|
||||||
|
### Form Switch Event Chain
|
||||||
|
```
|
||||||
|
Input → OnSwitch(Wolf) event
|
||||||
|
→ FormSwitchSM.RequestSwitch(Wolf)
|
||||||
|
→ BloodEnergy.Spend(cost)
|
||||||
|
→ Windup timer starts
|
||||||
|
→ Windup completes → OnFormChanged(Human→Wolf)
|
||||||
|
→ VFX: switch particle burst
|
||||||
|
→ Audio: switch SFX
|
||||||
|
→ HUD: color update
|
||||||
|
→ Enemy AI: re-evaluate threat priority
|
||||||
|
```
|
||||||
|
|
||||||
|
### Initialization Order
|
||||||
|
```
|
||||||
|
1. Unity Awake: Level Loader → Input Adapter → Camera → Audio → VFX
|
||||||
|
2. L0 bootstrap (triggered by L1):
|
||||||
|
Blood Energy → Combat Logic → Form Switch SM → Enemy AI → Wave Manager
|
||||||
|
3. L2 HUD subscribes to L0 events
|
||||||
|
4. Game start signal
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## API Boundaries
|
||||||
|
|
||||||
|
### Core L0 Interfaces
|
||||||
|
|
||||||
|
```csharp
|
||||||
|
// Blood Energy Economy
|
||||||
|
public class BloodEnergyEconomy {
|
||||||
|
public float Current { get; }
|
||||||
|
public float Max { get; }
|
||||||
|
public float GainRate { get; set; }
|
||||||
|
public void Add(float amount);
|
||||||
|
public bool CanSpend(float amount);
|
||||||
|
public bool Spend(float amount);
|
||||||
|
public void Reset();
|
||||||
|
public event Action<float,float> OnEnergyChanged;
|
||||||
|
// Invariant: 0 ≤ Current ≤ Max
|
||||||
|
}
|
||||||
|
|
||||||
|
// Combat Logic
|
||||||
|
public struct AttackData {
|
||||||
|
public Vector3 Origin;
|
||||||
|
public Shape HitShape;
|
||||||
|
public float Damage;
|
||||||
|
public float KnockbackForce;
|
||||||
|
public FormType SourceForm;
|
||||||
|
}
|
||||||
|
public struct DamageResult {
|
||||||
|
public int TargetId;
|
||||||
|
public float FinalDamage;
|
||||||
|
public bool IsCritical;
|
||||||
|
public Vector3 HitPoint;
|
||||||
|
public bool IsKillingBlow;
|
||||||
|
}
|
||||||
|
public class CombatLogic {
|
||||||
|
public static bool TestHit(Shape a, Shape b);
|
||||||
|
public DamageResult CalculateDamage(AttackData atk, EnemyDefenseData def);
|
||||||
|
public List<DamageResult> ResolveAttacks(List<AttackData> atks, List<EnemyState> enemies);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Form Switch State Machine
|
||||||
|
public enum FormType { Human, Wolf, Mist }
|
||||||
|
public enum SwitchPhase { Idle, Windup, Switching, Recovery }
|
||||||
|
public enum SwitchResult { Success, InsufficientEnergy, OnCooldown, InvalidTarget }
|
||||||
|
public struct AttackStyle {
|
||||||
|
public float Range, BaseDamage, AttackSpeed, AreaSize;
|
||||||
|
public Shape AttackShape;
|
||||||
|
public int MaxTargets;
|
||||||
|
}
|
||||||
|
public class FormSwitchStateMachine {
|
||||||
|
public FormType CurrentForm { get; }
|
||||||
|
public SwitchPhase Phase { get; }
|
||||||
|
public SwitchResult RequestSwitch(FormType target);
|
||||||
|
public AttackStyle GetAttackStyle(FormType form);
|
||||||
|
public void Update(float deltaTime);
|
||||||
|
public event Action<FormType,FormType> OnFormChanged;
|
||||||
|
public event Action<SwitchPhase> OnPhaseChanged;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Enemy AI Logic
|
||||||
|
public struct AICommand {
|
||||||
|
public CommandType Type; // Move, Attack, Ability, Flee
|
||||||
|
public Vector3 TargetPosition;
|
||||||
|
public int TargetId, AbilityId;
|
||||||
|
}
|
||||||
|
public class EnemyAILogic {
|
||||||
|
public AICommand ComputeAction(EnemyState self, PlayerState player);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Wave Manager Logic
|
||||||
|
public struct WaveComposition {
|
||||||
|
public List<EnemySpawnEntry> Enemies;
|
||||||
|
public float DelayBetweenGroups;
|
||||||
|
public string[] SpecialConditions;
|
||||||
|
}
|
||||||
|
public class WaveManagerLogic {
|
||||||
|
public WaveState CurrentState { get; }
|
||||||
|
public int CurrentWave { get; }
|
||||||
|
public WaveComposition GetNextWave();
|
||||||
|
public void OnEnemyKilled(int enemyId);
|
||||||
|
public void Update(float deltaTime);
|
||||||
|
public event Action<WaveComposition> OnWaveStart;
|
||||||
|
public event Action<float> OnWaveBreak;
|
||||||
|
public event Action OnAllWavesComplete;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### L1 Adapter Interfaces
|
||||||
|
|
||||||
|
```csharp
|
||||||
|
// Input Adapter — sole owner of Unity Input System interaction
|
||||||
|
public class InputAdapter : MonoBehaviour {
|
||||||
|
public event Action OnAttackPressed, OnAttackReleased, OnDodgePressed, OnPausePressed;
|
||||||
|
public event Action<FormType> OnSwitchPressed;
|
||||||
|
public Vector2 MoveInput { get; }
|
||||||
|
}
|
||||||
|
|
||||||
|
// VFX Spawner — subscribes to L0 events, drives Unity ParticleSystem
|
||||||
|
public class VFXSpawner : MonoBehaviour {
|
||||||
|
public void PlayFormSwitchEffect(FormType from, FormType to, Vector3 pos);
|
||||||
|
public void PlayHitEffect(Vector3 pos, float damage);
|
||||||
|
public void PlayKillEffect(Vector3 pos);
|
||||||
|
public void PlayBossPhaseEffect(Vector3 pos);
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### L2 HUD Interface
|
||||||
|
|
||||||
|
```csharp
|
||||||
|
// HUDState — pure data aggregate of L0 state for rendering
|
||||||
|
public struct HUDState {
|
||||||
|
public float BloodEnergyCurrent, BloodEnergyMax;
|
||||||
|
public FormType CurrentForm;
|
||||||
|
public float PlayerHealth;
|
||||||
|
public int CurrentWave, TotalWaves;
|
||||||
|
public float WaveProgress;
|
||||||
|
public int StyleRank;
|
||||||
|
public float BossHealth;
|
||||||
|
}
|
||||||
|
|
||||||
|
public class HUDManager : MonoBehaviour {
|
||||||
|
public void Refresh(HUDState state); // called every frame by L1
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ADR Audit
|
||||||
|
|
||||||
|
| Status | Detail |
|
||||||
|
|--------|--------|
|
||||||
|
| Existing ADRs found | 0 |
|
||||||
|
| Traceable TRs from GDDs | 0 (no per-system GDDs authored) |
|
||||||
|
| Architecture decisions in this doc | All API boundaries, layer map, data flow, communication rules |
|
||||||
|
|
||||||
|
No existing ADRs to audit. All architectural decisions in this document require formal ADR records.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Required ADRs
|
||||||
|
|
||||||
|
### Must create before coding (Foundation)
|
||||||
|
|
||||||
|
| ADR ID | Title | Covers | Priority |
|
||||||
|
|--------|-------|--------|----------|
|
||||||
|
| ADR-001 | Three-Layer Architecture & Code Isolation | L0/L1/L2 directory layout, asmdef configuration, cross-layer reference prohibition | BLOCKING |
|
||||||
|
| ADR-002 | Event Bus & Communication Pattern | C# event as sole L0→L1 mechanism, subscription lifecycle, no direct L0→Unity calls | BLOCKING |
|
||||||
|
| ADR-003 | Pure C# Geometry & Math Library | Custom Vector3, Shape hierarchy, Math utilities — zero UnityEngine dependency | BLOCKING |
|
||||||
|
|
||||||
|
### Should create before relevant system (Core)
|
||||||
|
|
||||||
|
| ADR ID | Title | Covers | Priority |
|
||||||
|
|--------|-------|--------|----------|
|
||||||
|
| ADR-004 | Form Switch State Machine Design | State transitions, timing parameters, windup/invuln/recovery phases, interrupt behavior | HIGH |
|
||||||
|
| ADR-005 | Enemy AI Decision Model | Behavior tree vs state machine vs utility AI — choice and rationale | HIGH |
|
||||||
|
| ADR-006 | Wave Composition Data Format | WaveConfig structure, ScriptableObject vs JSON, editor tooling | MEDIUM |
|
||||||
|
| ADR-007 | Serialization Format & Save Strategy | JSON vs binary, version migration policy, save slot management | MEDIUM |
|
||||||
|
|
||||||
|
### Can defer to implementation (Feature)
|
||||||
|
|
||||||
|
| ADR ID | Title | Covers | Priority |
|
||||||
|
|--------|-------|--------|----------|
|
||||||
|
| ADR-008 | Skill Tree Data Structure | Node graph representation, unlock dependencies, synergy trigger conditions | LOW |
|
||||||
|
| ADR-009 | Score & Style Formula | Kill weighting, combo decay, wave speed bonus, rank thresholds | LOW |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Project Directory Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
Assets/
|
||||||
|
├── Scripts/
|
||||||
|
│ ├── Core/ # L0 — Pure C# (no UnityEngine)
|
||||||
|
│ │ ├── Core.asmdef # asmdef: no Unity refs
|
||||||
|
│ │ ├── Combat/
|
||||||
|
│ │ │ ├── BloodEnergyEconomy.cs
|
||||||
|
│ │ │ ├── CombatLogic.cs
|
||||||
|
│ │ │ ├── FormSwitchStateMachine.cs
|
||||||
|
│ │ │ └── AttackStyle.cs
|
||||||
|
│ │ ├── Enemy/
|
||||||
|
│ │ │ ├── EnemyAILogic.cs
|
||||||
|
│ │ │ ├── BossAILogic.cs
|
||||||
|
│ │ │ └── WaveManagerLogic.cs
|
||||||
|
│ │ ├── Player/
|
||||||
|
│ │ │ └── DeathRespawnRules.cs
|
||||||
|
│ │ ├── Progression/
|
||||||
|
│ │ │ └── SkillTreeRules.cs
|
||||||
|
│ │ ├── Persistence/
|
||||||
|
│ │ │ └── SaveLoadLogic.cs
|
||||||
|
│ │ ├── Meta/
|
||||||
|
│ │ │ └── ScoreCalculator.cs
|
||||||
|
│ │ └── Geometry/ # ADR-003 — Pure C# math types
|
||||||
|
│ │ ├── Vector3.cs
|
||||||
|
│ │ ├── Shape.cs
|
||||||
|
│ │ └── MathUtil.cs
|
||||||
|
│ ├── Adapters/ # L1 — MonoBehaviour wrappers
|
||||||
|
│ │ ├── Adapters.asmdef # asmdef: refs Core + Unity
|
||||||
|
│ │ ├── InputAdapter.cs
|
||||||
|
│ │ ├── CameraController.cs
|
||||||
|
│ │ ├── LevelLoader.cs
|
||||||
|
│ │ ├── AudioPlayer.cs
|
||||||
|
│ │ └── VFXSpawner.cs
|
||||||
|
│ └── Presentation/ # L2 — UI & Rendering
|
||||||
|
│ ├── Presentation.asmdef # asmdef: refs Core + Adapters + Unity
|
||||||
|
│ ├── HUDManager.cs
|
||||||
|
│ ├── HUDState.cs
|
||||||
|
│ └── MenuSystem.cs
|
||||||
|
├── Scenes/ # Unity场景文件
|
||||||
|
├── Settings/ # URP质量配置
|
||||||
|
└── Tests/
|
||||||
|
├── Core.Tests/ # L0 单元测试 (NUnit, 无Unity)
|
||||||
|
│ ├── Core.Tests.asmdef
|
||||||
|
│ ├── BloodEnergyEconomyTests.cs
|
||||||
|
│ ├── CombatLogicTests.cs
|
||||||
|
│ └── FormSwitchSMTests.cs
|
||||||
|
└── Adapter.Tests/ # L1 集成测试 (Unity Test Framework)
|
||||||
|
└── Adapter.Tests.asmdef
|
||||||
|
```
|
||||||
|
|
||||||
|
### asmdef 配置规则
|
||||||
|
|
||||||
|
| 程序集 | 引用 | 禁止引用 |
|
||||||
|
|--------|------|----------|
|
||||||
|
| `Core.asmdef` | (none) | 不可引用任何 Unity 包 |
|
||||||
|
| `Adapters.asmdef` | Core | 不可引用 Presentation |
|
||||||
|
| `Presentation.asmdef` | Core, Adapters | — |
|
||||||
|
| `Core.Tests.asmdef` | Core | 不可引用 Unity (NUnit standalone) |
|
||||||
|
| `Adapter.Tests.asmdef` | Core, Adapters | — |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Open Questions
|
||||||
|
|
||||||
|
- 是否需要专用的事件总线类管理 L0 事件的订阅/取消,还是直接使用 C# `event` + `Action`?—— ADR-002 中决定
|
||||||
|
- 敌人的 WaveConfig 用 ScriptableObject (方便策划编辑) 还是纯 JSON (更便携)?—— ADR-006 中决定
|
||||||
|
- 是否需要支持中途存档(战斗中途保存并恢复)还是仅关卡间存档?—— 在 Save/Load GDD 中决定
|
||||||
|
- L0 的三个 asmdef 子模块(Combat / Enemy / Player)是否需要独立 asmdef 而非一个 Core.asmdef?—— 当前一个 Core.asmdef 即可,复杂度不足以拆分
|
||||||
|
|
@ -0,0 +1,50 @@
|
||||||
|
# Session State
|
||||||
|
|
||||||
|
<!-- STATUS -->
|
||||||
|
Epic: Pre-Production
|
||||||
|
Feature: System GDD Authoring
|
||||||
|
Task: Combat Logic GDD complete (GDD #2)
|
||||||
|
<!-- /STATUS -->
|
||||||
|
|
||||||
|
## Completed This Session
|
||||||
|
|
||||||
|
- [x] `/brainstorm` → Game concept: 夜裔 (Nightborn) → `design/gdd/game-concept.md`
|
||||||
|
- [x] `/setup-engine` → Unity 2022.3.62f3c1, C#, URP configured
|
||||||
|
- [x] `/art-bible` → Sections 1–4 (Visual Identity core) → `design/art/art-bible.md`
|
||||||
|
- [x] `/map-systems` → 17 systems indexed → `design/gdd/systems-index.md`
|
||||||
|
- [x] `/create-architecture` → Master architecture → `docs/architecture/architecture.md`
|
||||||
|
|
||||||
|
## Key Decisions
|
||||||
|
|
||||||
|
- Architecture: L0 Pure C# (no Unity) / L1 Unity Adapter / L2 Unity Presentation
|
||||||
|
- L0→L1 communication: C# event only (L0 never calls up)
|
||||||
|
- asmdef: Core (no Unity refs) → Adapters (Core + Unity) → Presentation (Core + Adapters + Unity)
|
||||||
|
- Visual: Minimalist geometric — Triangle (human), Rectangle (wolf), Circle (mist)
|
||||||
|
- Review mode: Lean (default)
|
||||||
|
- 3 forms: Human (precision), Wolf (burst), Mist (control)
|
||||||
|
- Form switching: Resource-driven (Blood Energy), rhythmic (commitment animation)
|
||||||
|
- External developer model: GDD = deliverable spec; /code-review = acceptance gate
|
||||||
|
|
||||||
|
## Pending ADRs
|
||||||
|
|
||||||
|
- BLOCKING: ADR-001 (Three-Layer Architecture), ADR-002 (Event Bus), ADR-003 (Pure C# Geometry)
|
||||||
|
- HIGH: ADR-004 (Form Switch SM), ADR-005 (Enemy AI Model)
|
||||||
|
- MEDIUM: ADR-006 (Wave Data Format), ADR-007 (Serialization)
|
||||||
|
- LOW: ADR-008 (Skill Tree), ADR-009 (Score Formula)
|
||||||
|
|
||||||
|
## Current State
|
||||||
|
|
||||||
|
- **Phase**: Pre-Production — Architecture complete, GDDs pending
|
||||||
|
- **Next**: Design individual system GDDs in dependency order
|
||||||
|
- **First GDD**: Blood Energy Economy
|
||||||
|
|
||||||
|
## Files Modified
|
||||||
|
|
||||||
|
- `design/gdd/game-concept.md` — created
|
||||||
|
- `design/art/art-bible.md` — created (sections 1-4)
|
||||||
|
- `design/gdd/systems-index.md` — created
|
||||||
|
- `docs/architecture/architecture.md` — created
|
||||||
|
- `Claude-Code-Game-Studios/CLAUDE.md` — Technology Stack updated
|
||||||
|
- `Claude-Code-Game-Studios/.claude/docs/technical-preferences.md` — populated
|
||||||
|
- `Claude-Code-Game-Studios/docs/engine-reference/unity/VERSION.md` — created
|
||||||
|
- `Claude-Code-Game-Studios/.claude/agents/unity-specialist.md` — Version Awareness added
|
||||||
Loading…
Reference in New Issue