<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Pratyush</title>
    <description>The latest articles on DEV Community by Pratyush (@whoami--remon).</description>
    <link>https://dev.to/whoami--remon</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3208876%2Fdf2f9137-2408-4bbe-a126-53d85ea90bd2.png</url>
      <title>DEV Community: Pratyush</title>
      <link>https://dev.to/whoami--remon</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/whoami--remon"/>
    <language>en</language>
    <item>
      <title>Unity DOTS : Entity [Part-2]</title>
      <dc:creator>Pratyush</dc:creator>
      <pubDate>Sat, 24 Jan 2026 12:25:26 +0000</pubDate>
      <link>https://dev.to/whoami--remon/unity-dots-entity-part-2-4oh</link>
      <guid>https://dev.to/whoami--remon/unity-dots-entity-part-2-4oh</guid>
      <description>

&lt;p&gt;In the "Introduction" we stuck with &lt;strong&gt;"Entity → It is an identifier."&lt;/strong&gt; but there is a lot more to it.&lt;/p&gt;

&lt;p&gt;An Entity is more of an &lt;strong&gt;ID provider&lt;/strong&gt;. This ID is given to all the &lt;strong&gt;unique components&lt;/strong&gt; that come under the one Entity.&lt;/p&gt;

&lt;p&gt;For example, if there is a GameObject which represents a cube, it will have a Transform, Mesh Filter, Mesh Renderer, Box Collider, etc. These are components in &lt;strong&gt;Authoring data&lt;/strong&gt; format. When they are converted into an Entity, these properties will turn into &lt;strong&gt;Runtime data&lt;/strong&gt; format.&lt;/p&gt;

&lt;p&gt;The logic(scripts) that you create to define the behavior of an Entity is &lt;em&gt;totally separate&lt;/em&gt; from the Entity's data itself and data belonging to entity will be arranged &lt;strong&gt;contiguously in physical memory&lt;/strong&gt; with respect to their entity type.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ferq4xz9u99ski3gt76vw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ferq4xz9u99ski3gt76vw.png" alt="Memory allocation" width="691" height="461"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This ability to keep data organized and keep logic separate from the Entity allows &lt;strong&gt;bulk manipulation&lt;/strong&gt; and &lt;strong&gt;easy access to data&lt;/strong&gt;, resulting in a huge performance boost.&lt;/p&gt;




&lt;h3&gt;
  
  
  Baking
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm5tjwaoknxn5k029ss1k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm5tjwaoknxn5k029ss1k.png" alt=" " width="601" height="361"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;h4&gt;
  
  
  NOTE!
&lt;/h4&gt;

&lt;p&gt;Subscene is used to convert the GameObject to entity because Unity's core scene system is incompatible with ECS.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The conversion of a GameObject to an Entity is called &lt;strong&gt;Baking&lt;/strong&gt;. This process takes in Authoring data and converts it into Runtime data, where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Authoring data&lt;/strong&gt; is the data of the object in the &lt;strong&gt;Unity Editor&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Runtime data&lt;/strong&gt; is the data that &lt;strong&gt;ECS processes during runtime&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Links:&lt;br&gt;
&lt;a href="https://dev.to/whoami--remon/introduction-to-dots-4j2c"&gt;Unity DOTS : Introduction [Part 1]&lt;/a&gt;&lt;/p&gt;

</description>
      <category>unity3d</category>
      <category>gamedev</category>
      <category>tutorial</category>
      <category>learning</category>
    </item>
    <item>
      <title>Unity DOTS : Introduction [Part 1]</title>
      <dc:creator>Pratyush</dc:creator>
      <pubDate>Thu, 22 Jan 2026 09:05:57 +0000</pubDate>
      <link>https://dev.to/whoami--remon/introduction-to-dots-4j2c</link>
      <guid>https://dev.to/whoami--remon/introduction-to-dots-4j2c</guid>
      <description>&lt;h2&gt;
  
  
  DOTS
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;DOTS&lt;/strong&gt; stands for &lt;strong&gt;Data Oriented Tech Stack&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
This tech stack helps create games using a &lt;strong&gt;data-oriented architecture&lt;/strong&gt;. By doing this, game projects can scale efficiently while remaining highly optimized.&lt;/p&gt;

&lt;p&gt;DOTS consists of &lt;strong&gt;three components&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Entity Component System&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Job System&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Burst Compiler&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Entity Component System (ECS)
&lt;/h2&gt;

&lt;p&gt;The Entity Component System has &lt;strong&gt;three core parts&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Entity&lt;/strong&gt; → It is an identifier&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Component&lt;/strong&gt; → It holds data of an entity&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;System&lt;/strong&gt; → It performs logical operations on the entity's data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fspe49ckwld4rki4nbrew.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fspe49ckwld4rki4nbrew.png" alt="Fig 1.1 How ECS works" width="800" height="342"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Example
&lt;/h3&gt;

&lt;p&gt;There are &lt;strong&gt;three entities&lt;/strong&gt; (Fig 1.1), each containing &lt;strong&gt;two components&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Transform rotation&lt;/li&gt;
&lt;li&gt;Rotation angle&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A &lt;strong&gt;system&lt;/strong&gt; iterates through all entities and updates their &lt;strong&gt;Transform&lt;/strong&gt; component with respect to their &lt;strong&gt;Rotation angle&lt;/strong&gt; component.&lt;/p&gt;




&lt;h2&gt;
  
  
  Job System
&lt;/h2&gt;

&lt;p&gt;The Job System makes writing &lt;strong&gt;multithreaded&lt;/strong&gt; code easier by providing &lt;strong&gt;pre-implemented safety checks&lt;/strong&gt; that detect race conditions during development. It also manages how jobs are distributed across CPU cores.&lt;/p&gt;

&lt;p&gt;By default, Unity code runs on the &lt;strong&gt;Main Thread&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
The Job System enables the use of multiple threads called &lt;strong&gt;Worker Threads&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5uymq57xaufswxyy6b7e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5uymq57xaufswxyy6b7e.png" alt="Job System" width="477" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Jobs are assigned to worker threads&lt;/li&gt;
&lt;li&gt;A worker thread can steal jobs from another thread if it finishes early and other jobs are waiting&lt;/li&gt;
&lt;li&gt;Automatically handles synchronization between worker threads and the main thread&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Burst Compiler
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;Burst Compiler&lt;/strong&gt; works with &lt;strong&gt;High-Performance C&lt;/strong&gt;, which is a restricted subset of C# designed for optimization.&lt;/p&gt;

&lt;p&gt;It uses LLVM to translate IL  into &lt;strong&gt;highly optimized machine code&lt;/strong&gt; tailored for the target CPU.&lt;/p&gt;




&lt;p&gt;Links:&lt;br&gt;
&lt;a href="https://dev.to/whoami--remon/unity-dots-entity-part-2-4oh"&gt;Unity DOTS : Entity[Part 2]&lt;/a&gt;&lt;/p&gt;

</description>
      <category>unity3d</category>
      <category>gamedev</category>
      <category>learning</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
