A Unity ID allows you to buy and/or subscribe to Unity products and services, shop in the Asset Store and participate
in the Unity community.
Discussion in 'Assets and Asset Store' started by vis2k, May 1, 2020.
DOTSNET is 50% off during Unity's Best of Sale
1. I just started my project and just finished writing my network authenticator code using Mirror. If I were to use DOTSNET would it be easy to refactor the network authenticator code?
2. Does it work well on Unity 2019 LTS?
3. Is it more stable than Mirror?
1. NetworkAuthenticator is almost the same
2. 2020.1 is recommended, with exactly the right ECS packages
3. Do you have stability issues with Mirror? DOTSNET itself has over 90% test coverage. While it does not have that many features yet, the ones that it has should be very stable due to 90% of them being tested constantly. DOTSNET uses Unity's DOTS/ECS tech though. This one is not very stable. I reported ~12 bugs to Unity, I don't think any were fixed yet. In fact they removed the ECS packages from the Editor a few months ago.
Honestly if you don't absolutely need insane scale, then use Mirror & MonoBehaviour. MonoBehaviour is way more stable and 10x easier to work with.
ECS is 1000x faster (not an overstatement), but also 10x harder to work with and not stable.
The nanosecond ECS has something like feature parity with the Monobehaviour world, imma pick this up. I love your work.
Thanks for the honest and detailed reply! I bought DOTSNET to support your efforts during the sale. I guess I'll wait for Unity to make things more stable before using it for now. I only use LTS versions of Unity because I need a stable environment to work in to get everything to production.
That's definitely the sane thing to do. Unity LTS + MonoBehaviour is your biggest chance to release a multiplayer game at the moment.
DOTSNET isn't going away. As ECS evolves, so will DOTSNET. We have time.
How to select one of the existing clients as the server role after the server is offline
DOTSNET does not come with host migration, you would have to implement that yourself.
Or just host on a dedicated server so you avoid that problem. Won't be able to connect to most clients' computers anyway
Regarding Mirror is it ok to write code in ECS format and would I get a boost? I understand DOTSNET is actually designed for this from the bottom up but would I get a boost in Mirror if I wrote my code in the ECS way?
Mirror is 100% MonoBehaviour world. Not compatible with ECS.
If I want to get a game to production using DOTSNET what's the exact version of Unity I should be using (or that you recommend?)
2020.1.2 is current DOTSNET Unity version.
I am trying 2020.1.16 this morning actually. Should be safe.
Unity is so unstable. Like I've had things break even with the smallest version changes (and it was an LTS version) and had to revert back.
Why not just support the latest LTS version so you can concentrate on long term development so you only have to periodically update to the next LTS version and so on?
I would love to.
All my other assets are always on LTS, which is way less stressful.
ECS seems to early though. Unity doesn't updated the 2019.4 LTS Entity packages anymore as far as I know, so we need to be on bleeding edge probably until 2020 LTS
V1.21 pending review. Maintenance release to prepare for further features.
This might be a silly question vis2k... but how did you get so good at writing code? I dream of being as fluent as you are! I've been struggling the past few weekends to write a reliable system for applying unique Entity Id's to entities that pre-exist in a scene (Forge Networking Alloy)... and here you are pioneering this bad*** ECS networking code. It's an inspiration really
Thanks. Been writing code 80-100 hours / week for the last 15 years.
Still somewhat new to networking and ECS, so while the existing DOTSNET features are solid, it's definitely not in its final form yet
I do all of this for my MMO.
If you have a dream game, just do whatever it takes.
You get better at coding automatically, that's a side effect of pursuing your goal.
V1.22 pending review:
First, Thanks for this awesome asset.
I bought this asset and reading the manual.
I've developed my game using Monobehaviour environment and Photon Pun for multiplay.
But I want to change some game systems to DOTS, and I want to change multiplay code from Photon Pun to others too.
So I consider DOTSNET and Mirror for multiplay.
I've some questions about DOTSNET.
1. When I can use DOTSNET for the mobile platform?
2. Is DOTSNET or Mirror suitable for session-based action games like Brawl Stars?
I hope you reply to my question.
It runs where Unity runs. Just need to use the kcp transport instead of libuv transport.
I recommend using Mirror & MonoBehaviour unless you have no other choice but to use ECS.
ECS is hard to work with. Why bother going the hard way if you don't need insane scale for your game
Whoever plays or has ever played EVE knows that you need to keep an eye on your spark to stay on top. Isk allows us to survive all wars, clashes and sometimes skirmishes. The more Isks, the greater the chances of survival, and we all agree that in normal and virtual life we only want ... survival. Isk gives us such an opportunity. Isk gives us hope to continue playing !! Thanks to Isk, we can sleep well because even when the attack comes from a non-Isk, it will allow us to stand on our feet later.
One step after another
The first goal was to simply sync ECS monsters & players over the network somehow.
More advanced features will follow as time allows. Currently working on Bitpacking.
Thanks for reply.
I determined using Mirror for our multiplay game.
I have one more question.
I want to use a cloud server solution for service like Amazon GameLift.
When I make our game server using Mirror, then it can be integrated with Amazon GameLift for cloud service?
yes, you can host it anywhere. see mirror documentation
I'll try it.
Thanks, Really Thank you.
If I'm using gameObjects with Unity DOTS for pathfinding. (Basically ECS mixed with MonoBehaviour.) Should I be using Mirror or DOTSNET for multiplayer?
EDIT: Basically, if I'm running all my game logic code in DOTS, but everything else (visual stuff) is using standard Unity MonoBehaviours, which should I be using?
ECS is capable of that hybrid approach.
If it was me I'd do it 100% ecs or 100% monobehaviour.
Seems less stressful
It's just UI requires a TON of work at this point in time when going down the ECS path because there's nothing there yet. Also it's still nice to take advantage of the Jobs System and Burst Compiler even if visual elements are traditional MonoBehaviours for a pretty big boost in performance.
Sure, it won't be as fast as pure DOTS but it'll still be a lot faster than the traditional way.
What do you recommend for multiplayer when visual stuff are MonoBehaviours but logic is ECS, Mirror or DOTSNET (or do I need a completely different solution)?
Depends on what you mean with 'visual stuff'.
For UI it's fine to use MonoBehaviour. I do that for the DOTSNET examples too.
Like the players moving in the game being Monobehaviours. Basically anything the user can see on the screen.
Is it possible to create and use multiple game instances in DOTSNET like Mirror "Multiple Matches" example scene?
In theory yes.
ECS uses worlds, so you can have as many as you want.
I never tried it yet and DOTSNET still uses Bootstrap.ServerWorld/ClientWorld.
In other words, it's not built in yet but ECS itself makes it very easy.
Bitpacking coming to next version, based on the excellent article from Glenn Fiedler.
Comparison: 2015 Macbook Pro sending 50k monsters to 1 player.
Server & Client running in simultaneously in 2020.1 Unity Editor.
=> Before: 24 FPS, 10 MB/s bandwidth.
=> After: 63 FPS, 4.17 MB/s bandwidth.
Bandwidth impact is huge.
Transport load is heavily reduced, hence huge performance gain as well.
V1.23 pending review! Huge update!
Also added a Bitpacking chapter to the documentation:
V1.24 pending review! Please try the new kcp transport version in your project and let me know if it works for you!
The goal is for kcp to become the new default next.
Seeing two warnings with 2020.2.0a18.
Do I need to downgrade Unity or wait for a newer DOTSNET release?
Assets\Plugins\DOTSNET\Scripts\Authoring\NetworkEntityAuthoring.cs(135,45): warning CS0618: 'PrefabStage.prefabAssetPath' is obsolete: 'prefabAssetPath has been deprecated. Use assetPath instead.'
Assets\Plugins\DOTSNET\Scripts\ECS\Worlds\Bootstrap.cs(40,13): warning CS0618: 'ScriptBehaviourUpdateOrder.UpdatePlayerLoop(World, PlayerLoopSystem?)' is obsolete: 'Use AddWorldToPlayerLoop() instead. (RemovedAfter 2020-10-31)'
Hi, please use exactly the Unity version & ECS package versions that I recommend for DOTSNET. See asset store page. 2020.2 especially is very unstable, both for DOTSNET and Mirror.
V1.25 pending review:
"Requires ECS knowledge & exactly Unity 2020.1.16, Burst 1.4.3, Entities 0.16.0, Unity.Physics 0.5.1, HybridRenderer 0.10.0,!"
That's don't work with DOTSNET 1.25
"Assets\DOTSNET\Scripts\ECS\Worlds\ServerActiveSimulationSystemGroup.cs(33,52): error CS0103: The name 'm_systemsToUpdate' does not exist in the current context"
"Assets\DOTSNET\Scripts\ECS\Worlds\ClientConnectedSimulationSystemGroup.cs(33,52): error CS0103: The name 'm_systemsToUpdate' does not exist in the current context"
There is no need to change the versions* that install automatically with the package DOTSNET?
*(Unity 2020.1.16, Burst 1.3.2, Entities 0.14.0, Unity.Physics 0.4.1, HybridRenderer 0.8.0)
Please use exactly the Unity version + packages mentioned on the asset store page.
Unity changed m_systemsToUpdate recently.
This works 100%:
V1.26 pending review!
Would it be worth developing my game fully as an ECS DOTS singleplayer game while learning ECS, then adding DOTSNET after while keeping in mind the server/client structure with the singleplayer game? How hard would it be to add DOTSNET to an existing ECS game with some Monobehaviors on the "client" side (for UI and things?)
It would be hard.
Multiplayer games should be developed with multiplayer in mind from day one. Anything else is crazy imho.
I also recommend not using ECS unless you have no other choice (insane scale).
MonoBehaviour is way easier to work with. And you could use Mirror for networking, which is free.
I HAVE PROBLEM
TcpStream 2549191923520 error de lectura: -4077: libuv2k.Native.OperationException: ECONNRESET (ECONNRESET): ECONNRESET: conexión restablecida por par
UnityEngine.Debug: LogError (Objeto)
libuv2k.TcpStream: OnReadCallback (Byte , Int32) (en
First connect server and after clien and crach
Please try the kcp transport that comes with DOTSNET
Hello and thank you for your amazing asset.
Is it possible to update it to Unity 2021.1 to let DOTSNET work with Hybrid Renderer 0.11 ?
Currently updating it to 2020.3 LTS.
I recommend that version after the update.
Anything non LTS is usually way too unstable, especially for a game server.
Quick update, pending review. More to come