<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Posts on Litewhite's Dev Log</title><link>https://litewhite.github.io/posts/</link><description>Recent content in Posts on Litewhite's Dev Log</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Wed, 08 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://litewhite.github.io/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Simple ECS in Godot C#</title><link>https://litewhite.github.io/posts/simple-ecs-in-godot-csharp/</link><pubDate>Wed, 08 Apr 2026 00:00:00 +0000</pubDate><guid>https://litewhite.github.io/posts/simple-ecs-in-godot-csharp/</guid><description>&lt;h2 id="ecs-and-simple-ecs"&gt;ECS and Simple ECS&lt;/h2&gt;
&lt;p&gt;ECS stands for Entity-Component-System. Entity contains several components and related system logics. Component is pure data, like velocity, status and so on. System is about pure logic, it is a bunch of status-less functions.&lt;/p&gt;
&lt;p&gt;For high performance project, component&amp;rsquo;s pure data and system&amp;rsquo;s pure logic feature is important, which helps reduce CPU cache missing and provide cleaner code structure.&lt;/p&gt;
&lt;p&gt;However, in some cases, I choose to mix some component (data) and some system (logic) into one single macro component. For example, I&amp;rsquo;ve got one macro component called &lt;code&gt;MovementComponent&lt;/code&gt;, which contains &lt;code&gt;moveSpeed&lt;/code&gt;, &lt;code&gt;jumpSpeed&lt;/code&gt;, &lt;code&gt;movementStatus&lt;/code&gt; data, as well as &lt;code&gt;ExecuteMove()&lt;/code&gt;, &lt;code&gt;ExecuteJump()&lt;/code&gt; logic.&lt;/p&gt;</description></item></channel></rss>