Search Unity

Unity NetCode 0.0.2-preview.1

Discussion in 'NetCode for ECS' started by timjohansson, Nov 29, 2019.

  1. timjohansson

    timjohansson

    Unity Technologies

    Joined:
    Jul 13, 2016
    Posts:
    473
    You could, but it is easier both to get it running and maintain it if you run a regular build as headless with "-batchmode - nographics" instead of making a custom build for it.
     
    pal_trefall likes this.
  2. Jawsarn

    Jawsarn

    Joined:
    Jan 12, 2017
    Posts:
    245
    I understand, disagree and think this setup is bad. I feel "Server Build" should be replaced with "Headless Mode" in build settings, which is more generic for builds. If your logic is to have us users to add defines manually to specify a Client build, what is the problem with us specifying a Server build with defines as well? By this only UNITY_EDITOR takes precedence if anything and everything is modular, (subjective more)logical and extensible.
     
    Jazok likes this.
  3. Wobbers

    Wobbers

    Joined:
    Dec 31, 2017
    Posts:
    55
    There seems to be a bug that the name of the gameobject is used when creating snapshot data, instead of what is defined in the Ghost Authoring Component.
    This makes all instances of the prefab require to have the same name in the hierarchy.
    This also happens when pressing the Generate Code button. It will mess up things if the object has spaces etc. in its name. Happens in 0.0.2 as well as 0.0.3.
    upload_2019-12-7_4-37-5.png
     
  4. Joachim_Ante

    Joachim_Ante

    Unity Technologies

    Joined:
    Mar 16, 2005
    Posts:
    5,203
    @mrbroshkin
    Can you provide some more info what is slow based on ProfilerWindow. This is definitely not what we are seeing ourselves...
     
  5. pocketpair

    pocketpair

    Joined:
    Jul 7, 2015
    Posts:
    72
    Is there any way to get current clients on server?
    Or should we count the connections when new client connects?
     
  6. PrisedRabbit

    PrisedRabbit

    Joined:
    Aug 14, 2012
    Posts:
    63
    The problem is on Video RAM usage. I have 512mb of VRAM, while netcode sample gets 0.9Gb in editor. But why?
     
  7. optimise

    optimise

    Joined:
    Jan 22, 2014
    Posts:
    2,129
    Hi @timjohansson. I see matchmaking package has been removed from repo. Is there any plan return and update the package again?
     
  8. timjohansson

    timjohansson

    Unity Technologies

    Joined:
    Jul 13, 2016
    Posts:
    473
    The snapshot data is based on the name of the prefab, you can have different names for the instances. Spaces not being supported is a bug.
    What you enter in the authoring component is just paths to files, not names of the structs.
    When generating ghost code you should always open the prefab or you will get unpredictable results. We'll work on making that more clear and less error-prone.
    I've files bugs for these issues, thanks for letting us know
     
  9. timjohansson

    timjohansson

    Unity Technologies

    Joined:
    Jul 13, 2016
    Posts:
    473
    The connections are entities, so the easiest way is to create an EntityQuery for everything with NetworkStreamConnection + not NetworkStreamDisconnected and count how many entities it matches.
     
  10. timjohansson

    timjohansson

    Unity Technologies

    Joined:
    Jul 13, 2016
    Posts:
    473
    I investigated a bit today, it is caused by the line rendering system for asteroids which is always active and allocates a crazy-large compute buffer. If you open Samples/Asteroids/Client/Systems/Rendering/LineRenderSystem.cs and change
    const int MaxLines to 10*1024 or something you should get more reasonable vram usage.
     
    PrisedRabbit and dzamani like this.
  11. timjohansson

    timjohansson

    Unity Technologies

    Joined:
    Jul 13, 2016
    Posts:
    473
    Matchmaking and SQP are developed by a different team so I don't know all the details about the status of them, but we have no short term plans of adding them back to the multiplayer repo.
    https://forum.unity.com/forums/connected-games.26/ is a good place to ask if you want to get accurate information about status and plans for samples for them.
     
    optimise likes this.
  12. Wobbers

    Wobbers

    Joined:
    Dec 31, 2017
    Posts:
    55
    Just to make sure I understand that correctly:
    Right now i have an NPC prefab which i generate authoring stuff on, and that authoring is added to my ghost collection. Then i create a gameobject instance of the prefab, naming it TestBoi and changing some values (render mesh etc). Right now this generates the error as shown above when pressing play. If i rename the instance back to NPC, it works, but the changed values dont get applied (mesh is taken from prefab, not from instance after conversion).

    The intended behaviour would be the GO with name TestBoi is converted based on the NPCAuthoring as defined on the prefab (with a different name) and then getting its modified custom render mesh data etc. applied, right?
     
  13. Enzi

    Enzi

    Joined:
    Jan 28, 2013
    Posts:
    962
    This has caused quite a lot confusion for some.
    On that occasian I want to say, I'd much prefer the sample doesn't have stuff like this and sticks to conventional Unity rendering.
    For this sample I expect a branch with pure ECS and one with hybrid GameObjects.
     
    dispatch_starlost likes this.
  14. dzamani

    dzamani

    Joined:
    Feb 25, 2014
    Posts:
    122
    It's called "Server build" in the UI but it's actually a BuildOption named "EnableHeadlessMode" if you want to set it by script.
    While the defines solution may or may not be something you like, all you have to do is to override ICustomBootstrap and create your own version. The only downside is that you lose the editor window that allows you to run multiple clients and other things.
    You could even copy paste the whole ClientServerBootstrap and change the parts with the defines.

    Talking about this, I feel like the NetCube sample is missing the DisconnectSystem (could use the same as the one in the asteroids sample).

    I have 4 things you all should be careful about if you use latest version of every packages:
    • SRPBatcher seems to fail (latest URP) and put everything at (0,0,0) with a scale of (1,1,1).
    • Physics package version 0.2.5 has an issue preventing us from using it but a fix is on its way (check the DOTS physics forum about BlobAssetStore).
    • Since the build manager don't have the correct build steps to create a server and client, you can create your own pipeline with a custom step that will handle adding the server option (check the attached file for a simple example but be aware that I removed livelinking for now). Don't forget to add UNITY_CLIENT define in your player settings.
    • Last but not least: things are running in the update loop so don't forget to add a targetFramerate to your clients because, while it may work in the editor, it will run too fast in a build may break the networking (like input commands for example).

    Also I have a question for you @timjohansson, I don't think there will be a way to selectively send the data to a client based on some condition (like they are too far, don't send all the world data to them, only what's around). We will have to do that ourselves from what I've heard. What would you think is better for the server:
    • Having multiple worlds and duplicating all the systems ? Meaning that jobs may run on less entities.
    • Find a way to put the netcode serialization / deserialization in specific worlds but things like physics in the same world (don't even know if it's possible with the netcode architecture, don't think so).
    • Find a way to create subworlds that will not be sent to clients based on some conditions (haven't checked yet what I could use to prevent sending the data to a specific connection, may need to override some systems of the netcode package which I don't want to for obvious reasons).

    Thanks for helping!
     

    Attached Files:

    Last edited: Dec 10, 2019
  15. PrisedRabbit

    PrisedRabbit

    Joined:
    Aug 14, 2012
    Posts:
    63
    That helped. Thank you!
     
  16. Jawsarn

    Jawsarn

    Joined:
    Jan 12, 2017
    Posts:
    245
    Yes, that it should be renamed to what it actually does is sort of what I was referring to. And I've already overriden and extended the bootstrap with my own definitions and worlds, and also created an extended multiplayer window for enabling my worlds as well. My post was merely feedback on my experience doing just that, which would reduce the amount of work someone would have to put in to extend the code. :)
     
    dzamani likes this.
  17. timjohansson

    timjohansson

    Unity Technologies

    Joined:
    Jul 13, 2016
    Posts:
    473
    Yes, that is the intended behavior, I'll file a bug on that right away, thanks for clarifying
     
    Wobbers likes this.
  18. timjohansson

    timjohansson

    Unity Technologies

    Joined:
    Jul 13, 2016
    Posts:
    473
    We do not have a PVS (potential visibility set) system in place yet, but we do have distance based importance scaling which mostly solves the bandwidth aspect of it (but no the anit-cheat aspect). It solves it by sending things close by more frequently than things far away rather than not sending things far away.
    My recommendation would be to start with distance based scaling and see how far it takes you. When we add a PVS solution it will probably be based on segmenting the entities into separate chunks and run the visibility logic per chunk - I guess that is closest to the subworlds you mention.

    Distance based importance is used in asteroids and we can scale up to >20.000 active entities with it as long as only a subset of those entities are close by (tested with 20.000 asteroids and 8k x 8k map). I expect it will continue scaling far beyond that but never tried.

    The way distance based importance works is that it first segments the entities into different chunks based on a user defined grid. No entities will be in the same chunk unless they are in the same grid cell. Once we have that segmentation we run a user defined importance scaling method per chunk, where the method knows the grid position of the chunk and the grid position of the camera, and it can scale importance based on distance in grid cells.

    The code to setup the grid segmentation is in https://github.com/Unity-Technologi...eproject/Assets/Samples/Asteroids/GameMain.cs - see the code doing something like entityManager.AddComponentData(grid, new GhostDistanceImportance

    We also add a GhostConnectionPosition to all connections when going in-game and there is a system to update the position - see https://github.com/Unity-Technologi...ver/Systems/UpdateConnectionPositionSystem.cs
     
    zhepama and dzamani like this.
  19. dzamani

    dzamani

    Joined:
    Feb 25, 2014
    Posts:
    122
    My usecase is for a server simulating multiple small matches (few players, lots of matches) and since there is some Physics, putting them too far from the origin is not a good idea (IMO) but I will do what you said and look at a basic distance based importance solution.

    Do you think it's possible (at least try) to make my own PVS without modifying the netcode package ? Or maybe netcode will have its own version in less than 3 months ? I'm just trying to estimate the time I should allocate to this feature.
     
  20. timjohansson

    timjohansson

    Unity Technologies

    Joined:
    Jul 13, 2016
    Posts:
    473
    The netcode is currently not setup to not send data for entities, so I think it would be hard to do a proper PVS without modifying it. The two approaches I can think off the top of my head would be a custom importance scaling function for the distance based importance - but it would still send data if there is available bandwidth - or modifications to the generated serialization code so it does not write any data - but it would still send the ghost ids in that case, just no data for them.

    For the specific use-case you describe - depending on what problem you are focusing on solving - it sound like having multiple separate server worlds in the same process might be a better solution. That way you have individual servers for each match - but they share resources to reduce load.
     
  21. Flipps

    Flipps

    Joined:
    Jul 30, 2019
    Posts:
    51
    Two suggestions/questions about the customization of spawn/despawn client entities:

    1. The spawn Process on client side can easily by adjusted by creating a partial class of the auto generated GhostSpawnSystem. But all virtual methods (i.e. UpdateNewInterpolatedEntities, MarkPredictedGhosts) are called before the first snapshot data is applied. In case of a hybrid approach where i want to spawn a GameObject at the entity position, i need a virtual method to override after the snapshot data is applied. Otherwise the GameObject is spawned at (0,0,0). Is there a chance to also add a virtual method after the snapshot update?

    2. Are there any Plans to customize the GhostDespawnSystem, too? This would be nice to fire a dying animation or to destroy the synced GameObject in a hybrid scenario.
     
    dzamani likes this.
  22. Enzi

    Enzi

    Joined:
    Jan 28, 2013
    Posts:
    962
    I'd like to propose some changes to the netcode:
    Right now, there are 3 types of spawn and they are handled like this: EntityManager.Instantiate(m_predictedPrefab, predictedEntities);
    It's pretty much hardcoded to ECS only so I added 2 calls:
    Code (CSharp):
    1. protected virtual Entity SpawnGhost(EntityManager entityManager)
    2. protected virtual Entity SpawnPredicted(EntityManager entityManager)
    and replaced those instantiates with:
    Code (CSharp):
    1. for (int i = 0; i < m_CurrentPredictedSpawnList.Length; i++)
    2.                     predictedEntities[i] = SpawnPredicted(EntityManager);
    In the 2 new calls, the default model of the netcode is implemented. With overriding these 2 functions in a partial class from the GhostSpawnSystem this gives us devs a chance to write additonal pre/post processing code or, like in my case, write your own hybrid gameobjects spawn code.
    It at least solves the hybrid gameobject problem some of us are having without much changes in the netcode.

    I'd also like to know how spawning of different objects with the same snapshot archetype is handled in the 3rd person multiplayer demo. Tim suggested a component that is synced and has data for the representation to defer the loading so I guess you went that way. What I don't understand about it, why is that data part of the snapshot, the data that is only relevant on initialization.
    A suggestion would be to have data we can mark, that is not in every snapshot but only when some call/flag/component is present. It would be always present on first inits but on subsequent sends this data would be empty till a server tick triggers any changes. Kind of like having full and partial snapshots.
    I don't have too much insight in the inner netcode so sorry when this is already happening. The snapshots are still a little mysterious to me with memcpys and all. :)

    And as @Flipps suggsted, having the latest snapshot available would be a good thing to have but I see the problem with it. The snapshot can't be applied to an entity that doesn't exist yet. I'm interested if there's a way we could still access that data from the spawn process another way..
     
    dzamani and Flipps like this.
  23. dzamani

    dzamani

    Joined:
    Feb 25, 2014
    Posts:
    122
    This would help my current new issue: physics joints being entities created with conversion the workflow don't quite work with the ghosts, having this would make things a little better even if it won't completely solve the issue and isn't must have.
     
  24. clintaki

    clintaki

    Joined:
    May 13, 2019
    Posts:
    14
    Congratulations on this release. Enjoy the fun of production hardening... It's the good kind of pain that only makes you stronger. :)
     
  25. timjohansson

    timjohansson

    Unity Technologies

    Joined:
    Jul 13, 2016
    Posts:
    473
    What problem are you trying to solve that is not solvable with the UpdateNew*Entities calls? The UpdateNew methods are called after the ghost entities are created but before any state is applied to them, so as long as you wait for the input dep (preferably though scheduling a job) you can get access to the snapshot data from the entity and apply modifications / spawn additional objects based on that. You can't change how the entities are spawned, but that would add significant complexity, do you have a use-case for doing that? Individual instantiation of entities is much slower than batch instantiation so this change would also come with a performance hit.

    The serialization does delta compression per field. In addition to that it creates a mask for which fields are changed and fields fields which did not change are not sent.
    That brings the cost down to 1 bit per unchanged field (for sending the change mask).
    In addition to that the mask of which fields changed is also delta compressed so assuming the set of fields which change is mostly static the cost of static data in a snapshot is close to zero.
    It would be possible to being it down even further by making sure that fields which switch between changing and not changing frequently are stored in the lower bits of the mask - but we have not added that yet.
     
    eizenhorn, dzamani and pal_trefall like this.
  26. timjohansson

    timjohansson

    Unity Technologies

    Joined:
    Jul 13, 2016
    Posts:
    473
    The snapshots are applied from jobs so there is no way we can just call a method on the main thread for that.
    You should not really need that though, in the Updatenew calls you can get the snapshot data which is going to be applied and use that. Pseudo code which probably does not compile:
    Code (CSharp):
    1. inputDep.Complete();
    2. var go = new GameObject();
    3. snapshot = EntityManager.GetBuffer<MySnapshotData>(entity[i]);
    4. MySnapshotData snapshotData;
    5. snapshot.GetDataAtTick(spawnTick, 1, out snapshotData);
    6. go.transform.position = snapshotData.getPosition();
    You should use a SystemStateComponent and a reactive system for this. Add the system state component on spawn, then have a system which runs for everything having the SystemStateComponent but not the SnapshotData and do your despawn code there.
     
    dzamani likes this.
  27. Enzi

    Enzi

    Joined:
    Jan 28, 2013
    Posts:
    962
    Thank you for taking the time to answer Tim!
    I think your answer solves my questions. I'll move over to UpdateNewPredictedEntities, seems more reasonable.

    Good to hear the compression kicks in! That's really nice this is already working.
     
  28. Jawsarn

    Jawsarn

    Joined:
    Jan 12, 2017
    Posts:
    245
    I like the new RPC setup with the RpcCommandRequestSystem where you only have to add the RPCData and requestComponent, and it destroys itself. What would be nice however would be to add the EndSimulationCommandBufferSystem to RpcExecutor.Parameters as well. In many of my cases (and I think for other people as well) RPCs are one frame events and should be destroyed if nothing picked it up (in case of disconnects etc).

    I guess one could add a second component and system to add the destroy to the end of frame instead, but might want to be the default behavior?

    Also: Return the Entity created from the "ExecuteCreateRequestComponent" so we can add additional components^^ Else we're back at boiler plate code :p
     
    pal_trefall likes this.
  29. pocketpair

    pocketpair

    Joined:
    Jul 7, 2015
    Posts:
    72
    Hi, I'd like to stop server in NetCube.
    I called network.driver.dispose() in "OnUpdate" game.cs, however there are some errors that other entities or components still may access network.driver.
    Is there any official way to stop server in netcode package or NetCube sample?
     
  30. NEW_00_0NE

    NEW_00_0NE

    Joined:
    Nov 14, 2015
    Posts:
    3
    I am having some issues replicating the NetCube sample in URP/HDRP. Everything seems to work in the editor a cube will spawn and can be moved around. But once I build (and run the editor as the server), a cube will spawn on the built client (and a log message will output in editor that a client has connected) but the client cube will spawn at 0,0,0 and cannot be moved around. I am not sure if I have been doing something wrong or if something isn't functioning properly. I do know that if I take the same code and copy/paste it into a normal 3D project (that is not using any Render Pipeline Asset), build, and run (same as before), the cube will spawn above the plane and is able to be moved around. Any help is appreciated.

    I am using 2019.3.0f1. But I have used 2019.3.0b11, 2019.3.0b12, 2020.1.0a14, and 2020.1.0a15 (URP/HRDP) with the same results.

    EDIT: I am also using Unity NetCode 0.0.3-preview.2
     

    Attached Files:

  31. dzamani

    dzamani

    Joined:
    Feb 25, 2014
    Posts:
    122
    You can't anymore for HDRP but on URP you can still disable SRPBatcher, that will fix your issue.
     
    NEW_00_0NE likes this.
  32. NEW_00_0NE

    NEW_00_0NE

    Joined:
    Nov 14, 2015
    Posts:
    3
    Thank you so much!! I can confirm this fixes the issue. Could you explain to me what this does and why this has an effect?
     
  33. dzamani

    dzamani

    Joined:
    Feb 25, 2014
    Posts:
    122
    NEW_00_0NE likes this.
  34. dedmeades1

    dedmeades1

    Joined:
    Jun 18, 2019
    Posts:
    1
    I had two issues this morning following the code.
    The main one is that when it generates the ghost collection components list it uses the project name.
    The problem was my project has a space I it's name and so it tryed to created structs with a space in the name and... Well it didn't like that! Ha

    edit: i found the PrefixName field which defaulted to the project name, and was the problem. removed the space and all good! - but likely worth doing a replace on invalid chars, or throwing an error on the generate.
     
    Last edited: Dec 14, 2019
  35. T-Zee

    T-Zee

    Joined:
    Oct 23, 2017
    Posts:
    31
    i think you are looking for second paragraph here
    https://docs.unity3d.com/Packages/com.unity.netcode@0.0/manual/network-connection.html
     
  36. pocketpair

    pocketpair

    Joined:
    Jul 7, 2015
    Posts:
    72
    @TZ-
    No, this is for client, not "server".
    I'd like to stop server in Netcube.
     
  37. Flipps

    Flipps

    Joined:
    Jul 30, 2019
    Posts:
    51
    Tried both your suggested solutions and both work like a charm! Thanks for the great feedback!

    Have never used the SystemStateComponentData before but noticed that there is a "CleanupEntity" Tag added to the entity when the Entity is destroyed (and SystemStateComponents attached).

    upload_2019-12-14_16-41-18.png

    I thought it would be really nice to run systems on With<CleanupEntity> rather than to check for None<SnapshotData> but CleanupEntity seems not be public and can't be accessed.
     
  38. Husain136

    Husain136

    Joined:
    Sep 13, 2015
    Posts:
    15
    @timjohansson Please, some ETA on the DOTS Sample Project :(...
     
    Birgere likes this.
  39. Guedez

    Guedez

    Joined:
    Jun 1, 2012
    Posts:
    827
    Just started on the project, still attempting to replicate the red cube demo in the video
    If your project name have spaces, like "Untituled DOTS MMO", you get generated classes like "EnableUnity Untituled DOTS MMOGhostReceiveSystemComponent" which causes tons of compilations errors. For now I will remove white spaces from my project name

    Edit: I completely missed the Name Prefix field on the GhostCollectionAuthoringComponent
     
    Last edited: Dec 16, 2019
  40. pocketpair

    pocketpair

    Joined:
    Jul 7, 2015
    Posts:
    72
  41. timjohansson

    timjohansson

    Unity Technologies

    Joined:
    Jul 13, 2016
    Posts:
    473
    Since the RPC systems execute inside the simulation group both BeforeSimulation and AfterSimulation will happen between the current simulation tick and next simulation tick. After will happen earlier than Before in this specific case since we just passed Before. Which one of them you use doesn't really matter unless you process the events outside simulation. If you just want to clean up old RPCs it is probably easier to just delete all of them in the InitializationSystemGroup - but that will not delete between fixed steps if you are using fixed time-step. What problem do you want to solve with having both command buffers?

    Seems like a good idea, I'll add that
     
  42. timjohansson

    timjohansson

    Unity Technologies

    Joined:
    Jul 13, 2016
    Posts:
    473
    The way to stop a server would be to destroy the world, but I have not tried it lately so not sure how reliable it is.

    Depending on what you want to do it might be better to just not start the server through. If you override the ClientServerBootstrap you can disable automatic world creation and create the worlds you need on demand.
     
  43. Husain136

    Husain136

    Joined:
    Sep 13, 2015
    Posts:
    15
    @timjohansson It's released! So now you can point me at the code behind lag compensation?
     
  44. timjohansson

    timjohansson

    Unity Technologies

    Joined:
    Jul 13, 2016
    Posts:
    473
    Sure, the backup of physics world state for the last 16 ticks is handled by PhysicsWorldHistory.cs - https://github.com/Unity-Technologi...le.Game/PhysicsHistory/PhysicsWorldHistory.cs .
    When checking for hits in https://github.com/Unity-Technologi...aracter/Scripts/Abilities/AbilityAutoRifle.cs (seach for collisionHistoryBuffer) we get the physics state from the correct frame and perform raycasts against that.
    Right now we are manually sending the clients "renderTick" to the server so the server know which tick to raycast against, that part will probably be the first part we move into the netcode package.
     
  45. Husain136

    Husain136

    Joined:
    Sep 13, 2015
    Posts:
    15
    I was taking a look at the DOTSSample and I'm not going to lie, It has become more complex than the FPSSample.
    It is seems to be more modular than before. But everything just seems too much spread out.
    Also as ECS is evolving, I'ts even taking me longer to understand how the code works and what it actually does.

    Also the project should use URP instead of HDRP, as it is just a sample and to understand the FPS NetCode architecture also because I'm having long build times because of those HDRP Shaders, 13.50 min~
     
  46. Jawsarn

    Jawsarn

    Joined:
    Jan 12, 2017
    Posts:
    245
    Ah, very true. One would need the EndSimulationCommandBuffer for the next frame, which I think isn't currently possible.
     
  47. Guedez

    Guedez

    Joined:
    Jun 1, 2012
    Posts:
    827
    Why are the GhostSendSystem and BuildPhysicsWorld so exceedingly slow (These seem to be the biggest offenders on server/client side respectively, but it's hard to pinpoint exactly)? On a mostly empty project (DotsCube sample), one server and one client uses a 16ms per cycle
    Setting for 4 clients and 32 sends it up to 132ms, even though it's exceedingly simple to have 40+ entities actually doing things on my other projects.

    It is just some upfront cost, and it will hardly scale costlier as I make the game world more complex, or there is something wrong with my project? I understand that the project is simulating 36 client machines and a server, so I worry little about the 110ms cost of running the clients, but it's a huge issue if the server slows to a crawl just for having 36 people connected to it doing nothing at all
     
  48. dwatt-hollowworldgames

    dwatt-hollowworldgames

    Joined:
    Apr 26, 2019
    Posts:
    104
    Unexpected exception Burst.Options.OptionException: Unexpected arguments: `--is-for-function-pointer --managed-function-pointer=0x000001CFD8544860`
    at Burst.Compiler.IL.Jit.JitCompilerService.Compile (Burst.Compiler.IL.Jit.JitCompilerService+CompileJob job) [0x0012a] in <3179d4839c86430ca331f2949f40ede5>:0

    While compiling job: Unity.NetCode.RpcSetNetworkId, Unity.NetCode, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::InvokeExecute(Unity.NetCode.RpcExecutor+Parameters&, Unity.NetCode, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null)

    Getting this error along with a few dozen not disposed errors after installing preview 0.0.4 and burst 1.20 preview 11.

    Is there a valid burst and net combo that doesn't throw compile errors?
     
  49. optimise

    optimise

    Joined:
    Jan 22, 2014
    Posts:
    2,129
    @timjohansson Any plan to always keep updating this Unity NetCode package to sync with latest Entities package? Currently latest Unity NetCode 0.0.4 still using older Entities 0.3.0-preview.4 package.
     
  50. Jawsarn

    Jawsarn

    Joined:
    Jan 12, 2017
    Posts:
    245
    I'm running Burst 1.2.0, Collection 0.5.0, Entities 0.5.0, Jobs 0.2.3, NetCode 0.0.4 without errors in editor, or are you talking about building player?