Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.

Unity Multiplayer What are the pros and cons of available network solutions/assets

Discussion in 'Multiplayer' started by Serinx, Jan 7, 2019.

  1. giusti

    giusti

    Joined:
    Sep 15, 2019
    Posts:
    5
    What is your take on spatialOS? I am trying to find a good multiplayer solution and it seems to have the best tutorials on youtube.
     
  2. Colin_MacLeod

    Colin_MacLeod

    Joined:
    Feb 11, 2014
    Posts:
    177
    I like it a lot, but was put off by the cost
     
  3. youtpout

    youtpout

    Joined:
    Jun 14, 2015
    Posts:
    2
    Hello,
    anybody try websocket solution like signalr, i begin my prototype with rest api and I try to find the better solution for my multiplayer game.
    Websocket seems to be less performant than socket but by how many ?
     
  4. veermalik

    veermalik

    Joined:
    Nov 20, 2019
    Posts:
    2
    But in photon when we try to access different scene object by different players by transfer ownership it's not possible I think so a open world game like GTA functionality can't be achieve in photon
     
  5. DJ_Design

    DJ_Design

    Joined:
    Mar 14, 2013
    Posts:
    122
    I've heard some negativity regarding how they handle licensing / growth and such, seems you'd be at their mercy if things were to pick up and you left what we'll call the "educational" player tier.. Wouldn't build on such an untested early bird but that's just me..
    Photon seems much more reliable, and yeah it's cloud so it's expensive but for the sake of playing devil's advocate, I think a lot of new developers underestimate the energy they will have to dedicate to running the kind of structure photon does to host players seamlessly..Regarding tutorials they've got plenty! IMO what they offer is tested and I would sooner hash out the costs than pretend I'm some kind of network buff mad enough to enjoy juggling all aspects at once, I'm just here to make a game.. which is enough of a challenge for me lol. </endrant>
     
    MarkusMeyer, Joe-Censored and TwoTen like this.
  6. zaekona

    zaekona

    Joined:
    Jan 17, 2020
    Posts:
    14
    LukeDawn, Zurra and Joe-Censored like this.
  7. markoal

    markoal

    Joined:
    Aug 31, 2015
    Posts:
    28
    Hi everyone!
    I have a quick question, I have some experience with UNET, and unity LLAPI (the one that was used in the 2017 version). However things are changed quickly, LLAPI is replaced, UNET deprecated, Connected Games are here, and I'm not sure what should I use now with the new version of Unity (2019).

    The game has a similar concept as Gang Beasts, so my needs are:
    • Peer to peer / server-client: whatever is cheaper and easier, there will be only up to a max of 8 players in the match, and cheat detection is not needed
    • Matchmaking: players should be able to find other players to play with, however it's not primary feature, MP will be mostly used by inviting a friend
    • The game doesn't have any shooting, it uses some physics, where players move around in the small area (deathmatch), so the only problem is a good interpolation
    What do you guys suggest?
     
    Iron-Warrior, jcbadboy and Chefty like this.
  8. Iron-Warrior

    Iron-Warrior

    Joined:
    Nov 3, 2009
    Posts:
    835
    Hey'all, looking to pick a networking package for my asymmetrical VR/PC game Davigo, wondering if anyone had any input. I don't need a ton of bells and whistles—things like anti-cheat, large player counts, etc are pretty unnecessary. My requirements are:
    • Can handle a decent amount of rigidbodies (ideally has delta compression).
    • Works well with 1-4 players.
    • Source available.
    Probably just begin with the VR player always being the host, since they would be most sensitive to latency. Currently looking at PUN and Zapnet. I really like Zapnet's approach (being minimal and programmer friendly) and wondered if anyone had any direct experience with it. Downsides are how extremely new it is, and lack of open source prevents community fixes.

    Something I'd really like would be a package I can loosely couple to my project using something like Facade pattern, which I'd expect I could do with Zapnet (things like Mirror/HLAPI are pretty invasive).
     
  9. blockimperium

    blockimperium

    Joined:
    Jan 21, 2008
    Posts:
    452
    Take a look at MLAPI. It seems to be pretty lean with respect to integration. Not as certain about its long term stability as it seems to be a one-man operation, but for a quick game that you'll be done with in 12 months or so - it's a solid operation.
     
    StuwuStudio and TwoTen like this.
  10. hippocoder

    hippocoder

    Digital Ape Moderator

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    Any suggestions for me for a brain dead cheap way to get 2 maybe 4 players going? I need twitch response times and they need to sync physics well. I'm in uncharted territory and asking plain questions because info goes stale, so I'm hoping for some suggestions.

    Obviously performance + ease of use is the most important (it's VR) followed by the fact it must work on consoles so no un-approved dlls or libraries due to restrictions in place. That kinda limits the options, I'll bet.

    I can't really afford anything server hosting wise so I dunno if I can afford Photon.

    Game wants to be VR + physics, up to 4 players.

    Thanks for any enlightenment, and I've an open mind.
     
    laurentlavigne and TheWarper like this.
  11. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,299
    I don't want to start another 'which is best' discussion. But here is a VR game called Population: ONE


    They use Mirror :)
     
    blockimperium, hippocoder and mgear like this.
  12. hippocoder

    hippocoder

    Digital Ape Moderator

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    Do you use any dlls? If you do it won't be possible to deploy for PSVR without some clout, approval and so forth (it's fine if it's all source).
     
  13. MrG

    MrG

    Joined:
    Oct 6, 2012
    Posts:
    355
    Mirror is OSS and has full source in the Asset Store release.
     
  14. Wattosan

    Wattosan

    Joined:
    Mar 22, 2013
    Posts:
    442
    Do you know if they are using TCP or UDP as their transport protocol?
     
    Jes28 likes this.
  15. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,299
    UDP via ENET (our Ignorance transport)
     
    Wattosan likes this.
  16. blockimperium

    blockimperium

    Joined:
    Jan 21, 2008
    Posts:
    452
    At this point the only two options that I consider viable in the near term are MLAPI and Mirror. One of the things that I look for is strong support which I tracked on how many tutorials and users I could find. On that Mirror was a clear winner. When I looked into the technicals of the two, MLAPI was a lighter weight integration that I was more able to bend into an API that *I* wanted. Mirror relies a lot on the way UNet did things, and those things weren't always "sensical" - but just like food, some things are a matter of 'taste'.

    Would STRONGLY recommend building a facade over either of the network APIs and the server code and then baking them off. This will also give you an option if your project "goes long" and Unity's Netcode networking becomes something you really want to play around with. Right now it's a mess of confusion for me so I'm going to wait until they really detail how it works in a "non-demo" way. I don't want to have to tear down a whole game to understand your networking stack Unity.
     
    BinaryByron and mischa2k like this.
  17. Jimaniki

    Jimaniki

    Joined:
    Nov 9, 2017
    Posts:
    15
    Hello,
    i develop a game with fast balls bounce on another fast objects in movement (the term is : "Non-Deterministic" if i understood), like a Pong for explain simply but its not that at all..but same situation but very fast.
    Then i need to know which Networking solutions presented here you advice to me for my gameplay problem ?
    Thanks you
     
  18. altair2020

    altair2020

    Joined:
    Mar 6, 2011
    Posts:
    48
    Hey , i see no-one mentioned lidgren, has that fell to the wayside as a network option to use?
     
    Jes28 likes this.
  19. TwoTen

    TwoTen

    Unity Technologies

    Joined:
    May 25, 2016
    Posts:
    1,168
    Lidgren has some major issues like droppes packets, some security problems that I have found in my audits etc. You can check out my project Ruffles if you want something similar.
     
  20. SanjayBhambhu

    SanjayBhambhu

    Joined:
    Aug 22, 2012
    Posts:
    13
    Hi all,
    I read all the messages on this thread, and I'm still confused. I would like to clearly ask something that might help someone like me lurking this thread in the future.
    Previously I used Google Play Services' free Realtime Multiplayer, which, as far as a free product goes, was excellent, as my game was a free side-project, that had around 1000 CCUs. But now they've deprecated it, and working with Unity to bring the multiplayer that nobody knows anything about. My query is simple:

    1) Which one would be the most cost effective if we are talking 1000 CCUs (number of people concurrently playing online) for fast paced games like shooters.

    2) Which one would be the most cost effective one for 1000 CCUs in case of slow/turn-based games.

    Any opinions, it would be a huge help.
    Thanks
     
  21. R1PFake

    R1PFake

    Joined:
    Aug 7, 2015
    Posts:
    507
    Does anyone have experience with the (new?) Epic Online Services? It has a C# SDK, is free and is supposed to work crossplattform pc/consoles/mobile (mobile is not ready yet, but should be out "soon").

    And they allow you to use it with any game engine not just UE, they even have a "example" which shows how to use it with Unity.

    I didn't have a chance to play with it yet, but it sounds too good to be free. The only "downside" is that the player needs an epic account (which can also be considered a pro, because you don't have to worry about account handling, account security etc, because the SDK handles all these things for you)
     
  22. cryptoriver

    cryptoriver

    Joined:
    Mar 18, 2020
    Posts:
    1
    I didn't even know this existed, thanks I'm going to start looking at it now. Let me know if you find anything out from your end. Feel free to PM too. I will reciprocate :)

    PS: but srsly who on this earth doesnt have an Epic account? Fortnite just boasted 350 million registered users, the Epic store pretty much just crashed with people signing up and downloading GTA-V for free...

    PPS: It also because its federated login system with every major IDP: `Enable players to sign in with any supported identity provider including Epic, PlayStation, Xbox, Nintendo, Facebook, and Google.`

    Seems like a big win! Let's just see how it runs under the hood of a simple game I've constructed

    (Edited) Notes:
    - so your game doesn’t need to be on the Epic Games Store or use Epic Games accounts. Use your own identity provider via OpenID (OAuthv1)
     
    Last edited: May 21, 2020
    laurentlavigne likes this.
  23. gputhread

    gputhread

    Joined:
    Dec 7, 2018
    Posts:
    35
    What about Google Firebase?
     
  24. voody2506

    voody2506

    Joined:
    Jun 21, 2018
    Posts:
    15
    Firebase real-time database is not P2P service. It works on https and has a lot of limitations on write and read operations. You can not scale your server, you can not choose multi-regional servers. Not recommended
     
  25. g_a_p

    g_a_p

    Joined:
    Mar 16, 2015
    Posts:
    275
    We just updated the linked excel sheet with SmartFoxServer 2X details.
     
    Black_Demon and Wattosan like this.
  26. jjrrnn

    jjrrnn

    Joined:
    Aug 8, 2015
    Posts:
    14
    So what is the status of the new Unity multiplayer now, whatever name it is called?

    Cheers
     
    Fattie likes this.
  27. duolanda

    duolanda

    Joined:
    Apr 21, 2020
    Posts:
    1
    Same here! I wanna to develop game by Unity in-build solotion,but UNet is Deprecated and the official document not write what the New Unity Networking is.
    I'm kind of confused.
     
    Fattie likes this.
  28. Joe-Censored

    Joe-Censored

    Joined:
    Mar 26, 2013
    Posts:
    11,824
    The status is in the last 2 years they have an alpha out, an FPS demo as well, but the majority of the higher level functionality and documentation is not yet implemented. It appears Unity is not making this a priority, as 2 years is plenty of time for a networking library. I'd use an alternative solution for the time being. (They probably aren't in a hurry because you don't actually need Unity to provide networking, unlike features like the rendering pipeline that you can't really get from someone else)
     
  29. laurentlavigne

    laurentlavigne

    Joined:
    Aug 16, 2012
    Posts:
    5,920
    So a switch game can use epic network?
    How did your testing go?
     
  30. laurentlavigne

    laurentlavigne

    Joined:
    Aug 16, 2012
    Posts:
    5,920
    You made ruffles, how do you use playfab concurrently?
     
  31. TwoTen

    TwoTen

    Unity Technologies

    Joined:
    May 25, 2016
    Posts:
    1,168
    What do you mean exactly?
     
  32. dnuernberger

    dnuernberger

    Joined:
    Mar 9, 2020
    Posts:
    7
    For Mirror cons, what does it mean when it says: "...only one client per Connection"?
     
  33. Moe_Baker

    Moe_Baker

    Joined:
    Oct 22, 2017
    Posts:
    34
    UNET had this feature where you can have multiple clients using one connection, ie you can have couch co-op people connect to multiplayer games all under a single instance of the game, the feature was removed for simplicity's sake, I believe it was called a "low hanging fruit".
     
    mischa2k likes this.
  34. SirKnightDragoon

    SirKnightDragoon

    Joined:
    Mar 22, 2016
    Posts:
    21
    Good morning all :)

    I'm not here to start a fight over which asset is the best, but as I've come to decide on the best possible technology to date, I need your experience and advice.

    I've been a Unity developer for 13 years now. I have developed Android, iOS, Windows and Mac applications. From 2D to 3D, VR, interactive installations and much more. I have experience with a home server in NodeJS, I even made a game using SocketIO, and another with Photon PUN.

    But there, my team and I are on the development of a big competitive 3D game and I know that the techno used previously is not sufficient to achieve our objectives.

    The objective is to make a third person shooter game, with vehicle control. A dedicated server on a cloud service on PlayFab, published on Steam and Epic. Our goal is to reach a speed of + - 50ms, so at most 100ms. Use of UDP, not TCP is then required.

    I would like to know the best solution in terms of speed, performance and optimization. So we need a solution that consumes as little as possible, and is fast enough for competitive play.

    The 3 solutions that I mostly look at are Mirror, MLAPI, and DarkRift2. Unity NetCode looks promising, but is still far from complete and stable, so it will be for another day.

    @vis2k @TwoTen @Jamster

    Thank you in advance :)
     
    Last edited: Sep 25, 2020
  35. Vincenzo

    Vincenzo

    Joined:
    Feb 29, 2012
    Posts:
    146
    If you are a professional company you should look outside of the free market. None of these tools you mentioned will do what you want from them.

    Although you will pay a premium... Go for photon quantum. It will solve all of your problems. And will provide a lag free solution. Recently car physics are a built in feature
     
  36. SirKnightDragoon

    SirKnightDragoon

    Joined:
    Mar 22, 2016
    Posts:
    21

    https://blogs.unity3d.com/2020/09/0...32.971517441.1601171530-1899893638.1591214465


    Quantum sounds interesting, but based on research done by Unity. (see blog) I didn't feel Quantum was right for what I was looking for.



     
  37. FakeByte

    FakeByte

    Joined:
    Dec 8, 2015
    Posts:
    147
    If you already plan on hosting your servers on Playfab, then there is no real point in using Photon, as its main advantage is it's relay functionalities.
    Instead of Client -> Photon Relay -> Server you should connect directly with Client -> Server, no point in paying twice for similar services.

    That said, you can look into mirror, it might not be the best, but besides photon it seems to be the best supported library in playfab, on the github repo for the playfab game server sdk (GSDK) you can find some examples on how to use their server SDK in unity with mirror.
    https://github.com/PlayFab/gsdkSamples

    IMO look at how well libraries work with playfab and the playfab GSDK as this will save you a lot of time later.
     
  38. Lukeesta

    Lukeesta

    Joined:
    Jan 7, 2016
    Posts:
    21
    You do not need a high performance solution to reach your latency goals of 50-100ms. The main advantages of high performance servers is that they save cost (you can run more instances on a physical machine) and it allows you to run instances with many (100+) players.

    As for the 3 libraries which you mentioned. Mirror and MLAPI are quite similar while Darkrift is very different. Darkrift is a low level solution, it is basically a handy wrapper around low level networking functions which makes it easier to use them inside Unity. But you will have to code a lot of the networking architecture by yourself.
    Mirror and MLAPI on the other hand are high level solutions. They provide you with concepts such as networked objects, synced vars and RPCs which are a solid foundation to build most multiplayer games. When it comes to differences between MLAPI and Mirror then I honestly don't know the exact differences. From what I can tell Mirror has been longer around, has way more released games and the library is more stable/mature. MLAPI on the other hand is quite new but well written and it's very easy to extend.

    In the end if performance is your most important goal then my advice would be that you should keep away from the monobehaviour architecture or Unity in general. That would mean building your own system on top of a high performance platform such as .net core. In that case Mirror and MLAPI would not be an option. There are many great low level solutions which you can use as a starting point though. Enet, LiteLet or Darkrift to name a few. Or using Dots would also be an option but I don't think it is production ready. If you are looking for a good networking solution for Dots besides the Unity one I'd recommend to check out DotsNet.
     
    Last edited: Sep 27, 2020
    PutridEx likes this.
  39. Iron-Warrior

    Iron-Warrior

    Joined:
    Nov 3, 2009
    Posts:
    835
    tobiass likes this.
  40. SirKnightDragoon

    SirKnightDragoon

    Joined:
    Mar 22, 2016
    Posts:
    21
    What do you think of Forge? It looks and simple and stable.
     
  41. Iron-Warrior

    Iron-Warrior

    Joined:
    Nov 3, 2009
    Posts:
    835
    Something that might have flown under the radar for some devs are streaming systems like Parsec. Depending on your game type, this could be a really low cost way to get multiplayer in (though as a streaming system, it has plenty of drawbacks).

    I'm currently working on integrating their SDK into Unity to get hosting/joining of sessions directly in Unity, so that users don't have to start their multiplayer sessions through the Parsec desktop app. It's not near production ready, but I'm pretty excited about it.
     
    reinfeldx likes this.
  42. reinfeldx

    reinfeldx

    Joined:
    Nov 23, 2013
    Posts:
    157
    I really like Parsec; this is awesome!
     
  43. Vincenzo

    Vincenzo

    Joined:
    Feb 29, 2012
    Posts:
    146
    I don't know how a streaming service is going to solve multiplayer problems. you still have to handle game synchronisation.

    The Unity blog is outright spreading misinformation about the solutions, MLAPI is seen as genius and perfect but doesn't even have a working transform syncing system. it's a joke. Whilst Quantum really isn't limited by 32 players as they claim. I think unity is afraid to loose business compared to their own solutions so they downplay the main player (Photon/Exitgames)

    If Quantum is above your budget you could also look into Photon Bolt, works well for smaller games. it has full build in proper sync of the game state, using Eventual Consistency, it works pretty well.

    Don't get me wrong, I am not trying to shill products from Photon, the fact is from my research and knowledge of Networking games, there simply is nothing out there that does what they do.

    Personally as a game developer, I have spend years making my own solutions because of the lack of the solutions you can find online, non of the ones mentioned actually help you network a game properly, usually they just help you sync variables over the internet automagically for you, but don't care about tick engine, lag compensation, rewind, Server side authority, client side prediction and so much more that a game network solutiuon should do.

    Spending years making your own solutions on top of mirror/mlapi/forge or whatever is such wasted time compared to using the quality stuff from paid solutions.
     
  44. Iron-Warrior

    Iron-Warrior

    Joined:
    Nov 3, 2009
    Posts:
    835
    Parsec is essentially the same thing as Google Stadia, or other game streaming services, except players host the sessions themselves. In that sense, there is no synchronization or replication, since the game is only running on a single machine.
     
  45. Vincenzo

    Vincenzo

    Joined:
    Feb 29, 2012
    Posts:
    146
    But you still have to somehow handle multiple players, having multiple inputs, in one game, somehow interacting with eachother, also, it means that if you have the game hosting lets say in New York, you have the input + stream delay which is much more bad the further you get from the server, compared to traditional syncing, you can't do any client side prediction...
    in this example if you are from LA, it's unplayable.

    Sounds like a bad way to network a game.
     
  46. Iron-Warrior

    Iron-Warrior

    Joined:
    Nov 3, 2009
    Posts:
    835
    I'm not sure if I'm misunderstanding, but passing inputs is done via Parsec (you can download the desktop client and test it out). As I mentioned

    ...but how serious these are will depend a lot on your game type. Client side prediction for example, is not necessary for all kinds of games (even games that we think of as "fast", like StarCraft, have no prediction).
     
  47. Vincenzo

    Vincenzo

    Joined:
    Feb 29, 2012
    Posts:
    146
    Maybe you don't understand how streaming services work fully.

    Even if you stream on LAN, the delay between Input button press to having change on your screen is around 80 MS at least in the best moment. possibly more with a heavy game, and other reasons. adding any network delay on top of this will be unplayable FAST.

    That's why even single player games that are slow paced, that are hosted on a stadia/GeforceNow server with 10 MS ping to your pc is borderline unplayable.

    Now imagine you have to cross play your game with 80 ping.. yeah.. good luck with that.
     
    Last edited: Sep 30, 2020
  48. sarah22

    sarah22

    Joined:
    Aug 6, 2017
    Posts:
    15
    LAN has 80ms delay? Are you kidding me? Where did you pull all of this. I made a c++ chat server for our internal company chat and the latency was at worst 2ms. Are you kidding me? Even if the one we're chatting with was 1-5km away from sender, it's less than 5ms at worst.

    10ms is borderline unplayable? haha.
     
  49. Vincenzo

    Vincenzo

    Joined:
    Feb 29, 2012
    Posts:
    146
    Dear sarah, please get back to the topic at hand, we were talking about Streaming services techniques and their inherit delays.
    The streaming techniques and services generate a specific addition to your ping time. Let me explain you why.
    In this step by step example I take the maximum possible delays, in real life the delay could get this high, or a bit lower. but just to explain you these facts.

    - You press a button on your computer, your keyboard USB port gets about 500 times per second polled, so that is 2 ms delay.
    - This is handled by the streaming software, that more than likely is running at an interval of about 100 times per second to fetch input and send it over the network, if not slower, this is 10 ms delay.
    - This input data is send over the network (hopefully not lost so it has to be resend next frame) and arrives on the server. (even on lan can take 2 ms at least)
    - The server has a stream service loop running, possibly 100 times per second fetching input data from the network (10 ms).
    - The server applies the user input to the game, and renders a game frame, lets say you are streaming at 60 fps, this is adding 16 ms delay.
    - The server uses a video compressor to compress the rendered frame, usually today you can get away with NVSync/Intel Quicksync and other fast video compressors that more than likely compress the video frame in around 8-10 ms.
    - The compressed video frame is send to the client over the network, probably taking another 2 ms at least on lan.
    - The streaming software takes the compressed frame from the network at 60 times per second (16 ms)
    - It uncompresses the video data and displays it on screen (16 ms)
    - Monitor has about a 10ms input lag + pixel transition delay

    So in the worst case, on lan, you are talking about 94 ms
    Give or take a few, give or take some optimisation you could do,

    But look at the tests of stadia and other streaming services, people can record with high framerate cameras and high HZ screens an total input delay of 80-100 ms when using these single player games, whilst they recorded sub 20 ms ping times to servers...
     
    Last edited: Oct 1, 2020
    Iron-Warrior likes this.
  50. Iron-Warrior

    Iron-Warrior

    Joined:
    Nov 3, 2009
    Posts:
    835
    You are correct that streaming services have a large inherit input latency compared to playing locally, but I'm not contesting that. I do think calling it "unplayable" is a bit much. We've been running a public alpha for our project with thousands of players and found that the input delay, for our game, is not serious enough to majorly impact the experience (we have run tournaments that featured high level play)…but it's still good to test it, so that an informed decision can be made.

    Using a demo Unity project where a cube changes colour when an A press is detected (using the new Input System), and recording at 60 FPS using a Google Pixel 3 (modded camera app). Played on wireless LAN.

    Client (Drive) Host (Drive)

    Scrubbing frame by frame and using the "click" sound as our indicator, we see that on the host there are 2 frames of input lag, while on the guest there are 6 (this is consistent across all the presses, so it's pretty reliable). So roughly you're looking at 32 ms on the host before you can react to screen changes, and 96 on the client (right on your prediction! :D)

    This is a fast and dirty test—to be rigorous it would be ideal to be able to detect on the controller end the exact moment the button is pressed, use a higher speed camera, and make sure that the Parsec settings are not wonky in some way. As well, there's a difference in how players will perceive immediate actions (pressing a button for a result) and continuous ones (moving a character with a joystick).

    So the question is—how much does it impact your design? For some projects it will absolutely be too much, but for others this is a crazy cheap way to get a multiplayer in that requires no netcode simulation programming (you will need to handle players joining/leaving if you want to directly integrate it into your app).

    For us, the only existing system available that could improve on Parsec while still meeting our design requirements is Quantum. Quantum is excellent, but it requires re-writing all of your game logic from scratch, so Parsec is a good stopgap for us at the moment.

    The only other option would be to write our own simulation netcode atop MLAPI or PUN2 or whatever (or just use a transport layer, and do it from scratch), which even if we wanted to would require a level of refactoring that would probably be on par with switching to Quantum anyways.
     
    LogicFlow likes this.