Code Sample: New Unity* Entity Component, C# Job System, and Burst Compiler

Published: 06/01/2018, Last Updated: 06/01/2018

File(s):

Download
License: Intel Sample Source Code License Agreement
Optimized for...  
OS: Windows® 10 (64 bit)
Hardware: N/A
Software:
(Programming Language, tool, IDE, Framework)
C#, Microsoft Visual Studio* 2015, Unity*
Prerequisites: Familiarity with Microsoft Visual Studio, 3D graphics, parallel processing.

Introduction

Low, medium, and high. Standard fare for GPU settings, but why not CPU settings, too? Today the potential power of the CPU on your end users’ machines can vary wildly. Typically, developers will define a CPU min-spec, implement the simulation and gameplay systems using that performance target, and then call it a day. This leaves the many potentially available cores and features built into modern mainstream CPUs sitting idle on the sideline. The new C# job system and entity component system from Unity* don’t just allow you to easily leverage previously unused CPU resources, they will also help run all your game code more efficiently in general. Then you can use those extra CPU resources to add more scene dynamism and immersion. In this article, you’ll see how to quickly get started learning these new features.

Unity is attacking two important performance problems for computing in game engines. The first problem under assault is inefficient data layout. Unity’s Entity Component System (ECS) improves management of data storage for high-performance operations on those structures. The second problem is the lack of a high-performance job language and SIMD vectorization that can operate on that well-organized data. Unity’s new C# job system, entity component system and Burst compiler technology leave those shortcomings in the dust.

The Unity entity component system and C# job system are two different things, but they go hand-in-hand. To get to know them, let’s look at the current Unity workflow for creating an object in your scene, and then differentiate from there.

Get Started

Get Started with the New Unity* Entity Component, C# Job System, and Burst Compiler

References

Unity
Unity Entity Component System Documentation
Unity Entity Component System Samples
Unity Entity Component System Forums
Unity Documentation
Learning about efficient memory layout
Ship Asset Used in Demo

Updated Log

Created May 17, 2018

Product and Performance Information

1

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804