@@ -73,9 +73,9 @@ public GameWorld(string name = "world") m_sceneRoot = new GameObject(name); GameObject.DontDestroyOnLoad(m_sceneRoot); } m_ECSWorld = World.Active != null ? World.Active : new World(name); World.Active = m_ECSWorld; GameDebug.Assert(World.Active != null,"There is no active world"); m_ECSWorld = World.Active; m_EntityManager = m_ECSWorld.GetOrCreateManager();@@ -114,13 +114,6 @@ public void Shutdown() s_Worlds.Remove(this); if (m_ECSWorld.IsCreated) { m_ECSWorld.Dispose(); m_ECSWorld = null; World.Active = null; } GameObject.Destroy(m_sceneRoot); }Assets/Scripts/Game/Main/ClientGameLoop.csCopy file name to clipboardExpand all lines: Assets/Scripts/Game/Main/ClientGameLoop.cs+19-11Lines changed: 19 additions & 11 deletionsOriginal file line numberDiff line numberDiff line change@@ -527,7 +527,6 @@ public bool Init(string[] args)#if UNITY_EDITOR Game.game.levelManager.UnloadLevel(); World.DisposeAllWorlds();#endif m_GameWorld = new GameWorld("ClientWorld");@@ -988,7 +987,7 @@ void CmdMatchmake(string[] args) if (string.IsNullOrEmpty(endpoint)) { GameDebug.LogError("matchmake: command requires an endpoint <hostname[:port]/{projectid}>"); GameDebug.LogError("matchmake: command requires an endpoint <ex: cloud.connected.unity3d.com/{projectid}>"); return; }@@ -1004,27 +1003,36 @@ void CmdMatchmake(string[] args) return; } GameDebug.Log($"matchmake: Starting the matchmaker. Requesting match from {endpoint} for player {clientPlayerName.Value}."); GameDebug.Log($"matchmake: Starting the matchmaker. Requesting match from {endpoint} for request ID {clientPlayerName.Value}."); m_useMatchmaking = true; m_matchmaker = new Matchmaker(endpoint); m_matchmaker = new Matchmaker(endpoint, OnMatchmakingSuccess, OnMatchmakingError); MatchmakingPlayerProperties playerProps = new MatchmakingPlayerProperties() {hats = 5}; MatchmakingGroupProperties groupProps = new MatchmakingGroupProperties() {mode = 0}; MatchmakingRequest request = Matchmaker.CreateMatchmakingRequest(clientPlayerName.Value, playerProps, groupProps); m_matchmaker.RequestMatch(request, OnMatchmakingSuccess, OnMatchmakingError); m_matchmaker.RequestMatch(clientPlayerName.Value, playerProps, groupProps); } void OnMatchmakingSuccess(string connectionInfo) void OnMatchmakingSuccess(Assignment assignment) { GameDebug.Log($"Matchmaking has found a game! The server is at: {connectionInfo}"); // TODO: Uncomment following line when matchmaking service returns an endpoint instead of the roster //Console.EnqueueCommand($"connect {connectionInfo}"); if (string.IsNullOrEmpty(assignment.ConnectionString)) { GameDebug.Log("Matchmaking finished, but did not return a game server. Ensure your server has been allocated and is running then try again."); GameDebug.Log($"MM Error: {assignment.AssignmentError ?? "None"}"); } else { GameDebug.Log($"Matchmaking has found a game! The server is at {assignment.ConnectionString}. Attempting to connect..."); Console.EnqueueCommand($"connect {assignment.ConnectionString}"); } m_useMatchmaking = false; m_matchmaker = null; } void OnMatchmakingError(string errorInfo) { GameDebug.LogError($"Matchmaking failed! Error is: {errorInfo}"); m_useMatchmaking = false; m_matchmaker = null; }Assets/Scripts/Game/Main/ServerGameLoop.csCopy file name to clipboardExpand all lines: Assets/Scripts/Game/Main/ServerGameLoop.cs-1Lines changed: 0 additions & 1 deletionOriginal file line numberDiff line numberDiff line change@@ -345,7 +345,6 @@ public bool Init(string[] args)#if UNITY_EDITOR Game.game.levelManager.UnloadLevel(); World.DisposeAllWorlds();#endif m_GameWorld = new GameWorld("ServerWorld");Assets/Scripts/Game/Main/ThinClientGameLoop.csCopy file name to clipboardExpand all lines: Assets/Scripts/Game/Main/ThinClientGameLoop.cs-1Lines changed: 0 additions & 1 deletionOriginal file line numberDiff line numberDiff line change@@ -249,7 +249,6 @@ public bool Init(string[] args)#if UNITY_EDITOR Game.game.levelManager.UnloadLevel(); World.DisposeAllWorlds();#endif Console.AddCommand("disconnect", CmdDisconnect, "Disconnect from server if connected", this.GetHashCode());Assets/Scripts/Game/Modules/Character/Components/CharacterInterpolated.csCopy file name to clipboardExpand all lines: Assets/Scripts/Game/Modules/Character/Components/CharacterInterpolated.cs+1-1Lines changed: 1 addition & 1 deletionOriginal file line numberDiff line numberDiff line change@@ -180,5 +180,5 @@ public override string ToString() }}public class CharacterInterpolated : ComponentDataWrapperpublic class CharacterInterpolated : ComponentDataProxy{}Assets/Scripts/Game/Modules/Character/Components/CharacterPredicted.csCopy file name to clipboardExpand all lines: Assets/Scripts/Game/Modules/Character/Components/CharacterPredicted.cs+1-1Lines changed: 1 addition & 1 deletionOriginal file line numberDiff line numberDiff line change@@ -133,5 +133,5 @@ public override string ToString()#endif }public class CharacterPredicted : ComponentDataWrapperpublic class CharacterPredicted : ComponentDataProxy{}Assets/Scripts/Game/Modules/Character/Components/CharacterReplicated.csCopy file name to clipboardExpand all lines: Assets/Scripts/Game/Modules/Character/Components/CharacterReplicated.cs+1-1Lines changed: 1 addition & 1 deletionOriginal file line numberDiff line numberDiff line change@@ -40,6 +40,6 @@ public Entity FindAbilityWithComponent(EntityManager entityManager, Type ability }}public class CharacterReplicated : ComponentDataWrapperpublic class CharacterReplicated : ComponentDataProxy{}Assets/Scripts/Game/Modules/Effect/VFXSystem.csCopy file name to clipboardExpand all lines: Assets/Scripts/Game/Modules/Effect/VFXSystem.cs+1Lines changed: 1 addition & 0 deletionsOriginal file line numberDiff line numberDiff line change@@ -5,6 +5,7 @@using UnityEngine;using UnityEngine.Experimental.VFX;[DisableAutoCreation]public class VFXSystem : ComponentSystem{ static readonly int positionID = Shader.PropertyToID("position");Assets/Scripts/Game/Modules/HitCollision/HitCollisionOwner.csCopy file name to clipboardExpand all lines: Assets/Scripts/Game/Modules/HitCollision/HitCollisionOwner.cs+1-1Lines changed: 1 addition & 1 deletionOriginal file line numberDiff line numberDiff line change@@ -22,7 +22,7 @@ public struct HitCollisionOwnerData : IComponentData[DisallowMultipleComponent]public class HitCollisionOwner : ComponentDataWrapperpublic class HitCollisionOwner : ComponentDataProxy{ private void OnEnable() {Assets/Scripts/Game/Modules/Player/Components/UserCommandComponent.csCopy file name to clipboardExpand all lines: Assets/Scripts/Game/Modules/Player/Components/UserCommandComponent.cs+1-1Lines changed: 1 addition & 1 deletionOriginal file line numberDiff line numberDiff line change@@ -38,5 +38,5 @@ public void Deserialize(ref SerializeContext context, ref NetworkReader reader) }}public class UserCommandComponent : ComponentDataWrapperpublic class UserCommandComponent : ComponentDataProxy{}Assets/Scripts/Game/Modules/Presentation/PresentationOwner.csCopy file name to clipboardExpand all lines: Assets/Scripts/Game/Modules/Presentation/PresentationOwner.cs+1-1Lines changed: 1 addition & 1 deletionOriginal file line numberDiff line numberDiff line change@@ -18,7 +18,7 @@ public PresentationOwnerData(int variation) }}public class PresentationOwner : ComponentDataWrapperpublic class PresentationOwner : ComponentDataProxy{}Assets/Scripts/Game/Modules/Ragdoll/RagdollState.csCopy file name to clipboardExpand all lines: Assets/Scripts/Game/Modules/Ragdoll/RagdollState.cs+1-1Lines changed: 1 addition & 1 deletionOriginal file line numberDiff line numberDiff line change@@ -26,7 +26,7 @@ public void Deserialize(ref SerializeContext context, ref NetworkReader reader) }}public class RagdollState : ComponentDataWrapperpublic class RagdollState : ComponentDataProxy{}Assets/Scripts/Game/Modules/ReplicatedEntity/ReplicatedEntity.csCopy file name to clipboardExpand all lines: Assets/Scripts/Game/Modules/ReplicatedEntity/ReplicatedEntity.cs+1-1Lines changed: 1 addition & 1 deletionOriginal file line numberDiff line numberDiff line change@@ -48,7 +48,7 @@ public void Deserialize(ref SerializeContext context, ref NetworkReader reader)[ExecuteAlways, DisallowMultipleComponent][RequireComponent(typeof(GameObjectEntity))]public class ReplicatedEntity : ComponentDataWrapperpublic class ReplicatedEntity : ComponentDataProxy{ public byte[] netID; // guid of instance. Used for identifying replicated entities from the sceneAssets/Scripts/Game/Modules/SpectatorCam/SpectatorCam.csCopy file name to clipboardExpand all lines: Assets/Scripts/Game/Modules/SpectatorCam/SpectatorCam.cs+1-1Lines changed: 1 addition & 1 deletionOriginal file line numberDiff line numberDiff line change@@ -27,7 +27,7 @@ public void Deserialize(ref SerializeContext context, ref NetworkReader reader)public class SpectatorCam : ComponentDataWrapperpublic class SpectatorCam : ComponentDataProxy{}Assets/Scripts/Game/Systems/Damage/DamageHistory.csCopy file name to clipboardExpand all lines: Assets/Scripts/Game/Systems/Damage/DamageHistory.cs+1-1Lines changed: 1 addition & 1 deletionOriginal file line numberDiff line numberDiff line change@@ -42,7 +42,7 @@ public void Deserialize(ref SerializeContext context, ref NetworkReader reader) }}public class DamageHistory : ComponentDataWrapperpublic class DamageHistory : ComponentDataProxy{}Assets/Scripts/Game/Systems/Damage/HealthState.csCopy file name to clipboardExpand all lines: Assets/Scripts/Game/Systems/Damage/HealthState.cs+1-1Lines changed: 1 addition & 1 deletionOriginal file line numberDiff line numberDiff line change@@ -48,7 +48,7 @@ public void ApplyDamage(ref DamageEvent damageEvent, int tick)}public class HealthState : ComponentDataWrapperpublic class HealthState : ComponentDataProxy{}Assets/Scripts/Game/Systems/DestructibleProp/DestructablePropReplicatedState.csCopy file name to clipboardExpand all lines: Assets/Scripts/Game/Systems/DestructibleProp/DestructablePropReplicatedState.cs+1-1Lines changed: 1 addition & 1 deletionOriginal file line numberDiff line numberDiff line change@@ -22,6 +22,6 @@ public void Deserialize(ref SerializeContext context, ref NetworkReader reader) }}public class DestructablePropReplicatedState : ComponentDataWrapperpublic class DestructablePropReplicatedState : ComponentDataProxy{}Assets/Scripts/Game/Systems/Movable/Movable.csCopy file name to clipboardExpand all lines: Assets/Scripts/Game/Systems/Movable/Movable.cs+1-1Lines changed: 1 addition & 1 deletionOriginal file line numberDiff line numberDiff line change@@ -39,7 +39,7 @@ public void Interpolate(ref SerializeContext context, ref MovableData first, ref}[RequireComponent(typeof(Rigidbody))]public class Movable : ComponentDataWrapperpublic class Movable : ComponentDataProxy{ public void Start() {Assets/Scripts/Game/Systems/Teleporter/Components/TeleporterPresentation.csCopy file name to clipboardExpand all lines: Assets/Scripts/Game/Systems/Teleporter/Components/TeleporterPresentation.cs+1-1Lines changed: 1 addition & 1 deletionOriginal file line numberDiff line numberDiff line change@@ -25,7 +25,7 @@ public void Deserialize(ref SerializeContext context, ref NetworkReader reader)}[DisallowMultipleComponent]public class TeleporterPresentation : ComponentDataWrapperpublic class TeleporterPresentation : ComponentDataProxy{}Assets/Scripts/Networking/Matchmaking/Matchmaker.csCopy file name to clipboardExpand all lines: Assets/Scripts/Networking/Matchmaking/Matchmaker.cs+52-39Lines changed: 52 additions & 39 deletionsOriginal file line numberDiff line numberDiff line change@@ -3,23 +3,21 @@namespace UnityEngine.Ucg.Matchmaking{ public class Matchmaker public class Matchmaker { ///
/// The hostname[:port]/{projectid} for the running matchmaker assigned to this project /// The hostname[:port]/{projectid} of your matchmaking server /// public string Endpoint; MatchmakingRequest MatchmakingRequest; MatchmakingController matchmakingController; private MatchmakingRequest request; public delegate void SuccessCallback(string connectionInfo); public delegate void SuccessCallback(Assignment assignment); public delegate void ErrorCallback(string error); SuccessCallback m_Success; ErrorCallback m_Error; public SuccessCallback successCallback; public ErrorCallback errorCallback; public enum MatchmakingState {@@ -35,9 +33,34 @@ public enum MatchmakingState /// public MatchmakingState State = MatchmakingState.None; public Matchmaker(string endpoint) ///
/// Matchmaker /// /// /// If a match is found, this callback will provide the connection information /// If matchmaking fails, this callback will provided some failure information public Matchmaker(string endpoint, SuccessCallback onSuccessCallback = null, ErrorCallback onErrorCallback = null) { Endpoint = endpoint; this.successCallback = onSuccessCallback; this.errorCallback = onErrorCallback; } ///
/// Start Matchmaking /// /// The id of the player /// Custom player properties relevant to the matchmaking function /// Custom group properties relevant to the matchmaking function public void RequestMatch(string playerId, MatchmakingPlayerProperties playerProps, MatchmakingGroupProperties groupProps) { request = CreateMatchmakingRequest(playerId, playerProps, groupProps); matchmakingController = new MatchmakingController(Endpoint); matchmakingController.StartRequestMatch(request, GetAssignment, OnError); State = MatchmakingState.Requesting; Debug.Log(State); } ///
@@ -56,8 +79,7 @@ public void Update() break; case MatchmakingState.Found: case MatchmakingState.Error: Debug.Log("Update() is still being called after matchmaking finished."); break; break; // User hasn't stopped the state machine yet. default: throw new ArgumentOutOfRangeException(); }@@ -70,58 +92,49 @@ public void Update() /// Custom player properties relevant to the matchmaking function /// Custom group properties relevant to the matchmaking function /// public static MatchmakingRequest CreateMatchmakingRequest(string playerId, MatchmakingPlayerProperties playerProps, MatchmakingGroupProperties groupProps) private static MatchmakingRequest CreateMatchmakingRequest(string playerId, MatchmakingPlayerProperties playerProps, MatchmakingGroupProperties groupProps) { MatchmakingRequest request = new MatchmakingRequest(); MatchmakingPlayer thisPlayer = new MatchmakingPlayer(playerId); // TODO: WORKAROUND: Currently matchmaker handles IDs as UUIDs, not player names, and will only ever generate 1 match assignment for each UUID // Therefore, we'll append the current time in Ticks as an attempt at creating a UUID playerId = playerId + DateTime.UtcNow.Ticks.ToString(); MatchmakingPlayer thisPlayer = new MatchmakingPlayer(playerId) { Properties = JsonUtility.ToJson(playerProps) }; MatchmakingRequest request = new MatchmakingRequest() { Properties = JsonUtility.ToJson(groupProps) }; thisPlayer.Properties = JsonUtility.ToJson(playerProps); request.Players.Add(thisPlayer); request.Properties = JsonUtility.ToJson(groupProps); return request; } /// /// Start matchmaking /// /// The matchmaking request /// If a match is found, this callback will provide the connection information /// If matchmaking fails, this callback will provided some failure information public void RequestMatch(MatchmakingRequest request, SuccessCallback successCallback, ErrorCallback errorCallback) { m_Success = successCallback; m_Error = errorCallback; MatchmakingRequest = request; matchmakingController = new MatchmakingController(Endpoint); matchmakingController.StartRequestMatch(request, GetAssignment, OnError); State = MatchmakingState.Requesting; Debug.Log(State); } void GetAssignment() { matchmakingController.StartGetAssignment(MatchmakingRequest.Players[0].Id, OnSuccess, OnError); matchmakingController.StartGetAssignment(request.Players[0].Id, OnSuccess, OnError); State = MatchmakingState.Searching; Debug.Log(State); } void OnSuccess(string connectionInfo) void OnSuccess(Assignment assignment) { State = MatchmakingState.Found; Debug.Log(State); m_Success.Invoke(connectionInfo); successCallback?.Invoke(assignment); } void OnError(string error) { State = MatchmakingState.Error; Debug.Log(State); m_Error.Invoke(error); errorCallback?.Invoke(error ?? "Undefined Error"); } }}}Assets/Scripts/Networking/Matchmaking/MatchmakingClient.csCopy file name to clipboardExpand all lines: Assets/Scripts/Networking/Matchmaking/MatchmakingClient.cs+2-2Lines changed: 2 additions & 2 deletionsOriginal file line numberDiff line numberDiff line change@@ -17,11 +17,11 @@ class MatchmakingClient internal MatchmakingClient(string endpoint) { Url = "https://" + endpoint + "/matchmaking/api/v" + k_ApiVersion; Url = "https://" + endpoint + "/api/v" + k_ApiVersion + "/matchmaking"; } /// /// Start matchmaking for a provided request. This tells your matchmaking endpoint to add /// Start matchmaking for a provided request. This tells your matchmaking endpoint to add /// the players and group data in the request to the matchmaking pool for consideration /// /// The matchmaking requestAssets/Scripts/Networking/Matchmaking/MatchmakingClient.cs.metaCopy file name to clipboardExpand all lines: Assets/Scripts/Networking/Matchmaking/MatchmakingClient.cs.meta+9-1Lines changed: 9 additions & 1 deletion Load DiffSome generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.Assets/Scripts/Networking/Matchmaking/MatchmakingController.csCopy file name to clipboardExpand all lines: Assets/Scripts/Networking/Matchmaking/MatchmakingController.cs+11-3Lines changed: 11 additions & 3 deletionsOriginal file line numberDiff line numberDiff line change@@ -8,7 +8,7 @@ class MatchmakingController { public delegate void RequestMatchSuccess(); public delegate void RequestMatchError(string error); public delegate void GetAssignmentSuccess(string connectionInfo); public delegate void GetAssignmentSuccess(Assignment assignment); public delegate void GetAssignmentError(string error); RequestMatchSuccess m_RequestMatchSuccess;@@ -101,8 +101,16 @@ internal void UpdateGetAssignment() return; } ConnectionInfo result = JsonUtility.FromJson(m_GetAssignmentOperation.webRequest.downloadHandler.text); m_GetAssignmentSuccess.Invoke(result.ConnectionString); Assignment result = JsonUtility.FromJson(m_GetAssignmentOperation.webRequest.downloadHandler.text); if (!string.IsNullOrEmpty(result.AssignmentError)) { m_GetAssignmentError.Invoke(result.AssignmentError); return; } m_GetAssignmentSuccess.Invoke(result); } }}Assets/Scripts/Networking/Matchmaking/MatchmakingController.cs.metaCopy file name to clipboardExpand all lines: Assets/Scripts/Networking/Matchmaking/MatchmakingController.cs.meta+9-1Lines changed: 9 additions & 1 deletion Load DiffSome generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.Assets/Scripts/Networking/Matchmaking/MatchmakingCustomProperties.cs.metaCopy file name to clipboardExpand all lines: Assets/Scripts/Networking/Matchmaking/MatchmakingCustomProperties.cs.meta+9-1Lines changed: 9 additions & 1 deletion Load DiffSome generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.Assets/Scripts/Networking/Matchmaking/MatchmakingModel.csCopy file name to clipboardExpand all lines: Assets/Scripts/Networking/Matchmaking/MatchmakingModel.cs+24-3Lines changed: 24 additions & 3 deletionsOriginal file line numberDiff line numberDiff line change@@ -7,12 +7,13 @@ namespace UnityEngine.Ucg.Matchmaking [Serializable] public class MatchmakingPlayer {#pragma warning disable 649 [SerializeField] string id; [SerializeField] string properties;#pragma warning restore 649 public string Id => id; public string Properties@@ -30,12 +31,13 @@ internal MatchmakingPlayer(string id) [Serializable] public class MatchmakingRequest {#pragma warning disable 649 [SerializeField] List players; [SerializeField] string properties;#pragma warning restore 649 public List Players { get { return players; }@@ -54,6 +56,7 @@ public MatchmakingRequest() } }#pragma warning disable 649 class MatchmakingResult { [SerializeField]@@ -62,12 +65,15 @@ class MatchmakingResult [SerializeField] internal string error; }#pragma warning restore 649 [Serializable] class AssignmentRequest {#pragma warning disable 649 [SerializeField] string id;#pragma warning restore 649 public string Id => id;@@ -78,11 +84,26 @@ internal AssignmentRequest(string id) } [Serializable] class ConnectionInfo public class Assignment {#pragma warning disable 649 [SerializeField] string connection_string; [SerializeField] string assignment_error; [SerializeField] List roster;#pragma warning restore 649 public string ConnectionString => connection_string; public string AssignmentError => assignment_error; public List Roster { get { return roster; } set { roster = value; } } }}Assets/Scripts/Networking/Matchmaking/MatchmakingModel.cs.metaCopy file name to clipboardExpand all lines: Assets/Scripts/Networking/Matchmaking/MatchmakingModel.cs.meta+9-1Lines changed: 9 additions & 1 deletion Load DiffSome generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.CHANGELOG.mdCopy file name to clipboardExpand all lines: CHANGELOG.md+26-1Lines changed: 26 additions & 1 deletionDisplay the source diffDisplay the rich diffOriginal file line numberDiff line numberDiff line change@@ -2,8 +2,33 @@this file contains a summary of the changes that went into each release.## [0.3.0] - NEXT NEXT NEXT NEXT## [0.3.1] - 2019-03-11- Fixed changelog not being properly updated (missing entries under 0.3.0 heading)- Updated to Unity 2018.3.8f1- Updated to latest Matchmaker example code## [0.3.0] - 2019-02-28- Updated HDRP to version 4.6- net.stats 4 now show breakdown of incoming update packets- Updated to Unity 2018.3f2- Fix for too agressive framenting of network packets (would fragment before packet was full)- Improved compression of Schemas (sent out the clients the first time a new entity type is spawned)- Fixed network tests that were broken at last release- Added server.disconnecttimeout to allow tuning disconnect time- New type of headless client, "thinclient", to enable stresstesting of server. Start e.g. using -batchmode -nographics +thinclient +debugmove 1 +connect localhost +thinclient.requested 16 to get 16 client connections.- Changed client.updatesendrate (number of updates from server per second) to client.updateinterval (time in simticks between updates from server). Old default was 20 updates/sec and new default is 3; with tickrate of 60 default is thus unchanged.- The oddly named owner to server in ServerConnection- Tweaks to Linux build steps to align with needs of Multiplay (naming etc.)- Game now looks for -port and -query_port for port numbers for game resp server query port.- Lots of optimizations to delta compression and snapshot generation on server- Redid all the old particles in with cool new Visual Effect Graph- Fix for crashes in netcode when client had very long stalls- Converted all of the UI to use Text Mesh Pro- Server Query Protocol now defaults to the port offset (+10) used by Multiplay- Fix and from (thanks: carlself) removing hang when joining an 'old' server- Fix for some elements of menu sometimes becoming unresponsive- UNITY_DISABLE_AUTOMATIC_SYSTEM_BOOTSTRAP no longer set in project settings. This means ECS systems automatically starts and runs in edit mode (Unless [DisableAutoCreation] attribute is set, which it is for most of our game systems)- HitCollision no longer uses Unity collision system for queries against moving colliders. For lag compensation server needs to do queries using different historical data and moving Unity physics colliders multiple times per frame is very inefficient. Now queries are handled using custom collision primitives and burst jobs. The structure of the collider and history data is still WIP.- Unified how ECS components are serialized. Serialized components should now implement either IReplicatedComponent, IPredictedComponent or IInterpolatedComponent and will automatically be serialized appropriately (if attached to entity with replicatedentity component). IMPORTANT: It is currently also required to define a static methods CreateSerializerFactory that returns a serializer factory for the component type. This is something we are working on getting rid of.Packages/manifest.jsonCopy file name to clipboardExpand all lines: Packages/manifest.json+2-2Lines changed: 2 additions & 2 deletionsOriginal file line numberDiff line numberDiff line change@@ -4,8 +4,8 @@ "com.unity.analytics": "3.2.2", "com.unity.cinemachine": "2.1.13", "com.unity.collab-proxy": "1.2.15", "com.unity.entities": "0.0.12-preview.18", "com.unity.mathematics": "0.0.12-preview.18", "com.unity.entities": "0.0.12-preview.24", "com.unity.mathematics": "0.0.12-preview.21", "com.unity.package-manager-ui": "2.0.3", "com.unity.postprocessing": "2.1.2", "com.unity.purchasing": "2.0.3",ProjectSettings/EditorSettings.assetCopy file name to clipboardExpand all lines: ProjectSettings/EditorSettings.asset+4-2Lines changed: 4 additions & 2 deletionsOriginal file line numberDiff line numberDiff line change@@ -8,8 +8,10 @@ EditorSettings: m_SerializationMode: 2 m_LineEndingsForNewScripts: 1 m_DefaultBehaviorMode: 0 m_PrefabRegularEnvironment: {fileID: 102900000, guid: 84277064ea1afde4b88a70e6baca7177, type: 3} m_PrefabUIEnvironment: {fileID: 0} m_PrefabRegularEnvironment: {fileID: 102900000, guid: 84277064ea1afde4b88a70e6baca7177, type: 3} m_PrefabUIEnvironment: {fileID: 102900000, guid: d9f2588e02566034bbcddac485d9c291, type: 3} m_SpritePackerMode: 2 m_SpritePackerPaddingPower: 1 m_EtcTextureCompressorBehavior: 0ProjectSettings/ProjectSettings.assetCopy file name to clipboardExpand all lines: ProjectSettings/ProjectSettings.asset+6Lines changed: 6 additions & 0 deletionsOriginal file line numberDiff line numberDiff line change@@ -106,6 +106,11 @@ PlayerSettings: xboxOneDisableEsram: 0 xboxOnePresentImmediateThreshold: 0 switchQueueCommandMemory: 0 switchQueueControlMemory: 16384 switchQueueComputeMemory: 262144 switchNVNShaderPoolsGranularity: 33554432 switchNVNDefaultPoolsGranularity: 16777216 switchNVNOtherPoolsGranularity: 16777216 vulkanEnableSetSRGBWrite: 0 m_SupportedAspectRatios: 4:3: 1@@ -504,6 +509,7 @@ PlayerSettings: switchAllowsRuntimeAddOnContentInstall: 0 switchDataLossConfirmation: 0 switchUserAccountLockEnabled: 0 switchSystemResourceMemory: 16777216 switchSupportedNpadStyles: 3 switchNativeFsCacheSize: 32 switchIsHoldTypeHorizontal: 0ProjectSettings/ProjectVersion.txtCopy file name to clipboard+1-1Lines changed: 1 addition & 1 deletionOriginal file line numberDiff line numberDiff line change@@ -1 +1 @@m_EditorVersion: 2018.3.0f2m_EditorVersion: 2018.3.8f1README.mdCopy file name to clipboardExpand all lines: README.md+6-6Lines changed: 6 additions & 6 deletionsDisplay the source diffDisplay the rich diffOriginal file line numberDiff line numberDiff line change@@ -26,7 +26,7 @@ Unity become available in ECS-aware versions, we will migrate to them.Current status at a glance:Unity version: 2018.3 beta 12 Unity version: 2018.3.8f1Platforms : Windows (client and server) and Linux (server only)@@ -48,7 +48,8 @@ you most likely did not have LFS when you cloned.Once you have cloned the repository, you should installthe version of Unity that is listed above in the prerequisites section. Makesure you include windows standalone support in your installation.sure you include windows standalone support in your installation (and Linux supportif you want to build the Linux headless server).## Opening the project for the first time@@ -60,10 +61,9 @@ few clients to it.The first time you open the project you need patience! It takes a whileto import all the assets.> NOTE: Due to a bug in Unity 2018.3 beta, you have to takethe following steps right after the initial import:> 1. Search for t:model in the Project search field. Select them all, right click and reimport them.> 2. Search for Firstperson_Projection in the Project search field. Select the 4 shaders, right click and reimport them.> NOTE: Due to a bug in Unity 2018.3, you have to take the following step right after the initial import:> 1 Search for Firstperson_Projection in the Project search field. Select the 4 shaders, right click and reimport them.> 2 If you have script compile errors related to entities, you need to remove and re-install the entities package.>> One day soon we will remove this note and there will be cake.
0 commit commentsComments0 (0)CommentUnsubscribeYou're receiving notifications