├── .gitignore ├── .vsconfig ├── Assets ├── Scenes.meta ├── Scenes │ ├── MainScene.unity │ └── MainScene.unity.meta ├── Scripts.meta └── Scripts │ ├── GameController.meta │ ├── GameController │ ├── Logger.cs │ ├── Logger.cs.meta │ ├── QuitScript.cs │ └── QuitScript.cs.meta │ ├── SpaceWarClient.cs │ ├── SpaceWarClient.cs.meta │ ├── SteamStatsAndAchievements.cs │ ├── SteamStatsAndAchievements.cs.meta │ ├── Steamworks.NET.meta │ └── Steamworks.NET │ ├── SteamManager.cs │ └── SteamManager.cs.meta ├── LICENSE.txt ├── Packages ├── manifest.json └── packages-lock.json ├── ProjectSettings ├── AudioManager.asset ├── ClusterInputManager.asset ├── DynamicsManager.asset ├── EditorBuildSettings.asset ├── EditorSettings.asset ├── GraphicsSettings.asset ├── InputManager.asset ├── NavMeshAreas.asset ├── NavMeshLayers.asset ├── NavMeshProjectSettings.asset ├── NetworkManager.asset ├── PackageManagerSettings.asset ├── Physics2DSettings.asset ├── PresetManager.asset ├── ProjectSettings.asset ├── ProjectVersion.txt ├── QualitySettings.asset ├── TagManager.asset ├── TimeManager.asset ├── UnityConnectSettings.asset ├── VFXManager.asset ├── VersionControlSettings.asset └── XRSettings.asset └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | # Folders 2 | /.DS_Store/ 3 | /.vs/ 4 | /.vscode/ 5 | /Library/ 6 | /obj/ 7 | /Temp/ 8 | /Logs/ 9 | /UserSettings/ 10 | 11 | # Files 12 | *.csproj 13 | *.sln 14 | *.VC.db 15 | /steam_appid.txt 16 | -------------------------------------------------------------------------------- /.vsconfig: -------------------------------------------------------------------------------- 1 | { 2 | "version": "1.0", 3 | "components": [ 4 | "Microsoft.VisualStudio.Workload.ManagedGame" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /Assets/Scenes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5c5369df1b52cbc428ea7650a175a222 3 | folderAsset: yes 4 | DefaultImporter: 5 | userData: 6 | -------------------------------------------------------------------------------- /Assets/Scenes/MainScene.unity: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!29 &1 4 | OcclusionCullingSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_OcclusionBakeSettings: 8 | smallestOccluder: 5 9 | smallestHole: 0.25 10 | backfaceThreshold: 100 11 | m_SceneGUID: 00000000000000000000000000000000 12 | m_OcclusionCullingData: {fileID: 0} 13 | --- !u!104 &2 14 | RenderSettings: 15 | m_ObjectHideFlags: 0 16 | serializedVersion: 9 17 | m_Fog: 0 18 | m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} 19 | m_FogMode: 3 20 | m_FogDensity: 0.01 21 | m_LinearFogStart: 0 22 | m_LinearFogEnd: 300 23 | m_AmbientSkyColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} 24 | m_AmbientEquatorColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} 25 | m_AmbientGroundColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} 26 | m_AmbientIntensity: 1 27 | m_AmbientMode: 3 28 | m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} 29 | m_SkyboxMaterial: {fileID: 0} 30 | m_HaloStrength: 0.5 31 | m_FlareStrength: 1 32 | m_FlareFadeSpeed: 3 33 | m_HaloTexture: {fileID: 0} 34 | m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} 35 | m_DefaultReflectionMode: 0 36 | m_DefaultReflectionResolution: 128 37 | m_ReflectionBounces: 1 38 | m_ReflectionIntensity: 1 39 | m_CustomReflection: {fileID: 0} 40 | m_Sun: {fileID: 0} 41 | m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} 42 | m_UseRadianceAmbientProbe: 0 43 | --- !u!157 &4 44 | LightmapSettings: 45 | m_ObjectHideFlags: 0 46 | serializedVersion: 12 47 | m_GIWorkflowMode: 1 48 | m_GISettings: 49 | serializedVersion: 2 50 | m_BounceScale: 1 51 | m_IndirectOutputScale: 1 52 | m_AlbedoBoost: 1 53 | m_EnvironmentLightingMode: 0 54 | m_EnableBakedLightmaps: 0 55 | m_EnableRealtimeLightmaps: 0 56 | m_LightmapEditorSettings: 57 | serializedVersion: 12 58 | m_Resolution: 1 59 | m_BakeResolution: 50 60 | m_AtlasSize: 1024 61 | m_AO: 1 62 | m_AOMaxDistance: 1 63 | m_CompAOExponent: 1 64 | m_CompAOExponentDirect: 0 65 | m_ExtractAmbientOcclusion: 0 66 | m_Padding: 2 67 | m_LightmapParameters: {fileID: 0} 68 | m_LightmapsBakeMode: 1 69 | m_TextureCompression: 0 70 | m_FinalGather: 0 71 | m_FinalGatherFiltering: 1 72 | m_FinalGatherRayCount: 256 73 | m_ReflectionCompression: 2 74 | m_MixedBakeMode: 1 75 | m_BakeBackend: 0 76 | m_PVRSampling: 1 77 | m_PVRDirectSampleCount: 32 78 | m_PVRSampleCount: 500 79 | m_PVRBounces: 2 80 | m_PVREnvironmentSampleCount: 500 81 | m_PVREnvironmentReferencePointCount: 2048 82 | m_PVRFilteringMode: 0 83 | m_PVRDenoiserTypeDirect: 0 84 | m_PVRDenoiserTypeIndirect: 0 85 | m_PVRDenoiserTypeAO: 0 86 | m_PVRFilterTypeDirect: 0 87 | m_PVRFilterTypeIndirect: 0 88 | m_PVRFilterTypeAO: 0 89 | m_PVREnvironmentMIS: 0 90 | m_PVRCulling: 1 91 | m_PVRFilteringGaussRadiusDirect: 1 92 | m_PVRFilteringGaussRadiusIndirect: 5 93 | m_PVRFilteringGaussRadiusAO: 2 94 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 95 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 96 | m_PVRFilteringAtrousPositionSigmaAO: 1 97 | m_ExportTrainingData: 0 98 | m_TrainingDataDestination: TrainingData 99 | m_LightProbeSampleCountMultiplier: 4 100 | m_LightingDataAsset: {fileID: 0} 101 | m_LightingSettings: {fileID: 383260289} 102 | --- !u!196 &5 103 | NavMeshSettings: 104 | serializedVersion: 2 105 | m_ObjectHideFlags: 0 106 | m_BuildSettings: 107 | serializedVersion: 2 108 | agentTypeID: 0 109 | agentRadius: 0.5 110 | agentHeight: 2 111 | agentSlope: 45 112 | agentClimb: 0.4 113 | ledgeDropHeight: 0 114 | maxJumpAcrossDistance: 0 115 | minRegionArea: 2 116 | manualCellSize: 0 117 | cellSize: 0.16666666 118 | manualTileSize: 0 119 | tileSize: 256 120 | accuratePlacement: 0 121 | maxJobWorkers: 0 122 | preserveTilesOutsideBounds: 0 123 | debug: 124 | m_Flags: 0 125 | m_NavMeshData: {fileID: 0} 126 | --- !u!1 &27251771 127 | GameObject: 128 | m_ObjectHideFlags: 0 129 | m_CorrespondingSourceObject: {fileID: 0} 130 | m_PrefabInstance: {fileID: 0} 131 | m_PrefabAsset: {fileID: 0} 132 | serializedVersion: 6 133 | m_Component: 134 | - component: {fileID: 27251774} 135 | - component: {fileID: 27251773} 136 | - component: {fileID: 27251772} 137 | m_Layer: 0 138 | m_Name: GameController 139 | m_TagString: Untagged 140 | m_Icon: {fileID: 0} 141 | m_NavMeshLayer: 0 142 | m_StaticEditorFlags: 0 143 | m_IsActive: 1 144 | --- !u!114 &27251772 145 | MonoBehaviour: 146 | m_ObjectHideFlags: 0 147 | m_CorrespondingSourceObject: {fileID: 0} 148 | m_PrefabInstance: {fileID: 0} 149 | m_PrefabAsset: {fileID: 0} 150 | m_GameObject: {fileID: 27251771} 151 | m_Enabled: 1 152 | m_EditorHideFlags: 0 153 | m_Script: {fileID: 11500000, guid: 8b30b5b4ea22f9348ab61fa34ed436f6, type: 3} 154 | m_Name: 155 | m_EditorClassIdentifier: 156 | --- !u!114 &27251773 157 | MonoBehaviour: 158 | m_ObjectHideFlags: 0 159 | m_CorrespondingSourceObject: {fileID: 0} 160 | m_PrefabInstance: {fileID: 0} 161 | m_PrefabAsset: {fileID: 0} 162 | m_GameObject: {fileID: 27251771} 163 | m_Enabled: 1 164 | m_EditorHideFlags: 0 165 | m_Script: {fileID: 11500000, guid: ab12582c09dc3054b84569c6e889d60b, type: 3} 166 | m_Name: 167 | m_EditorClassIdentifier: 168 | --- !u!4 &27251774 169 | Transform: 170 | m_ObjectHideFlags: 0 171 | m_CorrespondingSourceObject: {fileID: 0} 172 | m_PrefabInstance: {fileID: 0} 173 | m_PrefabAsset: {fileID: 0} 174 | m_GameObject: {fileID: 27251771} 175 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 176 | m_LocalPosition: {x: 0, y: 0, z: 0} 177 | m_LocalScale: {x: 1, y: 1, z: 1} 178 | m_Children: [] 179 | m_Father: {fileID: 0} 180 | m_RootOrder: 0 181 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 182 | --- !u!1 &195384397 183 | GameObject: 184 | m_ObjectHideFlags: 0 185 | m_CorrespondingSourceObject: {fileID: 0} 186 | m_PrefabInstance: {fileID: 0} 187 | m_PrefabAsset: {fileID: 0} 188 | serializedVersion: 6 189 | m_Component: 190 | - component: {fileID: 195384400} 191 | - component: {fileID: 195384399} 192 | - component: {fileID: 195384398} 193 | m_Layer: 0 194 | m_Name: Camera 195 | m_TagString: Untagged 196 | m_Icon: {fileID: 0} 197 | m_NavMeshLayer: 0 198 | m_StaticEditorFlags: 0 199 | m_IsActive: 1 200 | --- !u!81 &195384398 201 | AudioListener: 202 | m_ObjectHideFlags: 0 203 | m_CorrespondingSourceObject: {fileID: 0} 204 | m_PrefabInstance: {fileID: 0} 205 | m_PrefabAsset: {fileID: 0} 206 | m_GameObject: {fileID: 195384397} 207 | m_Enabled: 1 208 | --- !u!20 &195384399 209 | Camera: 210 | m_ObjectHideFlags: 0 211 | m_CorrespondingSourceObject: {fileID: 0} 212 | m_PrefabInstance: {fileID: 0} 213 | m_PrefabAsset: {fileID: 0} 214 | m_GameObject: {fileID: 195384397} 215 | m_Enabled: 1 216 | serializedVersion: 2 217 | m_ClearFlags: 2 218 | m_BackGroundColor: {r: 0, g: 0, b: 0, a: 0} 219 | m_projectionMatrixMode: 1 220 | m_GateFitMode: 2 221 | m_FOVAxisMode: 0 222 | m_SensorSize: {x: 36, y: 24} 223 | m_LensShift: {x: 0, y: 0} 224 | m_FocalLength: 50 225 | m_NormalizedViewPortRect: 226 | serializedVersion: 2 227 | x: 0 228 | y: 0 229 | width: 1 230 | height: 1 231 | near clip plane: 0.3 232 | far clip plane: 1000 233 | field of view: 60 234 | orthographic: 0 235 | orthographic size: 5 236 | m_Depth: 0 237 | m_CullingMask: 238 | serializedVersion: 2 239 | m_Bits: 4294967295 240 | m_RenderingPath: -1 241 | m_TargetTexture: {fileID: 0} 242 | m_TargetDisplay: 0 243 | m_TargetEye: 3 244 | m_HDR: 1 245 | m_AllowMSAA: 1 246 | m_AllowDynamicResolution: 0 247 | m_ForceIntoRT: 0 248 | m_OcclusionCulling: 1 249 | m_StereoConvergence: 10 250 | m_StereoSeparation: 0.022 251 | --- !u!4 &195384400 252 | Transform: 253 | m_ObjectHideFlags: 0 254 | m_CorrespondingSourceObject: {fileID: 0} 255 | m_PrefabInstance: {fileID: 0} 256 | m_PrefabAsset: {fileID: 0} 257 | m_GameObject: {fileID: 195384397} 258 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 259 | m_LocalPosition: {x: 0, y: 0, z: 0} 260 | m_LocalScale: {x: 1, y: 1, z: 1} 261 | m_Children: [] 262 | m_Father: {fileID: 0} 263 | m_RootOrder: 4 264 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 265 | --- !u!1 &263849028 266 | GameObject: 267 | m_ObjectHideFlags: 0 268 | m_CorrespondingSourceObject: {fileID: 0} 269 | m_PrefabInstance: {fileID: 0} 270 | m_PrefabAsset: {fileID: 0} 271 | serializedVersion: 6 272 | m_Component: 273 | - component: {fileID: 263849031} 274 | - component: {fileID: 263849029} 275 | m_Layer: 0 276 | m_Name: SpaceWarClient 277 | m_TagString: Untagged 278 | m_Icon: {fileID: 0} 279 | m_NavMeshLayer: 0 280 | m_StaticEditorFlags: 4294967295 281 | m_IsActive: 1 282 | --- !u!114 &263849029 283 | MonoBehaviour: 284 | m_ObjectHideFlags: 0 285 | m_CorrespondingSourceObject: {fileID: 0} 286 | m_PrefabInstance: {fileID: 0} 287 | m_PrefabAsset: {fileID: 0} 288 | m_GameObject: {fileID: 263849028} 289 | m_Enabled: 1 290 | m_EditorHideFlags: 0 291 | m_Script: {fileID: 11500000, guid: ea47b28f5b71c1a4aa42ce28fc4040fa, type: 3} 292 | m_Name: 293 | m_EditorClassIdentifier: 294 | --- !u!4 &263849031 295 | Transform: 296 | m_ObjectHideFlags: 0 297 | m_CorrespondingSourceObject: {fileID: 0} 298 | m_PrefabInstance: {fileID: 0} 299 | m_PrefabAsset: {fileID: 0} 300 | m_GameObject: {fileID: 263849028} 301 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 302 | m_LocalPosition: {x: 0, y: 0, z: 0} 303 | m_LocalScale: {x: 1, y: 1, z: 1} 304 | m_Children: [] 305 | m_Father: {fileID: 0} 306 | m_RootOrder: 1 307 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 308 | --- !u!850595691 &383260289 309 | LightingSettings: 310 | m_ObjectHideFlags: 0 311 | m_CorrespondingSourceObject: {fileID: 0} 312 | m_PrefabInstance: {fileID: 0} 313 | m_PrefabAsset: {fileID: 0} 314 | m_Name: Settings.lighting 315 | serializedVersion: 3 316 | m_GIWorkflowMode: 1 317 | m_EnableBakedLightmaps: 0 318 | m_EnableRealtimeLightmaps: 0 319 | m_RealtimeEnvironmentLighting: 1 320 | m_BounceScale: 1 321 | m_AlbedoBoost: 1 322 | m_IndirectOutputScale: 1 323 | m_UsingShadowmask: 0 324 | m_BakeBackend: 0 325 | m_LightmapMaxSize: 1024 326 | m_BakeResolution: 50 327 | m_Padding: 2 328 | m_TextureCompression: 0 329 | m_AO: 1 330 | m_AOMaxDistance: 1 331 | m_CompAOExponent: 1 332 | m_CompAOExponentDirect: 0 333 | m_ExtractAO: 0 334 | m_MixedBakeMode: 1 335 | m_LightmapsBakeMode: 1 336 | m_FilterMode: 1 337 | m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} 338 | m_ExportTrainingData: 0 339 | m_TrainingDataDestination: TrainingData 340 | m_RealtimeResolution: 1 341 | m_ForceWhiteAlbedo: 0 342 | m_ForceUpdates: 0 343 | m_FinalGather: 0 344 | m_FinalGatherRayCount: 256 345 | m_FinalGatherFiltering: 1 346 | m_PVRCulling: 1 347 | m_PVRSampling: 1 348 | m_PVRDirectSampleCount: 32 349 | m_PVRSampleCount: 500 350 | m_PVREnvironmentSampleCount: 500 351 | m_PVREnvironmentReferencePointCount: 2048 352 | m_LightProbeSampleCountMultiplier: 4 353 | m_PVRBounces: 2 354 | m_PVRMinBounces: 2 355 | m_PVREnvironmentMIS: 0 356 | m_PVRFilteringMode: 0 357 | m_PVRDenoiserTypeDirect: 0 358 | m_PVRDenoiserTypeIndirect: 0 359 | m_PVRDenoiserTypeAO: 0 360 | m_PVRFilterTypeDirect: 0 361 | m_PVRFilterTypeIndirect: 0 362 | m_PVRFilterTypeAO: 0 363 | m_PVRFilteringGaussRadiusDirect: 1 364 | m_PVRFilteringGaussRadiusIndirect: 5 365 | m_PVRFilteringGaussRadiusAO: 2 366 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 367 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 368 | m_PVRFilteringAtrousPositionSigmaAO: 1 369 | --- !u!1 &423347163 370 | GameObject: 371 | m_ObjectHideFlags: 0 372 | m_CorrespondingSourceObject: {fileID: 0} 373 | m_PrefabInstance: {fileID: 0} 374 | m_PrefabAsset: {fileID: 0} 375 | serializedVersion: 6 376 | m_Component: 377 | - component: {fileID: 423347165} 378 | - component: {fileID: 423347164} 379 | m_Layer: 0 380 | m_Name: SteamManager 381 | m_TagString: Untagged 382 | m_Icon: {fileID: 0} 383 | m_NavMeshLayer: 0 384 | m_StaticEditorFlags: 0 385 | m_IsActive: 1 386 | --- !u!114 &423347164 387 | MonoBehaviour: 388 | m_ObjectHideFlags: 0 389 | m_CorrespondingSourceObject: {fileID: 0} 390 | m_PrefabInstance: {fileID: 0} 391 | m_PrefabAsset: {fileID: 0} 392 | m_GameObject: {fileID: 423347163} 393 | m_Enabled: 1 394 | m_EditorHideFlags: 0 395 | m_Script: {fileID: 11500000, guid: ef4bffeda13d7a748973ff9204401c07, type: 3} 396 | m_Name: 397 | m_EditorClassIdentifier: 398 | --- !u!4 &423347165 399 | Transform: 400 | m_ObjectHideFlags: 0 401 | m_CorrespondingSourceObject: {fileID: 0} 402 | m_PrefabInstance: {fileID: 0} 403 | m_PrefabAsset: {fileID: 0} 404 | m_GameObject: {fileID: 423347163} 405 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 406 | m_LocalPosition: {x: 0, y: 0, z: 0} 407 | m_LocalScale: {x: 1, y: 1, z: 1} 408 | m_Children: [] 409 | m_Father: {fileID: 0} 410 | m_RootOrder: 3 411 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 412 | --- !u!1 &1525750544 413 | GameObject: 414 | m_ObjectHideFlags: 0 415 | m_CorrespondingSourceObject: {fileID: 0} 416 | m_PrefabInstance: {fileID: 0} 417 | m_PrefabAsset: {fileID: 0} 418 | serializedVersion: 6 419 | m_Component: 420 | - component: {fileID: 1525750546} 421 | - component: {fileID: 1525750545} 422 | m_Layer: 0 423 | m_Name: StatsAndAchievements 424 | m_TagString: Untagged 425 | m_Icon: {fileID: 0} 426 | m_NavMeshLayer: 0 427 | m_StaticEditorFlags: 0 428 | m_IsActive: 1 429 | --- !u!114 &1525750545 430 | MonoBehaviour: 431 | m_ObjectHideFlags: 0 432 | m_CorrespondingSourceObject: {fileID: 0} 433 | m_PrefabInstance: {fileID: 0} 434 | m_PrefabAsset: {fileID: 0} 435 | m_GameObject: {fileID: 1525750544} 436 | m_Enabled: 1 437 | m_EditorHideFlags: 0 438 | m_Script: {fileID: 11500000, guid: 3c7004c0b8a5d804d93f424946da4c18, type: 3} 439 | m_Name: 440 | m_EditorClassIdentifier: 441 | --- !u!4 &1525750546 442 | Transform: 443 | m_ObjectHideFlags: 0 444 | m_CorrespondingSourceObject: {fileID: 0} 445 | m_PrefabInstance: {fileID: 0} 446 | m_PrefabAsset: {fileID: 0} 447 | m_GameObject: {fileID: 1525750544} 448 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 449 | m_LocalPosition: {x: 0, y: 0, z: 0} 450 | m_LocalScale: {x: 1, y: 1, z: 1} 451 | m_Children: [] 452 | m_Father: {fileID: 0} 453 | m_RootOrder: 2 454 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 455 | -------------------------------------------------------------------------------- /Assets/Scenes/MainScene.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 78e0b7d85b18ea64bb3c762bdca6b80f 3 | DefaultImporter: 4 | userData: 5 | -------------------------------------------------------------------------------- /Assets/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 87f3b97192d61f540b381246fd497f84 3 | folderAsset: yes 4 | DefaultImporter: 5 | userData: 6 | -------------------------------------------------------------------------------- /Assets/Scripts/GameController.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 13d30bdedd60329478d572cc90986ab9 3 | folderAsset: yes 4 | DefaultImporter: 5 | userData: 6 | -------------------------------------------------------------------------------- /Assets/Scripts/GameController/Logger.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections.Generic; 3 | 4 | public class Logger : MonoBehaviour { 5 | #if !UNITY_EDITOR 6 | static Queue queue = new Queue(6); 7 | 8 | void OnEnable() { 9 | Application.logMessageReceived += HandleLog; 10 | } 11 | 12 | void OnDisable() { 13 | Application.logMessageReceived -= HandleLog; 14 | } 15 | 16 | void OnGUI() { 17 | GUILayout.BeginArea(new Rect(0, Screen.height - 140, Screen.width, 140)); 18 | foreach (string s in queue) { 19 | GUILayout.Label(s); 20 | } 21 | GUILayout.EndArea(); 22 | } 23 | 24 | void HandleLog(string message, string stackTrace, LogType type) { 25 | queue.Enqueue(Time.time + " - " + message); 26 | if (queue.Count > 5) { 27 | queue.Dequeue(); 28 | } 29 | } 30 | #endif 31 | } 32 | -------------------------------------------------------------------------------- /Assets/Scripts/GameController/Logger.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ab12582c09dc3054b84569c6e889d60b 3 | MonoImporter: 4 | serializedVersion: 2 5 | defaultReferences: [] 6 | executionOrder: 0 7 | icon: {instanceID: 0} 8 | userData: 9 | -------------------------------------------------------------------------------- /Assets/Scripts/GameController/QuitScript.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections; 3 | 4 | public class QuitScript : MonoBehaviour { 5 | void Update() { 6 | if (Input.GetKeyDown(KeyCode.Escape)) { 7 | Application.Quit(); 8 | return; 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Assets/Scripts/GameController/QuitScript.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8b30b5b4ea22f9348ab61fa34ed436f6 3 | MonoImporter: 4 | serializedVersion: 2 5 | defaultReferences: [] 6 | executionOrder: 0 7 | icon: {instanceID: 0} 8 | userData: 9 | -------------------------------------------------------------------------------- /Assets/Scripts/SpaceWarClient.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections; 3 | using Steamworks; 4 | 5 | // Enum for possible game states on the client 6 | enum EClientGameState { 7 | k_EClientGameActive, 8 | k_EClientGameWinner, 9 | k_EClientGameLoser, 10 | }; 11 | 12 | class SpaceWarClient : MonoBehaviour { 13 | SteamStatsAndAchievements m_StatsAndAchievements; 14 | 15 | private void OnEnable() { 16 | m_StatsAndAchievements = GameObject.FindObjectOfType(); 17 | 18 | m_StatsAndAchievements.OnGameStateChange(EClientGameState.k_EClientGameActive); 19 | } 20 | 21 | private void OnGUI() { 22 | m_StatsAndAchievements.Render(); 23 | GUILayout.Space(10); 24 | 25 | if(GUILayout.Button("Set State to Active")) { 26 | m_StatsAndAchievements.OnGameStateChange(EClientGameState.k_EClientGameActive); 27 | } 28 | if (GUILayout.Button("Set State to Winner")) { 29 | m_StatsAndAchievements.OnGameStateChange(EClientGameState.k_EClientGameWinner); 30 | } 31 | if (GUILayout.Button("Set State to Loser")) { 32 | m_StatsAndAchievements.OnGameStateChange(EClientGameState.k_EClientGameLoser); 33 | } 34 | if (GUILayout.Button("Add Distance Traveled +100")) { 35 | m_StatsAndAchievements.AddDistanceTraveled(100.0f); 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Assets/Scripts/SpaceWarClient.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ea47b28f5b71c1a4aa42ce28fc4040fa 3 | MonoImporter: 4 | serializedVersion: 2 5 | defaultReferences: [] 6 | executionOrder: 0 7 | icon: {instanceID: 0} 8 | userData: 9 | -------------------------------------------------------------------------------- /Assets/Scripts/SteamStatsAndAchievements.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections; 3 | using System.ComponentModel; 4 | using Steamworks; 5 | 6 | // This is a port of StatsAndAchievements.cpp from SpaceWar, the official Steamworks Example. 7 | class SteamStatsAndAchievements : MonoBehaviour { 8 | private enum Achievement : int { 9 | ACH_WIN_ONE_GAME, 10 | ACH_WIN_100_GAMES, 11 | ACH_HEAVY_FIRE, 12 | ACH_TRAVEL_FAR_ACCUM, 13 | ACH_TRAVEL_FAR_SINGLE, 14 | }; 15 | 16 | private Achievement_t[] m_Achievements = new Achievement_t[] { 17 | new Achievement_t(Achievement.ACH_WIN_ONE_GAME, "Winner", ""), 18 | new Achievement_t(Achievement.ACH_WIN_100_GAMES, "Champion", ""), 19 | new Achievement_t(Achievement.ACH_TRAVEL_FAR_ACCUM, "Interstellar", ""), 20 | new Achievement_t(Achievement.ACH_TRAVEL_FAR_SINGLE, "Orbiter", "") 21 | }; 22 | 23 | // Our GameID 24 | private CGameID m_GameID; 25 | 26 | // Did we get the stats from Steam? 27 | private bool m_bRequestedStats; 28 | private bool m_bStatsValid; 29 | 30 | // Should we store stats this frame? 31 | private bool m_bStoreStats; 32 | 33 | // Current Stat details 34 | private float m_flGameFeetTraveled; 35 | private float m_ulTickCountGameStart; 36 | private double m_flGameDurationSeconds; 37 | 38 | // Persisted Stat details 39 | private int m_nTotalGamesPlayed; 40 | private int m_nTotalNumWins; 41 | private int m_nTotalNumLosses; 42 | private float m_flTotalFeetTraveled; 43 | private float m_flMaxFeetTraveled; 44 | private float m_flAverageSpeed; 45 | 46 | protected Callback m_UserStatsReceived; 47 | protected Callback m_UserStatsStored; 48 | protected Callback m_UserAchievementStored; 49 | 50 | void OnEnable() { 51 | if (!SteamManager.Initialized) 52 | return; 53 | 54 | // Cache the GameID for use in the Callbacks 55 | m_GameID = new CGameID(SteamUtils.GetAppID()); 56 | 57 | m_UserStatsReceived = Callback.Create(OnUserStatsReceived); 58 | m_UserStatsStored = Callback.Create(OnUserStatsStored); 59 | m_UserAchievementStored = Callback.Create(OnAchievementStored); 60 | 61 | // These need to be reset to get the stats upon an Assembly reload in the Editor. 62 | m_bRequestedStats = false; 63 | m_bStatsValid = false; 64 | } 65 | 66 | private void Update() { 67 | if (!SteamManager.Initialized) 68 | return; 69 | 70 | if (!m_bRequestedStats) { 71 | // Is Steam Loaded? if no, can't get stats, done 72 | if (!SteamManager.Initialized) { 73 | m_bRequestedStats = true; 74 | return; 75 | } 76 | 77 | // If yes, request our stats 78 | bool bSuccess = SteamUserStats.RequestCurrentStats(); 79 | 80 | // This function should only return false if we weren't logged in, and we already checked that. 81 | // But handle it being false again anyway, just ask again later. 82 | m_bRequestedStats = bSuccess; 83 | } 84 | 85 | if (!m_bStatsValid) 86 | return; 87 | 88 | // Get info from sources 89 | 90 | // Evaluate achievements 91 | foreach (Achievement_t achievement in m_Achievements) { 92 | if (achievement.m_bAchieved) 93 | continue; 94 | 95 | switch (achievement.m_eAchievementID) { 96 | case Achievement.ACH_WIN_ONE_GAME: 97 | if (m_nTotalNumWins != 0) { 98 | UnlockAchievement(achievement); 99 | } 100 | break; 101 | case Achievement.ACH_WIN_100_GAMES: 102 | if (m_nTotalNumWins >= 100) { 103 | UnlockAchievement(achievement); 104 | } 105 | break; 106 | case Achievement.ACH_TRAVEL_FAR_ACCUM: 107 | if (m_flTotalFeetTraveled >= 5280) { 108 | UnlockAchievement(achievement); 109 | } 110 | break; 111 | case Achievement.ACH_TRAVEL_FAR_SINGLE: 112 | if (m_flGameFeetTraveled >= 500) { 113 | UnlockAchievement(achievement); 114 | } 115 | break; 116 | } 117 | } 118 | 119 | //Store stats in the Steam database if necessary 120 | if (m_bStoreStats) { 121 | // already set any achievements in UnlockAchievement 122 | 123 | // set stats 124 | SteamUserStats.SetStat("NumGames", m_nTotalGamesPlayed); 125 | SteamUserStats.SetStat("NumWins", m_nTotalNumWins); 126 | SteamUserStats.SetStat("NumLosses", m_nTotalNumLosses); 127 | SteamUserStats.SetStat("FeetTraveled", m_flTotalFeetTraveled); 128 | SteamUserStats.SetStat("MaxFeetTraveled", m_flMaxFeetTraveled); 129 | // Update average feet / second stat 130 | SteamUserStats.UpdateAvgRateStat("AverageSpeed", m_flGameFeetTraveled, m_flGameDurationSeconds); 131 | // The averaged result is calculated for us 132 | SteamUserStats.GetStat("AverageSpeed", out m_flAverageSpeed); 133 | 134 | bool bSuccess = SteamUserStats.StoreStats(); 135 | // If this failed, we never sent anything to the server, try 136 | // again later. 137 | m_bStoreStats = !bSuccess; 138 | } 139 | } 140 | 141 | //----------------------------------------------------------------------------- 142 | // Purpose: Accumulate distance traveled 143 | //----------------------------------------------------------------------------- 144 | public void AddDistanceTraveled(float flDistance) { 145 | m_flGameFeetTraveled += flDistance; 146 | } 147 | 148 | //----------------------------------------------------------------------------- 149 | // Purpose: Game state has changed 150 | //----------------------------------------------------------------------------- 151 | public void OnGameStateChange(EClientGameState eNewState) { 152 | if (!m_bStatsValid) 153 | return; 154 | 155 | if (eNewState == EClientGameState.k_EClientGameActive) { 156 | // Reset per-game stats 157 | m_flGameFeetTraveled = 0; 158 | m_ulTickCountGameStart = Time.time; 159 | } 160 | else if (eNewState == EClientGameState.k_EClientGameWinner || eNewState == EClientGameState.k_EClientGameLoser) { 161 | if (eNewState == EClientGameState.k_EClientGameWinner) { 162 | m_nTotalNumWins++; 163 | } 164 | else { 165 | m_nTotalNumLosses++; 166 | } 167 | 168 | // Tally games 169 | m_nTotalGamesPlayed++; 170 | 171 | // Accumulate distances 172 | m_flTotalFeetTraveled += m_flGameFeetTraveled; 173 | 174 | // New max? 175 | if (m_flGameFeetTraveled > m_flMaxFeetTraveled) 176 | m_flMaxFeetTraveled = m_flGameFeetTraveled; 177 | 178 | // Calc game duration 179 | m_flGameDurationSeconds = Time.time - m_ulTickCountGameStart; 180 | 181 | // We want to update stats the next frame. 182 | m_bStoreStats = true; 183 | } 184 | } 185 | 186 | //----------------------------------------------------------------------------- 187 | // Purpose: Unlock this achievement 188 | //----------------------------------------------------------------------------- 189 | private void UnlockAchievement(Achievement_t achievement) { 190 | achievement.m_bAchieved = true; 191 | 192 | // the icon may change once it's unlocked 193 | //achievement.m_iIconImage = 0; 194 | 195 | // mark it down 196 | SteamUserStats.SetAchievement(achievement.m_eAchievementID.ToString()); 197 | 198 | // Store stats end of frame 199 | m_bStoreStats = true; 200 | } 201 | 202 | //----------------------------------------------------------------------------- 203 | // Purpose: We have stats data from Steam. It is authoritative, so update 204 | // our data with those results now. 205 | //----------------------------------------------------------------------------- 206 | private void OnUserStatsReceived(UserStatsReceived_t pCallback) { 207 | if (!SteamManager.Initialized) 208 | return; 209 | 210 | // we may get callbacks for other games' stats arriving, ignore them 211 | if ((ulong)m_GameID == pCallback.m_nGameID) { 212 | if (EResult.k_EResultOK == pCallback.m_eResult) { 213 | Debug.Log("Received stats and achievements from Steam\n"); 214 | 215 | m_bStatsValid = true; 216 | 217 | // load achievements 218 | foreach (Achievement_t ach in m_Achievements) { 219 | bool ret = SteamUserStats.GetAchievement(ach.m_eAchievementID.ToString(), out ach.m_bAchieved); 220 | if (ret) { 221 | ach.m_strName = SteamUserStats.GetAchievementDisplayAttribute(ach.m_eAchievementID.ToString(), "name"); 222 | ach.m_strDescription = SteamUserStats.GetAchievementDisplayAttribute(ach.m_eAchievementID.ToString(), "desc"); 223 | } 224 | else { 225 | Debug.LogWarning("SteamUserStats.GetAchievement failed for Achievement " + ach.m_eAchievementID + "\nIs it registered in the Steam Partner site?"); 226 | } 227 | } 228 | 229 | // load stats 230 | SteamUserStats.GetStat("NumGames", out m_nTotalGamesPlayed); 231 | SteamUserStats.GetStat("NumWins", out m_nTotalNumWins); 232 | SteamUserStats.GetStat("NumLosses", out m_nTotalNumLosses); 233 | SteamUserStats.GetStat("FeetTraveled", out m_flTotalFeetTraveled); 234 | SteamUserStats.GetStat("MaxFeetTraveled", out m_flMaxFeetTraveled); 235 | SteamUserStats.GetStat("AverageSpeed", out m_flAverageSpeed); 236 | } 237 | else { 238 | Debug.Log("RequestStats - failed, " + pCallback.m_eResult); 239 | } 240 | } 241 | } 242 | 243 | //----------------------------------------------------------------------------- 244 | // Purpose: Our stats data was stored! 245 | //----------------------------------------------------------------------------- 246 | private void OnUserStatsStored(UserStatsStored_t pCallback) { 247 | // we may get callbacks for other games' stats arriving, ignore them 248 | if ((ulong)m_GameID == pCallback.m_nGameID) { 249 | if (EResult.k_EResultOK == pCallback.m_eResult) { 250 | Debug.Log("StoreStats - success"); 251 | } 252 | else if (EResult.k_EResultInvalidParam == pCallback.m_eResult) { 253 | // One or more stats we set broke a constraint. They've been reverted, 254 | // and we should re-iterate the values now to keep in sync. 255 | Debug.Log("StoreStats - some failed to validate"); 256 | // Fake up a callback here so that we re-load the values. 257 | UserStatsReceived_t callback = new UserStatsReceived_t(); 258 | callback.m_eResult = EResult.k_EResultOK; 259 | callback.m_nGameID = (ulong)m_GameID; 260 | OnUserStatsReceived(callback); 261 | } 262 | else { 263 | Debug.Log("StoreStats - failed, " + pCallback.m_eResult); 264 | } 265 | } 266 | } 267 | 268 | //----------------------------------------------------------------------------- 269 | // Purpose: An achievement was stored 270 | //----------------------------------------------------------------------------- 271 | private void OnAchievementStored(UserAchievementStored_t pCallback) { 272 | // We may get callbacks for other games' stats arriving, ignore them 273 | if ((ulong)m_GameID == pCallback.m_nGameID) { 274 | if (0 == pCallback.m_nMaxProgress) { 275 | Debug.Log("Achievement '" + pCallback.m_rgchAchievementName + "' unlocked!"); 276 | } 277 | else { 278 | Debug.Log("Achievement '" + pCallback.m_rgchAchievementName + "' progress callback, (" + pCallback.m_nCurProgress + "," + pCallback.m_nMaxProgress + ")"); 279 | } 280 | } 281 | } 282 | 283 | //----------------------------------------------------------------------------- 284 | // Purpose: Display the user's stats and achievements 285 | //----------------------------------------------------------------------------- 286 | public void Render() { 287 | if (!SteamManager.Initialized) { 288 | GUILayout.Label("Steamworks not Initialized"); 289 | return; 290 | } 291 | 292 | GUILayout.Label("m_ulTickCountGameStart: " + m_ulTickCountGameStart); 293 | GUILayout.Label("m_flGameDurationSeconds: " + m_flGameDurationSeconds); 294 | GUILayout.Label("m_flGameFeetTraveled: " + m_flGameFeetTraveled); 295 | GUILayout.Space(10); 296 | GUILayout.Label("NumGames: " + m_nTotalGamesPlayed); 297 | GUILayout.Label("NumWins: " + m_nTotalNumWins); 298 | GUILayout.Label("NumLosses: " + m_nTotalNumLosses); 299 | GUILayout.Label("FeetTraveled: " + m_flTotalFeetTraveled); 300 | GUILayout.Label("MaxFeetTraveled: " + m_flMaxFeetTraveled); 301 | GUILayout.Label("AverageSpeed: " + m_flAverageSpeed); 302 | 303 | GUILayout.BeginArea(new Rect(Screen.width - 300, 0, 300, 800)); 304 | foreach(Achievement_t ach in m_Achievements) { 305 | GUILayout.Label(ach.m_eAchievementID.ToString()); 306 | GUILayout.Label(ach.m_strName + " - " + ach.m_strDescription); 307 | GUILayout.Label("Achieved: " + ach.m_bAchieved); 308 | GUILayout.Space(20); 309 | } 310 | 311 | // FOR TESTING PURPOSES ONLY! 312 | if (GUILayout.Button("RESET STATS AND ACHIEVEMENTS")) { 313 | SteamUserStats.ResetAllStats(true); 314 | SteamUserStats.RequestCurrentStats(); 315 | OnGameStateChange(EClientGameState.k_EClientGameActive); 316 | } 317 | GUILayout.EndArea(); 318 | } 319 | 320 | private class Achievement_t { 321 | public Achievement m_eAchievementID; 322 | public string m_strName; 323 | public string m_strDescription; 324 | public bool m_bAchieved; 325 | 326 | /// 327 | /// Creates an Achievement. You must also mirror the data provided here in https://partner.steamgames.com/apps/achievements/yourappid 328 | /// 329 | /// The "API Name Progress Stat" used to uniquely identify the achievement. 330 | /// The "Display Name" that will be shown to players in game and on the Steam Community. 331 | /// The "Description" that will be shown to players in game and on the Steam Community. 332 | public Achievement_t(Achievement achievementID, string name, string desc) { 333 | m_eAchievementID = achievementID; 334 | m_strName = name; 335 | m_strDescription = desc; 336 | m_bAchieved = false; 337 | } 338 | } 339 | } 340 | -------------------------------------------------------------------------------- /Assets/Scripts/SteamStatsAndAchievements.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3c7004c0b8a5d804d93f424946da4c18 3 | MonoImporter: 4 | serializedVersion: 2 5 | defaultReferences: [] 6 | executionOrder: 0 7 | icon: {instanceID: 0} 8 | userData: 9 | -------------------------------------------------------------------------------- /Assets/Scripts/Steamworks.NET.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a90117251854fed498bab6075c0bd75d 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scripts/Steamworks.NET/SteamManager.cs: -------------------------------------------------------------------------------- 1 | // The SteamManager is designed to work with Steamworks.NET 2 | // This file is released into the public domain. 3 | // Where that dedication is not recognized you are granted a perpetual, 4 | // irrevocable license to copy and modify this file as you see fit. 5 | // 6 | // Version: 1.0.13 7 | 8 | #if !(UNITY_STANDALONE_WIN || UNITY_STANDALONE_LINUX || UNITY_STANDALONE_OSX || STEAMWORKS_WIN || STEAMWORKS_LIN_OSX) 9 | #define DISABLESTEAMWORKS 10 | #endif 11 | 12 | using UnityEngine; 13 | #if !DISABLESTEAMWORKS 14 | using System.Collections; 15 | using Steamworks; 16 | #endif 17 | 18 | // 19 | // The SteamManager provides a base implementation of Steamworks.NET on which you can build upon. 20 | // It handles the basics of starting up and shutting down the SteamAPI for use. 21 | // 22 | [DisallowMultipleComponent] 23 | public class SteamManager : MonoBehaviour { 24 | #if !DISABLESTEAMWORKS 25 | protected static bool s_EverInitialized = false; 26 | 27 | protected static SteamManager s_instance; 28 | protected static SteamManager Instance { 29 | get { 30 | if (s_instance == null) { 31 | return new GameObject("SteamManager").AddComponent(); 32 | } 33 | else { 34 | return s_instance; 35 | } 36 | } 37 | } 38 | 39 | protected bool m_bInitialized = false; 40 | public static bool Initialized { 41 | get { 42 | return Instance.m_bInitialized; 43 | } 44 | } 45 | 46 | protected SteamAPIWarningMessageHook_t m_SteamAPIWarningMessageHook; 47 | 48 | [AOT.MonoPInvokeCallback(typeof(SteamAPIWarningMessageHook_t))] 49 | protected static void SteamAPIDebugTextHook(int nSeverity, System.Text.StringBuilder pchDebugText) { 50 | Debug.LogWarning(pchDebugText); 51 | } 52 | 53 | #if UNITY_2019_3_OR_NEWER 54 | // In case of disabled Domain Reload, reset static members before entering Play Mode. 55 | [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)] 56 | private static void InitOnPlayMode() 57 | { 58 | s_EverInitialized = false; 59 | s_instance = null; 60 | } 61 | #endif 62 | 63 | protected virtual void Awake() { 64 | // Only one instance of SteamManager at a time! 65 | if (s_instance != null) { 66 | Destroy(gameObject); 67 | return; 68 | } 69 | s_instance = this; 70 | 71 | if(s_EverInitialized) { 72 | // This is almost always an error. 73 | // The most common case where this happens is when SteamManager gets destroyed because of Application.Quit(), 74 | // and then some Steamworks code in some other OnDestroy gets called afterwards, creating a new SteamManager. 75 | // You should never call Steamworks functions in OnDestroy, always prefer OnDisable if possible. 76 | throw new System.Exception("Tried to Initialize the SteamAPI twice in one session!"); 77 | } 78 | 79 | // We want our SteamManager Instance to persist across scenes. 80 | DontDestroyOnLoad(gameObject); 81 | 82 | if (!Packsize.Test()) { 83 | Debug.LogError("[Steamworks.NET] Packsize Test returned false, the wrong version of Steamworks.NET is being run in this platform.", this); 84 | } 85 | 86 | if (!DllCheck.Test()) { 87 | Debug.LogError("[Steamworks.NET] DllCheck Test returned false, One or more of the Steamworks binaries seems to be the wrong version.", this); 88 | } 89 | 90 | try { 91 | // If Steam is not running or the game wasn't started through Steam, SteamAPI_RestartAppIfNecessary starts the 92 | // Steam client and also launches this game again if the User owns it. This can act as a rudimentary form of DRM. 93 | // Note that this will run which ever version you have installed in steam. Which may not be the precise executable 94 | // we were currently running. 95 | 96 | // Once you get a Steam AppID assigned by Valve, you need to replace AppId_t.Invalid with it and 97 | // remove steam_appid.txt from the game depot. eg: "(AppId_t)480" or "new AppId_t(480)". 98 | // See the Valve documentation for more information: https://partner.steamgames.com/doc/sdk/api#initialization_and_shutdown 99 | if (SteamAPI.RestartAppIfNecessary(AppId_t.Invalid)) { 100 | Debug.Log("[Steamworks.NET] Shutting down because RestartAppIfNecessary returned true. Steam will restart the application."); 101 | 102 | Application.Quit(); 103 | return; 104 | } 105 | } 106 | catch (System.DllNotFoundException e) { // We catch this exception here, as it will be the first occurrence of it. 107 | Debug.LogError("[Steamworks.NET] Could not load [lib]steam_api.dll/so/dylib. It's likely not in the correct location. Refer to the README for more details.\n" + e, this); 108 | 109 | Application.Quit(); 110 | return; 111 | } 112 | 113 | // Initializes the Steamworks API. 114 | // If this returns false then this indicates one of the following conditions: 115 | // [*] The Steam client isn't running. A running Steam client is required to provide implementations of the various Steamworks interfaces. 116 | // [*] The Steam client couldn't determine the App ID of game. If you're running your application from the executable or debugger directly then you must have a [code-inline]steam_appid.txt[/code-inline] in your game directory next to the executable, with your app ID in it and nothing else. Steam will look for this file in the current working directory. If you are running your executable from a different directory you may need to relocate the [code-inline]steam_appid.txt[/code-inline] file. 117 | // [*] Your application is not running under the same OS user context as the Steam client, such as a different user or administration access level. 118 | // [*] Ensure that you own a license for the App ID on the currently active Steam account. Your game must show up in your Steam library. 119 | // [*] Your App ID is not completely set up, i.e. in Release State: Unavailable, or it's missing default packages. 120 | // Valve's documentation for this is located here: 121 | // https://partner.steamgames.com/doc/sdk/api#initialization_and_shutdown 122 | m_bInitialized = SteamAPI.Init(); 123 | if (!m_bInitialized) { 124 | Debug.LogError("[Steamworks.NET] SteamAPI_Init() failed. Refer to Valve's documentation or the comment above this line for more information.", this); 125 | 126 | return; 127 | } 128 | 129 | s_EverInitialized = true; 130 | } 131 | 132 | // This should only ever get called on first load and after an Assembly reload, You should never Disable the Steamworks Manager yourself. 133 | protected virtual void OnEnable() { 134 | if (s_instance == null) { 135 | s_instance = this; 136 | } 137 | 138 | if (!m_bInitialized) { 139 | return; 140 | } 141 | 142 | if (m_SteamAPIWarningMessageHook == null) { 143 | // Set up our callback to receive warning messages from Steam. 144 | // You must launch with "-debug_steamapi" in the launch args to receive warnings. 145 | m_SteamAPIWarningMessageHook = new SteamAPIWarningMessageHook_t(SteamAPIDebugTextHook); 146 | SteamClient.SetWarningMessageHook(m_SteamAPIWarningMessageHook); 147 | } 148 | } 149 | 150 | // OnApplicationQuit gets called too early to shutdown the SteamAPI. 151 | // Because the SteamManager should be persistent and never disabled or destroyed we can shutdown the SteamAPI here. 152 | // Thus it is not recommended to perform any Steamworks work in other OnDestroy functions as the order of execution can not be garenteed upon Shutdown. Prefer OnDisable(). 153 | protected virtual void OnDestroy() { 154 | if (s_instance != this) { 155 | return; 156 | } 157 | 158 | s_instance = null; 159 | 160 | if (!m_bInitialized) { 161 | return; 162 | } 163 | 164 | SteamAPI.Shutdown(); 165 | } 166 | 167 | protected virtual void Update() { 168 | if (!m_bInitialized) { 169 | return; 170 | } 171 | 172 | // Run Steam client callbacks 173 | SteamAPI.RunCallbacks(); 174 | } 175 | #else 176 | public static bool Initialized { 177 | get { 178 | return false; 179 | } 180 | } 181 | #endif // !DISABLESTEAMWORKS 182 | } 183 | -------------------------------------------------------------------------------- /Assets/Scripts/Steamworks.NET/SteamManager.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ef4bffeda13d7a748973ff9204401c07 3 | MonoImporter: 4 | serializedVersion: 2 5 | defaultReferences: [] 6 | executionOrder: 0 7 | icon: {instanceID: 0} 8 | userData: 9 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | This is free and unencumbered software released into the public domain. 2 | 3 | Anyone is free to copy, modify, publish, use, compile, sell, or 4 | distribute this software, either in source code form or as a compiled 5 | binary, for any purpose, commercial or non-commercial, and by any 6 | means. 7 | 8 | In jurisdictions that recognize copyright laws, the author or authors 9 | of this software dedicate any and all copyright interest in the 10 | software to the public domain. We make this dedication for the benefit 11 | of the public at large and to the detriment of our heirs and 12 | successors. We intend this dedication to be an overt act of 13 | relinquishment in perpetuity of all present and future rights to this 14 | software under copyright law. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19 | IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR 20 | OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 21 | ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | OTHER DEALINGS IN THE SOFTWARE. 23 | 24 | For more information, please refer to -------------------------------------------------------------------------------- /Packages/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.rlabrecque.steamworks.net": "https://github.com/rlabrecque/Steamworks.NET.git?path=/com.rlabrecque.steamworks.net", 4 | "com.unity.ide.rider": "3.0.12", 5 | "com.unity.ide.visualstudio": "2.0.15", 6 | "com.unity.ide.vscode": "1.2.5", 7 | "com.unity.toolchain.win-x86_64-linux-x86_64": "1.0.0", 8 | "com.unity.modules.ai": "1.0.0", 9 | "com.unity.modules.androidjni": "1.0.0", 10 | "com.unity.modules.animation": "1.0.0", 11 | "com.unity.modules.assetbundle": "1.0.0", 12 | "com.unity.modules.audio": "1.0.0", 13 | "com.unity.modules.cloth": "1.0.0", 14 | "com.unity.modules.director": "1.0.0", 15 | "com.unity.modules.imageconversion": "1.0.0", 16 | "com.unity.modules.imgui": "1.0.0", 17 | "com.unity.modules.jsonserialize": "1.0.0", 18 | "com.unity.modules.particlesystem": "1.0.0", 19 | "com.unity.modules.physics": "1.0.0", 20 | "com.unity.modules.physics2d": "1.0.0", 21 | "com.unity.modules.screencapture": "1.0.0", 22 | "com.unity.modules.terrain": "1.0.0", 23 | "com.unity.modules.terrainphysics": "1.0.0", 24 | "com.unity.modules.tilemap": "1.0.0", 25 | "com.unity.modules.ui": "1.0.0", 26 | "com.unity.modules.uielements": "1.0.0", 27 | "com.unity.modules.umbra": "1.0.0", 28 | "com.unity.modules.unityanalytics": "1.0.0", 29 | "com.unity.modules.unitywebrequest": "1.0.0", 30 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 31 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 32 | "com.unity.modules.unitywebrequesttexture": "1.0.0", 33 | "com.unity.modules.unitywebrequestwww": "1.0.0", 34 | "com.unity.modules.vehicles": "1.0.0", 35 | "com.unity.modules.video": "1.0.0", 36 | "com.unity.modules.vr": "1.0.0", 37 | "com.unity.modules.wind": "1.0.0", 38 | "com.unity.modules.xr": "1.0.0" 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /Packages/packages-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.rlabrecque.steamworks.net": { 4 | "version": "https://github.com/rlabrecque/Steamworks.NET.git?path=/com.rlabrecque.steamworks.net", 5 | "depth": 0, 6 | "source": "git", 7 | "dependencies": {}, 8 | "hash": "4a54dc77a56fa37f195e5344422cff30a2805f3c" 9 | }, 10 | "com.unity.ext.nunit": { 11 | "version": "1.0.6", 12 | "depth": 1, 13 | "source": "registry", 14 | "dependencies": {}, 15 | "url": "https://packages.unity.com" 16 | }, 17 | "com.unity.ide.rider": { 18 | "version": "3.0.12", 19 | "depth": 0, 20 | "source": "registry", 21 | "dependencies": { 22 | "com.unity.ext.nunit": "1.0.6" 23 | }, 24 | "url": "https://packages.unity.com" 25 | }, 26 | "com.unity.ide.visualstudio": { 27 | "version": "2.0.15", 28 | "depth": 0, 29 | "source": "registry", 30 | "dependencies": { 31 | "com.unity.test-framework": "1.1.9" 32 | }, 33 | "url": "https://packages.unity.com" 34 | }, 35 | "com.unity.ide.vscode": { 36 | "version": "1.2.5", 37 | "depth": 0, 38 | "source": "registry", 39 | "dependencies": {}, 40 | "url": "https://packages.unity.com" 41 | }, 42 | "com.unity.sysroot": { 43 | "version": "1.0.0", 44 | "depth": 1, 45 | "source": "registry", 46 | "dependencies": {}, 47 | "url": "https://packages.unity.com" 48 | }, 49 | "com.unity.sysroot.linux-x86_64": { 50 | "version": "1.0.0", 51 | "depth": 1, 52 | "source": "registry", 53 | "dependencies": { 54 | "com.unity.sysroot": "1.0.0" 55 | }, 56 | "url": "https://packages.unity.com" 57 | }, 58 | "com.unity.test-framework": { 59 | "version": "1.1.31", 60 | "depth": 1, 61 | "source": "registry", 62 | "dependencies": { 63 | "com.unity.ext.nunit": "1.0.6", 64 | "com.unity.modules.imgui": "1.0.0", 65 | "com.unity.modules.jsonserialize": "1.0.0" 66 | }, 67 | "url": "https://packages.unity.com" 68 | }, 69 | "com.unity.toolchain.win-x86_64-linux-x86_64": { 70 | "version": "1.0.0", 71 | "depth": 0, 72 | "source": "registry", 73 | "dependencies": { 74 | "com.unity.sysroot": "1.0.0", 75 | "com.unity.sysroot.linux-x86_64": "1.0.0" 76 | }, 77 | "url": "https://packages.unity.com" 78 | }, 79 | "com.unity.modules.ai": { 80 | "version": "1.0.0", 81 | "depth": 0, 82 | "source": "builtin", 83 | "dependencies": {} 84 | }, 85 | "com.unity.modules.androidjni": { 86 | "version": "1.0.0", 87 | "depth": 0, 88 | "source": "builtin", 89 | "dependencies": {} 90 | }, 91 | "com.unity.modules.animation": { 92 | "version": "1.0.0", 93 | "depth": 0, 94 | "source": "builtin", 95 | "dependencies": {} 96 | }, 97 | "com.unity.modules.assetbundle": { 98 | "version": "1.0.0", 99 | "depth": 0, 100 | "source": "builtin", 101 | "dependencies": {} 102 | }, 103 | "com.unity.modules.audio": { 104 | "version": "1.0.0", 105 | "depth": 0, 106 | "source": "builtin", 107 | "dependencies": {} 108 | }, 109 | "com.unity.modules.cloth": { 110 | "version": "1.0.0", 111 | "depth": 0, 112 | "source": "builtin", 113 | "dependencies": { 114 | "com.unity.modules.physics": "1.0.0" 115 | } 116 | }, 117 | "com.unity.modules.director": { 118 | "version": "1.0.0", 119 | "depth": 0, 120 | "source": "builtin", 121 | "dependencies": { 122 | "com.unity.modules.audio": "1.0.0", 123 | "com.unity.modules.animation": "1.0.0" 124 | } 125 | }, 126 | "com.unity.modules.imageconversion": { 127 | "version": "1.0.0", 128 | "depth": 0, 129 | "source": "builtin", 130 | "dependencies": {} 131 | }, 132 | "com.unity.modules.imgui": { 133 | "version": "1.0.0", 134 | "depth": 0, 135 | "source": "builtin", 136 | "dependencies": {} 137 | }, 138 | "com.unity.modules.jsonserialize": { 139 | "version": "1.0.0", 140 | "depth": 0, 141 | "source": "builtin", 142 | "dependencies": {} 143 | }, 144 | "com.unity.modules.particlesystem": { 145 | "version": "1.0.0", 146 | "depth": 0, 147 | "source": "builtin", 148 | "dependencies": {} 149 | }, 150 | "com.unity.modules.physics": { 151 | "version": "1.0.0", 152 | "depth": 0, 153 | "source": "builtin", 154 | "dependencies": {} 155 | }, 156 | "com.unity.modules.physics2d": { 157 | "version": "1.0.0", 158 | "depth": 0, 159 | "source": "builtin", 160 | "dependencies": {} 161 | }, 162 | "com.unity.modules.screencapture": { 163 | "version": "1.0.0", 164 | "depth": 0, 165 | "source": "builtin", 166 | "dependencies": { 167 | "com.unity.modules.imageconversion": "1.0.0" 168 | } 169 | }, 170 | "com.unity.modules.subsystems": { 171 | "version": "1.0.0", 172 | "depth": 1, 173 | "source": "builtin", 174 | "dependencies": { 175 | "com.unity.modules.jsonserialize": "1.0.0" 176 | } 177 | }, 178 | "com.unity.modules.terrain": { 179 | "version": "1.0.0", 180 | "depth": 0, 181 | "source": "builtin", 182 | "dependencies": {} 183 | }, 184 | "com.unity.modules.terrainphysics": { 185 | "version": "1.0.0", 186 | "depth": 0, 187 | "source": "builtin", 188 | "dependencies": { 189 | "com.unity.modules.physics": "1.0.0", 190 | "com.unity.modules.terrain": "1.0.0" 191 | } 192 | }, 193 | "com.unity.modules.tilemap": { 194 | "version": "1.0.0", 195 | "depth": 0, 196 | "source": "builtin", 197 | "dependencies": { 198 | "com.unity.modules.physics2d": "1.0.0" 199 | } 200 | }, 201 | "com.unity.modules.ui": { 202 | "version": "1.0.0", 203 | "depth": 0, 204 | "source": "builtin", 205 | "dependencies": {} 206 | }, 207 | "com.unity.modules.uielements": { 208 | "version": "1.0.0", 209 | "depth": 0, 210 | "source": "builtin", 211 | "dependencies": { 212 | "com.unity.modules.imgui": "1.0.0", 213 | "com.unity.modules.jsonserialize": "1.0.0" 214 | } 215 | }, 216 | "com.unity.modules.umbra": { 217 | "version": "1.0.0", 218 | "depth": 0, 219 | "source": "builtin", 220 | "dependencies": {} 221 | }, 222 | "com.unity.modules.unityanalytics": { 223 | "version": "1.0.0", 224 | "depth": 0, 225 | "source": "builtin", 226 | "dependencies": { 227 | "com.unity.modules.unitywebrequest": "1.0.0", 228 | "com.unity.modules.jsonserialize": "1.0.0" 229 | } 230 | }, 231 | "com.unity.modules.unitywebrequest": { 232 | "version": "1.0.0", 233 | "depth": 0, 234 | "source": "builtin", 235 | "dependencies": {} 236 | }, 237 | "com.unity.modules.unitywebrequestassetbundle": { 238 | "version": "1.0.0", 239 | "depth": 0, 240 | "source": "builtin", 241 | "dependencies": { 242 | "com.unity.modules.assetbundle": "1.0.0", 243 | "com.unity.modules.unitywebrequest": "1.0.0" 244 | } 245 | }, 246 | "com.unity.modules.unitywebrequestaudio": { 247 | "version": "1.0.0", 248 | "depth": 0, 249 | "source": "builtin", 250 | "dependencies": { 251 | "com.unity.modules.unitywebrequest": "1.0.0", 252 | "com.unity.modules.audio": "1.0.0" 253 | } 254 | }, 255 | "com.unity.modules.unitywebrequesttexture": { 256 | "version": "1.0.0", 257 | "depth": 0, 258 | "source": "builtin", 259 | "dependencies": { 260 | "com.unity.modules.unitywebrequest": "1.0.0", 261 | "com.unity.modules.imageconversion": "1.0.0" 262 | } 263 | }, 264 | "com.unity.modules.unitywebrequestwww": { 265 | "version": "1.0.0", 266 | "depth": 0, 267 | "source": "builtin", 268 | "dependencies": { 269 | "com.unity.modules.unitywebrequest": "1.0.0", 270 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 271 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 272 | "com.unity.modules.audio": "1.0.0", 273 | "com.unity.modules.assetbundle": "1.0.0", 274 | "com.unity.modules.imageconversion": "1.0.0" 275 | } 276 | }, 277 | "com.unity.modules.vehicles": { 278 | "version": "1.0.0", 279 | "depth": 0, 280 | "source": "builtin", 281 | "dependencies": { 282 | "com.unity.modules.physics": "1.0.0" 283 | } 284 | }, 285 | "com.unity.modules.video": { 286 | "version": "1.0.0", 287 | "depth": 0, 288 | "source": "builtin", 289 | "dependencies": { 290 | "com.unity.modules.audio": "1.0.0", 291 | "com.unity.modules.ui": "1.0.0", 292 | "com.unity.modules.unitywebrequest": "1.0.0" 293 | } 294 | }, 295 | "com.unity.modules.vr": { 296 | "version": "1.0.0", 297 | "depth": 0, 298 | "source": "builtin", 299 | "dependencies": { 300 | "com.unity.modules.jsonserialize": "1.0.0", 301 | "com.unity.modules.physics": "1.0.0", 302 | "com.unity.modules.xr": "1.0.0" 303 | } 304 | }, 305 | "com.unity.modules.wind": { 306 | "version": "1.0.0", 307 | "depth": 0, 308 | "source": "builtin", 309 | "dependencies": {} 310 | }, 311 | "com.unity.modules.xr": { 312 | "version": "1.0.0", 313 | "depth": 0, 314 | "source": "builtin", 315 | "dependencies": { 316 | "com.unity.modules.physics": "1.0.0", 317 | "com.unity.modules.jsonserialize": "1.0.0", 318 | "com.unity.modules.subsystems": "1.0.0" 319 | } 320 | } 321 | } 322 | } 323 | -------------------------------------------------------------------------------- /ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!11 &1 4 | AudioManager: 5 | m_ObjectHideFlags: 0 6 | m_Volume: 1 7 | Rolloff Scale: 1 8 | m_SpeedOfSound: 347 9 | Doppler Factor: 1 10 | Default Speaker Mode: 2 11 | m_DSPBufferSize: 0 12 | m_DisableAudio: 0 13 | -------------------------------------------------------------------------------- /ProjectSettings/ClusterInputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!236 &1 4 | ClusterInputManager: 5 | m_ObjectHideFlags: 0 6 | m_Inputs: [] 7 | -------------------------------------------------------------------------------- /ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!55 &1 4 | PhysicsManager: 5 | m_ObjectHideFlags: 0 6 | m_Gravity: {x: 0, y: -9.81000042, z: 0} 7 | m_DefaultMaterial: {fileID: 0} 8 | m_BounceThreshold: 2 9 | m_SleepVelocity: .150000006 10 | m_SleepAngularVelocity: .140000001 11 | m_MaxAngularVelocity: 7 12 | m_MinPenetrationForPenalty: .00999999978 13 | m_SolverIterationCount: 6 14 | m_RaycastsHitTriggers: 1 15 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 16 | -------------------------------------------------------------------------------- /ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1045 &1 4 | EditorBuildSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Scenes: 8 | - enabled: 1 9 | path: Assets/Scenes/MainScene.unity 10 | -------------------------------------------------------------------------------- /ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!159 &1 4 | EditorSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 9 7 | m_ExternalVersionControlSupport: Visible Meta Files 8 | m_SerializationMode: 2 9 | m_LineEndingsForNewScripts: 1 10 | m_DefaultBehaviorMode: 0 11 | m_PrefabRegularEnvironment: {fileID: 0} 12 | m_PrefabUIEnvironment: {fileID: 0} 13 | m_SpritePackerMode: 0 14 | m_SpritePackerPaddingPower: 1 15 | m_EtcTextureCompressorBehavior: 1 16 | m_EtcTextureFastCompressor: 1 17 | m_EtcTextureNormalCompressor: 2 18 | m_EtcTextureBestCompressor: 4 19 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp;asmref 20 | m_ProjectGenerationRootNamespace: 21 | m_CollabEditorSettings: 22 | inProgressEnabled: 1 23 | m_EnableTextureStreamingInEditMode: 1 24 | m_EnableTextureStreamingInPlayMode: 1 25 | m_AsyncShaderCompilation: 1 26 | m_EnterPlayModeOptionsEnabled: 0 27 | m_EnterPlayModeOptions: 3 28 | m_ShowLightmapResolutionOverlay: 1 29 | m_UseLegacyProbeSampleCount: 1 30 | m_AssetPipelineMode: 1 31 | m_CacheServerMode: 0 32 | m_CacheServerEndpoint: 33 | m_CacheServerNamespacePrefix: default 34 | m_CacheServerEnableDownload: 1 35 | m_CacheServerEnableUpload: 1 36 | -------------------------------------------------------------------------------- /ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!30 &1 4 | GraphicsSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 12 7 | m_Deferred: 8 | m_Mode: 1 9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} 10 | m_DeferredReflections: 11 | m_Mode: 1 12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} 13 | m_ScreenSpaceShadows: 14 | m_Mode: 1 15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} 16 | m_LegacyDeferred: 17 | m_Mode: 1 18 | m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} 19 | m_DepthNormals: 20 | m_Mode: 1 21 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} 22 | m_MotionVectors: 23 | m_Mode: 1 24 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} 25 | m_LightHalo: 26 | m_Mode: 1 27 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} 28 | m_LensFlare: 29 | m_Mode: 1 30 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} 31 | m_AlwaysIncludedShaders: 32 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} 33 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} 34 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} 35 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} 36 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} 37 | - {fileID: 10782, guid: 0000000000000000f000000000000000, type: 0} 38 | - {fileID: 17000, guid: 0000000000000000f000000000000000, type: 0} 39 | - {fileID: 16000, guid: 0000000000000000f000000000000000, type: 0} 40 | m_PreloadedShaders: [] 41 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, 42 | type: 0} 43 | m_CustomRenderPipeline: {fileID: 0} 44 | m_TransparencySortMode: 0 45 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 46 | m_DefaultRenderingPath: 1 47 | m_DefaultMobileRenderingPath: 1 48 | m_TierSettings: [] 49 | m_LightmapStripping: 0 50 | m_FogStripping: 0 51 | m_InstancingStripping: 0 52 | m_LightmapKeepPlain: 1 53 | m_LightmapKeepDirCombined: 1 54 | m_LightmapKeepDynamicPlain: 1 55 | m_LightmapKeepDynamicDirCombined: 1 56 | m_LightmapKeepShadowMask: 1 57 | m_LightmapKeepSubtractive: 1 58 | m_FogKeepLinear: 1 59 | m_FogKeepExp: 1 60 | m_FogKeepExp2: 1 61 | m_AlbedoSwatchInfos: [] 62 | m_LightsUseLinearIntensity: 0 63 | m_LightsUseColorTemperature: 0 64 | -------------------------------------------------------------------------------- /ProjectSettings/InputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!13 &1 4 | InputManager: 5 | m_ObjectHideFlags: 0 6 | m_Axes: 7 | - serializedVersion: 3 8 | m_Name: Horizontal 9 | descriptiveName: 10 | descriptiveNegativeName: 11 | negativeButton: left 12 | positiveButton: right 13 | altNegativeButton: a 14 | altPositiveButton: d 15 | gravity: 3 16 | dead: .00100000005 17 | sensitivity: 3 18 | snap: 1 19 | invert: 0 20 | type: 0 21 | axis: 0 22 | joyNum: 0 23 | - serializedVersion: 3 24 | m_Name: Vertical 25 | descriptiveName: 26 | descriptiveNegativeName: 27 | negativeButton: down 28 | positiveButton: up 29 | altNegativeButton: s 30 | altPositiveButton: w 31 | gravity: 3 32 | dead: .00100000005 33 | sensitivity: 3 34 | snap: 1 35 | invert: 0 36 | type: 0 37 | axis: 0 38 | joyNum: 0 39 | - serializedVersion: 3 40 | m_Name: Fire1 41 | descriptiveName: 42 | descriptiveNegativeName: 43 | negativeButton: 44 | positiveButton: left ctrl 45 | altNegativeButton: 46 | altPositiveButton: mouse 0 47 | gravity: 1000 48 | dead: .00100000005 49 | sensitivity: 1000 50 | snap: 0 51 | invert: 0 52 | type: 0 53 | axis: 0 54 | joyNum: 0 55 | - serializedVersion: 3 56 | m_Name: Fire2 57 | descriptiveName: 58 | descriptiveNegativeName: 59 | negativeButton: 60 | positiveButton: left alt 61 | altNegativeButton: 62 | altPositiveButton: mouse 1 63 | gravity: 1000 64 | dead: .00100000005 65 | sensitivity: 1000 66 | snap: 0 67 | invert: 0 68 | type: 0 69 | axis: 0 70 | joyNum: 0 71 | - serializedVersion: 3 72 | m_Name: Fire3 73 | descriptiveName: 74 | descriptiveNegativeName: 75 | negativeButton: 76 | positiveButton: left cmd 77 | altNegativeButton: 78 | altPositiveButton: mouse 2 79 | gravity: 1000 80 | dead: .00100000005 81 | sensitivity: 1000 82 | snap: 0 83 | invert: 0 84 | type: 0 85 | axis: 0 86 | joyNum: 0 87 | - serializedVersion: 3 88 | m_Name: Jump 89 | descriptiveName: 90 | descriptiveNegativeName: 91 | negativeButton: 92 | positiveButton: space 93 | altNegativeButton: 94 | altPositiveButton: 95 | gravity: 1000 96 | dead: .00100000005 97 | sensitivity: 1000 98 | snap: 0 99 | invert: 0 100 | type: 0 101 | axis: 0 102 | joyNum: 0 103 | - serializedVersion: 3 104 | m_Name: Mouse X 105 | descriptiveName: 106 | descriptiveNegativeName: 107 | negativeButton: 108 | positiveButton: 109 | altNegativeButton: 110 | altPositiveButton: 111 | gravity: 0 112 | dead: 0 113 | sensitivity: .100000001 114 | snap: 0 115 | invert: 0 116 | type: 1 117 | axis: 0 118 | joyNum: 0 119 | - serializedVersion: 3 120 | m_Name: Mouse Y 121 | descriptiveName: 122 | descriptiveNegativeName: 123 | negativeButton: 124 | positiveButton: 125 | altNegativeButton: 126 | altPositiveButton: 127 | gravity: 0 128 | dead: 0 129 | sensitivity: .100000001 130 | snap: 0 131 | invert: 0 132 | type: 1 133 | axis: 1 134 | joyNum: 0 135 | - serializedVersion: 3 136 | m_Name: Mouse ScrollWheel 137 | descriptiveName: 138 | descriptiveNegativeName: 139 | negativeButton: 140 | positiveButton: 141 | altNegativeButton: 142 | altPositiveButton: 143 | gravity: 0 144 | dead: 0 145 | sensitivity: .100000001 146 | snap: 0 147 | invert: 0 148 | type: 1 149 | axis: 2 150 | joyNum: 0 151 | - serializedVersion: 3 152 | m_Name: Horizontal 153 | descriptiveName: 154 | descriptiveNegativeName: 155 | negativeButton: 156 | positiveButton: 157 | altNegativeButton: 158 | altPositiveButton: 159 | gravity: 0 160 | dead: .189999998 161 | sensitivity: 1 162 | snap: 0 163 | invert: 0 164 | type: 2 165 | axis: 0 166 | joyNum: 0 167 | - serializedVersion: 3 168 | m_Name: Vertical 169 | descriptiveName: 170 | descriptiveNegativeName: 171 | negativeButton: 172 | positiveButton: 173 | altNegativeButton: 174 | altPositiveButton: 175 | gravity: 0 176 | dead: .189999998 177 | sensitivity: 1 178 | snap: 0 179 | invert: 1 180 | type: 2 181 | axis: 1 182 | joyNum: 0 183 | - serializedVersion: 3 184 | m_Name: Fire1 185 | descriptiveName: 186 | descriptiveNegativeName: 187 | negativeButton: 188 | positiveButton: joystick button 0 189 | altNegativeButton: 190 | altPositiveButton: 191 | gravity: 1000 192 | dead: .00100000005 193 | sensitivity: 1000 194 | snap: 0 195 | invert: 0 196 | type: 0 197 | axis: 0 198 | joyNum: 0 199 | - serializedVersion: 3 200 | m_Name: Fire2 201 | descriptiveName: 202 | descriptiveNegativeName: 203 | negativeButton: 204 | positiveButton: joystick button 1 205 | altNegativeButton: 206 | altPositiveButton: 207 | gravity: 1000 208 | dead: .00100000005 209 | sensitivity: 1000 210 | snap: 0 211 | invert: 0 212 | type: 0 213 | axis: 0 214 | joyNum: 0 215 | - serializedVersion: 3 216 | m_Name: Fire3 217 | descriptiveName: 218 | descriptiveNegativeName: 219 | negativeButton: 220 | positiveButton: joystick button 2 221 | altNegativeButton: 222 | altPositiveButton: 223 | gravity: 1000 224 | dead: .00100000005 225 | sensitivity: 1000 226 | snap: 0 227 | invert: 0 228 | type: 0 229 | axis: 0 230 | joyNum: 0 231 | - serializedVersion: 3 232 | m_Name: Jump 233 | descriptiveName: 234 | descriptiveNegativeName: 235 | negativeButton: 236 | positiveButton: joystick button 3 237 | altNegativeButton: 238 | altPositiveButton: 239 | gravity: 1000 240 | dead: .00100000005 241 | sensitivity: 1000 242 | snap: 0 243 | invert: 0 244 | type: 0 245 | axis: 0 246 | joyNum: 0 247 | -------------------------------------------------------------------------------- /ProjectSettings/NavMeshAreas.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!126 &1 4 | NavMeshLayers: 5 | m_ObjectHideFlags: 0 6 | Built-in Layer 0: 7 | name: Default 8 | cost: 1 9 | editType: 2 10 | Built-in Layer 1: 11 | name: Not Walkable 12 | cost: 1 13 | editType: 0 14 | Built-in Layer 2: 15 | name: Jump 16 | cost: 2 17 | editType: 2 18 | User Layer 0: 19 | name: 20 | cost: 1 21 | editType: 3 22 | User Layer 1: 23 | name: 24 | cost: 1 25 | editType: 3 26 | User Layer 2: 27 | name: 28 | cost: 1 29 | editType: 3 30 | User Layer 3: 31 | name: 32 | cost: 1 33 | editType: 3 34 | User Layer 4: 35 | name: 36 | cost: 1 37 | editType: 3 38 | User Layer 5: 39 | name: 40 | cost: 1 41 | editType: 3 42 | User Layer 6: 43 | name: 44 | cost: 1 45 | editType: 3 46 | User Layer 7: 47 | name: 48 | cost: 1 49 | editType: 3 50 | User Layer 8: 51 | name: 52 | cost: 1 53 | editType: 3 54 | User Layer 9: 55 | name: 56 | cost: 1 57 | editType: 3 58 | User Layer 10: 59 | name: 60 | cost: 1 61 | editType: 3 62 | User Layer 11: 63 | name: 64 | cost: 1 65 | editType: 3 66 | User Layer 12: 67 | name: 68 | cost: 1 69 | editType: 3 70 | User Layer 13: 71 | name: 72 | cost: 1 73 | editType: 3 74 | User Layer 14: 75 | name: 76 | cost: 1 77 | editType: 3 78 | User Layer 15: 79 | name: 80 | cost: 1 81 | editType: 3 82 | User Layer 16: 83 | name: 84 | cost: 1 85 | editType: 3 86 | User Layer 17: 87 | name: 88 | cost: 1 89 | editType: 3 90 | User Layer 18: 91 | name: 92 | cost: 1 93 | editType: 3 94 | User Layer 19: 95 | name: 96 | cost: 1 97 | editType: 3 98 | User Layer 20: 99 | name: 100 | cost: 1 101 | editType: 3 102 | User Layer 21: 103 | name: 104 | cost: 1 105 | editType: 3 106 | User Layer 22: 107 | name: 108 | cost: 1 109 | editType: 3 110 | User Layer 23: 111 | name: 112 | cost: 1 113 | editType: 3 114 | User Layer 24: 115 | name: 116 | cost: 1 117 | editType: 3 118 | User Layer 25: 119 | name: 120 | cost: 1 121 | editType: 3 122 | User Layer 26: 123 | name: 124 | cost: 1 125 | editType: 3 126 | User Layer 27: 127 | name: 128 | cost: 1 129 | editType: 3 130 | User Layer 28: 131 | name: 132 | cost: 1 133 | editType: 3 134 | -------------------------------------------------------------------------------- /ProjectSettings/NavMeshLayers.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!126 &1 4 | NavMeshLayers: 5 | m_ObjectHideFlags: 0 6 | Built-in Layer 0: 7 | name: Default 8 | cost: 1 9 | editType: 2 10 | Built-in Layer 1: 11 | name: Not Walkable 12 | cost: 1 13 | editType: 0 14 | Built-in Layer 2: 15 | name: Jump 16 | cost: 2 17 | editType: 2 18 | User Layer 0: 19 | name: 20 | cost: 1 21 | editType: 3 22 | User Layer 1: 23 | name: 24 | cost: 1 25 | editType: 3 26 | User Layer 2: 27 | name: 28 | cost: 1 29 | editType: 3 30 | User Layer 3: 31 | name: 32 | cost: 1 33 | editType: 3 34 | User Layer 4: 35 | name: 36 | cost: 1 37 | editType: 3 38 | User Layer 5: 39 | name: 40 | cost: 1 41 | editType: 3 42 | User Layer 6: 43 | name: 44 | cost: 1 45 | editType: 3 46 | User Layer 7: 47 | name: 48 | cost: 1 49 | editType: 3 50 | User Layer 8: 51 | name: 52 | cost: 1 53 | editType: 3 54 | User Layer 9: 55 | name: 56 | cost: 1 57 | editType: 3 58 | User Layer 10: 59 | name: 60 | cost: 1 61 | editType: 3 62 | User Layer 11: 63 | name: 64 | cost: 1 65 | editType: 3 66 | User Layer 12: 67 | name: 68 | cost: 1 69 | editType: 3 70 | User Layer 13: 71 | name: 72 | cost: 1 73 | editType: 3 74 | User Layer 14: 75 | name: 76 | cost: 1 77 | editType: 3 78 | User Layer 15: 79 | name: 80 | cost: 1 81 | editType: 3 82 | User Layer 16: 83 | name: 84 | cost: 1 85 | editType: 3 86 | User Layer 17: 87 | name: 88 | cost: 1 89 | editType: 3 90 | User Layer 18: 91 | name: 92 | cost: 1 93 | editType: 3 94 | User Layer 19: 95 | name: 96 | cost: 1 97 | editType: 3 98 | User Layer 20: 99 | name: 100 | cost: 1 101 | editType: 3 102 | User Layer 21: 103 | name: 104 | cost: 1 105 | editType: 3 106 | User Layer 22: 107 | name: 108 | cost: 1 109 | editType: 3 110 | User Layer 23: 111 | name: 112 | cost: 1 113 | editType: 3 114 | User Layer 24: 115 | name: 116 | cost: 1 117 | editType: 3 118 | User Layer 25: 119 | name: 120 | cost: 1 121 | editType: 3 122 | User Layer 26: 123 | name: 124 | cost: 1 125 | editType: 3 126 | User Layer 27: 127 | name: 128 | cost: 1 129 | editType: 3 130 | User Layer 28: 131 | name: 132 | cost: 1 133 | editType: 3 134 | -------------------------------------------------------------------------------- /ProjectSettings/NavMeshProjectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!126 &1 4 | NavMeshLayers: 5 | m_ObjectHideFlags: 0 6 | Built-in Layer 0: 7 | name: Default 8 | cost: 1 9 | editType: 2 10 | Built-in Layer 1: 11 | name: Not Walkable 12 | cost: 1 13 | editType: 0 14 | Built-in Layer 2: 15 | name: Jump 16 | cost: 2 17 | editType: 2 18 | User Layer 0: 19 | name: 20 | cost: 1 21 | editType: 3 22 | User Layer 1: 23 | name: 24 | cost: 1 25 | editType: 3 26 | User Layer 2: 27 | name: 28 | cost: 1 29 | editType: 3 30 | User Layer 3: 31 | name: 32 | cost: 1 33 | editType: 3 34 | User Layer 4: 35 | name: 36 | cost: 1 37 | editType: 3 38 | User Layer 5: 39 | name: 40 | cost: 1 41 | editType: 3 42 | User Layer 6: 43 | name: 44 | cost: 1 45 | editType: 3 46 | User Layer 7: 47 | name: 48 | cost: 1 49 | editType: 3 50 | User Layer 8: 51 | name: 52 | cost: 1 53 | editType: 3 54 | User Layer 9: 55 | name: 56 | cost: 1 57 | editType: 3 58 | User Layer 10: 59 | name: 60 | cost: 1 61 | editType: 3 62 | User Layer 11: 63 | name: 64 | cost: 1 65 | editType: 3 66 | User Layer 12: 67 | name: 68 | cost: 1 69 | editType: 3 70 | User Layer 13: 71 | name: 72 | cost: 1 73 | editType: 3 74 | User Layer 14: 75 | name: 76 | cost: 1 77 | editType: 3 78 | User Layer 15: 79 | name: 80 | cost: 1 81 | editType: 3 82 | User Layer 16: 83 | name: 84 | cost: 1 85 | editType: 3 86 | User Layer 17: 87 | name: 88 | cost: 1 89 | editType: 3 90 | User Layer 18: 91 | name: 92 | cost: 1 93 | editType: 3 94 | User Layer 19: 95 | name: 96 | cost: 1 97 | editType: 3 98 | User Layer 20: 99 | name: 100 | cost: 1 101 | editType: 3 102 | User Layer 21: 103 | name: 104 | cost: 1 105 | editType: 3 106 | User Layer 22: 107 | name: 108 | cost: 1 109 | editType: 3 110 | User Layer 23: 111 | name: 112 | cost: 1 113 | editType: 3 114 | User Layer 24: 115 | name: 116 | cost: 1 117 | editType: 3 118 | User Layer 25: 119 | name: 120 | cost: 1 121 | editType: 3 122 | User Layer 26: 123 | name: 124 | cost: 1 125 | editType: 3 126 | User Layer 27: 127 | name: 128 | cost: 1 129 | editType: 3 130 | User Layer 28: 131 | name: 132 | cost: 1 133 | editType: 3 134 | -------------------------------------------------------------------------------- /ProjectSettings/NetworkManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!149 &1 4 | NetworkManager: 5 | m_ObjectHideFlags: 0 6 | m_DebugLevel: 0 7 | m_Sendrate: 15 8 | m_AssetToPrefab: {} 9 | -------------------------------------------------------------------------------- /ProjectSettings/PackageManagerSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &1 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 61 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | m_EnablePreviewPackages: 1 16 | m_EnablePackageDependencies: 1 17 | m_AdvancedSettingsExpanded: 1 18 | m_ScopedRegistriesSettingsExpanded: 1 19 | oneTimeWarningShown: 1 20 | m_Registries: 21 | - m_Id: main 22 | m_Name: 23 | m_Url: https://packages.unity.com 24 | m_Scopes: [] 25 | m_IsDefault: 1 26 | m_Capabilities: 7 27 | m_UserSelectedRegistryName: 28 | m_UserAddingNewScopedRegistry: 0 29 | m_RegistryInfoDraft: 30 | m_ErrorMessage: 31 | m_Original: 32 | m_Id: 33 | m_Name: 34 | m_Url: 35 | m_Scopes: [] 36 | m_IsDefault: 0 37 | m_Capabilities: 0 38 | m_Modified: 0 39 | m_Name: 40 | m_Url: 41 | m_Scopes: 42 | - 43 | m_SelectedScopeIndex: 0 44 | -------------------------------------------------------------------------------- /ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!19 &1 4 | Physics2DSettings: 5 | m_ObjectHideFlags: 0 6 | m_Gravity: {x: 0, y: -9.81000042} 7 | m_DefaultMaterial: {fileID: 0} 8 | m_VelocityIterations: 8 9 | m_PositionIterations: 3 10 | m_RaycastsHitTriggers: 1 11 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 12 | -------------------------------------------------------------------------------- /ProjectSettings/PresetManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1386491679 &1 4 | PresetManager: 5 | m_ObjectHideFlags: 0 6 | m_DefaultList: [] 7 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!129 &1 4 | PlayerSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 20 7 | productGUID: 241ede923c7b80d40add894a275ccec2 8 | AndroidProfiler: 0 9 | AndroidFilterTouchesWhenObscured: 0 10 | AndroidEnableSustainedPerformanceMode: 0 11 | defaultScreenOrientation: 0 12 | targetDevice: 2 13 | useOnDemandResources: 0 14 | accelerometerFrequency: 60 15 | companyName: DefaultCompany 16 | productName: Steamworks.NET Example 17 | defaultCursor: {fileID: 0} 18 | cursorHotspot: {x: 0, y: 0} 19 | m_SplashScreenBackgroundColor: {r: 1, g: 1, b: 1, a: 1} 20 | m_ShowUnitySplashScreen: 1 21 | m_ShowUnitySplashLogo: 1 22 | m_SplashScreenOverlayOpacity: 1 23 | m_SplashScreenAnimation: 1 24 | m_SplashScreenLogoStyle: 1 25 | m_SplashScreenDrawMode: 0 26 | m_SplashScreenBackgroundAnimationZoom: 1 27 | m_SplashScreenLogoAnimationZoom: 1 28 | m_SplashScreenBackgroundLandscapeAspect: 1 29 | m_SplashScreenBackgroundPortraitAspect: 1 30 | m_SplashScreenBackgroundLandscapeUvs: 31 | serializedVersion: 2 32 | x: 0 33 | y: 0 34 | width: 1 35 | height: 1 36 | m_SplashScreenBackgroundPortraitUvs: 37 | serializedVersion: 2 38 | x: 0 39 | y: 0 40 | width: 1 41 | height: 1 42 | m_SplashScreenLogos: [] 43 | m_VirtualRealitySplashScreen: {fileID: 0} 44 | m_HolographicTrackingLossScreen: {fileID: 0} 45 | defaultScreenWidth: 1200 46 | defaultScreenHeight: 600 47 | defaultScreenWidthWeb: 960 48 | defaultScreenHeightWeb: 600 49 | m_StereoRenderingPath: 0 50 | m_ActiveColorSpace: 0 51 | m_MTRendering: 1 52 | m_StackTraceTypes: 010000000100000001000000010000000100000001000000 53 | iosShowActivityIndicatorOnLoading: -1 54 | androidShowActivityIndicatorOnLoading: -1 55 | iosUseCustomAppBackgroundBehavior: 0 56 | iosAllowHTTPDownload: 1 57 | allowedAutorotateToPortrait: 1 58 | allowedAutorotateToPortraitUpsideDown: 1 59 | allowedAutorotateToLandscapeRight: 1 60 | allowedAutorotateToLandscapeLeft: 1 61 | useOSAutorotation: 1 62 | use32BitDisplayBuffer: 1 63 | preserveFramebufferAlpha: 0 64 | disableDepthAndStencilBuffers: 0 65 | androidStartInFullscreen: 1 66 | androidRenderOutsideSafeArea: 1 67 | androidUseSwappy: 0 68 | androidBlitType: 0 69 | androidResizableWindow: 0 70 | androidDefaultWindowWidth: 1920 71 | androidDefaultWindowHeight: 1080 72 | androidMinimumWindowWidth: 400 73 | androidMinimumWindowHeight: 300 74 | androidFullscreenMode: 1 75 | defaultIsNativeResolution: 1 76 | macRetinaSupport: 1 77 | runInBackground: 1 78 | captureSingleScreen: 0 79 | muteOtherAudioSources: 0 80 | Prepare IOS For Recording: 0 81 | Force IOS Speakers When Recording: 0 82 | deferSystemGesturesMode: 0 83 | hideHomeButton: 0 84 | submitAnalytics: 1 85 | usePlayerLog: 1 86 | bakeCollisionMeshes: 0 87 | forceSingleInstance: 0 88 | useFlipModelSwapchain: 1 89 | resizableWindow: 1 90 | useMacAppStoreValidation: 0 91 | macAppStoreCategory: public.app-category.games 92 | gpuSkinning: 0 93 | xboxPIXTextureCapture: 0 94 | xboxEnableAvatar: 0 95 | xboxEnableKinect: 0 96 | xboxEnableKinectAutoTracking: 0 97 | xboxEnableFitness: 0 98 | visibleInBackground: 0 99 | allowFullscreenSwitch: 1 100 | fullscreenMode: 3 101 | xboxSpeechDB: 0 102 | xboxEnableHeadOrientation: 0 103 | xboxEnableGuest: 0 104 | xboxEnablePIXSampling: 0 105 | metalFramebufferOnly: 0 106 | xboxOneResolution: 0 107 | xboxOneSResolution: 0 108 | xboxOneXResolution: 3 109 | xboxOneMonoLoggingLevel: 0 110 | xboxOneLoggingLevel: 1 111 | xboxOneDisableEsram: 0 112 | xboxOneEnableTypeOptimization: 0 113 | xboxOnePresentImmediateThreshold: 0 114 | switchQueueCommandMemory: 0 115 | switchQueueControlMemory: 16384 116 | switchQueueComputeMemory: 262144 117 | switchNVNShaderPoolsGranularity: 33554432 118 | switchNVNDefaultPoolsGranularity: 16777216 119 | switchNVNOtherPoolsGranularity: 16777216 120 | switchNVNMaxPublicTextureIDCount: 0 121 | switchNVNMaxPublicSamplerIDCount: 0 122 | stadiaPresentMode: 0 123 | stadiaTargetFramerate: 0 124 | vulkanNumSwapchainBuffers: 3 125 | vulkanEnableSetSRGBWrite: 0 126 | vulkanEnableLateAcquireNextImage: 0 127 | m_SupportedAspectRatios: 128 | 4:3: 1 129 | 5:4: 1 130 | 16:10: 1 131 | 16:9: 1 132 | Others: 1 133 | bundleVersion: 1.0 134 | preloadedAssets: [] 135 | metroInputSource: 0 136 | wsaTransparentSwapchain: 0 137 | m_HolographicPauseOnTrackingLoss: 1 138 | xboxOneDisableKinectGpuReservation: 0 139 | xboxOneEnable7thCore: 0 140 | vrSettings: 141 | cardboard: 142 | depthFormat: 0 143 | enableTransitionView: 0 144 | daydream: 145 | depthFormat: 0 146 | useSustainedPerformanceMode: 0 147 | enableVideoLayer: 0 148 | useProtectedVideoMemory: 0 149 | minimumSupportedHeadTracking: 0 150 | maximumSupportedHeadTracking: 1 151 | hololens: 152 | depthFormat: 1 153 | depthBufferSharingEnabled: 0 154 | lumin: 155 | depthFormat: 0 156 | frameTiming: 2 157 | enableGLCache: 0 158 | glCacheMaxBlobSize: 524288 159 | glCacheMaxFileSize: 8388608 160 | oculus: 161 | sharedDepthBuffer: 0 162 | dashSupport: 0 163 | lowOverheadMode: 0 164 | protectedContext: 0 165 | v2Signing: 1 166 | enable360StereoCapture: 0 167 | isWsaHolographicRemotingEnabled: 0 168 | enableFrameTimingStats: 0 169 | useHDRDisplay: 0 170 | D3DHDRBitDepth: 0 171 | m_ColorGamuts: 00000000 172 | targetPixelDensity: 30 173 | resolutionScalingMode: 0 174 | androidSupportedAspectRatio: 1 175 | androidMaxAspectRatio: 2.1 176 | applicationIdentifier: 177 | Android: com.Company.ProductName 178 | Standalone: unity.DefaultCompany.Steamworks.NET Example 179 | Tizen: com.Company.ProductName 180 | iPhone: com.Company.ProductName 181 | tvOS: com.Company.ProductName 182 | buildNumber: 183 | iPhone: 0 184 | AndroidBundleVersionCode: 1 185 | AndroidMinSdkVersion: 19 186 | AndroidTargetSdkVersion: 0 187 | AndroidPreferredInstallLocation: 1 188 | aotOptions: 189 | stripEngineCode: 1 190 | iPhoneStrippingLevel: 0 191 | iPhoneScriptCallOptimization: 0 192 | ForceInternetPermission: 0 193 | ForceSDCardPermission: 0 194 | CreateWallpaper: 0 195 | APKExpansionFiles: 0 196 | keepLoadedShadersAlive: 0 197 | StripUnusedMeshComponents: 0 198 | VertexChannelCompressionMask: 214 199 | iPhoneSdkVersion: 988 200 | iOSTargetOSVersionString: 10.0 201 | tvOSSdkVersion: 0 202 | tvOSRequireExtendedGameController: 0 203 | tvOSTargetOSVersionString: 10.0 204 | uIPrerenderedIcon: 0 205 | uIRequiresPersistentWiFi: 0 206 | uIRequiresFullScreen: 1 207 | uIStatusBarHidden: 1 208 | uIExitOnSuspend: 0 209 | uIStatusBarStyle: 0 210 | appleTVSplashScreen: {fileID: 0} 211 | appleTVSplashScreen2x: {fileID: 0} 212 | tvOSSmallIconLayers: [] 213 | tvOSSmallIconLayers2x: [] 214 | tvOSLargeIconLayers: [] 215 | tvOSLargeIconLayers2x: [] 216 | tvOSTopShelfImageLayers: [] 217 | tvOSTopShelfImageLayers2x: [] 218 | tvOSTopShelfImageWideLayers: [] 219 | tvOSTopShelfImageWideLayers2x: [] 220 | iOSLaunchScreenType: 0 221 | iOSLaunchScreenPortrait: {fileID: 0} 222 | iOSLaunchScreenLandscape: {fileID: 0} 223 | iOSLaunchScreenBackgroundColor: 224 | serializedVersion: 2 225 | rgba: 0 226 | iOSLaunchScreenFillPct: 100 227 | iOSLaunchScreenSize: 100 228 | iOSLaunchScreenCustomXibPath: 229 | iOSLaunchScreeniPadType: 0 230 | iOSLaunchScreeniPadImage: {fileID: 0} 231 | iOSLaunchScreeniPadBackgroundColor: 232 | serializedVersion: 2 233 | rgba: 0 234 | iOSLaunchScreeniPadFillPct: 100 235 | iOSLaunchScreeniPadSize: 100 236 | iOSLaunchScreeniPadCustomXibPath: 237 | iOSUseLaunchScreenStoryboard: 0 238 | iOSLaunchScreenCustomStoryboardPath: 239 | iOSDeviceRequirements: [] 240 | iOSURLSchemes: [] 241 | iOSBackgroundModes: 0 242 | iOSMetalForceHardShadows: 0 243 | metalEditorSupport: 1 244 | metalAPIValidation: 1 245 | iOSRenderExtraFrameOnPause: 1 246 | iosCopyPluginsCodeInsteadOfSymlink: 0 247 | appleDeveloperTeamID: 248 | iOSManualSigningProvisioningProfileID: 249 | tvOSManualSigningProvisioningProfileID: 250 | iOSManualSigningProvisioningProfileType: 0 251 | tvOSManualSigningProvisioningProfileType: 0 252 | appleEnableAutomaticSigning: 0 253 | iOSRequireARKit: 0 254 | iOSAutomaticallyDetectAndAddCapabilities: 1 255 | appleEnableProMotion: 0 256 | clonedFromGUID: 00000000000000000000000000000000 257 | templatePackageId: 258 | templateDefaultScene: 259 | AndroidTargetArchitectures: 5 260 | AndroidTargetDevices: 0 261 | AndroidSplashScreenScale: 0 262 | androidSplashScreen: {fileID: 0} 263 | AndroidKeystoreName: '{inproject}: ' 264 | AndroidKeyaliasName: 265 | AndroidBuildApkPerCpuArchitecture: 0 266 | AndroidTVCompatibility: 1 267 | AndroidIsGame: 1 268 | AndroidEnableTango: 0 269 | androidEnableBanner: 1 270 | androidUseLowAccuracyLocation: 0 271 | androidUseCustomKeystore: 0 272 | m_AndroidBanners: 273 | - width: 320 274 | height: 180 275 | banner: {fileID: 0} 276 | androidGamepadSupportLevel: 0 277 | chromeosInputEmulation: 1 278 | AndroidValidateAppBundleSize: 1 279 | AndroidAppBundleSizeToValidate: 150 280 | m_BuildTargetIcons: 281 | - m_BuildTarget: 282 | m_Icons: 283 | - serializedVersion: 2 284 | m_Icon: {fileID: 0} 285 | m_Width: 128 286 | m_Height: 128 287 | m_Kind: 0 288 | m_BuildTargetPlatformIcons: [] 289 | m_BuildTargetBatching: 290 | - m_BuildTarget: Standalone 291 | m_StaticBatching: 0 292 | m_DynamicBatching: 1 293 | m_BuildTargetGraphicsJobs: 294 | - m_BuildTarget: MacStandaloneSupport 295 | m_GraphicsJobs: 0 296 | - m_BuildTarget: Switch 297 | m_GraphicsJobs: 0 298 | - m_BuildTarget: MetroSupport 299 | m_GraphicsJobs: 0 300 | - m_BuildTarget: GameCoreScarlettSupport 301 | m_GraphicsJobs: 0 302 | - m_BuildTarget: AppleTVSupport 303 | m_GraphicsJobs: 0 304 | - m_BuildTarget: BJMSupport 305 | m_GraphicsJobs: 0 306 | - m_BuildTarget: LinuxStandaloneSupport 307 | m_GraphicsJobs: 0 308 | - m_BuildTarget: GameCoreXboxOneSupport 309 | m_GraphicsJobs: 0 310 | - m_BuildTarget: PS4Player 311 | m_GraphicsJobs: 0 312 | - m_BuildTarget: iOSSupport 313 | m_GraphicsJobs: 0 314 | - m_BuildTarget: PS5Player 315 | m_GraphicsJobs: 0 316 | - m_BuildTarget: WindowsStandaloneSupport 317 | m_GraphicsJobs: 0 318 | - m_BuildTarget: XboxOnePlayer 319 | m_GraphicsJobs: 0 320 | - m_BuildTarget: LuminSupport 321 | m_GraphicsJobs: 0 322 | - m_BuildTarget: CloudRendering 323 | m_GraphicsJobs: 0 324 | - m_BuildTarget: AndroidPlayer 325 | m_GraphicsJobs: 0 326 | - m_BuildTarget: WebGLSupport 327 | m_GraphicsJobs: 0 328 | m_BuildTargetGraphicsJobMode: 329 | - m_BuildTarget: PS4Player 330 | m_GraphicsJobMode: 0 331 | - m_BuildTarget: XboxOnePlayer 332 | m_GraphicsJobMode: 0 333 | m_BuildTargetGraphicsAPIs: 334 | - m_BuildTarget: WindowsStandaloneSupport 335 | m_APIs: 02000000 336 | m_Automatic: 1 337 | - m_BuildTarget: AndroidPlayer 338 | m_APIs: 08000000 339 | m_Automatic: 0 340 | m_BuildTargetVRSettings: 341 | - m_BuildTarget: Android 342 | m_Enabled: 0 343 | m_Devices: 344 | - Oculus 345 | - m_BuildTarget: Windows Store Apps 346 | m_Enabled: 0 347 | m_Devices: [] 348 | - m_BuildTarget: N3DS 349 | m_Enabled: 0 350 | m_Devices: [] 351 | - m_BuildTarget: PS3 352 | m_Enabled: 0 353 | m_Devices: [] 354 | - m_BuildTarget: PS4 355 | m_Enabled: 0 356 | m_Devices: 357 | - PlayStationVR 358 | - m_BuildTarget: PSM 359 | m_Enabled: 0 360 | m_Devices: [] 361 | - m_BuildTarget: PSP2 362 | m_Enabled: 0 363 | m_Devices: [] 364 | - m_BuildTarget: SamsungTV 365 | m_Enabled: 0 366 | m_Devices: [] 367 | - m_BuildTarget: Standalone 368 | m_Enabled: 0 369 | m_Devices: 370 | - Oculus 371 | - m_BuildTarget: Tizen 372 | m_Enabled: 0 373 | m_Devices: [] 374 | - m_BuildTarget: WebGL 375 | m_Enabled: 0 376 | m_Devices: [] 377 | - m_BuildTarget: WebPlayer 378 | m_Enabled: 0 379 | m_Devices: [] 380 | - m_BuildTarget: WiiU 381 | m_Enabled: 0 382 | m_Devices: [] 383 | - m_BuildTarget: Xbox360 384 | m_Enabled: 0 385 | m_Devices: [] 386 | - m_BuildTarget: XboxOne 387 | m_Enabled: 0 388 | m_Devices: [] 389 | - m_BuildTarget: iPhone 390 | m_Enabled: 0 391 | m_Devices: [] 392 | - m_BuildTarget: tvOS 393 | m_Enabled: 0 394 | m_Devices: [] 395 | openGLRequireES31: 0 396 | openGLRequireES31AEP: 0 397 | openGLRequireES32: 0 398 | m_TemplateCustomTags: {} 399 | mobileMTRendering: 400 | iPhone: 1 401 | tvOS: 1 402 | m_BuildTargetGroupLightmapEncodingQuality: 403 | - m_BuildTarget: Standalone 404 | m_EncodingQuality: 1 405 | - m_BuildTarget: XboxOne 406 | m_EncodingQuality: 1 407 | - m_BuildTarget: PS4 408 | m_EncodingQuality: 1 409 | m_BuildTargetGroupLightmapSettings: [] 410 | playModeTestRunnerEnabled: 0 411 | runPlayModeTestAsEditModeTest: 0 412 | actionOnDotNetUnhandledException: 1 413 | enableInternalProfiler: 0 414 | logObjCUncaughtExceptions: 1 415 | enableCrashReportAPI: 0 416 | cameraUsageDescription: 417 | locationUsageDescription: 418 | microphoneUsageDescription: 419 | switchNetLibKey: 420 | switchSocketMemoryPoolSize: 6144 421 | switchSocketAllocatorPoolSize: 128 422 | switchSocketConcurrencyLimit: 14 423 | switchScreenResolutionBehavior: 2 424 | switchUseCPUProfiler: 0 425 | switchApplicationID: 0x01004b9000490000 426 | switchNSODependencies: 427 | switchTitleNames_0: 428 | switchTitleNames_1: 429 | switchTitleNames_2: 430 | switchTitleNames_3: 431 | switchTitleNames_4: 432 | switchTitleNames_5: 433 | switchTitleNames_6: 434 | switchTitleNames_7: 435 | switchTitleNames_8: 436 | switchTitleNames_9: 437 | switchTitleNames_10: 438 | switchTitleNames_11: 439 | switchTitleNames_12: 440 | switchTitleNames_13: 441 | switchTitleNames_14: 442 | switchTitleNames_15: 443 | switchPublisherNames_0: 444 | switchPublisherNames_1: 445 | switchPublisherNames_2: 446 | switchPublisherNames_3: 447 | switchPublisherNames_4: 448 | switchPublisherNames_5: 449 | switchPublisherNames_6: 450 | switchPublisherNames_7: 451 | switchPublisherNames_8: 452 | switchPublisherNames_9: 453 | switchPublisherNames_10: 454 | switchPublisherNames_11: 455 | switchPublisherNames_12: 456 | switchPublisherNames_13: 457 | switchPublisherNames_14: 458 | switchPublisherNames_15: 459 | switchIcons_0: {fileID: 0} 460 | switchIcons_1: {fileID: 0} 461 | switchIcons_2: {fileID: 0} 462 | switchIcons_3: {fileID: 0} 463 | switchIcons_4: {fileID: 0} 464 | switchIcons_5: {fileID: 0} 465 | switchIcons_6: {fileID: 0} 466 | switchIcons_7: {fileID: 0} 467 | switchIcons_8: {fileID: 0} 468 | switchIcons_9: {fileID: 0} 469 | switchIcons_10: {fileID: 0} 470 | switchIcons_11: {fileID: 0} 471 | switchIcons_12: {fileID: 0} 472 | switchIcons_13: {fileID: 0} 473 | switchIcons_14: {fileID: 0} 474 | switchIcons_15: {fileID: 0} 475 | switchSmallIcons_0: {fileID: 0} 476 | switchSmallIcons_1: {fileID: 0} 477 | switchSmallIcons_2: {fileID: 0} 478 | switchSmallIcons_3: {fileID: 0} 479 | switchSmallIcons_4: {fileID: 0} 480 | switchSmallIcons_5: {fileID: 0} 481 | switchSmallIcons_6: {fileID: 0} 482 | switchSmallIcons_7: {fileID: 0} 483 | switchSmallIcons_8: {fileID: 0} 484 | switchSmallIcons_9: {fileID: 0} 485 | switchSmallIcons_10: {fileID: 0} 486 | switchSmallIcons_11: {fileID: 0} 487 | switchSmallIcons_12: {fileID: 0} 488 | switchSmallIcons_13: {fileID: 0} 489 | switchSmallIcons_14: {fileID: 0} 490 | switchSmallIcons_15: {fileID: 0} 491 | switchManualHTML: 492 | switchAccessibleURLs: 493 | switchLegalInformation: 494 | switchMainThreadStackSize: 1048576 495 | switchPresenceGroupId: 496 | switchLogoHandling: 0 497 | switchReleaseVersion: 0 498 | switchDisplayVersion: 1.0.0 499 | switchStartupUserAccount: 0 500 | switchTouchScreenUsage: 0 501 | switchSupportedLanguagesMask: 0 502 | switchLogoType: 0 503 | switchApplicationErrorCodeCategory: 504 | switchUserAccountSaveDataSize: 0 505 | switchUserAccountSaveDataJournalSize: 0 506 | switchApplicationAttribute: 0 507 | switchCardSpecSize: -1 508 | switchCardSpecClock: -1 509 | switchRatingsMask: 0 510 | switchRatingsInt_0: 0 511 | switchRatingsInt_1: 0 512 | switchRatingsInt_2: 0 513 | switchRatingsInt_3: 0 514 | switchRatingsInt_4: 0 515 | switchRatingsInt_5: 0 516 | switchRatingsInt_6: 0 517 | switchRatingsInt_7: 0 518 | switchRatingsInt_8: 0 519 | switchRatingsInt_9: 0 520 | switchRatingsInt_10: 0 521 | switchRatingsInt_11: 0 522 | switchRatingsInt_12: 0 523 | switchLocalCommunicationIds_0: 524 | switchLocalCommunicationIds_1: 525 | switchLocalCommunicationIds_2: 526 | switchLocalCommunicationIds_3: 527 | switchLocalCommunicationIds_4: 528 | switchLocalCommunicationIds_5: 529 | switchLocalCommunicationIds_6: 530 | switchLocalCommunicationIds_7: 531 | switchParentalControl: 0 532 | switchAllowsScreenshot: 1 533 | switchAllowsVideoCapturing: 1 534 | switchAllowsRuntimeAddOnContentInstall: 0 535 | switchDataLossConfirmation: 0 536 | switchUserAccountLockEnabled: 0 537 | switchSystemResourceMemory: 16777216 538 | switchSupportedNpadStyles: 3 539 | switchNativeFsCacheSize: 32 540 | switchIsHoldTypeHorizontal: 0 541 | switchSupportedNpadCount: 8 542 | switchSocketConfigEnabled: 0 543 | switchTcpInitialSendBufferSize: 32 544 | switchTcpInitialReceiveBufferSize: 64 545 | switchTcpAutoSendBufferSizeMax: 256 546 | switchTcpAutoReceiveBufferSizeMax: 256 547 | switchUdpSendBufferSize: 9 548 | switchUdpReceiveBufferSize: 42 549 | switchSocketBufferEfficiency: 4 550 | switchSocketInitializeEnabled: 1 551 | switchNetworkInterfaceManagerInitializeEnabled: 1 552 | switchPlayerConnectionEnabled: 1 553 | switchUseMicroSleepForYield: 1 554 | switchMicroSleepForYieldTime: 25 555 | ps4NPAgeRating: 12 556 | ps4NPTitleSecret: 557 | ps4NPTrophyPackPath: 558 | ps4ParentalLevel: 1 559 | ps4ContentID: ED1633-NPXX51362_00-0000000000000000 560 | ps4Category: 0 561 | ps4MasterVersion: 01.00 562 | ps4AppVersion: 01.00 563 | ps4AppType: 0 564 | ps4ParamSfxPath: 565 | ps4VideoOutPixelFormat: 0 566 | ps4VideoOutInitialWidth: 1920 567 | ps4VideoOutBaseModeInitialWidth: 1920 568 | ps4VideoOutReprojectionRate: 60 569 | ps4PronunciationXMLPath: 570 | ps4PronunciationSIGPath: 571 | ps4BackgroundImagePath: 572 | ps4StartupImagePath: 573 | ps4StartupImagesFolder: 574 | ps4IconImagesFolder: 575 | ps4SaveDataImagePath: 576 | ps4SdkOverride: 577 | ps4BGMPath: 578 | ps4ShareFilePath: 579 | ps4ShareOverlayImagePath: 580 | ps4PrivacyGuardImagePath: 581 | ps4ExtraSceSysFile: 582 | ps4NPtitleDatPath: 583 | ps4RemotePlayKeyAssignment: -1 584 | ps4RemotePlayKeyMappingDir: 585 | ps4PlayTogetherPlayerCount: 0 586 | ps4EnterButtonAssignment: 1 587 | ps4ApplicationParam1: 0 588 | ps4ApplicationParam2: 0 589 | ps4ApplicationParam3: 0 590 | ps4ApplicationParam4: 0 591 | ps4DownloadDataSize: 0 592 | ps4GarlicHeapSize: 2048 593 | ps4ProGarlicHeapSize: 2560 594 | playerPrefsMaxSize: 32768 595 | ps4Passcode: eaoEiIgxIX4a2dREbbSqWy6yhKIDCdJO 596 | ps4pnSessions: 1 597 | ps4pnPresence: 1 598 | ps4pnFriends: 1 599 | ps4pnGameCustomData: 1 600 | playerPrefsSupport: 0 601 | enableApplicationExit: 0 602 | resetTempFolder: 1 603 | restrictedAudioUsageRights: 0 604 | ps4UseResolutionFallback: 0 605 | ps4ReprojectionSupport: 0 606 | ps4UseAudio3dBackend: 0 607 | ps4UseLowGarlicFragmentationMode: 1 608 | ps4SocialScreenEnabled: 0 609 | ps4ScriptOptimizationLevel: 2 610 | ps4Audio3dVirtualSpeakerCount: 14 611 | ps4attribCpuUsage: 0 612 | ps4PatchPkgPath: 613 | ps4PatchLatestPkgPath: 614 | ps4PatchChangeinfoPath: 615 | ps4PatchDayOne: 0 616 | ps4attribUserManagement: 0 617 | ps4attribMoveSupport: 0 618 | ps4attrib3DSupport: 0 619 | ps4attribShareSupport: 0 620 | ps4attribExclusiveVR: 0 621 | ps4disableAutoHideSplash: 0 622 | ps4videoRecordingFeaturesUsed: 0 623 | ps4contentSearchFeaturesUsed: 0 624 | ps4CompatibilityPS5: 0 625 | ps4AllowPS5Detection: 0 626 | ps4GPU800MHz: 1 627 | ps4attribEyeToEyeDistanceSettingVR: 0 628 | ps4IncludedModules: [] 629 | ps4attribVROutputEnabled: 0 630 | ps5ParamFilePath: 631 | ps5VideoOutPixelFormat: 0 632 | ps5VideoOutInitialWidth: 1920 633 | ps5VideoOutOutputMode: 1 634 | ps5BackgroundImagePath: 635 | ps5StartupImagePath: 636 | ps5Pic2Path: 637 | ps5StartupImagesFolder: 638 | ps5IconImagesFolder: 639 | ps5SaveDataImagePath: 640 | ps5SdkOverride: 641 | ps5BGMPath: 642 | ps5ShareOverlayImagePath: 643 | ps5NPConfigZipPath: 644 | ps5Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ 645 | ps5UseResolutionFallback: 0 646 | ps5UseAudio3dBackend: 0 647 | ps5ScriptOptimizationLevel: 2 648 | ps5Audio3dVirtualSpeakerCount: 14 649 | ps5UpdateReferencePackage: 650 | ps5disableAutoHideSplash: 0 651 | ps5OperatingSystemCanDisableSplashScreen: 0 652 | ps5IncludedModules: [] 653 | ps5SharedBinaryContentLabels: [] 654 | ps5SharedBinarySystemFolders: [] 655 | monoEnv: 656 | splashScreenBackgroundSourceLandscape: {fileID: 0} 657 | splashScreenBackgroundSourcePortrait: {fileID: 0} 658 | blurSplashScreenBackground: 1 659 | spritePackerPolicy: 660 | webGLMemorySize: 256 661 | webGLExceptionSupport: 1 662 | webGLNameFilesAsHashes: 0 663 | webGLDataCaching: 0 664 | webGLDebugSymbols: 0 665 | webGLEmscriptenArgs: 666 | webGLModulesDirectory: 667 | webGLTemplate: APPLICATION:Default 668 | webGLAnalyzeBuildSize: 0 669 | webGLUseEmbeddedResources: 0 670 | webGLCompressionFormat: 1 671 | webGLLinkerTarget: 0 672 | webGLThreadsSupport: 0 673 | webGLWasmStreaming: 0 674 | scriptingDefineSymbols: 675 | 1: STEAMWORKS_NET 676 | platformArchitecture: {} 677 | scriptingBackend: 678 | Android: 0 679 | Standalone: 1 680 | WebGL: 1 681 | Windows Store Apps: 2 682 | il2cppCompilerConfiguration: {} 683 | managedStrippingLevel: {} 684 | incrementalIl2cppBuild: {} 685 | suppressCommonWarnings: 1 686 | allowUnsafeCode: 0 687 | additionalIl2CppArgs: 688 | scriptingRuntimeVersion: 1 689 | gcIncremental: 0 690 | assemblyVersionValidation: 1 691 | gcWBarrierValidation: 0 692 | apiCompatibilityLevelPerPlatform: {} 693 | m_RenderingPath: 1 694 | m_MobileRenderingPath: 1 695 | metroPackageName: amworks.NETExampleple 696 | metroPackageVersion: 1.0.0.0 697 | metroCertificatePath: Assets\WSATestCertificate.pfx 698 | metroCertificatePassword: 699 | metroCertificateSubject: DefaultCompany 700 | metroCertificateIssuer: DefaultCompany 701 | metroCertificateNotAfter: 00fc3238b540d301 702 | metroApplicationDescription: Steamworks.NET Example 703 | wsaImages: {} 704 | metroTileShortName: Steamworks.NET Example 705 | metroTileShowName: 0 706 | metroMediumTileShowName: 0 707 | metroLargeTileShowName: 0 708 | metroWideTileShowName: 0 709 | metroSupportStreamingInstall: 0 710 | metroLastRequiredScene: 0 711 | metroDefaultTileSize: 1 712 | metroTileForegroundText: 1 713 | metroTileBackgroundColor: {r: 0, g: 0, b: 0, a: 1} 714 | metroSplashScreenBackgroundColor: {r: 0, g: 0, b: 0, a: 1} 715 | metroSplashScreenUseBackgroundColor: 0 716 | platformCapabilities: 717 | WindowsStoreApps: 718 | AllJoyn: False 719 | BlockedChatMessages: False 720 | Bluetooth: False 721 | Chat: False 722 | CodeGeneration: False 723 | EnterpriseAuthentication: False 724 | HumanInterfaceDevice: False 725 | InternetClient: False 726 | InternetClientServer: False 727 | Location: False 728 | Microphone: False 729 | MusicLibrary: False 730 | Objects3D: False 731 | PhoneCall: False 732 | PicturesLibrary: False 733 | PrivateNetworkClientServer: False 734 | Proximity: False 735 | RemovableStorage: False 736 | SharedUserCertificates: False 737 | UserAccountInformation: False 738 | VideosLibrary: False 739 | VoipCall: False 740 | WebCam: False 741 | metroTargetDeviceFamilies: {} 742 | metroFTAName: 743 | metroFTAFileTypes: [] 744 | metroProtocolName: 745 | XboxOneProductId: 746 | XboxOneUpdateKey: 747 | XboxOneSandboxId: 748 | XboxOneContentId: 749 | XboxOneTitleId: 750 | XboxOneSCId: 751 | XboxOneGameOsOverridePath: 752 | XboxOnePackagingOverridePath: 753 | XboxOneAppManifestOverridePath: 754 | XboxOneVersion: 1.0.0.0 755 | XboxOnePackageEncryption: 0 756 | XboxOnePackageUpdateGranularity: 2 757 | XboxOneDescription: 758 | XboxOneLanguage: 759 | - enus 760 | XboxOneCapability: [] 761 | XboxOneGameRating: {} 762 | XboxOneIsContentPackage: 0 763 | XboxOneEnhancedXboxCompatibilityMode: 0 764 | XboxOneEnableGPUVariability: 0 765 | XboxOneSockets: {} 766 | XboxOneSplashScreen: {fileID: 0} 767 | XboxOneAllowedProductIds: [] 768 | XboxOnePersistentLocalStorageSize: 0 769 | XboxOneXTitleMemory: 8 770 | XboxOneOverrideIdentityName: 771 | XboxOneOverrideIdentityPublisher: 772 | vrEditorSettings: 773 | daydream: 774 | daydreamIconForeground: {fileID: 0} 775 | daydreamIconBackground: {fileID: 0} 776 | cloudServicesEnabled: 777 | Analytics: 0 778 | Build: 0 779 | Collab: 0 780 | ErrorHub: 0 781 | Game_Performance: 0 782 | Hub: 0 783 | Purchasing: 0 784 | UNet: 0 785 | Unity_Ads: 0 786 | luminIcon: 787 | m_Name: 788 | m_ModelFolderPath: 789 | m_PortalFolderPath: 790 | luminCert: 791 | m_CertPath: 792 | m_SignPackage: 1 793 | luminIsChannelApp: 0 794 | luminVersion: 795 | m_VersionCode: 1 796 | m_VersionName: 797 | apiCompatibilityLevel: 3 798 | cloudProjectId: 799 | framebufferDepthMemorylessMode: 0 800 | projectName: 801 | organizationId: 802 | cloudEnabled: 0 803 | enableNativePlatformBackendsForNewInputSystem: 0 804 | disableOldInputManagerSupport: 0 805 | legacyClampBlendShapeWeights: 1 806 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 2019.4.40f1 2 | m_EditorVersionWithRevision: 2019.4.40f1 (ffc62b691db5) 3 | -------------------------------------------------------------------------------- /ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!47 &1 4 | QualitySettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 5 7 | m_CurrentQuality: 0 8 | m_QualitySettings: 9 | - serializedVersion: 2 10 | name: Default 11 | pixelLightCount: 0 12 | shadows: 0 13 | shadowResolution: 0 14 | shadowProjection: 1 15 | shadowCascades: 1 16 | shadowDistance: 15 17 | shadowNearPlaneOffset: 3 18 | shadowCascade2Split: 0.33333334 19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 20 | shadowmaskMode: 0 21 | blendWeights: 1 22 | textureQuality: 0 23 | anisotropicTextures: 0 24 | antiAliasing: 0 25 | softParticles: 0 26 | softVegetation: 0 27 | realtimeReflectionProbes: 0 28 | billboardsFaceCameraPosition: 0 29 | vSyncCount: 2 30 | lodBias: 0.3 31 | maximumLODLevel: 0 32 | particleRaycastBudget: 4 33 | asyncUploadTimeSlice: 2 34 | asyncUploadBufferSize: 4 35 | resolutionScalingFixedDPIFactor: 1 36 | excludedTargetPlatforms: [] 37 | m_PerPlatformDefaultQuality: 38 | Android: 0 39 | BlackBerry: 0 40 | FlashPlayer: 0 41 | GLES Emulation: 0 42 | PS3: 0 43 | Standalone: 0 44 | WP8: 0 45 | Web: 0 46 | Wii: 0 47 | Windows Store Apps: 0 48 | XBOX360: 0 49 | iPhone: 0 50 | -------------------------------------------------------------------------------- /ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!78 &1 4 | TagManager: 5 | tags: 6 | - 7 | Builtin Layer 0: Default 8 | Builtin Layer 1: TransparentFX 9 | Builtin Layer 2: Ignore Raycast 10 | Builtin Layer 3: 11 | Builtin Layer 4: Water 12 | Builtin Layer 5: 13 | Builtin Layer 6: 14 | Builtin Layer 7: 15 | User Layer 8: 16 | User Layer 9: 17 | User Layer 10: 18 | User Layer 11: 19 | User Layer 12: 20 | User Layer 13: 21 | User Layer 14: 22 | User Layer 15: 23 | User Layer 16: 24 | User Layer 17: 25 | User Layer 18: 26 | User Layer 19: 27 | User Layer 20: 28 | User Layer 21: 29 | User Layer 22: 30 | User Layer 23: 31 | User Layer 24: 32 | User Layer 25: 33 | User Layer 26: 34 | User Layer 27: 35 | User Layer 28: 36 | User Layer 29: 37 | User Layer 30: 38 | User Layer 31: 39 | m_SortingLayers: 40 | - name: Default 41 | userID: 0 42 | uniqueID: 0 43 | locked: 0 44 | -------------------------------------------------------------------------------- /ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!5 &1 4 | TimeManager: 5 | m_ObjectHideFlags: 0 6 | Fixed Timestep: .0199999996 7 | Maximum Allowed Timestep: .333333343 8 | m_TimeScale: 1 9 | -------------------------------------------------------------------------------- /ProjectSettings/UnityConnectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!310 &1 4 | UnityConnectSettings: 5 | m_ObjectHideFlags: 0 6 | m_Enabled: 0 7 | m_TestMode: 0 8 | m_TestEventUrl: 9 | m_TestConfigUrl: 10 | CrashReportingSettings: 11 | m_EventUrl: https://perf-events.cloud.unity3d.com/api/events/crashes 12 | m_Enabled: 0 13 | m_CaptureEditorExceptions: 1 14 | UnityPurchasingSettings: 15 | m_Enabled: 0 16 | m_TestMode: 0 17 | UnityAnalyticsSettings: 18 | m_Enabled: 0 19 | m_InitializeOnStartup: 1 20 | m_TestMode: 0 21 | m_TestEventUrl: 22 | m_TestConfigUrl: 23 | UnityAdsSettings: 24 | m_Enabled: 0 25 | m_InitializeOnStartup: 1 26 | m_TestMode: 0 27 | m_EnabledPlatforms: 4294967295 28 | m_IosGameId: 29 | m_AndroidGameId: 30 | -------------------------------------------------------------------------------- /ProjectSettings/VFXManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!937362698 &1 4 | VFXManager: 5 | m_ObjectHideFlags: 0 6 | m_IndirectShader: {fileID: 0} 7 | m_CopyBufferShader: {fileID: 0} 8 | m_SortShader: {fileID: 0} 9 | m_RenderPipeSettingsPath: 10 | m_FixedTimeStep: 0.016666668 11 | m_MaxDeltaTime: 0.05 12 | -------------------------------------------------------------------------------- /ProjectSettings/VersionControlSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!890905787 &1 4 | VersionControlSettings: 5 | m_ObjectHideFlags: 0 6 | m_Mode: Visible Meta Files 7 | m_CollabEditorSettings: 8 | inProgressEnabled: 1 9 | -------------------------------------------------------------------------------- /ProjectSettings/XRSettings.asset: -------------------------------------------------------------------------------- 1 | { 2 | "m_SettingKeys": [ 3 | "VR Device Disabled", 4 | "VR Device User Alert" 5 | ], 6 | "m_SettingValues": [ 7 | "False", 8 | "False" 9 | ] 10 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Steamworks.NET Example 2 | ======= 3 | 4 | This is a sample project for [Steamworks.NET](//github.com/rlabrecque/Steamworks.NET) it is intended to show functionality and a potential usage scenario. 5 | 6 | It is heavily based upon the Steamworks Example 'SpaceWar' included with the Steamworks SDK. It currently only features the `StatsAndAchievements` class from SpaceWar. 7 | 8 | Check out the [Steamworks.NET Test](//github.com/rlabrecque/Steamworks.NET-Test) project for a playground showing you how you could call every Steam function. 9 | 10 | This sample is available in the public domain (where acceptable.) Please view [LICENSE.txt](LICENSE.txt) for more details. 11 | 12 | This project is usually built using the latest version of Unity. As such it is only expected to build and run out of the box on the version specified in [ProjectVersion.txt](ProjectSettings/ProjectVersion.txt) or newer. 13 | --------------------------------------------------------------------------------