├── .gitignore
├── .vsconfig
├── .yamato
├── sonar.yml
└── yamato-config.yml
├── Assets
├── Art.meta
├── Art
│ ├── Material.meta
│ └── Material
│ │ ├── environment.mat
│ │ ├── environment.mat.meta
│ │ ├── furniture.mat
│ │ ├── furniture.mat.meta
│ │ ├── planet.mat
│ │ ├── planet.mat.meta
│ │ ├── player_mat.mat
│ │ └── player_mat.mat.meta
├── Input.meta
├── Input
│ ├── InputSystem.inputsettings.asset
│ └── InputSystem.inputsettings.asset.meta
├── Prefabs.meta
├── Prefabs
│ ├── Entities.meta
│ ├── Entities
│ │ ├── MatchmakingPlayer.prefab
│ │ ├── MatchmakingPlayer.prefab.meta
│ │ ├── MatchmakingPlayerVisuals.prefab
│ │ ├── MatchmakingPlayerVisuals.prefab.meta
│ │ ├── Table.prefab
│ │ └── Table.prefab.meta
│ ├── Managers.meta
│ ├── Managers
│ │ ├── BootStrapper.prefab
│ │ ├── BootStrapper.prefab.meta
│ │ ├── ClientManager.prefab
│ │ ├── ClientManager.prefab.meta
│ │ ├── ServerManager.prefab
│ │ └── ServerManager.prefab.meta
│ ├── Netcode.meta
│ ├── Netcode
│ │ ├── NetworkedSeatManager.prefab
│ │ └── NetworkedSeatManager.prefab.meta
│ ├── UI.meta
│ └── UI
│ │ ├── GameHudUI.prefab
│ │ ├── GameHudUI.prefab.meta
│ │ ├── MainMenuUI.prefab
│ │ ├── MainMenuUI.prefab.meta
│ │ ├── PlayerMenuUI.prefab
│ │ ├── PlayerMenuUI.prefab.meta
│ │ ├── PlayerNameUI.prefab
│ │ └── PlayerNameUI.prefab.meta
├── Renderer.meta
├── Renderer
│ ├── UniversalRenderPipelineAsset.asset
│ ├── UniversalRenderPipelineAsset.asset.meta
│ ├── UniversalRenderPipelineAsset_Renderer.asset
│ ├── UniversalRenderPipelineAsset_Renderer.asset.meta
│ ├── UniversalRenderPipelineGlobalSettings.asset
│ └── UniversalRenderPipelineGlobalSettings.asset.meta
├── Resources.meta
├── Resources
│ ├── NetworkManager.prefab
│ ├── NetworkManager.prefab.meta
│ ├── SynchedServerData.prefab
│ └── SynchedServerData.prefab.meta
├── Scenes.meta
├── Scenes
│ ├── bootStrap.unity
│ ├── bootStrap.unity.meta
│ ├── game_lab.unity
│ ├── game_lab.unity.meta
│ ├── game_space.unity
│ ├── game_space.unity.meta
│ ├── mainMenu.unity
│ └── mainMenu.unity.meta
├── Scripts.meta
├── Scripts
│ ├── Editor.meta
│ ├── Editor
│ │ ├── BuildTools.cs
│ │ └── BuildTools.cs.meta
│ ├── Matchplay.meta
│ ├── Matchplay
│ │ ├── ApplicationController.cs
│ │ ├── ApplicationController.cs.meta
│ │ ├── Client.meta
│ │ ├── Client
│ │ │ ├── ClientGameManager.cs
│ │ │ ├── ClientGameManager.cs.meta
│ │ │ ├── ClientPrefs.cs
│ │ │ ├── ClientPrefs.cs.meta
│ │ │ ├── ClientSingleton.cs
│ │ │ ├── ClientSingleton.cs.meta
│ │ │ ├── Netcode.meta
│ │ │ ├── Netcode
│ │ │ │ ├── MatchplayNetworkClient.cs
│ │ │ │ └── MatchplayNetworkClient.cs.meta
│ │ │ ├── Services.meta
│ │ │ ├── Services
│ │ │ │ ├── AuthenticationWrapper.cs
│ │ │ │ ├── AuthenticationWrapper.cs.meta
│ │ │ │ ├── MatchplayMatchmaker.cs
│ │ │ │ └── MatchplayMatchmaker.cs.meta
│ │ │ ├── UI.meta
│ │ │ └── UI
│ │ │ │ ├── GameHUDUI.cs
│ │ │ │ ├── GameHUDUI.cs.meta
│ │ │ │ ├── MainMenuUI.cs
│ │ │ │ ├── MainMenuUI.cs.meta
│ │ │ │ ├── PlayerNameUI.cs
│ │ │ │ └── PlayerNameUI.cs.meta
│ │ ├── Matchplay.asmdef
│ │ ├── Matchplay.asmdef.meta
│ │ ├── Server.meta
│ │ ├── Server
│ │ │ ├── Netcode.meta
│ │ │ ├── Netcode
│ │ │ │ ├── MatchplayNetworkServer.cs
│ │ │ │ ├── MatchplayNetworkServer.cs.meta
│ │ │ │ ├── Matchplayer.cs
│ │ │ │ ├── Matchplayer.cs.meta
│ │ │ │ ├── SeatManager.cs
│ │ │ │ └── SeatManager.cs.meta
│ │ │ ├── ServerGameManager.cs
│ │ │ ├── ServerGameManager.cs.meta
│ │ │ ├── ServerSingleton.cs
│ │ │ ├── ServerSingleton.cs.meta
│ │ │ ├── Services.meta
│ │ │ └── Services
│ │ │ │ ├── MatchplayBackfiller.cs
│ │ │ │ ├── MatchplayBackfiller.cs.meta
│ │ │ │ ├── MultiplayAllocationService.cs
│ │ │ │ ├── MultiplayAllocationService.cs.meta
│ │ │ │ ├── MultiplayServerQueryService.cs
│ │ │ │ └── MultiplayServerQueryService.cs.meta
│ │ ├── Shared.meta
│ │ └── Shared
│ │ │ ├── ApplicationData.cs
│ │ │ ├── ApplicationData.cs.meta
│ │ │ ├── EditorApplicationController.cs
│ │ │ ├── EditorApplicationController.cs.meta
│ │ │ ├── Game.meta
│ │ │ ├── Game
│ │ │ ├── GameData.cs
│ │ │ └── GameData.cs.meta
│ │ │ ├── Netcode.meta
│ │ │ ├── Netcode
│ │ │ ├── DisconnectReason.cs
│ │ │ ├── DisconnectReason.cs.meta
│ │ │ ├── MatchplayNetworkMessenger.cs
│ │ │ ├── MatchplayNetworkMessenger.cs.meta
│ │ │ ├── NetworkGuid.cs
│ │ │ ├── NetworkGuid.cs.meta
│ │ │ ├── NetworkModels.cs
│ │ │ ├── NetworkModels.cs.meta
│ │ │ ├── SynchedServerData.cs
│ │ │ └── SynchedServerData.cs.meta
│ │ │ ├── Tools.meta
│ │ │ └── Tools
│ │ │ ├── ColorTools.cs
│ │ │ ├── ColorTools.cs.meta
│ │ │ ├── FlagOperations.cs
│ │ │ ├── FlagOperations.cs.meta
│ │ │ ├── LocalProfileTool.cs
│ │ │ ├── LocalProfileTool.cs.meta
│ │ │ ├── NameGenerator.cs
│ │ │ ├── NameGenerator.cs.meta
│ │ │ ├── RendererColorer.cs
│ │ │ └── RendererColorer.cs.meta
│ ├── Tests.meta
│ └── Tests
│ │ ├── Editor.meta
│ │ ├── Editor
│ │ ├── MatchmakerTests.cs
│ │ └── MatchmakerTests.cs.meta
│ │ ├── MatchplayTests.asmdef
│ │ ├── MatchplayTests.asmdef.meta
│ │ ├── Runtime.meta
│ │ ├── Runtime
│ │ ├── ClientTests.cs
│ │ ├── ClientTests.cs.meta
│ │ ├── ServerTests.cs
│ │ └── ServerTests.cs.meta
│ │ ├── TestTools.cs
│ │ └── TestTools.cs.meta
├── UI.meta
└── UI
│ ├── SamplePanelSettings.asset
│ ├── SamplePanelSettings.asset.meta
│ ├── TextMesh Pro.meta
│ ├── TextMesh Pro
│ ├── Documentation.meta
│ ├── Documentation
│ │ ├── TextMesh Pro User Guide 2016.pdf
│ │ └── TextMesh Pro User Guide 2016.pdf.meta
│ ├── Fonts.meta
│ ├── Fonts
│ │ ├── LiberationSans - OFL.txt
│ │ ├── LiberationSans - OFL.txt.meta
│ │ ├── LiberationSans.ttf
│ │ └── LiberationSans.ttf.meta
│ ├── Resources.meta
│ ├── Resources
│ │ ├── Fonts & Materials.meta
│ │ ├── Fonts & Materials
│ │ │ ├── LiberationSans SDF - Drop Shadow.mat
│ │ │ ├── LiberationSans SDF - Drop Shadow.mat.meta
│ │ │ ├── LiberationSans SDF - Fallback.asset
│ │ │ ├── LiberationSans SDF - Fallback.asset.meta
│ │ │ ├── LiberationSans SDF - Outline.mat
│ │ │ ├── LiberationSans SDF - Outline.mat.meta
│ │ │ ├── LiberationSans SDF.asset
│ │ │ └── LiberationSans SDF.asset.meta
│ │ ├── LineBreaking Following Characters.txt
│ │ ├── LineBreaking Following Characters.txt.meta
│ │ ├── LineBreaking Leading Characters.txt
│ │ ├── LineBreaking Leading Characters.txt.meta
│ │ ├── Sprite Assets.meta
│ │ ├── Sprite Assets
│ │ │ ├── EmojiOne.asset
│ │ │ └── EmojiOne.asset.meta
│ │ ├── Style Sheets.meta
│ │ ├── Style Sheets
│ │ │ ├── Default Style Sheet.asset
│ │ │ └── Default Style Sheet.asset.meta
│ │ ├── TMP Settings.asset
│ │ └── TMP Settings.asset.meta
│ ├── Shaders.meta
│ ├── Shaders
│ │ ├── TMP_Bitmap-Custom-Atlas.shader
│ │ ├── TMP_Bitmap-Custom-Atlas.shader.meta
│ │ ├── TMP_Bitmap-Mobile.shader
│ │ ├── TMP_Bitmap-Mobile.shader.meta
│ │ ├── TMP_Bitmap.shader
│ │ ├── TMP_Bitmap.shader.meta
│ │ ├── TMP_SDF Overlay.shader
│ │ ├── TMP_SDF Overlay.shader.meta
│ │ ├── TMP_SDF SSD.shader
│ │ ├── TMP_SDF SSD.shader.meta
│ │ ├── TMP_SDF-Mobile Masking.shader
│ │ ├── TMP_SDF-Mobile Masking.shader.meta
│ │ ├── TMP_SDF-Mobile Overlay.shader
│ │ ├── TMP_SDF-Mobile Overlay.shader.meta
│ │ ├── TMP_SDF-Mobile SSD.shader
│ │ ├── TMP_SDF-Mobile SSD.shader.meta
│ │ ├── TMP_SDF-Mobile.shader
│ │ ├── TMP_SDF-Mobile.shader.meta
│ │ ├── TMP_SDF-Surface-Mobile.shader
│ │ ├── TMP_SDF-Surface-Mobile.shader.meta
│ │ ├── TMP_SDF-Surface.shader
│ │ ├── TMP_SDF-Surface.shader.meta
│ │ ├── TMP_SDF.shader
│ │ ├── TMP_SDF.shader.meta
│ │ ├── TMP_Sprite.shader
│ │ ├── TMP_Sprite.shader.meta
│ │ ├── TMPro.cginc
│ │ ├── TMPro.cginc.meta
│ │ ├── TMPro_Mobile.cginc
│ │ ├── TMPro_Mobile.cginc.meta
│ │ ├── TMPro_Properties.cginc
│ │ ├── TMPro_Properties.cginc.meta
│ │ ├── TMPro_Surface.cginc
│ │ └── TMPro_Surface.cginc.meta
│ ├── Sprites.meta
│ └── Sprites
│ │ ├── EmojiOne Attribution.txt
│ │ ├── EmojiOne Attribution.txt.meta
│ │ ├── EmojiOne.json
│ │ ├── EmojiOne.json.meta
│ │ ├── EmojiOne.png
│ │ └── EmojiOne.png.meta
│ ├── UI Toolkit.meta
│ ├── UI Toolkit
│ ├── UnityThemes.meta
│ └── UnityThemes
│ │ ├── UnityDefaultRuntimeTheme.tss
│ │ └── UnityDefaultRuntimeTheme.tss.meta
│ ├── inGame.uxml
│ ├── inGame.uxml.meta
│ ├── mainMenu.uxml
│ ├── mainMenu.uxml.meta
│ ├── sampleStyleSheet.uss
│ └── sampleStyleSheet.uss.meta
├── CODEOWNERS
├── LICENSE.md
├── Packages
├── manifest.json
└── packages-lock.json
├── ProjectSettings
├── AudioManager.asset
├── BurstAotSettings_StandaloneLinux64.json
├── BurstAotSettings_StandaloneWindows.json
├── ClusterInputManager.asset
├── CommonBurstAotSettings.json
├── DynamicsManager.asset
├── EditorBuildSettings.asset
├── EditorSettings.asset
├── GraphicsSettings.asset
├── InputManager.asset
├── MemorySettings.asset
├── NavMeshAreas.asset
├── PackageManagerSettings.asset
├── Physics2DSettings.asset
├── PresetManager.asset
├── ProjectSettings.asset
├── ProjectVersion.txt
├── QualitySettings.asset
├── SceneTemplateSettings.json
├── ShaderGraphSettings.asset
├── TagManager.asset
├── TimeManager.asset
├── TimelineSettings.asset
├── URPProjectSettings.asset
├── UnityConnectSettings.asset
├── VFXManager.asset
├── VersionControlSettings.asset
├── XRSettings.asset
└── boot.config
├── README.md
└── ~Documentation
└── Images
├── 1_PlayButton.PNG
├── Build_1.png
├── Build_2.PNG
├── Matchmaker_1.PNG
├── Matchmaker_1b.PNG
├── Matchmaker_2.PNG
├── Matchmaker_3.PNG
├── Matchmaker_4.PNG
├── Multiplay_1.PNG
├── Multiplay_2.PNG
└── Multiplay_3.PNG
/.gitignore:
--------------------------------------------------------------------------------
1 | # This .gitignore file should be placed at the root of your Unity project directory
2 | # Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore
3 |
4 | # Specific for this project:
5 | # If the IET for the project contains "Add Open Scenes" step, first remove EditorBuildSettings.asset,
6 | # commit, and then uncomment and commit a change to the line below.
7 | #/ProjectSettings/EditorBuildSettings.asset
8 |
9 | # A marker file of which existence is used to decide whether to run the first-launch experience or not.
10 | InitCodeMarker
11 |
12 | # Packed templates go here
13 | upm-ci~/
14 | upm-ci.log
15 |
16 | # Add-Ons go here
17 | addons/
18 |
19 | # WebGL Publisher artefacts and default build folder
20 | webgl_sharing
21 | connectwebgl.zip
22 | /WebGL Builds/
23 |
24 | # Never ignore Asset meta data...
25 | !/[Aa]ssets/**/*.meta
26 |
27 | # ...except for Microgame Add-Ons
28 | /Assets/AddOns.meta
29 |
30 | # IET has a feature to back up the project's content, let's ignore the possible backups.
31 | /[Tt]utorial [Dd]efaults/
32 |
33 | # The rest are general best practices for Unity projects
34 | /[Ll]ibrary/
35 | /[Tt]emp/
36 | /[Oo]bj/
37 | /[Bb]uild/
38 | /[Bb]uilds/
39 | /[Ll]ogs/
40 | /[Mm]emoryCaptures/
41 |
42 | # Project/user-specific settings using Settings Manager
43 | /ProjectSettings/Packages/
44 |
45 | # UserSettings introduced in 2020.1
46 | /UserSettings/
47 |
48 | # Not interested in packages-lock as we're not a real project.
49 | /Packages/packages-lock.json
50 |
51 | # Uncomment this line if you wish to ignore the asset store tools plugin
52 | /[Aa]ssets/AssetStoreTools*
53 |
54 | # Autogenerated Jetbrains Rider plugin
55 | [Aa]ssets/Plugins/Editor/JetBrains*
56 |
57 | # Visual Studio cache directory
58 | .vs/
59 |
60 | # Visual Studio Code settings directory
61 | .vscode/
62 |
63 | # Gradle cache directory
64 | .gradle/
65 |
66 | # Autogenerated VS/MD/Consulo solution and project files
67 | ExportedObj/
68 | .consulo/
69 | *.csproj
70 | *.unityproj
71 | *.sln
72 | *.suo
73 | *.tmp
74 | *.user
75 | *.userprefs
76 | *.pidb
77 | *.booproj
78 | *.svd
79 | *.pdb
80 | *.mdb
81 | *.opendb
82 | *.VC.db
83 |
84 | # Unity3D generated meta files
85 | *.pidb.meta
86 | *.pdb.meta
87 | *.mdb.meta
88 |
89 | # Unity3D generated file on crash reports
90 | sysinfo.txt
91 |
92 | # Builds
93 | *.apk
94 | *.unitypackage
95 |
96 | # Crashlytics generated file
97 | crashlytics-build.properties
98 | *.orig
99 | *.orig.meta
100 |
101 | # Ignore build reports
102 | /Assets/BuildReports*
103 |
104 | *.idea
105 | */.idea
106 |
107 | *.DS_Store
108 |
109 |
--------------------------------------------------------------------------------
/.vsconfig:
--------------------------------------------------------------------------------
1 | {
2 | "version": "1.0",
3 | "components": [
4 | "Microsoft.VisualStudio.Workload.ManagedGame"
5 | ]
6 | }
7 |
--------------------------------------------------------------------------------
/.yamato/sonar.yml:
--------------------------------------------------------------------------------
1 | sonar_scan:
2 | name: Sonar Scan
3 | agent:
4 | type: Unity::VM
5 | flavor: b1.large
6 | image: unity-ci/win10-dotnetcore:v0.4.0-1013193
7 | variables:
8 | CI: true
9 | UNITY_EDITOR_VERSION: 2021.3
10 | commands:
11 | - dotnet nuget add source https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/nuget/nuget
12 | - dotnet tool install --global dotnet-sonarscanner
13 | - command: choco source add -n Unity -s https://artifactory-slo.bf.unity3d.com/artifactory/api/nuget/unity-choco-local --priority=1
14 | timeout: 10
15 | retries: 10
16 | - command: choco install -y nodejs --version 15.14.0
17 | timeout: 10
18 | retries: 10
19 | - command: choco install -y unity-downloader-cli unity-config vcredist2010 vcredist2013 vcredist2015 vcredist2017 vcredist140 shellcheck
20 | timeout: 10
21 | retries: 10
22 | - unity-downloader-cli --wait --fast --unity-version %UNITY_EDITOR_VERSION% -c editor
23 | - command: unity-config project set registry candidates --project-path .
24 | timeout: 2
25 | retries: 5
26 | # The sonarscan program fails when it detects multiple csproj files, even if there's an sln file.
27 | # Therefore we should move the Unity project into a subdirectory and run the scan on the parent directory with just the sln file in it.
28 | - mkdir UnityProject
29 | - PowerShell Move-Item Assets -Destination UnityProject/Assets
30 | - PowerShell Move-Item Packages -Destination UnityProject/Packages
31 | - PowerShell Move-Item ProjectSettings -Destination UnityProject/ProjectSettings
32 | # Run Unity in headless mode to create the Library folder, import packages, create a C# solution/projects, etc.
33 | - '%YAMATO_SOURCE_DIR%/.Editor/Unity.exe -projectPath ./UnityProject -batchmode -quit -nographics -logFile UnityLog.txt -executeMethod "Packages.Rider.Editor.RiderScriptEditor.SyncSolution"'
34 | # We want to run sonarscanner and dotnet build in the parent directory, so let's get a copy of the sln in the parent directory.
35 | - PowerShell -Command Copy-Item UnityProject/UnityProject.sln -Destination ./UnityProject.sln
36 | # Update the solution file to point to the project files which were moved.
37 | - PowerShell -Command "(Get-Content UnityProject.sln) -Replace 'Assembly-CSharp.csproj', 'UnityProject/Assembly-CSharp.csproj' | Out-File -encoding ASCII UnityProject.sln"
38 | - PowerShell -Command "(Get-Content UnityProject.sln) -Replace 'Assembly-CSharp-Editor.csproj', 'UnityProject/Assembly-CSharp-Editor.csproj' | Out-File -encoding ASCII UnityProject.sln"
39 | # Start the sonarscan process listening to the project build.
40 | # Don't put the login token in plain text, use a Yamato secret.
41 | # https://internaldocs.unity.com/yamato_continuous_integration/usage/secrets/
42 | - >
43 | dotnet sonarscanner begin /k:"unity-gaming-services-use-cases"
44 | /d:sonar.host.url="https://sonarqube.internal.unity3d.com"
45 | /d:sonar.login="%SONAR_TOKEN%"
46 | /v:"https://unity-ci.cds.internal.unity3d.com/job/%YAMATO_JOB_ID%"
47 | /d:sonar.buildString="%GIT_REVISION%"
48 | /d:sonar.projectBaseDir="%YAMATO_SOURCE_DIR%/UnityProject"
49 | /d:sonar.branch.name="%GIT_BRANCH%"
50 | # Do the build.
51 | - dotnet build UnityProject.sln /p:SonarQubeTestProject=false
52 | # End the sonarscan process and it will then send its report to our SonarQube dashboard.
53 | # https://sonarqube.internal.unity3d.com/dashboard?id=unity-gaming-services-use-cases
54 | - dotnet sonarscanner end /d:sonar.login="%SONAR_TOKEN%"
55 | artifacts:
56 | CrashDumps:
57 | paths:
58 | - CrashDumps/**
59 | logs:
60 | paths:
61 | - '*.log'
62 | - UnityLog.txt
63 | - UpmLog.txt
64 | - SonarLog.txt
--------------------------------------------------------------------------------
/.yamato/yamato-config.yml:
--------------------------------------------------------------------------------
1 | device_playmode_build_ios_2021_3:
2 | name: Device Playmode Build [iOS, 2021.3]
3 | agent:
4 | image: mobile/macos-10.15-testing:v0.0.7-973555
5 | type: Unity::VM::osx
6 | flavor: b1.medium
7 | commands:
8 | - command: |-
9 | if brew tap | grep unity/unity; then brew untap --force unity/unity; fi
10 | brew tap --force-auto-update unity/unity git@github.cds.internal.unity3d.com:unity/homebrew-unity.git
11 | brew install unity-config unity-downloader-cli
12 | timeout: 10
13 | retries: 10
14 | - command: |-
15 | curl -s https://artifactory.prd.it.unity3d.com/artifactory/unity-tools-local/utr-standalone/utr --output ./utr
16 | chmod u+x ./utr
17 | - command: unity-config project set registry candidates --project-path .
18 | timeout: 2
19 | retries: 5
20 | - command: unity-downloader-cli --wait --fast --unity-version $UNITY_EDITOR_VERSION --path /Users/bokken/.Editor -c editor -c ios
21 | - command: ./utr --artifacts_path=artifacts --timeout=1800 --editor-location=/Users/bokken/.Editor --testproject=. --reruncount=2 --clean-library-on-rerun --suite=playmode --platform=ios --architecture=arm64 --build-only --player-save-path=build/players --extra-editor-arg=-enablePackageManagerTraces
22 | artifacts:
23 | CrashDumps:
24 | paths:
25 | - CrashDumps/**
26 | logs:
27 | paths:
28 | - '*.log'
29 | - '*.xml'
30 | - artifacts/**/*
31 | - Logs/**
32 | - Library/*.log
33 | - Builds/*.log
34 | - build/test-results/**
35 | players:
36 | paths:
37 | - build/players/**
38 | variables:
39 | CI: true
40 | UNITY_EDITOR_VERSION: 2021.3
41 | UTR_VERSION: 1.4.1
42 |
43 | device_playmode_build_android_2021_3:
44 | name: Device Playmode Build [Android, 2021.3]
45 | agent:
46 | image: package-ci/win10:stable
47 | type: Unity::VM
48 | flavor: b1.medium
49 | commands:
50 | - command: choco source add -n Unity -s https://artifactory-slo.bf.unity3d.com/artifactory/api/nuget/unity-choco-local --priority=1
51 | timeout: 10
52 | retries: 10
53 | - command: choco install -y unity-config unity-downloader-cli
54 | timeout: 10
55 | retries: 10
56 | - command: curl -s https://artifactory.prd.it.unity3d.com/artifactory/unity-tools-local/utr-standalone/utr.bat --output ./utr.bat
57 | - command: unity-config project set registry candidates --project-path .
58 | timeout: 2
59 | retries: 5
60 | - command: unity-downloader-cli --wait --fast --unity-version %UNITY_EDITOR_VERSION% --path C:\Users\bokken\.Editor -c editor -c android
61 | - command: |-
62 | set ANDROID_DEVICE_CONNECTION=%BOKKEN_DEVICE_IP%
63 | ./utr.bat --artifacts_path=artifacts --timeout=1800 --editor-location=C:\Users\bokken\.Editor --testproject=. --reruncount=2 --clean-library-on-rerun --suite=playmode --platform=android --build-only --player-save-path=build/players --scripting-backend=il2cpp --extra-editor-arg=-enablePackageManagerTraces
64 | artifacts:
65 | CrashDumps:
66 | paths:
67 | - CrashDumps/**
68 | logs:
69 | paths:
70 | - '*.log'
71 | - '*.xml'
72 | - artifacts/**/*
73 | - Logs/**
74 | - Library/*.log
75 | - Builds/*.log
76 | - build/test-results/**
77 | players:
78 | paths:
79 | - build/players/**
80 | variables:
81 | CI: true
82 | UNITY_EDITOR_VERSION: 2021.3
83 | UTR_VERSION: 1.4.1
--------------------------------------------------------------------------------
/Assets/Art.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 9f5de6e10159b5140b5a8b013a915e1e
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Art/Material.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: b4e4d922c6c0a0045af30c5d7c5aa2be
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Art/Material/environment.mat.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: b63aa9823df03b44292b86db43d7e553
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 2100000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Art/Material/furniture.mat:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &-2307515383309750684
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 11
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: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
13 | m_Name:
14 | m_EditorClassIdentifier:
15 | version: 5
16 | --- !u!21 &2100000
17 | Material:
18 | serializedVersion: 8
19 | m_ObjectHideFlags: 0
20 | m_CorrespondingSourceObject: {fileID: 0}
21 | m_PrefabInstance: {fileID: 0}
22 | m_PrefabAsset: {fileID: 0}
23 | m_Name: furniture
24 | m_Shader: {fileID: 4800000, guid: 8d2bb70cbf9db8d4da26e15b26e74248, type: 3}
25 | m_ValidKeywords:
26 | - _SPECULAR_COLOR
27 | m_InvalidKeywords: []
28 | m_LightmapFlags: 4
29 | m_EnableInstancingVariants: 0
30 | m_DoubleSidedGI: 0
31 | m_CustomRenderQueue: 2000
32 | stringTagMap:
33 | RenderType: Opaque
34 | disabledShaderPasses: []
35 | m_SavedProperties:
36 | serializedVersion: 3
37 | m_TexEnvs:
38 | - _BaseMap:
39 | m_Texture: {fileID: 0}
40 | m_Scale: {x: 1, y: 1}
41 | m_Offset: {x: 0, y: 0}
42 | - _BumpMap:
43 | m_Texture: {fileID: 0}
44 | m_Scale: {x: 1, y: 1}
45 | m_Offset: {x: 0, y: 0}
46 | - _DetailAlbedoMap:
47 | m_Texture: {fileID: 0}
48 | m_Scale: {x: 1, y: 1}
49 | m_Offset: {x: 0, y: 0}
50 | - _DetailMask:
51 | m_Texture: {fileID: 0}
52 | m_Scale: {x: 1, y: 1}
53 | m_Offset: {x: 0, y: 0}
54 | - _DetailNormalMap:
55 | m_Texture: {fileID: 0}
56 | m_Scale: {x: 1, y: 1}
57 | m_Offset: {x: 0, y: 0}
58 | - _EmissionMap:
59 | m_Texture: {fileID: 0}
60 | m_Scale: {x: 1, y: 1}
61 | m_Offset: {x: 0, y: 0}
62 | - _MainTex:
63 | m_Texture: {fileID: 0}
64 | m_Scale: {x: 1, y: 1}
65 | m_Offset: {x: 0, y: 0}
66 | - _MetallicGlossMap:
67 | m_Texture: {fileID: 0}
68 | m_Scale: {x: 1, y: 1}
69 | m_Offset: {x: 0, y: 0}
70 | - _OcclusionMap:
71 | m_Texture: {fileID: 0}
72 | m_Scale: {x: 1, y: 1}
73 | m_Offset: {x: 0, y: 0}
74 | - _ParallaxMap:
75 | m_Texture: {fileID: 0}
76 | m_Scale: {x: 1, y: 1}
77 | m_Offset: {x: 0, y: 0}
78 | - _SpecGlossMap:
79 | m_Texture: {fileID: 0}
80 | m_Scale: {x: 1, y: 1}
81 | m_Offset: {x: 0, y: 0}
82 | - unity_Lightmaps:
83 | m_Texture: {fileID: 0}
84 | m_Scale: {x: 1, y: 1}
85 | m_Offset: {x: 0, y: 0}
86 | - unity_LightmapsInd:
87 | m_Texture: {fileID: 0}
88 | m_Scale: {x: 1, y: 1}
89 | m_Offset: {x: 0, y: 0}
90 | - unity_ShadowMasks:
91 | m_Texture: {fileID: 0}
92 | m_Scale: {x: 1, y: 1}
93 | m_Offset: {x: 0, y: 0}
94 | m_Ints: []
95 | m_Floats:
96 | - _AlphaClip: 0
97 | - _Blend: 0
98 | - _BumpScale: 1
99 | - _ClearCoatMask: 0
100 | - _ClearCoatSmoothness: 0
101 | - _Cull: 2
102 | - _Cutoff: 0.5
103 | - _DetailAlbedoMapScale: 1
104 | - _DetailNormalMapScale: 1
105 | - _DstBlend: 0
106 | - _EnvironmentReflections: 0
107 | - _GlossMapScale: 0
108 | - _Glossiness: 0
109 | - _GlossinessSource: 0
110 | - _GlossyReflections: 0
111 | - _Metallic: 0
112 | - _OcclusionStrength: 1
113 | - _Parallax: 0.005
114 | - _QueueOffset: 0
115 | - _ReceiveShadows: 1
116 | - _SampleGI: 0
117 | - _Shininess: 0
118 | - _Smoothness: 0
119 | - _SmoothnessSource: 0
120 | - _SmoothnessTextureChannel: 0
121 | - _SpecSource: 0
122 | - _SpecularHighlights: 0
123 | - _SrcBlend: 1
124 | - _Surface: 0
125 | - _WorkflowMode: 1
126 | - _ZWrite: 1
127 | m_Colors:
128 | - _BaseColor: {r: 0.7924528, g: 0.33361313, b: 0.1981132, a: 1}
129 | - _Color: {r: 0.7924528, g: 0.3336131, b: 0.19811317, a: 1}
130 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
131 | - _SpecColor: {r: 0.19999972, g: 0.19999972, b: 0.19999972, a: 0}
132 | m_BuildTextureStacks: []
133 |
--------------------------------------------------------------------------------
/Assets/Art/Material/furniture.mat.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: db8c10b71ef19c44fb64469cdafb7d37
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 2100000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Art/Material/planet.mat:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &-7152675211592950674
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 11
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: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
13 | m_Name:
14 | m_EditorClassIdentifier:
15 | version: 5
16 | --- !u!21 &2100000
17 | Material:
18 | serializedVersion: 8
19 | m_ObjectHideFlags: 0
20 | m_CorrespondingSourceObject: {fileID: 0}
21 | m_PrefabInstance: {fileID: 0}
22 | m_PrefabAsset: {fileID: 0}
23 | m_Name: planet
24 | m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3}
25 | m_ValidKeywords: []
26 | m_InvalidKeywords: []
27 | m_LightmapFlags: 4
28 | m_EnableInstancingVariants: 0
29 | m_DoubleSidedGI: 0
30 | m_CustomRenderQueue: -1
31 | stringTagMap:
32 | RenderType: Opaque
33 | disabledShaderPasses: []
34 | m_SavedProperties:
35 | serializedVersion: 3
36 | m_TexEnvs:
37 | - _BaseMap:
38 | m_Texture: {fileID: 0}
39 | m_Scale: {x: 1, y: 1}
40 | m_Offset: {x: 0, y: 0}
41 | - _BumpMap:
42 | m_Texture: {fileID: 0}
43 | m_Scale: {x: 1, y: 1}
44 | m_Offset: {x: 0, y: 0}
45 | - _DetailAlbedoMap:
46 | m_Texture: {fileID: 0}
47 | m_Scale: {x: 1, y: 1}
48 | m_Offset: {x: 0, y: 0}
49 | - _DetailMask:
50 | m_Texture: {fileID: 0}
51 | m_Scale: {x: 1, y: 1}
52 | m_Offset: {x: 0, y: 0}
53 | - _DetailNormalMap:
54 | m_Texture: {fileID: 0}
55 | m_Scale: {x: 1, y: 1}
56 | m_Offset: {x: 0, y: 0}
57 | - _EmissionMap:
58 | m_Texture: {fileID: 0}
59 | m_Scale: {x: 1, y: 1}
60 | m_Offset: {x: 0, y: 0}
61 | - _MainTex:
62 | m_Texture: {fileID: 0}
63 | m_Scale: {x: 1, y: 1}
64 | m_Offset: {x: 0, y: 0}
65 | - _MetallicGlossMap:
66 | m_Texture: {fileID: 0}
67 | m_Scale: {x: 1, y: 1}
68 | m_Offset: {x: 0, y: 0}
69 | - _OcclusionMap:
70 | m_Texture: {fileID: 0}
71 | m_Scale: {x: 1, y: 1}
72 | m_Offset: {x: 0, y: 0}
73 | - _ParallaxMap:
74 | m_Texture: {fileID: 0}
75 | m_Scale: {x: 1, y: 1}
76 | m_Offset: {x: 0, y: 0}
77 | - _SpecGlossMap:
78 | m_Texture: {fileID: 0}
79 | m_Scale: {x: 1, y: 1}
80 | m_Offset: {x: 0, y: 0}
81 | - unity_Lightmaps:
82 | m_Texture: {fileID: 0}
83 | m_Scale: {x: 1, y: 1}
84 | m_Offset: {x: 0, y: 0}
85 | - unity_LightmapsInd:
86 | m_Texture: {fileID: 0}
87 | m_Scale: {x: 1, y: 1}
88 | m_Offset: {x: 0, y: 0}
89 | - unity_ShadowMasks:
90 | m_Texture: {fileID: 0}
91 | m_Scale: {x: 1, y: 1}
92 | m_Offset: {x: 0, y: 0}
93 | m_Ints: []
94 | m_Floats:
95 | - _AlphaClip: 0
96 | - _Blend: 0
97 | - _BumpScale: 1
98 | - _ClearCoatMask: 0
99 | - _ClearCoatSmoothness: 0
100 | - _Cull: 2
101 | - _Cutoff: 0.5
102 | - _DetailAlbedoMapScale: 1
103 | - _DetailNormalMapScale: 1
104 | - _DstBlend: 0
105 | - _EnvironmentReflections: 1
106 | - _GlossMapScale: 0
107 | - _Glossiness: 0
108 | - _GlossyReflections: 0
109 | - _Metallic: 0
110 | - _OcclusionStrength: 1
111 | - _Parallax: 0.005
112 | - _QueueOffset: 0
113 | - _ReceiveShadows: 1
114 | - _Smoothness: 0.5
115 | - _SmoothnessTextureChannel: 0
116 | - _SpecularHighlights: 1
117 | - _SrcBlend: 1
118 | - _Surface: 0
119 | - _WorkflowMode: 1
120 | - _ZWrite: 1
121 | m_Colors:
122 | - _BaseColor: {r: 0.3537736, g: 0.9082813, b: 1, a: 1}
123 | - _Color: {r: 0.35377356, g: 0.9082813, b: 1, a: 1}
124 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
125 | - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
126 | m_BuildTextureStacks: []
127 |
--------------------------------------------------------------------------------
/Assets/Art/Material/planet.mat.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 47624358acef8db4b960374adbc3aeb3
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 2100000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Art/Material/player_mat.mat.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 14712347c2578064d97cfecdfad65b02
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 2100000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Input.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: ad3f57d22c19c32409cc57fe0d973418
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Input/InputSystem.inputsettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
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: 11500000, guid: c46f07b5ed07e4e92aa78254188d3d10, type: 3}
13 | m_Name: InputSystem.inputsettings
14 | m_EditorClassIdentifier:
15 | m_SupportedDevices: []
16 | m_UpdateMode: 1
17 | m_MaxEventBytesPerUpdate: 5242880
18 | m_MaxQueuedEventsPerUpdate: 1000
19 | m_CompensateForScreenOrientation: 0
20 | m_BackgroundBehavior: 0
21 | m_EditorInputBehaviorInPlayMode: 0
22 | m_DefaultDeadzoneMin: 0.125
23 | m_DefaultDeadzoneMax: 0.925
24 | m_DefaultButtonPressPoint: 0.5
25 | m_ButtonReleaseThreshold: 0.75
26 | m_DefaultTapTime: 0.2
27 | m_DefaultSlowTapTime: 0.5
28 | m_DefaultHoldTime: 0.4
29 | m_TapRadius: 5
30 | m_MultiTapDelayTime: 0.75
31 | m_DisableRedundantEventsMerging: 0
32 | m_iOSSettings:
33 | m_MotionUsage:
34 | m_Enabled: 0
35 | m_Description:
36 |
--------------------------------------------------------------------------------
/Assets/Input/InputSystem.inputsettings.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 0e63c0980844579448e0a36784ec30dc
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Prefabs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 84b4ab346fc32d445b7207cb1884cf42
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Prefabs/Entities.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 63bb3cfa3ee3f2a44a75c4bd640972e5
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Prefabs/Entities/MatchmakingPlayer.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 398aad09d8b2a47eba664a076763cdcc
3 | PrefabImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Prefabs/Entities/MatchmakingPlayerVisuals.prefab:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!1001 &1305108867353068726
4 | PrefabInstance:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_Modification:
8 | m_TransformParent: {fileID: 0}
9 | m_Modifications:
10 | - target: {fileID: 3439633038736912633, guid: 398aad09d8b2a47eba664a076763cdcc, type: 3}
11 | propertyPath: m_Name
12 | value: MatchmakingPlayerVisuals
13 | objectReference: {fileID: 0}
14 | - target: {fileID: 3439633038736912634, guid: 398aad09d8b2a47eba664a076763cdcc, type: 3}
15 | propertyPath: GlobalObjectIdHash
16 | value: 951099334
17 | objectReference: {fileID: 0}
18 | - target: {fileID: 3439633038736913158, guid: 398aad09d8b2a47eba664a076763cdcc, type: 3}
19 | propertyPath: m_RootOrder
20 | value: 0
21 | objectReference: {fileID: 0}
22 | - target: {fileID: 3439633038736913158, guid: 398aad09d8b2a47eba664a076763cdcc, type: 3}
23 | propertyPath: m_LocalPosition.x
24 | value: 0
25 | objectReference: {fileID: 0}
26 | - target: {fileID: 3439633038736913158, guid: 398aad09d8b2a47eba664a076763cdcc, type: 3}
27 | propertyPath: m_LocalPosition.y
28 | value: 0
29 | objectReference: {fileID: 0}
30 | - target: {fileID: 3439633038736913158, guid: 398aad09d8b2a47eba664a076763cdcc, type: 3}
31 | propertyPath: m_LocalPosition.z
32 | value: 0
33 | objectReference: {fileID: 0}
34 | - target: {fileID: 3439633038736913158, guid: 398aad09d8b2a47eba664a076763cdcc, type: 3}
35 | propertyPath: m_LocalRotation.w
36 | value: 1
37 | objectReference: {fileID: 0}
38 | - target: {fileID: 3439633038736913158, guid: 398aad09d8b2a47eba664a076763cdcc, type: 3}
39 | propertyPath: m_LocalRotation.x
40 | value: 0
41 | objectReference: {fileID: 0}
42 | - target: {fileID: 3439633038736913158, guid: 398aad09d8b2a47eba664a076763cdcc, type: 3}
43 | propertyPath: m_LocalRotation.y
44 | value: 0
45 | objectReference: {fileID: 0}
46 | - target: {fileID: 3439633038736913158, guid: 398aad09d8b2a47eba664a076763cdcc, type: 3}
47 | propertyPath: m_LocalRotation.z
48 | value: 0
49 | objectReference: {fileID: 0}
50 | - target: {fileID: 3439633038736913158, guid: 398aad09d8b2a47eba664a076763cdcc, type: 3}
51 | propertyPath: m_LocalEulerAnglesHint.x
52 | value: 0
53 | objectReference: {fileID: 0}
54 | - target: {fileID: 3439633038736913158, guid: 398aad09d8b2a47eba664a076763cdcc, type: 3}
55 | propertyPath: m_LocalEulerAnglesHint.y
56 | value: 0
57 | objectReference: {fileID: 0}
58 | - target: {fileID: 3439633038736913158, guid: 398aad09d8b2a47eba664a076763cdcc, type: 3}
59 | propertyPath: m_LocalEulerAnglesHint.z
60 | value: 0
61 | objectReference: {fileID: 0}
62 | m_RemovedComponents:
63 | - {fileID: 7265968212837280669, guid: 398aad09d8b2a47eba664a076763cdcc, type: 3}
64 | - {fileID: 3439633038736912634, guid: 398aad09d8b2a47eba664a076763cdcc, type: 3}
65 | - {fileID: -36436772333331154, guid: 398aad09d8b2a47eba664a076763cdcc, type: 3}
66 | m_SourcePrefab: {fileID: 100100000, guid: 398aad09d8b2a47eba664a076763cdcc, type: 3}
67 |
--------------------------------------------------------------------------------
/Assets/Prefabs/Entities/MatchmakingPlayerVisuals.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 159397fa297f9654a93d4bf25be9abc0
3 | PrefabImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Prefabs/Entities/Table.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 4765b140c5a606b4f89fcc4da9f007fb
3 | PrefabImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Prefabs/Managers.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 39471b53c436d5349a5dd6684275cfc4
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Prefabs/Managers/BootStrapper.prefab:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!1 &805244812784019364
4 | GameObject:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | serializedVersion: 6
10 | m_Component:
11 | - component: {fileID: 805244812784019367}
12 | - component: {fileID: 805244812784019366}
13 | - component: {fileID: 805244812784019361}
14 | m_Layer: 0
15 | m_Name: BootStrapper
16 | m_TagString: Untagged
17 | m_Icon: {fileID: 0}
18 | m_NavMeshLayer: 0
19 | m_StaticEditorFlags: 0
20 | m_IsActive: 1
21 | --- !u!4 &805244812784019367
22 | Transform:
23 | m_ObjectHideFlags: 0
24 | m_CorrespondingSourceObject: {fileID: 0}
25 | m_PrefabInstance: {fileID: 0}
26 | m_PrefabAsset: {fileID: 0}
27 | m_GameObject: {fileID: 805244812784019364}
28 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
29 | m_LocalPosition: {x: 0, y: 0, z: 0}
30 | m_LocalScale: {x: 1, y: 1, z: 1}
31 | m_ConstrainProportionsScale: 0
32 | m_Children: []
33 | m_Father: {fileID: 0}
34 | m_RootOrder: 0
35 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
36 | --- !u!114 &805244812784019366
37 | MonoBehaviour:
38 | m_ObjectHideFlags: 0
39 | m_CorrespondingSourceObject: {fileID: 0}
40 | m_PrefabInstance: {fileID: 0}
41 | m_PrefabAsset: {fileID: 0}
42 | m_GameObject: {fileID: 805244812784019364}
43 | m_Enabled: 1
44 | m_EditorHideFlags: 0
45 | m_Script: {fileID: 11500000, guid: 17b4b8e111db8554390425c0c7a04367, type: 3}
46 | m_Name:
47 | m_EditorClassIdentifier:
48 | m_ServerPrefab: {fileID: 7148318723478363551, guid: 086dc5b4dd92f4e42a6af0934c2bbf0b, type: 3}
49 | m_ClientPrefab: {fileID: 2538532228289365691, guid: cf023b2898aba4648bce121a5fb8418d, type: 3}
50 | --- !u!114 &805244812784019361
51 | MonoBehaviour:
52 | m_ObjectHideFlags: 0
53 | m_CorrespondingSourceObject: {fileID: 0}
54 | m_PrefabInstance: {fileID: 0}
55 | m_PrefabAsset: {fileID: 0}
56 | m_GameObject: {fileID: 805244812784019364}
57 | m_Enabled: 1
58 | m_EditorHideFlags: 0
59 | m_Script: {fileID: 11500000, guid: 2ec48f5019a1a9f4a9ae7ca2d44d6ce3, type: 3}
60 | m_Name:
61 | m_EditorClassIdentifier:
62 | m_Controller: {fileID: 805244812784019366}
63 |
--------------------------------------------------------------------------------
/Assets/Prefabs/Managers/BootStrapper.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 234b3de198486ac45a5eba0716554a11
3 | PrefabImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Prefabs/Managers/ClientManager.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: cf023b2898aba4648bce121a5fb8418d
3 | PrefabImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Prefabs/Managers/ServerManager.prefab:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!1 &4129324833183441546
4 | GameObject:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | serializedVersion: 6
10 | m_Component:
11 | - component: {fileID: 5484802511888900665}
12 | - component: {fileID: 7148318723478363551}
13 | m_Layer: 0
14 | m_Name: ServerManager
15 | m_TagString: Untagged
16 | m_Icon: {fileID: 0}
17 | m_NavMeshLayer: 0
18 | m_StaticEditorFlags: 0
19 | m_IsActive: 1
20 | --- !u!4 &5484802511888900665
21 | Transform:
22 | m_ObjectHideFlags: 0
23 | m_CorrespondingSourceObject: {fileID: 0}
24 | m_PrefabInstance: {fileID: 0}
25 | m_PrefabAsset: {fileID: 0}
26 | m_GameObject: {fileID: 4129324833183441546}
27 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
28 | m_LocalPosition: {x: -1.3529239, y: -1.0388069, z: -0.42320967}
29 | m_LocalScale: {x: 1, y: 1, z: 1}
30 | m_ConstrainProportionsScale: 0
31 | m_Children: []
32 | m_Father: {fileID: 0}
33 | m_RootOrder: 0
34 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
35 | --- !u!114 &7148318723478363551
36 | MonoBehaviour:
37 | m_ObjectHideFlags: 0
38 | m_CorrespondingSourceObject: {fileID: 0}
39 | m_PrefabInstance: {fileID: 0}
40 | m_PrefabAsset: {fileID: 0}
41 | m_GameObject: {fileID: 4129324833183441546}
42 | m_Enabled: 1
43 | m_EditorHideFlags: 0
44 | m_Script: {fileID: 11500000, guid: 2c566983ffd513c4eb2184dce31ae714, type: 3}
45 | m_Name:
46 | m_EditorClassIdentifier:
47 | SynchedServerDataPrefab: {fileID: 7137697522663392195, guid: fdddb954c22b442458426023cd31253d, type: 3}
48 |
--------------------------------------------------------------------------------
/Assets/Prefabs/Managers/ServerManager.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 086dc5b4dd92f4e42a6af0934c2bbf0b
3 | PrefabImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Prefabs/Netcode.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 91986cab844bf0e49921d9c3c9c16b8d
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Prefabs/Netcode/NetworkedSeatManager.prefab:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!1 &2004524346269018207
4 | GameObject:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | serializedVersion: 6
10 | m_Component:
11 | - component: {fileID: 2004524346269018201}
12 | - component: {fileID: 2004524346269018206}
13 | - component: {fileID: 7856396370006918698}
14 | - component: {fileID: -7638680544941639800}
15 | m_Layer: 0
16 | m_Name: NetworkedSeatManager
17 | m_TagString: Untagged
18 | m_Icon: {fileID: 419385456094870383, guid: 0000000000000000d000000000000000, type: 0}
19 | m_NavMeshLayer: 0
20 | m_StaticEditorFlags: 0
21 | m_IsActive: 1
22 | --- !u!4 &2004524346269018201
23 | Transform:
24 | m_ObjectHideFlags: 0
25 | m_CorrespondingSourceObject: {fileID: 0}
26 | m_PrefabInstance: {fileID: 0}
27 | m_PrefabAsset: {fileID: 0}
28 | m_GameObject: {fileID: 2004524346269018207}
29 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
30 | m_LocalPosition: {x: 0, y: 0, z: 0}
31 | m_LocalScale: {x: 1, y: 1, z: 1}
32 | m_ConstrainProportionsScale: 0
33 | m_Children: []
34 | m_Father: {fileID: 0}
35 | m_RootOrder: 0
36 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
37 | --- !u!114 &2004524346269018206
38 | MonoBehaviour:
39 | m_ObjectHideFlags: 0
40 | m_CorrespondingSourceObject: {fileID: 0}
41 | m_PrefabInstance: {fileID: 0}
42 | m_PrefabAsset: {fileID: 0}
43 | m_GameObject: {fileID: 2004524346269018207}
44 | m_Enabled: 1
45 | m_EditorHideFlags: 0
46 | m_Script: {fileID: 11500000, guid: 88edccbda5cf3494f85e09ad536c2cfb, type: 3}
47 | m_Name:
48 | m_EditorClassIdentifier:
49 | seatCircleRadius: 3
50 | rotationSpeed: 0
51 | --- !u!114 &7856396370006918698
52 | MonoBehaviour:
53 | m_ObjectHideFlags: 0
54 | m_CorrespondingSourceObject: {fileID: 0}
55 | m_PrefabInstance: {fileID: 0}
56 | m_PrefabAsset: {fileID: 0}
57 | m_GameObject: {fileID: 2004524346269018207}
58 | m_Enabled: 1
59 | m_EditorHideFlags: 0
60 | m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3}
61 | m_Name:
62 | m_EditorClassIdentifier:
63 | GlobalObjectIdHash: 951099334
64 | AlwaysReplicateAsRoot: 1
65 | DontDestroyWithOwner: 0
66 | AutoObjectParentSync: 1
67 | --- !u!114 &-7638680544941639800
68 | MonoBehaviour:
69 | m_ObjectHideFlags: 0
70 | m_CorrespondingSourceObject: {fileID: 0}
71 | m_PrefabInstance: {fileID: 0}
72 | m_PrefabAsset: {fileID: 0}
73 | m_GameObject: {fileID: 2004524346269018207}
74 | m_Enabled: 1
75 | m_EditorHideFlags: 0
76 | m_Script: {fileID: 11500000, guid: e96cb6065543e43c4a752faaa1468eb1, type: 3}
77 | m_Name:
78 | m_EditorClassIdentifier:
79 | SyncPositionX: 0
80 | SyncPositionY: 0
81 | SyncPositionZ: 0
82 | SyncRotAngleX: 1
83 | SyncRotAngleY: 1
84 | SyncRotAngleZ: 1
85 | SyncScaleX: 0
86 | SyncScaleY: 0
87 | SyncScaleZ: 0
88 | PositionThreshold: 0.001
89 | RotAngleThreshold: 0.01
90 | ScaleThreshold: 0.01
91 | InLocalSpace: 0
92 | Interpolate: 1
93 |
--------------------------------------------------------------------------------
/Assets/Prefabs/Netcode/NetworkedSeatManager.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 3db265d2f6a5da94aa08ca082eae9094
3 | PrefabImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Prefabs/UI.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: ae28fbfef4ed45c45bcc6fcfaaf522fe
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Prefabs/UI/GameHudUI.prefab:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!1 &2577709966034035762
4 | GameObject:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | serializedVersion: 6
10 | m_Component:
11 | - component: {fileID: 2577709966034035763}
12 | - component: {fileID: 2577709966034035760}
13 | - component: {fileID: 4067625207983384706}
14 | m_Layer: 0
15 | m_Name: GameHudUI
16 | m_TagString: Untagged
17 | m_Icon: {fileID: 0}
18 | m_NavMeshLayer: 0
19 | m_StaticEditorFlags: 0
20 | m_IsActive: 1
21 | --- !u!4 &2577709966034035763
22 | Transform:
23 | m_ObjectHideFlags: 0
24 | m_CorrespondingSourceObject: {fileID: 0}
25 | m_PrefabInstance: {fileID: 0}
26 | m_PrefabAsset: {fileID: 0}
27 | m_GameObject: {fileID: 2577709966034035762}
28 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
29 | m_LocalPosition: {x: -8.5, y: 8, z: -6.5}
30 | m_LocalScale: {x: 1, y: 1, z: 1}
31 | m_ConstrainProportionsScale: 0
32 | m_Children: []
33 | m_Father: {fileID: 0}
34 | m_RootOrder: 0
35 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
36 | --- !u!114 &2577709966034035760
37 | MonoBehaviour:
38 | m_ObjectHideFlags: 0
39 | m_CorrespondingSourceObject: {fileID: 0}
40 | m_PrefabInstance: {fileID: 0}
41 | m_PrefabAsset: {fileID: 0}
42 | m_GameObject: {fileID: 2577709966034035762}
43 | m_Enabled: 1
44 | m_EditorHideFlags: 0
45 | m_Script: {fileID: 19102, guid: 0000000000000000e000000000000000, type: 0}
46 | m_Name:
47 | m_EditorClassIdentifier:
48 | m_PanelSettings: {fileID: 11400000, guid: f00d923a1a4181643b682ceb9728d824, type: 2}
49 | m_ParentUI: {fileID: 0}
50 | sourceAsset: {fileID: 9197481963319205126, guid: f1f4916599617384ca287985ba0fb046, type: 3}
51 | m_SortingOrder: 1
52 | --- !u!114 &4067625207983384706
53 | MonoBehaviour:
54 | m_ObjectHideFlags: 0
55 | m_CorrespondingSourceObject: {fileID: 0}
56 | m_PrefabInstance: {fileID: 0}
57 | m_PrefabAsset: {fileID: 0}
58 | m_GameObject: {fileID: 2577709966034035762}
59 | m_Enabled: 1
60 | m_EditorHideFlags: 0
61 | m_Script: {fileID: 11500000, guid: 4bf132059672b164da7a3f1ca9812125, type: 3}
62 | m_Name:
63 | m_EditorClassIdentifier:
64 | playerLabelUI: {fileID: 5482846907606265424, guid: 01baba44b0314634294a8d0f1e8ba767, type: 3}
65 |
--------------------------------------------------------------------------------
/Assets/Prefabs/UI/GameHudUI.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 12059ac205388e14ca331d5f31c3d795
3 | PrefabImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Prefabs/UI/MainMenuUI.prefab:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!1 &5081636332234862057
4 | GameObject:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | serializedVersion: 6
10 | m_Component:
11 | - component: {fileID: 5081636332234862058}
12 | - component: {fileID: 5081636332234862059}
13 | - component: {fileID: 5081636332234862036}
14 | m_Layer: 0
15 | m_Name: MainMenuUI
16 | m_TagString: Untagged
17 | m_Icon: {fileID: 0}
18 | m_NavMeshLayer: 0
19 | m_StaticEditorFlags: 0
20 | m_IsActive: 1
21 | --- !u!4 &5081636332234862058
22 | Transform:
23 | m_ObjectHideFlags: 0
24 | m_CorrespondingSourceObject: {fileID: 0}
25 | m_PrefabInstance: {fileID: 0}
26 | m_PrefabAsset: {fileID: 0}
27 | m_GameObject: {fileID: 5081636332234862057}
28 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
29 | m_LocalPosition: {x: 0, y: 0, z: 0}
30 | m_LocalScale: {x: 1, y: 1, z: 1}
31 | m_ConstrainProportionsScale: 0
32 | m_Children: []
33 | m_Father: {fileID: 0}
34 | m_RootOrder: 0
35 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
36 | --- !u!114 &5081636332234862059
37 | MonoBehaviour:
38 | m_ObjectHideFlags: 0
39 | m_CorrespondingSourceObject: {fileID: 0}
40 | m_PrefabInstance: {fileID: 0}
41 | m_PrefabAsset: {fileID: 0}
42 | m_GameObject: {fileID: 5081636332234862057}
43 | m_Enabled: 1
44 | m_EditorHideFlags: 0
45 | m_Script: {fileID: 19102, guid: 0000000000000000e000000000000000, type: 0}
46 | m_Name:
47 | m_EditorClassIdentifier:
48 | m_PanelSettings: {fileID: 11400000, guid: f00d923a1a4181643b682ceb9728d824, type: 2}
49 | m_ParentUI: {fileID: 0}
50 | sourceAsset: {fileID: 9197481963319205126, guid: fdb869e58e35c6242ac68cf8a9b9b0b5, type: 3}
51 | m_SortingOrder: 0
52 | --- !u!114 &5081636332234862036
53 | MonoBehaviour:
54 | m_ObjectHideFlags: 0
55 | m_CorrespondingSourceObject: {fileID: 0}
56 | m_PrefabInstance: {fileID: 0}
57 | m_PrefabAsset: {fileID: 0}
58 | m_GameObject: {fileID: 5081636332234862057}
59 | m_Enabled: 1
60 | m_EditorHideFlags: 0
61 | m_Script: {fileID: 11500000, guid: 674a1a0d424846140a24a8c721677a6c, type: 3}
62 | m_Name:
63 | m_EditorClassIdentifier:
64 | m_GameManager: {fileID: 0}
65 |
--------------------------------------------------------------------------------
/Assets/Prefabs/UI/MainMenuUI.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a2811a13223d58d43a47fc083ef2dcd1
3 | PrefabImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Prefabs/UI/PlayerMenuUI.prefab:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!1 &186310030803394068
4 | GameObject:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | serializedVersion: 6
10 | m_Component:
11 | - component: {fileID: 7699470312749944431}
12 | - component: {fileID: 1286324233956004538}
13 | m_Layer: 0
14 | m_Name: PlayerMenuUI
15 | m_TagString: Untagged
16 | m_Icon: {fileID: 0}
17 | m_NavMeshLayer: 0
18 | m_StaticEditorFlags: 0
19 | m_IsActive: 0
20 | --- !u!4 &7699470312749944431
21 | Transform:
22 | m_ObjectHideFlags: 0
23 | m_CorrespondingSourceObject: {fileID: 0}
24 | m_PrefabInstance: {fileID: 0}
25 | m_PrefabAsset: {fileID: 0}
26 | m_GameObject: {fileID: 186310030803394068}
27 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
28 | m_LocalPosition: {x: 0, y: 0, z: 0}
29 | m_LocalScale: {x: 1, y: 1, z: 1}
30 | m_ConstrainProportionsScale: 0
31 | m_Children: []
32 | m_Father: {fileID: 0}
33 | m_RootOrder: 0
34 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
35 | --- !u!114 &1286324233956004538
36 | MonoBehaviour:
37 | m_ObjectHideFlags: 0
38 | m_CorrespondingSourceObject: {fileID: 0}
39 | m_PrefabInstance: {fileID: 0}
40 | m_PrefabAsset: {fileID: 0}
41 | m_GameObject: {fileID: 186310030803394068}
42 | m_Enabled: 1
43 | m_EditorHideFlags: 0
44 | m_Script: {fileID: 19102, guid: 0000000000000000e000000000000000, type: 0}
45 | m_Name:
46 | m_EditorClassIdentifier:
47 | m_PanelSettings: {fileID: 0}
48 | m_ParentUI: {fileID: 0}
49 | sourceAsset: {fileID: 0}
50 | m_SortingOrder: 0
51 |
--------------------------------------------------------------------------------
/Assets/Prefabs/UI/PlayerMenuUI.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 68171c9234aba994999d2a218e6c0354
3 | PrefabImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Prefabs/UI/PlayerNameUI.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 01baba44b0314634294a8d0f1e8ba767
3 | PrefabImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Renderer.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 23117882957c2f145a8b665b9511412c
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Renderer/UniversalRenderPipelineAsset.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
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: 11500000, guid: bf2edee5c58d82540a51f03df9d42094, type: 3}
13 | m_Name: UniversalRenderPipelineAsset
14 | m_EditorClassIdentifier:
15 | k_AssetVersion: 9
16 | k_AssetPreviousVersion: 9
17 | m_RendererType: 1
18 | m_RendererData: {fileID: 0}
19 | m_RendererDataList:
20 | - {fileID: 11400000, guid: f663f0f238f23f44392a7b18f353ef25, type: 2}
21 | m_DefaultRendererIndex: 0
22 | m_RequireDepthTexture: 0
23 | m_RequireOpaqueTexture: 0
24 | m_OpaqueDownsampling: 1
25 | m_SupportsTerrainHoles: 1
26 | m_SupportsHDR: 1
27 | m_MSAA: 2
28 | m_RenderScale: 1
29 | m_MainLightRenderingMode: 1
30 | m_MainLightShadowsSupported: 1
31 | m_MainLightShadowmapResolution: 2048
32 | m_AdditionalLightsRenderingMode: 1
33 | m_AdditionalLightsPerObjectLimit: 4
34 | m_AdditionalLightShadowsSupported: 1
35 | m_AdditionalLightsShadowmapResolution: 512
36 | m_AdditionalLightsShadowResolutionTierLow: 128
37 | m_AdditionalLightsShadowResolutionTierMedium: 256
38 | m_AdditionalLightsShadowResolutionTierHigh: 512
39 | m_ShadowDistance: 100
40 | m_ShadowCascadeCount: 4
41 | m_Cascade2Split: 0.25
42 | m_Cascade3Split: {x: 0.1, y: 0.3}
43 | m_Cascade4Split: {x: 0.067, y: 0.2, z: 0.467}
44 | m_ShadowDepthBias: 3
45 | m_ShadowNormalBias: 0
46 | m_SoftShadowsSupported: 1
47 | m_UseSRPBatcher: 1
48 | m_SupportsDynamicBatching: 0
49 | m_MixedLightingSupported: 1
50 | m_DebugLevel: 0
51 | m_UseAdaptivePerformance: 1
52 | m_ColorGradingMode: 0
53 | m_ColorGradingLutSize: 32
54 | m_UseFastSRGBLinearConversion: 0
55 | m_ShadowType: 1
56 | m_LocalShadowsSupported: 0
57 | m_LocalShadowsAtlasResolution: 256
58 | m_MaxPixelLights: 0
59 | m_ShadowAtlasResolution: 256
60 | m_ShaderVariantLogLevel: 0
61 | m_ShadowCascades: 0
62 |
--------------------------------------------------------------------------------
/Assets/Renderer/UniversalRenderPipelineAsset.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: e1fe04a5e3c0a584fbe9bf6db6300d89
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Renderer/UniversalRenderPipelineAsset_Renderer.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
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: 11500000, guid: de640fe3d0db1804a85f9fc8f5cadab6, type: 3}
13 | m_Name: UniversalRenderPipelineAsset_Renderer
14 | m_EditorClassIdentifier:
15 | debugShaders:
16 | debugReplacementPS: {fileID: 4800000, guid: cf852408f2e174538bcd9b7fda1c5ae7, type: 3}
17 | m_RendererFeatures: []
18 | m_RendererFeatureMap:
19 | m_UseNativeRenderPass: 0
20 | postProcessData: {fileID: 11400000, guid: 41439944d30ece34e96484bdb6645b55, type: 2}
21 | xrSystemData: {fileID: 11400000, guid: 60e1133243b97e347b653163a8c01b64, type: 2}
22 | shaders:
23 | blitPS: {fileID: 4800000, guid: c17132b1f77d20942aa75f8429c0f8bc, type: 3}
24 | copyDepthPS: {fileID: 4800000, guid: d6dae50ee9e1bfa4db75f19f99355220, type: 3}
25 | screenSpaceShadowPS: {fileID: 4800000, guid: 0f854b35a0cf61a429bd5dcfea30eddd, type: 3}
26 | samplingPS: {fileID: 4800000, guid: 04c410c9937594faa893a11dceb85f7e, type: 3}
27 | stencilDeferredPS: {fileID: 4800000, guid: e9155b26e1bc55942a41e518703fe304, type: 3}
28 | fallbackErrorPS: {fileID: 4800000, guid: e6e9a19c3678ded42a3bc431ebef7dbd, type: 3}
29 | materialErrorPS: {fileID: 4800000, guid: 5fd9a8feb75a4b5894c241777f519d4e, type: 3}
30 | coreBlitPS: {fileID: 4800000, guid: 93446b5c5339d4f00b85c159e1159b7c, type: 3}
31 | coreBlitColorAndDepthPS: {fileID: 4800000, guid: d104b2fc1ca6445babb8e90b0758136b, type: 3}
32 | cameraMotionVector: {fileID: 4800000, guid: c56b7e0d4c7cb484e959caeeedae9bbf, type: 3}
33 | objectMotionVector: {fileID: 4800000, guid: 7b3ede40266cd49a395def176e1bc486, type: 3}
34 | m_AssetVersion: 1
35 | m_OpaqueLayerMask:
36 | serializedVersion: 2
37 | m_Bits: 4294967295
38 | m_TransparentLayerMask:
39 | serializedVersion: 2
40 | m_Bits: 4294967295
41 | m_DefaultStencilState:
42 | overrideStencilState: 0
43 | stencilReference: 0
44 | stencilCompareFunction: 8
45 | passOperation: 2
46 | failOperation: 0
47 | zFailOperation: 0
48 | m_ShadowTransparentReceive: 1
49 | m_RenderingMode: 0
50 | m_DepthPrimingMode: 0
51 | m_AccurateGbufferNormals: 0
52 | m_ClusteredRendering: 0
53 | m_TileSize: 32
54 | m_IntermediateTextureMode: 0
55 |
--------------------------------------------------------------------------------
/Assets/Renderer/UniversalRenderPipelineAsset_Renderer.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: f663f0f238f23f44392a7b18f353ef25
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Renderer/UniversalRenderPipelineGlobalSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
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: 11500000, guid: 2ec995e51a6e251468d2a3fd8a686257, type: 3}
13 | m_Name: UniversalRenderPipelineGlobalSettings
14 | m_EditorClassIdentifier:
15 | k_AssetVersion: 2
16 | lightLayerName0: Light Layer default
17 | lightLayerName1: Light Layer 1
18 | lightLayerName2: Light Layer 2
19 | lightLayerName3: Light Layer 3
20 | lightLayerName4: Light Layer 4
21 | lightLayerName5: Light Layer 5
22 | lightLayerName6: Light Layer 6
23 | lightLayerName7: Light Layer 7
24 | m_StripDebugVariants: 1
25 | m_StripUnusedPostProcessingVariants: 0
26 | m_StripUnusedVariants: 1
27 | supportRuntimeDebugDisplay: 0
28 |
--------------------------------------------------------------------------------
/Assets/Renderer/UniversalRenderPipelineGlobalSettings.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: eb80b91a012975346af6459a573df7e2
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Resources.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: bd614e75f88e84cf394144232b5a32a9
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Resources/NetworkManager.prefab:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!1 &6052207803524585811
4 | GameObject:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | serializedVersion: 6
10 | m_Component:
11 | - component: {fileID: 6052207803524585814}
12 | - component: {fileID: 6052207803524585809}
13 | - component: {fileID: 6052207803524585808}
14 | m_Layer: 0
15 | m_Name: NetworkManager
16 | m_TagString: Untagged
17 | m_Icon: {fileID: 0}
18 | m_NavMeshLayer: 0
19 | m_StaticEditorFlags: 0
20 | m_IsActive: 1
21 | --- !u!4 &6052207803524585814
22 | Transform:
23 | m_ObjectHideFlags: 0
24 | m_CorrespondingSourceObject: {fileID: 0}
25 | m_PrefabInstance: {fileID: 0}
26 | m_PrefabAsset: {fileID: 0}
27 | m_GameObject: {fileID: 6052207803524585811}
28 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
29 | m_LocalPosition: {x: 0, y: 0, z: 0}
30 | m_LocalScale: {x: 1, y: 1, z: 1}
31 | m_ConstrainProportionsScale: 1
32 | m_Children: []
33 | m_Father: {fileID: 0}
34 | m_RootOrder: 0
35 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
36 | --- !u!114 &6052207803524585809
37 | MonoBehaviour:
38 | m_ObjectHideFlags: 0
39 | m_CorrespondingSourceObject: {fileID: 0}
40 | m_PrefabInstance: {fileID: 0}
41 | m_PrefabAsset: {fileID: 0}
42 | m_GameObject: {fileID: 6052207803524585811}
43 | m_Enabled: 1
44 | m_EditorHideFlags: 0
45 | m_Script: {fileID: 11500000, guid: 593a2fe42fa9d37498c96f9a383b6521, type: 3}
46 | m_Name:
47 | m_EditorClassIdentifier:
48 | RunInBackground: 1
49 | LogLevel: 0
50 | NetworkConfig:
51 | ProtocolVersion: 0
52 | NetworkTransport: {fileID: 6052207803524585808}
53 | PlayerPrefab: {fileID: 3439633038736912633, guid: 398aad09d8b2a47eba664a076763cdcc, type: 3}
54 | NetworkPrefabs:
55 | - Override: 0
56 | Prefab: {fileID: 3439633038736912633, guid: 398aad09d8b2a47eba664a076763cdcc, type: 3}
57 | SourcePrefabToOverride: {fileID: 0}
58 | SourceHashToOverride: 0
59 | OverridingTargetPrefab: {fileID: 0}
60 | - Override: 0
61 | Prefab: {fileID: 2004524346269018207, guid: 3db265d2f6a5da94aa08ca082eae9094, type: 3}
62 | SourcePrefabToOverride: {fileID: 0}
63 | SourceHashToOverride: 0
64 | OverridingTargetPrefab: {fileID: 0}
65 | - Override: 0
66 | Prefab: {fileID: 7697826309394829109, guid: fdddb954c22b442458426023cd31253d, type: 3}
67 | SourcePrefabToOverride: {fileID: 0}
68 | SourceHashToOverride: 0
69 | OverridingTargetPrefab: {fileID: 0}
70 | TickRate: 15
71 | ClientConnectionBufferTimeout: 10
72 | ConnectionApproval: 1
73 | ConnectionData:
74 | EnableTimeResync: 0
75 | TimeResyncInterval: 30
76 | EnsureNetworkVariableLengthSafety: 0
77 | EnableSceneManagement: 1
78 | ForceSamePrefabs: 1
79 | RecycleNetworkIds: 1
80 | NetworkIdRecycleDelay: 120
81 | RpcHashSize: 0
82 | LoadSceneTimeOut: 30
83 | SpawnTimeout: 1
84 | EnableNetworkLogs: 1
85 | --- !u!114 &6052207803524585808
86 | MonoBehaviour:
87 | m_ObjectHideFlags: 0
88 | m_CorrespondingSourceObject: {fileID: 0}
89 | m_PrefabInstance: {fileID: 0}
90 | m_PrefabAsset: {fileID: 0}
91 | m_GameObject: {fileID: 6052207803524585811}
92 | m_Enabled: 1
93 | m_EditorHideFlags: 0
94 | m_Script: {fileID: 11500000, guid: 6960e84d07fb87f47956e7a81d71c4e6, type: 3}
95 | m_Name:
96 | m_EditorClassIdentifier:
97 | m_ProtocolType: 0
98 | m_MaxPacketQueueSize: 512
99 | m_MaxPayloadSize: 6144
100 | m_MaxSendQueueSize: 98304
101 | m_HeartbeatTimeoutMS: 500
102 | m_ConnectTimeoutMS: 1000
103 | m_MaxConnectAttempts: 20
104 | m_DisconnectTimeoutMS: 10000
105 | ConnectionData:
106 | Address: 127.0.0.1
107 | Port: 7777
108 | ServerListenAddress:
109 | DebugSimulator:
110 | PacketDelayMS: 0
111 | PacketJitterMS: 0
112 | PacketDropRate: 0
113 |
--------------------------------------------------------------------------------
/Assets/Resources/NetworkManager.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 9a4784eafa4610448980950fcb9a3d36
3 | PrefabImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Resources/SynchedServerData.prefab:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!1 &7697826309394829109
4 | GameObject:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | serializedVersion: 6
10 | m_Component:
11 | - component: {fileID: 7697826309394829108}
12 | - component: {fileID: 7697826309394829111}
13 | - component: {fileID: 7137697522663392195}
14 | m_Layer: 0
15 | m_Name: SynchedServerData
16 | m_TagString: Untagged
17 | m_Icon: {fileID: 0}
18 | m_NavMeshLayer: 0
19 | m_StaticEditorFlags: 0
20 | m_IsActive: 1
21 | --- !u!4 &7697826309394829108
22 | Transform:
23 | m_ObjectHideFlags: 0
24 | m_CorrespondingSourceObject: {fileID: 0}
25 | m_PrefabInstance: {fileID: 0}
26 | m_PrefabAsset: {fileID: 0}
27 | m_GameObject: {fileID: 7697826309394829109}
28 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
29 | m_LocalPosition: {x: 0.8078003, y: 6.0832944, z: -0.58633614}
30 | m_LocalScale: {x: 1, y: 1, z: 1}
31 | m_ConstrainProportionsScale: 0
32 | m_Children: []
33 | m_Father: {fileID: 0}
34 | m_RootOrder: 0
35 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
36 | --- !u!114 &7697826309394829111
37 | MonoBehaviour:
38 | m_ObjectHideFlags: 0
39 | m_CorrespondingSourceObject: {fileID: 0}
40 | m_PrefabInstance: {fileID: 0}
41 | m_PrefabAsset: {fileID: 0}
42 | m_GameObject: {fileID: 7697826309394829109}
43 | m_Enabled: 1
44 | m_EditorHideFlags: 0
45 | m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3}
46 | m_Name:
47 | m_EditorClassIdentifier:
48 | GlobalObjectIdHash: 951099334
49 | AlwaysReplicateAsRoot: 1
50 | DontDestroyWithOwner: 0
51 | AutoObjectParentSync: 1
52 | --- !u!114 &7137697522663392195
53 | MonoBehaviour:
54 | m_ObjectHideFlags: 0
55 | m_CorrespondingSourceObject: {fileID: 0}
56 | m_PrefabInstance: {fileID: 0}
57 | m_PrefabAsset: {fileID: 0}
58 | m_GameObject: {fileID: 7697826309394829109}
59 | m_Enabled: 1
60 | m_EditorHideFlags: 0
61 | m_Script: {fileID: 11500000, guid: f88b1a73ee9a5674da11c1cca7fdbd05, type: 3}
62 | m_Name:
63 | m_EditorClassIdentifier:
64 | map:
65 | m_InternalValue: 0
66 | gameMode:
67 | m_InternalValue: 0
68 | gameQueue:
69 | m_InternalValue: 0
70 |
--------------------------------------------------------------------------------
/Assets/Resources/SynchedServerData.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: fdddb954c22b442458426023cd31253d
3 | PrefabImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Scenes.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 89e5f9b6a0fcdae4e8ccb4b461925e8c
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Scenes/bootStrap.unity.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 21354db547789e64fb63ef3211c8e81d
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Scenes/game_lab.unity.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 20e2eaabc61089840af218c6c0d6bfba
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Scenes/game_space.unity.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: f8808fe6e2fa36641a24e396e5257fdc
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Scenes/mainMenu.unity.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: cacd5f91f1cfbf2459bcac4454bd9f84
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Scripts.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 22db1f6f78cfb3440835ed6dee5f8e9e
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Scripts/Editor.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 62fdd1fbe6747d54385c8257c24b4d84
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Scripts/Editor/BuildTools.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 3dee4e949dfe667438538ea8219ffa5d
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a30173adbf3f538458556cf5fc9a699a
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/ApplicationController.cs:
--------------------------------------------------------------------------------
1 | using System.Threading.Tasks;
2 | using Matchplay.Client;
3 | using Matchplay.Server;
4 | using UnityEngine;
5 |
6 | namespace Matchplay.Shared
7 | {
8 | public class ApplicationController : MonoBehaviour
9 | {
10 | //Manager instances to be instantiated.
11 | [SerializeField]
12 | ServerSingleton m_ServerPrefab;
13 | [SerializeField]
14 | ClientSingleton m_ClientPrefab;
15 |
16 | ApplicationData m_AppData;
17 | public static bool IsServer;
18 | async void Start()
19 | {
20 | Application.targetFrameRate = 60;
21 | DontDestroyOnLoad(gameObject);
22 |
23 | //We use EditorApplicationController for Editor launching.
24 | if (Application.isEditor)
25 | return;
26 |
27 | //If this is a build and we are headless, we are a server
28 | await LaunchInMode(SystemInfo.graphicsDeviceType == UnityEngine.Rendering.GraphicsDeviceType.Null);
29 | }
30 |
31 | public void OnParrelSyncStarted(bool isServer, string cloneName)
32 | {
33 | #pragma warning disable 4014
34 | LaunchInMode(isServer, cloneName);
35 | #pragma warning restore 4014
36 | }
37 |
38 | ///
39 | /// Main project launcher, launched in Start() for builds, and via the EditorApplicationController in-editor
40 | ///
41 | async Task LaunchInMode(bool isServer, string profileName = "default")
42 | {
43 | //init the command parser, get launch args
44 | m_AppData = new ApplicationData();
45 | IsServer = isServer;
46 | if (isServer)
47 | {
48 | var serverSingleton = Instantiate(m_ServerPrefab);
49 | await serverSingleton.CreateServer(); //run the init instead of relying on start.
50 |
51 | var defaultGameInfo = new GameInfo
52 | {
53 | gameMode = GameMode.Meditating,
54 | map = Map.Space,
55 | gameQueue = GameQueue.Casual
56 | };
57 |
58 | await serverSingleton.Manager.StartGameServerAsync(defaultGameInfo);
59 | }
60 | else
61 | {
62 | var clientSingleton = Instantiate(m_ClientPrefab);
63 | clientSingleton.CreateClient(profileName);
64 |
65 | //We want to load the main menu while the client is still initializing.
66 | clientSingleton.Manager.ToMainMenu();
67 | }
68 | }
69 | }
70 | }
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/ApplicationController.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 17b4b8e111db8554390425c0c7a04367
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Client.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 21b7fafc0b84d1f4a84b9cf37198c6b1
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Client/ClientGameManager.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 83d734d72fe94374690a90d7f6c6f0e8
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Client/ClientPrefs.cs:
--------------------------------------------------------------------------------
1 | using UnityEngine;
2 |
3 | namespace Matchplay.Client
4 | {
5 | ///
6 | /// Wrapper around the PlayerPrefs system, so we don't have to deal with string keys.
7 | ///
8 | public class ClientPrefs
9 | {
10 | public static void SetName(string name)
11 | {
12 | PlayerPrefs.SetString("player_name", name);
13 | }
14 |
15 | public static string PlayerName => PlayerPrefs.GetString("player_name");
16 |
17 | ///
18 | /// Either loads a Guid string from Unity preferences, or creates one and checkpoints it, then returns it.
19 | ///
20 | /// The Guid that uniquely identifies this client install, in string form.
21 | public static string GetGuid()
22 | {
23 | if (PlayerPrefs.HasKey("client_guid"))
24 | {
25 | return PlayerPrefs.GetString("client_guid");
26 | }
27 |
28 | var guid = System.Guid.NewGuid();
29 | var guidString = guid.ToString();
30 |
31 | PlayerPrefs.SetString("client_guid", guidString);
32 | return guidString;
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Client/ClientPrefs.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 920427f9061fee14d84bc464d3795dfe
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Client/ClientSingleton.cs:
--------------------------------------------------------------------------------
1 | using Unity.Services.Core;
2 | using UnityEngine;
3 |
4 | namespace Matchplay.Client
5 | {
6 | public class ClientSingleton : MonoBehaviour
7 | {
8 | public static ClientSingleton Instance
9 | {
10 | get
11 | {
12 | if (s_ClientGameManager != null) return s_ClientGameManager;
13 | s_ClientGameManager = FindObjectOfType();
14 | if (s_ClientGameManager == null)
15 | {
16 | Debug.LogError("No ClientSingleton in scene, did you run this from the bootStrap scene?");
17 | return null;
18 | }
19 |
20 | return s_ClientGameManager;
21 | }
22 | }
23 |
24 | static ClientSingleton s_ClientGameManager;
25 |
26 | public ClientGameManager Manager
27 | {
28 | get
29 | {
30 | if (m_GameManager != null) return m_GameManager;
31 | Debug.LogError($"ClientGameManager is missing, did you run StartClient()?", gameObject);
32 | return null;
33 | }
34 | }
35 |
36 | ClientGameManager m_GameManager;
37 |
38 | public void CreateClient(string profileName = "default")
39 | {
40 | m_GameManager = new ClientGameManager(profileName);
41 | }
42 |
43 | void Start()
44 | {
45 | DontDestroyOnLoad(gameObject);
46 | }
47 |
48 | // Update is called once per frame
49 | void OnDestroy()
50 | {
51 | Manager?.Dispose();
52 | }
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Client/ClientSingleton.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 863b9bfb7c4d3d642b371d765621526f
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Client/Netcode.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 4992603c532bf4c4f95667d5a5d5214d
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Client/Netcode/MatchplayNetworkClient.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 5bd31edc1b1fd1342b3bf8193a5a03b2
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Client/Services.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 8c5eca29a8626ba4bb0e0264f31fbf64
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Client/Services/AuthenticationWrapper.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 871f1a41b923bad4baa6a2ca1a4f37f9
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Client/Services/MatchplayMatchmaker.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 1aafede4dd4fd384da2711dbe40c2210
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Client/UI.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d6c12d2755b48aa4f9cef58eb77e3f4d
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Client/UI/GameHUDUI.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 4bf132059672b164da7a3f1ca9812125
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Client/UI/MainMenuUI.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 674a1a0d424846140a24a8c721677a6c
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Client/UI/PlayerNameUI.cs:
--------------------------------------------------------------------------------
1 | using Matchplay.Networking;
2 | using Matchplay.Server;
3 | using TMPro;
4 | using Unity.Collections;
5 | using UnityEngine;
6 |
7 | namespace Matchplay.Client.UI
8 | {
9 | ///
10 | /// World Space UI handler for player Names
11 | ///
12 | public class PlayerNameUI : MonoBehaviour
13 | {
14 | [SerializeField]
15 | TMP_Text m_TextLabel;
16 | Matchplayer m_player;
17 | Camera m_Camera;
18 |
19 | public void SetPlayerLabel(Matchplayer matchPlayer)
20 | {
21 | m_player = matchPlayer;
22 | ChangeLabelName("", m_player.PlayerName.Value);
23 | m_player.PlayerName.OnValueChanged += ChangeLabelName;
24 | }
25 |
26 | void ChangeLabelName(NetworkString oldLabel, NetworkString newLabel)
27 | {
28 | m_TextLabel.SetText(newLabel.ToString());
29 | }
30 |
31 | void Update()
32 | {
33 | if (m_player == null)
34 | return;
35 |
36 | if (m_Camera == null)
37 | m_Camera = Camera.main;
38 | if (m_Camera != null)
39 | m_TextLabel.transform.LookAt(
40 | m_TextLabel.transform.position + m_Camera.transform.rotation * transform.forward,
41 | m_Camera.transform.rotation * Vector3.up);
42 | transform.position = m_player.transform.position;
43 | }
44 |
45 | void OnDestroy()
46 | {
47 | m_player.PlayerName.OnValueChanged -= ChangeLabelName;
48 | }
49 | }
50 | }
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Client/UI/PlayerNameUI.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 05cea808cd2a3b345817c58b565a89cb
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Matchplay.asmdef:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Matchplay",
3 | "rootNamespace": "",
4 | "references": [
5 | "GUID:1491147abca9d7d4bb7105af628b223e",
6 | "GUID:496cf55643e21a645a4504c751f1e0a9",
7 | "GUID:fe25561d224ed4743af4c60938a59d0b",
8 | "GUID:5540e30183c82e84b954c033c388e06c",
9 | "GUID:f58f1954bf2a1be49af6016003b22699",
10 | "GUID:894a6cc6ed5cd2645bb542978cbed6a9",
11 | "GUID:3b8ed52f1b5c64994af4c4e0aa4b6c4b",
12 | "GUID:e0cd26848372d4e5c891c569017e11f1",
13 | "GUID:6055be8ebefd69e48b49212b09b47b2f",
14 | "GUID:a92d208582c4d6445ad4140259a5eb94",
15 | "GUID:f2d49d9fa7e7eb3418e39723a7d3b92f"
16 | ],
17 | "includePlatforms": [],
18 | "excludePlatforms": [],
19 | "allowUnsafeCode": false,
20 | "overrideReferences": false,
21 | "precompiledReferences": [],
22 | "autoReferenced": true,
23 | "defineConstraints": [],
24 | "versionDefines": [],
25 | "noEngineReferences": false
26 | }
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Matchplay.asmdef.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: b2a02869931b8e14bb6d992e21ea1b88
3 | AssemblyDefinitionImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Server.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 240e9363b7329d94cad919dbff96e59a
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Server/Netcode.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 6b2f8136ddde2fa4e92f4761c4028a53
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Server/Netcode/MatchplayNetworkServer.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 952a55b2055449947a8797ecaaed82dd
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Server/Netcode/Matchplayer.cs:
--------------------------------------------------------------------------------
1 | using Matchplay.Client;
2 | using Matchplay.Networking;
3 | using Matchplay.Shared;
4 | using Matchplay.Shared.Tools;
5 | using Unity.Netcode;
6 | using UnityEngine;
7 |
8 | namespace Matchplay.Server
9 | {
10 | ///
11 | /// Currently there is no control for moving the player around, only the server does.
12 | /// The NetworkManager spawns this in automatically, as it is on the designated player object.
13 | ///
14 | public class Matchplayer : NetworkBehaviour
15 | {
16 | [HideInInspector]
17 | public NetworkVariable PlayerColor = new NetworkVariable();
18 | [HideInInspector]
19 | public NetworkVariable PlayerName = new NetworkVariable();
20 | [SerializeField]
21 | RendererColorer m_ColorSwitcher;
22 |
23 | public override void OnNetworkSpawn()
24 | {
25 | if (IsServer && !IsHost)
26 | return;
27 |
28 | SetColor(Color.black, PlayerColor.Value);
29 | PlayerColor.OnValueChanged += SetColor;
30 | ClientSingleton.Instance.Manager.AddMatchPlayer(this);
31 | }
32 |
33 | void SetColor(Color oldColor, Color newColor)
34 | {
35 | if (oldColor == newColor)
36 | return;
37 |
38 | m_ColorSwitcher.SetColor(newColor);
39 | }
40 |
41 | public override void OnNetworkDespawn()
42 | {
43 | if (IsServer && !IsHost)
44 | return;
45 | if (ApplicationData.IsServerUnitTest)
46 | return;
47 |
48 | ClientSingleton.Instance.Manager.RemoveMatchPlayer(this);
49 | }
50 | }
51 | }
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Server/Netcode/Matchplayer.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 504e4423a1c791947806edd3a0d3a992
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Server/Netcode/SeatManager.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using Matchplay.Shared;
4 | using Unity.Netcode;
5 | using UnityEngine;
6 | using UnityEngine.Serialization;
7 |
8 | namespace Matchplay.Server
9 | {
10 | ///
11 | /// Server spawns and manages the player positions.
12 | ///
13 | public class SeatManager : NetworkBehaviour
14 | {
15 | [SerializeField]
16 | float seatCircleRadius = 3;
17 |
18 | [SerializeField]
19 | float rotationSpeed = 0;
20 |
21 | List m_CurrentSeats = new List();
22 |
23 | public override void OnNetworkSpawn()
24 | {
25 | if (!IsServer || ApplicationData.IsServerUnitTest) //Ignore for server unit test
26 | return;
27 |
28 | ServerSingleton.Instance.Manager.NetworkServer.OnServerPlayerSpawned += JoinSeat_Server;
29 | ServerSingleton.Instance.Manager.NetworkServer.OnServerPlayerDespawned += LeaveSeat_Server;
30 | }
31 |
32 | public override void OnNetworkDespawn()
33 | {
34 | if (!IsServer || ApplicationData.IsServerUnitTest || ServerSingleton.Instance == null)
35 | return;
36 |
37 | ServerSingleton.Instance.Manager.NetworkServer.OnServerPlayerSpawned -= JoinSeat_Server;
38 | ServerSingleton.Instance.Manager.NetworkServer.OnServerPlayerDespawned -= LeaveSeat_Server;
39 | }
40 |
41 | void JoinSeat_Server(Matchplayer player)
42 | {
43 | m_CurrentSeats.Add(player);
44 | Debug.Log($"{player.PlayerName} sat at the table. {m_CurrentSeats.Count} sat at the table.");
45 | player.transform.SetParent(transform);
46 |
47 | RearrangeSeats();
48 | }
49 |
50 | void RearrangeSeats()
51 | {
52 | var i = 0;
53 | foreach (var matchPlayer in m_CurrentSeats)
54 | {
55 | if (matchPlayer == null)
56 | return;
57 | var angle = (i * Mathf.PI * 2f / m_CurrentSeats.Count);
58 | var seatPosition = transform.rotation * new Vector3(Mathf.Cos(angle) * seatCircleRadius, 0,
59 | Mathf.Sin(angle) * seatCircleRadius);
60 | var facingCenter = Quaternion.LookRotation((transform.position - seatPosition), Vector3.up);
61 | matchPlayer.transform.position = seatPosition;
62 | matchPlayer.transform.rotation = facingCenter;
63 | i++;
64 | }
65 | }
66 |
67 | void Update()
68 | {
69 | if (IsServer || IsHost)
70 | transform.Rotate(Time.deltaTime * rotationSpeed * Vector3.up, Space.World);
71 | }
72 |
73 | void LeaveSeat_Server(Matchplayer player)
74 | {
75 | m_CurrentSeats.Remove(player);
76 | RearrangeSeats();
77 | }
78 | }
79 | }
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Server/Netcode/SeatManager.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 88edccbda5cf3494f85e09ad536c2cfb
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Server/ServerGameManager.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 4172f13f9b3602b4099954bff5e41852
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Server/ServerSingleton.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Threading.Tasks;
3 | using Matchplay.Shared;
4 | using Unity.Netcode;
5 | using Unity.Services.Core;
6 | using UnityEngine;
7 | using UnityEngine.Serialization;
8 |
9 | namespace Matchplay.Server
10 | {
11 | ///
12 | /// Monobehaviour Singleton pattern for easy access to the Server Game Manager
13 | /// We seperated the logic away from the Monobehaviour, so we could more easily write tests for it.
14 | ///
15 | public class ServerSingleton : MonoBehaviour
16 | {
17 | public static ServerSingleton Instance
18 | {
19 | get
20 | {
21 | if (s_ServerSingleton != null) return s_ServerSingleton;
22 | s_ServerSingleton = FindObjectOfType();
23 | if (s_ServerSingleton == null)
24 | {
25 | Debug.LogError("No ServerSingleton in scene, did you run this from the bootStrap scene?");
26 | return null;
27 | }
28 |
29 | return s_ServerSingleton;
30 | }
31 | }
32 |
33 | static ServerSingleton s_ServerSingleton;
34 |
35 | public ServerGameManager Manager
36 | {
37 | get
38 | {
39 | if (m_GameManager != null)
40 | {
41 | return m_GameManager;
42 | }
43 |
44 | Debug.LogError($"Server Manager is missing, did you run OpenConnection?");
45 | return null;
46 | }
47 | }
48 |
49 | ServerGameManager m_GameManager;
50 |
51 | ///
52 | /// Server Should start itself as soon as the game starts.
53 | ///
54 | public async Task CreateServer()
55 | {
56 | await UnityServices.InitializeAsync();
57 |
58 | m_GameManager = new ServerGameManager(
59 | ApplicationData.IP(),
60 | ApplicationData.Port(),
61 | ApplicationData.QPort(),
62 | NetworkManager.Singleton);
63 | }
64 |
65 | void Start()
66 | {
67 | DontDestroyOnLoad(gameObject);
68 | }
69 |
70 | void OnDestroy()
71 | {
72 | m_GameManager?.Dispose();
73 | }
74 | }
75 | }
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Server/ServerSingleton.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 2c566983ffd513c4eb2184dce31ae714
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Server/Services.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 912d4027bb7d0974f9806c0f3ea01591
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Server/Services/MatchplayBackfiller.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 3c1b3dbd8ccc7a1459f39874f9f31362
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Server/Services/MultiplayAllocationService.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 415bb68d1fa024c458c493534d8fa071
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Server/Services/MultiplayServerQueryService.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Threading;
3 | using System.Threading.Tasks;
4 | using Unity.Services.Multiplay;
5 | using Debug = UnityEngine.Debug;
6 |
7 | namespace Matchplay.Server
8 | {
9 | public class MultiplayServerQueryService : IDisposable
10 | {
11 | IMultiplayService m_MultiplayService;
12 | IServerQueryHandler m_ServerQueryHandler;
13 | CancellationTokenSource m_ServerCheckCancel;
14 | public MultiplayServerQueryService()
15 | {
16 | try
17 | {
18 | m_MultiplayService = MultiplayService.Instance;
19 | m_ServerCheckCancel = new CancellationTokenSource();
20 | }
21 | catch (Exception ex)
22 | {
23 | Debug.LogWarning($"Error creating Multiplay allocation service.\n{ex}");
24 | }
25 | }
26 |
27 | public async Task BeginServerQueryHandler()
28 | {
29 | if (m_MultiplayService == null)
30 | return;
31 |
32 | m_ServerQueryHandler = await m_MultiplayService.StartServerQueryHandlerAsync((ushort)10,
33 | "ServerName", "GameType", "0", "MapName");
34 |
35 | #pragma warning disable 4014
36 | ServerQueryLoop(m_ServerCheckCancel.Token);
37 | #pragma warning restore 4014
38 | }
39 |
40 | public void SetServerName(string name)
41 | {
42 | m_ServerQueryHandler.ServerName = name;
43 | }
44 |
45 | public void SetBuildID(string id)
46 | {
47 | m_ServerQueryHandler.BuildId = id;
48 | }
49 |
50 | public void SetMaxPlayers(ushort players)
51 | {
52 | m_ServerQueryHandler.MaxPlayers = players;
53 | }
54 |
55 | public void SetPlayerCount(ushort count)
56 | {
57 | m_ServerQueryHandler.CurrentPlayers = count;
58 | }
59 |
60 | public void AddPlayer()
61 | {
62 | m_ServerQueryHandler.CurrentPlayers += 1;
63 | }
64 |
65 | public void RemovePlayer()
66 | {
67 | m_ServerQueryHandler.CurrentPlayers -= 1;
68 | }
69 |
70 | public void SetMap(string newMap)
71 | {
72 | m_ServerQueryHandler.Map = newMap;
73 | }
74 |
75 | public void SetMode(string mode)
76 | {
77 | m_ServerQueryHandler.GameType = mode;
78 | }
79 |
80 | async Task ServerQueryLoop(CancellationToken cancellationToken)
81 | {
82 | while (!cancellationToken.IsCancellationRequested)
83 | {
84 | // Prompt the handler to deal with any incoming request packets.
85 | // Ensure the delay here is sub 1 second, to ensure that incoming packets are not dropped.
86 | m_ServerQueryHandler.UpdateServerCheck();
87 | await Task.Delay(100);
88 | }
89 | }
90 |
91 | public void Dispose()
92 | {
93 | if (m_ServerCheckCancel != null)
94 | m_ServerCheckCancel.Cancel();
95 | }
96 | }
97 | }
98 |
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Server/Services/MultiplayServerQueryService.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: f37a7016c1f75434cab7f0a28f71aa85
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Shared.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 91f88d8c925c6a349832b827ec6c6d84
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Shared/ApplicationData.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 3ffae0fc4e2f3044f82faa45abf7a767
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Shared/EditorApplicationController.cs:
--------------------------------------------------------------------------------
1 | #if UNITY_EDITOR
2 | using ParrelSync;
3 | #endif
4 | using Matchplay.Shared;
5 | using UnityEngine;
6 |
7 | namespace Matchplay.Editor
8 | {
9 | ///Helps launch ParrelSynced Projects for easy testing
10 | public class EditorApplicationController : MonoBehaviour
11 | {
12 | public ApplicationController m_Controller;
13 |
14 |
15 | public void Start()
16 | {
17 | #if UNITY_EDITOR
18 |
19 | if (ClonesManager.IsClone())
20 | {
21 | var argument = ClonesManager.GetArgument();
22 | if (argument == "server")
23 | m_Controller.OnParrelSyncStarted(true,"server");
24 | else if (argument == "client")
25 | {
26 | m_Controller.OnParrelSyncStarted(false,"client");
27 | }
28 | }
29 | else
30 | m_Controller.OnParrelSyncStarted(false, "client");
31 | #endif
32 | }
33 | }
34 | }
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Shared/EditorApplicationController.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 2ec48f5019a1a9f4a9ae7ca2d44d6ce3
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Shared/Game.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 37f9f49b0c5ce9b49a46eeef368d311c
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Shared/Game/GameData.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 5cf5000465e32f1418782b7adf321f03
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Shared/Netcode.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d21a153528e4a914dad6247da605c1c9
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Shared/Netcode/DisconnectReason.cs:
--------------------------------------------------------------------------------
1 | using UnityEngine;
2 |
3 | namespace Matchplay.Networking
4 | {
5 | ///
6 | /// This class provides some additional context for the connection managed by the MatchplayNetworkClient. If a disconnect occurs, or is expected to occur, client
7 | /// code can set the reason why here. Then subsequent code can interrogate this class to get the disconnect reason, and display appropriate information to
8 | /// the user, even after a scene transition has occurred. The state is set back to Undefined if a new connection is begun.
9 | ///
10 | public class DisconnectReason
11 | {
12 | ///
13 | /// When a disconnect is detected (or expected), set this to provide some context for why it occurred.
14 | ///
15 | public void SetDisconnectReason( ConnectStatus reason)
16 | {
17 | //using an explicit setter here rather than the auto-property, to make the code locations where disconnect information is set more obvious.
18 | Debug.Assert(reason != ConnectStatus.Success);
19 | Reason = reason;
20 | }
21 |
22 | ///
23 | /// The reason why a disconnect occurred, or Undefined if not set.
24 | ///
25 | public ConnectStatus Reason { get; private set; } = ConnectStatus.Undefined;
26 |
27 | ///
28 | /// Clear the DisconnectReason, returning it to Undefined.
29 | ///
30 | public void Clear()
31 | {
32 | Reason = ConnectStatus.Undefined;
33 | }
34 |
35 | ///
36 | /// Has a TransitionReason already be set? (The TransitionReason provides context for why someone transition back to the MainMenu, and is a one-use item
37 | /// that is unset as soon as it is read).
38 | ///
39 | public bool HasTransitionReason => Reason != ConnectStatus.Undefined;
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Shared/Netcode/DisconnectReason.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c92998344b3ecfa4da078bd59ebd469e
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Shared/Netcode/MatchplayNetworkMessenger.cs:
--------------------------------------------------------------------------------
1 | using Unity.Netcode;
2 | using UnityEditor;
3 | using UnityEngine;
4 |
5 | namespace Matchplay.Networking
6 | {
7 | public enum NetworkMessage
8 | {
9 | LocalClientConnected,
10 | LocalClientDisconnected,
11 | }
12 |
13 | ///
14 | /// Small Wrapper that centralizes the custom network message types that can pass between client and server.
15 | ///
16 | public class MatchplayNetworkMessenger
17 | {
18 | public static void SendMessageToAll(NetworkMessage messageType, FastBufferWriter writer)
19 | {
20 | NetworkManager.Singleton.CustomMessagingManager.SendNamedMessageToAll(messageType.ToString(), writer);
21 | }
22 |
23 | public static void SendMessageTo(NetworkMessage messageType, ulong clientId, FastBufferWriter writer)
24 | {
25 | NetworkManager.Singleton.CustomMessagingManager.SendNamedMessage(messageType.ToString(), clientId, writer);
26 | }
27 |
28 | public static void RegisterListener(NetworkMessage messageType, CustomMessagingManager.HandleNamedMessageDelegate listenerMethod)
29 | {
30 | NetworkManager.Singleton.CustomMessagingManager.RegisterNamedMessageHandler(messageType.ToString(), listenerMethod);
31 | }
32 |
33 | public static void UnRegisterListener(NetworkMessage messageType)
34 | {
35 | if (NetworkManager.Singleton == null)
36 | return;
37 | NetworkManager.Singleton.CustomMessagingManager.UnregisterNamedMessageHandler(messageType.ToString());
38 | }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Shared/Netcode/MatchplayNetworkMessenger.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d1e5ef22279f8a7479fd385b38d33293
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Shared/Netcode/NetworkGuid.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Unity.Netcode;
3 |
4 | namespace Matchplay.Networking
5 | {
6 | public struct NetworkGuid : INetworkSerializable
7 | {
8 | public ulong FirstHalf;
9 | public ulong SecondHalf;
10 |
11 | public void NetworkSerialize(BufferSerializer serializer) where T : IReaderWriter
12 | {
13 | serializer.SerializeValue(ref FirstHalf);
14 | serializer.SerializeValue(ref SecondHalf);
15 | }
16 | }
17 |
18 | public static class NetworkGuidExtensions
19 | {
20 | public static NetworkGuid ToNetworkGuid(this Guid id)
21 | {
22 | var networkId = new NetworkGuid();
23 | networkId.FirstHalf = BitConverter.ToUInt64(id.ToByteArray(), 0);
24 | networkId.SecondHalf = BitConverter.ToUInt64(id.ToByteArray(), 8);
25 | return networkId;
26 | }
27 |
28 | public static Guid ToGuid(this NetworkGuid networkId)
29 | {
30 | var bytes = new byte[16];
31 | Buffer.BlockCopy(BitConverter.GetBytes(networkId.FirstHalf), 0, bytes, 0, 8);
32 | Buffer.BlockCopy(BitConverter.GetBytes(networkId.SecondHalf), 0, bytes, 8, 8);
33 | return new Guid(bytes);
34 | }
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Shared/Netcode/NetworkGuid.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 0718d2aeb8bd40f9a5e8f08f8903a02a
3 | timeCreated: 1631560658
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Shared/Netcode/NetworkModels.cs:
--------------------------------------------------------------------------------
1 | using Unity.Collections;
2 | using Unity.Netcode;
3 |
4 | namespace Matchplay.Networking
5 | {
6 | public enum ConnectStatus
7 | {
8 | Undefined,
9 | Success, //client successfully connected. This may also be a successful reconnect.
10 | ServerFull, //can't join, server is already at capacity.
11 | LoggedInAgain, //logged in on a separate client, causing this one to be kicked out.
12 | UserRequestedDisconnect, //Intentional Disconnect triggered by the user.
13 | GenericDisconnect, //server disconnected, but no specific reason given.
14 | Timeout //networkClient timed out while connecting
15 | }
16 |
17 | public struct NetworkString : INetworkSerializable
18 | {
19 | private ForceNetworkSerializeByMemcpy _info;
20 |
21 | public void NetworkSerialize(BufferSerializer serializer) where T : IReaderWriter
22 | {
23 | serializer.SerializeValue(ref _info);
24 | }
25 |
26 | public override string ToString()
27 | {
28 | return _info.Value.ToString();
29 | }
30 |
31 | public static implicit operator string(NetworkString s) => s.ToString();
32 |
33 | public static implicit operator NetworkString(string s) =>
34 | new NetworkString() { _info = new FixedString32Bytes(s) };
35 | }
36 | }
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Shared/Netcode/NetworkModels.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 6a537581624752948a40e81896bb6d1d
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Scripts/Matchplay/Shared/Netcode/SynchedServerData.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Matchplay.Networking;
3 | using Unity.Netcode;
4 | using UnityEngine;
5 |
6 | namespace Matchplay.Shared
7 | {
8 | ///
9 | /// The Shared Network Server State
10 | ///
11 | public class SynchedServerData : NetworkBehaviour
12 | {
13 | [HideInInspector]
14 | public NetworkVariable serverID = new NetworkVariable();
15 | public NetworkVariable