+4
Answered

Bolt and C# Job System in Unity 2018.1

Daniel Dahl 2 years ago updated by Aman Deep 2 years ago 5

Hey Lazlo, with Unity 2018.1 around the corner I just wanted to ask if bolt would support the integration of the new multithreading job system out of the box, through the code base and will their be any plans to run state machines and flow machines through jobs? 

I saw an old forum post that mentioned the best practices for calling coroutines from bolt. Would we be able to have your answer to that discussion and similar answers for using the job system added to the tutorial section? This information seems like it should be in an easy to find section of the Bolt website, not buried in the forums. I’ll link to the discussion I’m talking about a little later today when I’m not typing from my phone.

Bolt Version:
Unity Version:
Platform(s):
Scripting Backend:
.NET Version (API Compatibility Level):
GOOD, I'M SATISFIED
Satisfaction mark by Daniel Dahl 2 years ago

The coroutine answer I mentioned earlier is from this discussion:

https://support.ludiq.io/communities/5/topics/256-coroutines

Answered

Hi Daniel,

Unfortunately no, Bolt will not support the new Job system out of the box. Implementing this system requires a very specific way of coding and creating your data structures that does not translate well into visual graphs. 

Hi,

I bought Bolt, but I still haven't had enough time to install it and try it, although I was really looking forward to do it. I wasn't looking for a way to avoid coding, I saw in Bolt a way to make my AI more clear, reusable and easier to debug. Nonetheless, with Unity 2018.1 out of beta, many of us working on games that are (or will be) hardware-intensive are looking forward to reap the benefits of the Entity Component System and the Job System (especially the latter). I understand if the integration is not supported out of the box, however, I'm sure many of us will be very grateful if at least some guidelines are developed and shared, for example, as a tutorial, showing how to set up multithreading using the job system.

I know it's not easy task, but at the moment I feel I must choose between Bolt and performance. As Unity's new approach suggests, performance and usability shouldn't be conceived as a tradeoff.

Perhaps I'm missing something, or I lack of complete info, or there are some workarounds available already. If that is the case, I would really appreciate if you could enlighten me.

Best Regards.

+4

I understand your dilemma, but the truth is that using ECS means coding in an entirely different fashion than traditional C# scripting: limited API methods, structs instead of classes, many language constructs or control flow structures that are unavailable, etc. ECS is not meant to replace traditional scripting in Unity (at least not any time soon), it is meant for optimizing in very specific situations. Other parts of your game will still require traditional scripting.

Bolt's flow graphs mimic traditional C# scripting, and therefore don't even "conceptually" match the model of ECS / job system. In order to support it, Bolt would have to:

  • Introduce a new type of graph (e.g. "Job Graphs")
  • Add whole new editors for defining compatible data structures
  • Compile these graphs to code before running

These are incredibly big endeavors that would represent months of work. As a single developer, I cannot afford to put everything else on hold for the performance benefits of ECS, especially since ECS cannot be used alone to create an entire game (and is still in preview!).

unity ecs physics | movement and adding force to rigidbody