From e335832b9c22f4a401557d4c2a12e669974861ff Mon Sep 17 00:00:00 2001 From: Sandeep Nambiar Date: Wed, 20 Nov 2019 11:40:59 +0530 Subject: [PATCH] Optimize for builds and client player movement fix. --- .../Scripts/Client/ClientSystemsGroup.cs | 16 ++--- .../Client/Debug/ClientRandomWalkSystem.cs | 12 +++- .../Client/Network/ClientNetworkSystem.cs | 16 +++-- .../Client/Players/OtherPlayerUpdateSystem.cs | 16 ++++- .../Assets/Scripts/Common/GameManager.cs | 51 +-------------- .../Assets/Scripts/Common/Input/InputData.cs | 9 +++ .../Common/Player/PlayerLifecyleSystem.cs | 6 +- .../Installers/PlaymodeSettingsInstaller.cs | 3 +- .../Server/Network/ServerNetworkSystem.cs | 23 +++++-- .../Server/Player/ServerSendStateSystem.cs | 35 +++++----- RealmsCode/Assets/Scripts/WorldManager.cs | 64 +++++++++++++------ .../Assets/Settings/PlayModeSettings.asset | 10 +-- .../BurstAotSettings_StandaloneWindows.json | 11 ++++ .../ProjectSettings/GraphicsSettings.asset | 3 + .../ProjectSettings/ProjectSettings.asset | 20 +++--- 15 files changed, 166 insertions(+), 129 deletions(-) create mode 100644 RealmsCode/ProjectSettings/BurstAotSettings_StandaloneWindows.json diff --git a/RealmsCode/Assets/Scripts/Client/ClientSystemsGroup.cs b/RealmsCode/Assets/Scripts/Client/ClientSystemsGroup.cs index 4374db8..691e489 100644 --- a/RealmsCode/Assets/Scripts/Client/ClientSystemsGroup.cs +++ b/RealmsCode/Assets/Scripts/Client/ClientSystemsGroup.cs @@ -50,13 +50,13 @@ public static bool IsInSystem(Type component, Type system, ref int depth) [DisableAutoCreation] public class ClientInitializationSystemGroup : ComponentSystemGroup { - private BeginInitializationEntityCommandBufferSystem m_beginBarrier; - private EndInitializationEntityCommandBufferSystem m_endBarrier; + private BeginPresentationEntityCommandBufferSystem m_beginBarrier; + private EndPresentationEntityCommandBufferSystem m_endBarrier; protected override void OnCreate() { - m_beginBarrier = World.GetOrCreateSystem(); - m_endBarrier = World.GetOrCreateSystem(); + m_beginBarrier = World.GetOrCreateSystem(); + m_endBarrier = World.GetOrCreateSystem(); foreach (var system in World.Active.Systems) { @@ -110,13 +110,13 @@ public override void SortSystemUpdateList() [AlwaysUpdateSystem] public class ClientPresentationSystemGroup : ComponentSystemGroup { - private BeginPresentationEntityCommandBufferSystem m_beginBarrier; - private EndPresentationEntityCommandBufferSystem m_endBarrier; + private BeginInitializationEntityCommandBufferSystem m_beginBarrier; + private EndInitializationEntityCommandBufferSystem m_endBarrier; protected override void OnCreate() { - m_beginBarrier = World.GetOrCreateSystem(); - m_endBarrier = World.GetOrCreateSystem(); + m_beginBarrier = World.GetOrCreateSystem(); + m_endBarrier = World.GetOrCreateSystem(); foreach(var system in World.Active.Systems) { diff --git a/RealmsCode/Assets/Scripts/Client/Debug/ClientRandomWalkSystem.cs b/RealmsCode/Assets/Scripts/Client/Debug/ClientRandomWalkSystem.cs index 6641f67..4aa4722 100644 --- a/RealmsCode/Assets/Scripts/Client/Debug/ClientRandomWalkSystem.cs +++ b/RealmsCode/Assets/Scripts/Client/Debug/ClientRandomWalkSystem.cs @@ -10,8 +10,18 @@ [DisableAutoCreation] public class ClientRandomWalkSystem : ClientInputSystem { + private const float WALK_TIME = 0.2f; + private float currentTime = 0; + private float2 currentDirection; + protected override float2 GetInput() { - return new float2(UnityEngine.Random.Range(-1, 2), UnityEngine.Random.Range(-1, 2)); + if(Time.time - currentTime > WALK_TIME) + { + currentTime = Time.time; + currentDirection = new float2(UnityEngine.Random.Range(-1, 2), UnityEngine.Random.Range(-1, 2)); + } + + return currentDirection; } } \ No newline at end of file diff --git a/RealmsCode/Assets/Scripts/Client/Network/ClientNetworkSystem.cs b/RealmsCode/Assets/Scripts/Client/Network/ClientNetworkSystem.cs index c722f37..120ca02 100644 --- a/RealmsCode/Assets/Scripts/Client/Network/ClientNetworkSystem.cs +++ b/RealmsCode/Assets/Scripts/Client/Network/ClientNetworkSystem.cs @@ -16,24 +16,25 @@ public struct ServerStateCommand : IComponentData { } [DisableAutoCreation] [AlwaysUpdateSystem] [UpdateAfter(typeof(ClientInputSystem))] -public class ClientNetworkSystem : ComponentSystem, INetEventListener +public class ClientNetworkSystem : ComponentSystem, INetEventListener, INetLogger { private NetManager client; private NetPeer server; - private byte[] temp = new byte[1024]; + private byte[] temp = new byte[5120]; protected override void OnCreate() { base.OnCreate(); + NetDebug.Logger = this; client = new NetManager(this); client.Start(); } protected override void OnUpdate() - { - client.PollEvents(); + { HandleConnection(); HandleInputs(); + client.PollEvents(); } private void HandleConnection() @@ -79,6 +80,7 @@ protected override void OnDestroy() public void OnPeerConnected(NetPeer peer) { server = peer; + Debug.Log("Connected to server!"); } public void OnPeerDisconnected(NetPeer peer, DisconnectInfo disconnectInfo) @@ -88,6 +90,7 @@ public void OnPeerDisconnected(NetPeer peer, DisconnectInfo disconnectInfo) public void OnNetworkError(IPEndPoint endPoint, SocketError socketError) { + Debug.Log("[CLIENT] error " + socketError); } public void OnNetworkReceive(NetPeer peer, NetPacketReader reader, DeliveryMethod deliveryMethod) @@ -114,4 +117,9 @@ public void OnNetworkLatencyUpdate(NetPeer peer, int latency) public void OnConnectionRequest(ConnectionRequest request) { } + + public void WriteNet(NetLogLevel level, string str, params object[] args) + { + Debug.LogFormat(str, args); + } } diff --git a/RealmsCode/Assets/Scripts/Client/Players/OtherPlayerUpdateSystem.cs b/RealmsCode/Assets/Scripts/Client/Players/OtherPlayerUpdateSystem.cs index 0695790..5e9b922 100644 --- a/RealmsCode/Assets/Scripts/Client/Players/OtherPlayerUpdateSystem.cs +++ b/RealmsCode/Assets/Scripts/Client/Players/OtherPlayerUpdateSystem.cs @@ -20,11 +20,21 @@ public void Execute(Entity entity, int index, [ReadOnly] ref LatestPlayerState latestState, [ReadOnly] ref PlayerSpeed pSpeed, ref Translation translation) - { + { var pos = latestState.pState.Position; var targetPos = float3(pos.x, pos.y, pos.z); - - translation.Value = lerp(translation.Value, targetPos, pSpeed.Speed*deltaTime); + var delta = targetPos - translation.Value; + var len2 = dot(delta, delta); + var step = pSpeed.Speed * deltaTime; + if(len2 < step * step) + { + translation.Value = lerp(translation.Value, targetPos, step); + } + else + { + var direction = delta / sqrt(len2); + translation.Value += direction * step; + } } } diff --git a/RealmsCode/Assets/Scripts/Common/GameManager.cs b/RealmsCode/Assets/Scripts/Common/GameManager.cs index bc46d70..14c993a 100644 --- a/RealmsCode/Assets/Scripts/Common/GameManager.cs +++ b/RealmsCode/Assets/Scripts/Common/GameManager.cs @@ -4,59 +4,10 @@ using UnityEngine; using Zenject; -[System.Serializable] -public class NetworkSettings -{ - public string Name; - public string Ip; - public int Port; -} - -public struct NetworkSettingsComponent : IComponentData -{ - public NativeString64 Name; - public NativeString64 Ip; - public int Port; -} - public class GameManager : IInitializable { - [Inject] - private NetworkSettings networkSettings; - - [Inject] - private WorldManager worldManager; - - [Inject] - private WorldSettings worldSettings; public void Initialize() - { - worldManager.Initialize(); - - if (worldSettings.HasServer) - { - var world = worldManager.ServerWorld; - var entity = world.EntityManager.CreateEntity(); - world.EntityManager.AddComponentData(entity, new NetworkSettingsComponent - { - // server doesnot care about ip or name - Port = networkSettings.Port - }); - } - - if (worldSettings.HasClient) - { - foreach (var world in worldManager.ClientWorlds) - { - var entity = world.EntityManager.CreateEntity(); - world.EntityManager.AddComponentData(entity, new NetworkSettingsComponent - { - Name = new NativeString64(networkSettings.Name), - Ip = new NativeString64(networkSettings.Ip), - Port = networkSettings.Port - }); - } - } + { } } diff --git a/RealmsCode/Assets/Scripts/Common/Input/InputData.cs b/RealmsCode/Assets/Scripts/Common/Input/InputData.cs index d99f8de..2e1de9c 100644 --- a/RealmsCode/Assets/Scripts/Common/Input/InputData.cs +++ b/RealmsCode/Assets/Scripts/Common/Input/InputData.cs @@ -26,4 +26,13 @@ public override string ToString() { return $"{Right} {Left} {Up} {Down}"; } + + public InputData(InputData data) + { + Index = data.Index; + Right = data.Right; + Left = data.Left; + Up = data.Up; + Down = data.Down; + } } \ No newline at end of file diff --git a/RealmsCode/Assets/Scripts/Common/Player/PlayerLifecyleSystem.cs b/RealmsCode/Assets/Scripts/Common/Player/PlayerLifecyleSystem.cs index 98a9783..46e6370 100644 --- a/RealmsCode/Assets/Scripts/Common/Player/PlayerLifecyleSystem.cs +++ b/RealmsCode/Assets/Scripts/Common/Player/PlayerLifecyleSystem.cs @@ -51,10 +51,10 @@ protected override void OnUpdate() Entities.ForEach((Entity e, ref ServerInputCommand command) => { // this only happens on the server - PostUpdateCommands.DestroyEntity(e); + EntityManager.DestroyEntity(e); if (players.TryGetValue(command.playerID, out Entity player)) { - AddInput(player, command.inputData); + AddInput(player, new InputData(command.inputData)); } }); @@ -95,7 +95,9 @@ private Entity GeneratePlayer (CreatePlayer cp) { EntityManager.AddBuffer(entity); } +#if UNITY_EDITOR EntityManager.SetName(entity, $"Player{cp.Id}"); +#endif players[cp.Id] = entity; EntityManager.DestroyEntity(p); if (cp.OwnPlayer) diff --git a/RealmsCode/Assets/Scripts/Installers/PlaymodeSettingsInstaller.cs b/RealmsCode/Assets/Scripts/Installers/PlaymodeSettingsInstaller.cs index cbe80a3..5f1caff 100644 --- a/RealmsCode/Assets/Scripts/Installers/PlaymodeSettingsInstaller.cs +++ b/RealmsCode/Assets/Scripts/Installers/PlaymodeSettingsInstaller.cs @@ -15,8 +15,7 @@ public override void InstallBindings() InitializeMessagePack(); Container.BindInstance(settings).AsSingle(); Container.BindInterfacesAndSelfTo().AsSingle().NonLazy(); - Container.BindInstance(networkSettings).WhenInjectedInto(); - Container.BindInterfacesAndSelfTo().AsSingle().NonLazy(); + Container.BindInstance(networkSettings).WhenInjectedInto(); } private void InitializeMessagePack() diff --git a/RealmsCode/Assets/Scripts/Server/Network/ServerNetworkSystem.cs b/RealmsCode/Assets/Scripts/Server/Network/ServerNetworkSystem.cs index 20033d5..0c38fc6 100644 --- a/RealmsCode/Assets/Scripts/Server/Network/ServerNetworkSystem.cs +++ b/RealmsCode/Assets/Scripts/Server/Network/ServerNetworkSystem.cs @@ -1,3 +1,4 @@ +#define DEBUG using Unity.Entities; using LiteNetLib; using UnityEngine; @@ -9,6 +10,7 @@ using Zenject; using Unity.Transforms; + public struct ServerInputCommand : IComponentData { public int playerID; @@ -16,21 +18,24 @@ public struct ServerInputCommand : IComponentData } [DisableAutoCreation] -public class ServerNetworkSystem : ComponentSystem, INetEventListener +[AlwaysUpdateSystem] +[UpdateBefore((typeof(PlayerLifecyleSystem)))] +public class ServerNetworkSystem : ComponentSystem, INetEventListener, INetLogger { [Inject] private WorldSettings settings; private NetManager server; - private readonly byte[] temp = new byte[1024]; + private readonly byte[] temp = new byte[5120]; private List clientList = new List(); private EntityQuery stateQuery => GetEntityQuery(typeof(SerializedServerState)); protected override void OnCreate() { + NetDebug.Logger = this; base.OnCreate(); - server = new NetManager(this); + server = new NetManager(this); } protected override void OnUpdate() @@ -97,8 +102,8 @@ public void OnNetworkReceive(NetPeer peer, NetPacketReader reader, DeliveryMetho reader.GetBytes(temp, available); var inputData = MessagePackSerializer.Deserialize(temp); // update the simulation - var entity = PostUpdateCommands.CreateEntity(); - PostUpdateCommands.AddComponent(entity, new ServerInputCommand + var entity = EntityManager.CreateEntity(); + EntityManager.AddComponentData(entity, new ServerInputCommand { playerID = (int)peer.Tag, inputData = inputData @@ -124,5 +129,11 @@ public void OnConnectionRequest(ConnectionRequest request) int hashcode = dataReader.GetInt(); string name = dataReader.GetString(); peer.Tag = hashcode; - } + Debug.Log("RECEIVED CONNECTINO REQUEST"); + } + + public void WriteNet(NetLogLevel level, string str, params object[] args) + { + Debug.LogFormat(str, args); + } } diff --git a/RealmsCode/Assets/Scripts/Server/Player/ServerSendStateSystem.cs b/RealmsCode/Assets/Scripts/Server/Player/ServerSendStateSystem.cs index 20af6ce..5997978 100644 --- a/RealmsCode/Assets/Scripts/Server/Player/ServerSendStateSystem.cs +++ b/RealmsCode/Assets/Scripts/Server/Player/ServerSendStateSystem.cs @@ -53,49 +53,45 @@ public struct SerializedServerState : IBufferElementData [DisableAutoCreation] public class ServerSendStateSystem : JobComponentSystem { - private float updateTime = 0.2f; + private float updateTime = 0.1f; private float oldTime = 0; - EndSimulationEntityCommandBufferSystem m_EndFrameBarrier; + BeginSimulationEntityCommandBufferSystem m_EndFrameBarrier; protected override void OnCreate() { base.OnCreate(); - m_EndFrameBarrier = World.GetOrCreateSystem(); + m_EndFrameBarrier = World.GetOrCreateSystem(); } public struct CreatePlayerStateJob : IJobForEachWithEntity { - public NativeArray arr; + public NativeList arr; - [NativeDisableParallelForRestriction] - public NativeArray count; public void Execute(Entity e, int index, ref Translation transform, ref PlayerData playerData, ref PlayerIndex playerIndex) { var pos = transform.Value; - arr[index] = new PlayerState + arr.Add(new PlayerState { Id = playerData.Id, Position = new Vector3Sim { x = pos.x, y = pos.y, z = pos.z }, Index = playerIndex.Index - }; - count[0] += 1; + }); } } public struct SerializeStateJob : IJob { public EntityCommandBuffer CommandBuffer; - public NativeArray players; - public NativeArray countArr; + public NativeList players; public void Execute() { var stateEntity = CommandBuffer.CreateEntity(); var worldState = new WorldState { - playerState = players.Slice(0, countArr[0]).ToArray() + playerState = players.ToArray() }; var serializedState = MessagePackSerializer.Serialize(worldState); var buffer = CommandBuffer.AddBuffer(stateEntity).Reinterpret(); @@ -110,20 +106,20 @@ protected override JobHandle OnUpdate(JobHandle inputDeps) { oldTime = Time.time; - var nativeArr = new NativeArray(100, Allocator.TempJob); - var countArr = new NativeArray(1, Allocator.TempJob); + var nativeArr = new NativeList(100, Allocator.TempJob); var playerStateJob = new CreatePlayerStateJob() { - arr = nativeArr, - count = countArr - }.Schedule(this, inputDeps); + arr = nativeArr + }.ScheduleSingle(this, inputDeps); + + playerStateJob.Complete(); + var serializeJob = new SerializeStateJob() { CommandBuffer = m_EndFrameBarrier.CreateCommandBuffer(), - players = nativeArr, - countArr = countArr + players = nativeArr }.Schedule(playerStateJob); @@ -132,7 +128,6 @@ protected override JobHandle OnUpdate(JobHandle inputDeps) serializeJob.Complete(); nativeArr.Dispose(); - countArr.Dispose(); return serializeJob; } diff --git a/RealmsCode/Assets/Scripts/WorldManager.cs b/RealmsCode/Assets/Scripts/WorldManager.cs index 8ca5078..1cbc143 100644 --- a/RealmsCode/Assets/Scripts/WorldManager.cs +++ b/RealmsCode/Assets/Scripts/WorldManager.cs @@ -30,12 +30,30 @@ public class WorldSettings public GameObject playerPrefab; } +[Serializable] +public class NetworkSettings +{ + public string Name; + public string Ip; + public int Port; +} + +public struct NetworkSettingsComponent : IComponentData +{ + public NativeString64 Name; + public NativeString64 Ip; + public int Port; +} + -public class WorldManager +public class WorldManager : IInitializable { [Inject] private WorldSettings settings; + [Inject] + private NetworkSettings networkSettings; + public World ServerWorld { get; private set; @@ -49,16 +67,32 @@ public World[] ClientWorlds { public void Initialize() { - PlayerPrefab = settings.playerPrefab; var initializationSystem = World.Active.GetOrCreateSystem(); var simulationSystem = World.Active.GetOrCreateSystem(); var presentationSystem = World.Active.GetOrCreateSystem(); + if (settings.HasServer) + { + ServerWorld = new World(WorldTypes.Server); + + ServerInitializationSystemGroup serverInitializationGroup = ServerWorld.GetOrCreateSystem(); + initializationSystem.AddSystemToUpdateList(serverInitializationGroup); + + ServerSystemGroup serverSimulationGroup = ServerWorld.GetOrCreateSystem(); + simulationSystem.AddSystemToUpdateList(serverSimulationGroup); + var entity = ServerWorld.EntityManager.CreateEntity(); + ServerWorld.EntityManager.AddComponentData(entity, new NetworkSettingsComponent + { + // server doesnot care about ip or name + Port = networkSettings.Port + }); + } + if (settings.HasClient) { - var count = Mathf.Clamp(settings.clientCount, 1, 10); + var count = Mathf.Clamp(settings.clientCount, 1, 100); ClientWorlds = new World[count]; for (int i = 0; i < count; i++) { @@ -84,23 +118,15 @@ public void Initialize() ClientPresentationSystemGroup clientPresentationSystem = cWorld.GetOrCreateSystem(); presentationSystem.AddSystemToUpdateList(clientPresentationSystem); } - } - } - - if (settings.HasServer) - { - ServerWorld = new World(WorldTypes.Server); - ServerInitializationSystemGroup serverInitializationGroup = ServerWorld.GetOrCreateSystem(); - initializationSystem.AddSystemToUpdateList(serverInitializationGroup); - - ServerSystemGroup serverSimulationGroup = ServerWorld.GetOrCreateSystem(); - simulationSystem.AddSystemToUpdateList(serverSimulationGroup); + var entity = cWorld.EntityManager.CreateEntity(); + cWorld.EntityManager.AddComponentData(entity, new NetworkSettingsComponent + { + Name = new NativeString64(networkSettings.Name), + Ip = new NativeString64(networkSettings.Ip), + Port = networkSettings.Port + }); + } } - - - initializationSystem.SortSystemUpdateList(); - simulationSystem.SortSystemUpdateList(); - presentationSystem.SortSystemUpdateList(); } } \ No newline at end of file diff --git a/RealmsCode/Assets/Settings/PlayModeSettings.asset b/RealmsCode/Assets/Settings/PlayModeSettings.asset index bacc7b7..a210d4d 100644 --- a/RealmsCode/Assets/Settings/PlayModeSettings.asset +++ b/RealmsCode/Assets/Settings/PlayModeSettings.asset @@ -13,12 +13,12 @@ MonoBehaviour: m_Name: PlayModeSettings m_EditorClassIdentifier: settings: - playMode: 2 - clientCount: 2 - playerClient: 0 + playMode: 0 + clientCount: 25 + playerClient: -1 playerPrefab: {fileID: 4569640090722137799, guid: bd0aaf0e424874d46bc9c43e44d6db3a, type: 3} networkSettings: - Name: player - Ip: localhost + Name: Max Payne + Ip: 127.0.0.1 Port: 8090 diff --git a/RealmsCode/ProjectSettings/BurstAotSettings_StandaloneWindows.json b/RealmsCode/ProjectSettings/BurstAotSettings_StandaloneWindows.json new file mode 100644 index 0000000..ec0089d --- /dev/null +++ b/RealmsCode/ProjectSettings/BurstAotSettings_StandaloneWindows.json @@ -0,0 +1,11 @@ +{ + "MonoBehaviour": { + "m_Enabled": true, + "m_EditorHideFlags": 0, + "m_Name": "", + "m_EditorClassIdentifier": "Unity.Burst.Editor:Unity.Burst.Editor:BurstPlatformAotSettings", + "DisableOptimisations": false, + "DisableSafetyChecks": true, + "DisableBurstCompilation": false + } +} \ No newline at end of file diff --git a/RealmsCode/ProjectSettings/GraphicsSettings.asset b/RealmsCode/ProjectSettings/GraphicsSettings.asset index 43369e3..4706883 100644 --- a/RealmsCode/ProjectSettings/GraphicsSettings.asset +++ b/RealmsCode/ProjectSettings/GraphicsSettings.asset @@ -35,6 +35,9 @@ GraphicsSettings: - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 16000, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 16001, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 17000, guid: 0000000000000000f000000000000000, type: 0} m_PreloadedShaders: [] m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} diff --git a/RealmsCode/ProjectSettings/ProjectSettings.asset b/RealmsCode/ProjectSettings/ProjectSettings.asset index 511bc48..afd848d 100644 --- a/RealmsCode/ProjectSettings/ProjectSettings.asset +++ b/RealmsCode/ProjectSettings/ProjectSettings.asset @@ -12,8 +12,8 @@ PlayerSettings: targetDevice: 2 useOnDemandResources: 0 accelerometerFrequency: 60 - companyName: DefaultCompany - productName: RealmsCode + companyName: Gamedolphin + productName: ECS Multiplayer RandomWalkers defaultCursor: {fileID: 0} cursorHotspot: {x: 0, y: 0} m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} @@ -42,8 +42,8 @@ PlayerSettings: m_SplashScreenLogos: [] m_VirtualRealitySplashScreen: {fileID: 0} m_HolographicTrackingLossScreen: {fileID: 0} - defaultScreenWidth: 1024 - defaultScreenHeight: 768 + defaultScreenWidth: 600 + defaultScreenHeight: 400 defaultScreenWidthWeb: 960 defaultScreenHeightWeb: 600 m_StereoRenderingPath: 0 @@ -67,7 +67,7 @@ PlayerSettings: androidUseSwappy: 0 androidBlitType: 0 defaultIsNativeResolution: 1 - macRetinaSupport: 1 + macRetinaSupport: 0 runInBackground: 1 captureSingleScreen: 0 muteOtherAudioSources: 0 @@ -80,7 +80,7 @@ PlayerSettings: bakeCollisionMeshes: 0 forceSingleInstance: 0 useFlipModelSwapchain: 1 - resizableWindow: 0 + resizableWindow: 1 useMacAppStoreValidation: 0 macAppStoreCategory: public.app-category.games gpuSkinning: 1 @@ -91,7 +91,7 @@ PlayerSettings: xboxEnableFitness: 0 visibleInBackground: 1 allowFullscreenSwitch: 1 - fullscreenMode: 1 + fullscreenMode: 3 xboxSpeechDB: 0 xboxEnableHeadOrientation: 0 xboxEnableGuest: 0 @@ -580,7 +580,8 @@ PlayerSettings: webGLWasmStreaming: 0 scriptingDefineSymbols: {} platformArchitecture: {} - scriptingBackend: {} + scriptingBackend: + Standalone: 0 il2cppCompilerConfiguration: {} managedStrippingLevel: {} incrementalIl2cppBuild: {} @@ -589,7 +590,8 @@ PlayerSettings: scriptingRuntimeVersion: 1 gcIncremental: 0 gcWBarrierValidation: 0 - apiCompatibilityLevelPerPlatform: {} + apiCompatibilityLevelPerPlatform: + Standalone: 3 m_RenderingPath: 1 m_MobileRenderingPath: 1 metroPackageName: Template_3D