Overview:
This technical content related to Unity’s Backend System like How unity compile the code? , How unity build code for different platforms?
Step-1: Convert Source code to Engine code
– We are writing the code in c# it’s called source code.
– Always source code converted into engine code through the compilation process.
– First, all the C# scripts compiled into CIL (Common Intermediate Language).
– All c# code is known as source code and CIL code known as Managed Code.
Managed Code: Managed code easily converted into different-different languages and able to prepare engine code.
– C# easily maintain managed code, so that it is also known as Mixed Programming Language.
Step-2: Types of Compilation
There are two types of the compilation process for c#,
- AOT [Ahead Of Time]
- JIT [Just In Time]
– Both compilation processes are starting compilation process depending on the target hardware like android, ios, play-station, etc.
1) AOT [Ahead Of Time] Compilation:
– Ahead Of Time compilation means compiling application during the build process.
– It’s also known as static compilation.
– All the IOS devices use the AOT compilation process because Ios doesn’t allow dynamic compilation.
2) JIT [Just In Time] Compilation:
– Just In Time compilation means compiling applications when running the application on the device.
– It’s also known as dynamic compilation.
Both the compilation process has its own back and forth, so which one is best it is a debatable topic because of both compilation capable of optimization and build code in a better way.
In Unity we can choose any of the compilation processes as per our requirement.
Step-3: Engine Code
– Compilation process build up engine code and finally, it will run on a device, But…
Complexity Level:
– Unity the engine is not developed in C#, it is developed in C++ like other software.
– So that here C++ engine code needs to communicate with C#’s engine code.
– Managed code integrated with “Manage Run-time”,
Manage Run-time is a security mechanism before run/compile process and throw an exception if any bug or error in managed code.
Step-4: Marshalling
– Managed Run-time code(C#) communicating with Unity Engine code (C++) it’s called Marshalling.
Step-5: Build Process
– After completion of marshalling, it will handle lots of complexity during converting code C# into C++ in backend for all the supported platforms like Android, IOS, Windows, Play-station, and many more.
– Finally engine code build up with security level and bug and exception free and ready to build on the device.
Leave a Reply