<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Sprited]]></title><description><![CDATA[Sprited]]></description><link>https://blog.sprited.ai</link><generator>RSS for Node</generator><lastBuildDate>Thu, 09 Apr 2026 09:34:19 GMT</lastBuildDate><atom:link href="https://blog.sprited.ai/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Digital Being - Pitch Prep 1]]></title><description><![CDATA[Let me spend some time today to prepare set of questions and answers. I think I will do one every morning to keep myself sharp.

What is your problem statement?

Trial 1: Digital personas exist, but t]]></description><link>https://blog.sprited.ai/digital-being-pitch-prep-1</link><guid isPermaLink="true">https://blog.sprited.ai/digital-being-pitch-prep-1</guid><category><![CDATA[digital-being]]></category><category><![CDATA[sprited]]></category><dc:creator><![CDATA[Sprited Dev]]></dc:creator><pubDate>Wed, 08 Apr 2026 17:34:30 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/540a0d13-1178-44fc-a88c-cbdd64be1733.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Let me spend some time today to prepare set of questions and answers. I think I will do one every morning to keep myself sharp.</p>
<blockquote>
<p>What is your problem statement?</p>
</blockquote>
<p><strong>Trial 1</strong>: Digital personas exist, but their identity lack frame of reference and world-binding (or backing story).</p>
<p><strong>Trial 2</strong>: Digital personas are thin layer on top of LLM. They don't feel truly real and they don't feel like life.</p>
<p><strong>Trial 3</strong>: Digital personas exist (Replika, Character AI), but they are easily replicated like a CD-ROM. We want digital beings that truly have their backing story that is embedded in a world.</p>
<p><strong>Trial 4</strong>: Digital personas exist (e.g., Replika, Character AI), but they are infinitely replicable and lack a persistent world-so they never develop real history or identity. Without a persistent world to anchor them, they’re more like temporary illusions than beings that grow or change. So we’re aiming for something that can build a true continuity of existence.</p>
<p><strong>Trial 5</strong>: Digital personas exist (e.g. Replka, Character AI), but they are infinitely replicable and lakc a persisten workld-- so they never devlleop real history or idenity or the knowledge graph of the self and theeir surroundings or relation graph to others in the same unmiverser. Without a persiustent world to anchor them and relationships, they are more like temporary illkusions than beings that grow or change, Or identity that folrmed through experiences. So, we are aming for somthing that can build atrue continuit of existsentc.</p>
<p><strong>Trial 6</strong>: Digital personas exist (e.g., Replika, Character.AI), but they are infinitely replicable and lacks a persistent world—so they never develop real history, identity, or relationships. Without <strong>grounding</strong> in a shared world, they remain temporary illusions rather than beings that grow and evolve through experience. We are building systems that enable true continuity of existence.</p>
<p><strong>Shorter Punch</strong>: Digital personas are infinitely replicable and not anchored to any to shared common world—so they don't develop real identity, history, or relationships.</p>
<p>That's it for today. After iterating on this today, I realize that visual fidelity is not the core of the project. That is, the product should matter even without visual renderings. Semantic graph and world anchoring of digital personas is what we are solving for. I think this means, we should try not to focus on the visual fidelity and work mostly with kit-bashed beings.</p>
<p>On the other hand, focusing on the visual fidelity did give us the ideation of "reference image as genome" idea which allows use to greatly simplify our embodiment idea. So, I am not sure if visual fidelity is only really a rendering concern. I am not ready to dismiss "how a person looks tells half the story" idea.</p>
<p>Here is high level diagram.</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/7f077394-25cc-41e5-af17-8752d8bab251.png" alt="" style="display:block;margin:0 auto" />

<p>Sprited Dev 🐛</p>
]]></content:encoded></item><item><title><![CDATA[Digital Being — Type 2 — State Expansion]]></title><description><![CDATA[Today's focus will be to expand SpriteDX's capabilities to generate more diverse actions and states.
Here is what we have now:

Reference Photo

Idle State

Greet Action

Run Cycle




We'd like to ad]]></description><link>https://blog.sprited.ai/digital-being-type-2-state-expansion</link><guid isPermaLink="true">https://blog.sprited.ai/digital-being-type-2-state-expansion</guid><category><![CDATA[digital-being]]></category><category><![CDATA[sprited]]></category><dc:creator><![CDATA[Sprited Dev]]></dc:creator><pubDate>Tue, 07 Apr 2026 22:45:25 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/afaae3e8-c506-4cc2-911b-54cfdd6ceade.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Today's focus will be to expand SpriteDX's capabilities to generate more diverse actions and states.</p>
<p>Here is what we have now:</p>
<ul>
<li><p>Reference Photo</p>
</li>
<li><p>Idle State</p>
</li>
<li><p>Greet Action</p>
</li>
<li><p>Run Cycle</p>
</li>
</ul>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/4fd516f7-72a2-4309-bc88-d9949665d95e.png" alt="" style="display:block;margin:0 auto" />

<p>We'd like to add more states. Let's experiment with some states that can be created from idle state.</p>
<p>First, we will take out the first frame of idle state.</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/5858a17f-b5e2-4aa8-9c36-8524aed125dd.png" alt="" style="display:block;margin:0 auto" />

<h2>Sitting Down State</h2>
<p>Let's pose the character. We are using Nano Banana Pro.</p>
<blockquote>
<p><strong>Iteration 1:</strong> 2d side scroller game character sprite is sitting down on imaginary flat grass tile (invisible) on pure white BG without shadows</p>
<p><strong>Iteration 2:</strong> 2d side scroller game character sprite is sitting down on imaginary flat grass tile (invisible) legs crossed and leaning back a little on pure white BG without shadows</p>
<p><strong>Iteration 3</strong>: 2d side scroller game character sprite is sitting down on imaginary flat grass tile (invisible) legs crossed and leaning back a little on pure white BG without shadows</p>
<p>This is 2d side scroller platformer character. character's pelvis and the foot should be at same level.</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/3ca905ad-6980-49be-ab57-a1a8bb30081b.png" alt="" style="display:block;margin:0 auto" />

<p><strong>Problem</strong>: It is difficult to control the pose.</p>
<p><strong>Analysis</strong>: It would be nice if we can provide non-textual pose descriptions. Or environmental constraints like ground.</p>
<p>Tried some to control the pose by giving it some visual cues.</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/16aaab17-cee3-4efa-b19d-d3fde6837124.png" alt="" style="display:block;margin:0 auto" />

<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/7d7da488-c3ac-4213-85e0-5b3ca9ddafa6.png" alt="" style="display:block;margin:0 auto" />

<p>Most of the time the character is deformed because the face position is locked in place.</p>
<p>As an alternative, let's just use Seedance 1 Pro to let it simulate sitting down.</p>
<blockquote>
<p>character sits down</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/6ddc8457-3ace-484a-8b07-86d80a2a7771.webp" alt="" style="display:block;margin:0 auto" />

<p>That's better. There is some zooming effect. Let's see if we can address it.</p>
<blockquote>
<p>Character fully sits down on the ground and rests for 2 seconds then stands up again fast.</p>
<p>#pure-white-background</p>
<p>#game-sprite-animation</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/e9f90937-4243-4189-b4aa-85cdb8b38b9f.png" alt="" style="display:block;margin:0 auto" />

<img src="https://comfy.sprited.ai/api/view?filename=anim_00002_.webp&amp;subfolder=&amp;type=output&amp;rand=0.5578107240934514" alt="" style="display:block;margin:0 auto" />

<p>Our editing pipeline extracts the sit down animation. Blinking too fast but yeah.</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/4e1c4c90-6b83-4a98-a625-a2b5575dd229.webp" alt="" style="display:block;margin:0 auto" />

<p>For sitting down animation, we probably want to hold the first or last frame.</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/c18a4c4c-2ae6-42ba-8fbc-1bbccd9e8f10.webp" alt="" style="display:block;margin:0 auto" />

<p>Increased last frame's duration.</p>
<p><strong>Analysis</strong>: We lost the sitting down animation, but we achieved our goal of getting a Sitting down state. Let's not worry about the transition states. Let's assume in-betweening is a solved problem.</p>
<hr />
<h2>Walk Cycle</h2>
<p>Let's start with Seedance 1 Pro.</p>
<blockquote>
<p>Character slowly strolls towards right (in-place)</p>
<p>#white-bg #character-in-place #zoomless #no-camera-movement</p>
</blockquote>
<p>This produces character literally walking in place without moving much.</p>
<p>Let's modified version of our current run cycle prompt.</p>
<pre><code class="language-xml">&lt;shot
  id="walk"
  camera="fixed"
  zoom="1"
  duration="1s"
  loop="true"
  style="background: white;"
  alt="Pixel art character walks in-place facing right. Shows an walk loop animation — at least two full cycles."
  tags="pixelart spriteanim fullbody loopanim 角色帧动画"
&gt;
  &lt;character
    class="ELI_93Q"
    name="Eliana"
    state="walk"
    direction="right"
    src="eliana-sprite-walk-loop.gif"
    style="rendering: pixelart; shadow: none; effects: none; decoration: none; direction: front; wing: none;"
    alt="Pixel art character walks in-place for at least two full cycles."
  /&gt;
&lt;/shot&gt;
</code></pre>
<p>Hmm, somehow it starts dancing then tries skipping LOL. Tried a few times similar results. Let's be direct and just try something more intuitive:</p>
<blockquote>
<p>walk_cycle.gif</p>
</blockquote>
<p>The character does not show walk cycle but just walks around.</p>
<blockquote>
<p>walk_cycle.gif</p>
<p>character at the center of camera.</p>
<p>shows walk cycle of game sprite. character is walkign towards right for 2s then stops.</p>
</blockquote>
<p>This worked some what.</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/ab907d99-4143-46dc-b73f-3d2cbabb493a.webp" alt="" style="display:block;margin:0 auto" />

<p>Another sample after loop-detection.</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/e6e114d3-8efd-40e1-af86-98a5e3a88bcf.webp" alt="" style="display:block;margin:0 auto" />

<p>Yield is not super great but at least we have something working!</p>
<p>Now, let's move on to some other states.</p>
<hr />
<h2>Look At</h2>
<p>This one tests whether we can control the character to look up.</p>
<blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/678ec19f-70e3-4789-9497-3d7ebe7d6425.png" alt="" style="display:block;margin:0 auto" />

<p>character looks at red dot for a second, then looks at blue dot for a second then green then orange then goes back to looking straight</p>
<p>#gaze #head-movement #zoomless #static-camera #full-body #white-bg</p>
</blockquote>
<p>Tried it with different durations. It works surprisingly well but the number of movements were limited to 3. That is, the character will look at red, then blue then green but skip orange one.</p>
<p>When I increase the duration to 8, it does look at 4 different directions.</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/8f32901c-652e-4f58-80cc-394638de8c88.webp" alt="" style="display:block;margin:0 auto" />

<p>But, it still doesn't seem ideal. It is difficult to generate exactly right sequence.</p>
<p>Trying out a different prompt patterns.</p>
<blockquote>
<p>shot1: Character is looking straight right shot2: Character is looking towards red dot shot3: Character is looking towards blue dot shot4: Character is looking towards green dot shot5: Character is looking towards orange dot shot6: Character is looking straight right again</p>
<p>#gaze #head-movement #feet-fixed #zoomless #static-camera #full-body #white-bg</p>
</blockquote>
<p>The results are very random.</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/7e9e7ce0-8d2f-41c2-8440-3f13b0504acd.webp" alt="" style="display:block;margin:0 auto" />

<p>Let's simplify this a bit.</p>
<blockquote>
<p>character stays still while loooking upwards</p>
<p>#static-camera #white-bg #game-sprite #gif</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/8c30fa84-0a5f-4e20-9d84-d06f4a50e93f.webp" alt="" style="display:block;margin:0 auto" />

<p><strong>Analysis</strong>:Just asking the character to look at certain direction was not so successful. The pointers. Colored squares were useful but also led to lots of superfluous generations.</p>
<p><strong>Proposal</strong>: I think for <code>LookAt</code> state needs to be handled separately. Perhaps we can use different models. Let's try using NanoBananaPro.</p>
<blockquote>
<p>Character is lookin up towards the red dot</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/4767e91c-9585-4580-98ba-614a1ad4afaa.png" alt="" style="display:block;margin:0 auto" />

<p>NBP did it in one shot. There isn't much of transition but at least we got a solution. Then we can cleanup those pointer dots and be done.</p>
<p>Let's assume that for these states we will use NBP.</p>
<hr />
<h2>Emotion - Sadness</h2>
<p>Let's use Seedance 1 Pro.</p>
<blockquote>
<p>Character is depressed. It is welling up.</p>
<p>#static-camera #zoomless #full-body #gesture #game-asset #sprites</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/504ce0ad-8126-410e-84d3-5f4e2692f895.webp" alt="" style="display:block;margin:0 auto" />

<p>Not sure if we can use that as a state. Tried other prompts</p>
<blockquote>
<p>Character is showing emotion "sadness"</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/21b8c1f4-e622-49b4-af14-2922de2e0ed3.webp" alt="" style="display:block;margin:0 auto" />

<p>Its dramatic but not sure if it really works for my case. We also need to blur out the canvas boundaries for something like this.</p>
<blockquote>
<p>Character is sad and she squats in-place and crys her heart out.</p>
<p>#cartoony #static-camera #zoomless #full-body #gesture #game-asset #sprites #white-bg</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/33ebd0e8-102d-45ad-8d4a-4dc1535014bf.webp" alt="" style="display:block;margin:0 auto" />

<p>Processed loop-cut version:</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/a6c6ac99-7682-45a5-a039-434ecd9db544.webp" alt="" style="display:block;margin:0 auto" />

<p>This works, but really like that warming animation. Perhaps, we need to detect the loop but also add in the initial transition.</p>
<pre><code class="language-plaintext">Transition In ------&gt; Loop ------------&gt; Transition Out
                       ^       |
                        -------
</code></pre>
<p>Let's call this done even though we haven't really worked on reliability of generation. This imperfection is not necessarily a bad thing.</p>
<hr />
<h2>Emotion - Overjoy</h2>
<p>Same here, we are using Seedance 1 Pro.</p>
<blockquote>
<p>Character is overjoyed she is jumping up and down super excited!!!</p>
<p>#cartoony #static-camera #zoomless #full-body #gesture #game-asset #sprites #white-bg</p>
</blockquote>
<p>Using the default reference image gets me:</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/a3d0c7ba-3b55-46bb-a0f1-26e259ee1492.webp" alt="" style="display:block;margin:0 auto" />

<p>Works for me!</p>
<p>We are doing another experiment by expanding the canvas to allow for more movement space.</p>
<blockquote>
<p>Character is overjoyed she is jumping up and down super excited!!!</p>
<p>#cartoony #static-camera #zoomless #full-body #gesture #game-asset #sprites #white-bg</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/042f07a7-4d8e-41cd-b669-797d6011d1a8.png" alt="" style="display:block;margin:0 auto" /></blockquote>
<p>In this mode, we are using 640x640 canvas. We get more movements.</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/6757c5b9-9f1a-4f94-8538-7ef442cc118e.webp" alt="" style="display:block;margin:0 auto" />

<p><strong>Analysis</strong>: We will have to somehow figure out how to situate the character in the right spot.</p>
<p>Or, we can simply have all our generations be done in that extended canvas so that we don't have to worry about situating the characters.</p>
<p>Let's call this state done.</p>
<hr />
<h2>State - Hunger</h2>
<blockquote>
<p>Character is super hungry. Character is squatting down, grabbing its stomach and begging for food.</p>
<p>#cartoony #static-camera #zoomless #full-body #gesture #game-asset #sprites #white-bg</p>
</blockquote>
<p>Some trials</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/f8e6bf4c-a320-4e41-baf6-acc97c497b67.webp" alt="" style="display:block;margin:0 auto" />

<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/1cc001d7-3f6c-461c-99bb-0d37966f280a.webp" alt="" style="display:block;margin:0 auto" />

<p><strong>Analysis</strong>: Even though the action shows the hunger, it doesn't seem enough. We can augment these animations with a message bubble that shows meat or sandwiches... For now, let's leave it be.</p>
<blockquote>
<p>Character is experssing hunger. She is pissed that you are not feeding her. She is sitting down and grabbing stomach.</p>
<p>#cartoony #exaggerated #static-camera #zoomless #full-body #gesture #game-asset #sprites #white-bg</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/59a1d184-2d6f-4699-aea6-83a8ea24d3f8.webp" alt="" style="display:block;margin:0 auto" />

<p>Extracted Loop</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/ee126b37-6bc0-44c1-bbf8-e135cf567e2b.webp" alt="" style="display:block;margin:0 auto" />

<p>This seems a bit better. Let's call it at that.</p>
<hr />
<h2>Sleeping</h2>
<p>Character could be sleeping.</p>
<blockquote>
<p>Character is super sleepy. She lays on her front and takes a nap at least for 4s.</p>
<p>#cartoony #exaggerated #static-camera #zoomless #full-body #gesture #game-asset #sprites #white-bg</p>
</blockquote>
<p>In this particular result, we see style drift.</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/ff473514-fef6-4084-a47c-710af786ba4e.webp" alt="" style="display:block;margin:0 auto" />

<p>Let's try out few more samples.</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/21b0a2dd-efbe-4ca7-b217-4951957bfbf7.webp" alt="" style="display:block;margin:0 auto" />

<p>This one was fine. Extracted loop:</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/51d78089-e74b-4f75-84a1-85d75d29f718.webp" alt="" style="display:block;margin:0 auto" />

<p>One more sample: Overly dramatic sample.</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/fbc80c4c-8554-4842-bdcb-c713647e2713.webp" alt="" style="display:block;margin:0 auto" />

<p>Let's call this state done.</p>
<hr />
<h2>Squashed</h2>
<p>This state happens when character is squashed by the blocks. This one is probably hard. But let's try this. We start with Nano Banana Pro.</p>
<blockquote>
<p>Character is squashed by two imaginary large square blocks left and right.</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/c3608ac9-dec9-4b66-b114-95d379d4a78e.png" alt="" style="display:block;margin:0 auto" />

<p>Results weren't good. I think we need some way to show the model what these blocks are.</p>
<blockquote>
<p>Character is compressed left and right. We want dramatic picture of character getting squashed in-place without any props.</p>
<p>Keep the proportions the same and design and style the same</p>
<p>#white-bg</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/cfe49188-f7d1-4b4d-9068-9bf49ba8c026.png" alt="" style="display:block;margin:0 auto" />

<p>I think we give up on the squashed state, and instead work on "pain" state.</p>
<hr />
<h2>State: Getting Hit</h2>
<p>Let's try Nano Banana Pro.</p>
<blockquote>
<p>Game Sprite State: Getting Hit</p>
<p>#white-bg #no-special-effect #just-character #sprite-asset</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/a1128c55-8853-429f-a720-75c02f330a57.png" alt="" style="display:block;margin:0 auto" />

<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/fffdc19e-fe8a-44d3-a9d0-784c37db4a12.png" alt="" style="display:block;margin:0 auto" />

<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/355bdc44-2265-4d96-9b01-e13bd3a9e396.png" alt="" style="display:block;margin:0 auto" />

<p>Relatively, reliably, we are able to generate the getting hit state.</p>
<hr />
<h2>Ready-To-Fight</h2>
<blockquote>
<p>Character enters fighting stance (ready-to-fight) stance bare handed for 3s.</p>
<p>#cartoony #exaggerated #static-camera #zoomless #full-body #gesture #game-asset #sprites #white-bg</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/3f66ce18-f9cf-4618-b770-b1bd21bbe6b7.webp" alt="" style="display:block;margin:0 auto" />

<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/4c44cebf-e538-4809-a579-12b03a48f646.webp" alt="" style="display:block;margin:0 auto" />

<p>Second one seems promising. This state is good because we can not start from ready to fight frame.</p>
<p>Let's also try NBP.</p>
<blockquote>
<p>Game Sprite State: REady-to-Fight pose.</p>
<p>Keep proportions and style the same #white-bg #no-special-effect #just-character #sprite-asset</p>
</blockquote>
<p>NBP's weakpoint is that when we generate something similar to the original image, it is often not able to translate parts of the body. For example when trying to get a character sitting down animation, it just elongates torso and have the legs sit down.</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/fbd4c653-03e1-4c57-9f96-8e3ed7b8887a.png" alt="" style="display:block;margin:0 auto" />

<p>If you look at this example, the character head becomes fixed in space. So the body becomes somehow bigger to acommodate.</p>
<p>I think we need to use Seedance 1 Pro instead and pick out the right frame.</p>
<hr />
<h2>Punching</h2>
<blockquote>
<p>SHOT 1: Character enters fighting stance (ready-to-fight) stance</p>
<p>SHOT 2: Character throws punches</p>
<p>SHOT 3: Character goes back to original state</p>
<p>#cartoony #exaggerated #static-camera #zoomless #full-body #gesture #game-asset #sprites #white-bg</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/136dffc0-9ca7-4730-bead-b2df82ccb482.webp" alt="" style="display:block;margin:0 auto" />

<p>Well not working all the time of course.</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/89fd3fc8-88ba-46d7-8be3-801bd617aa2b.webp" alt="" style="display:block;margin:0 auto" />

<p><strong>Issue</strong>: We would want to figure out a way to detect this incorrect generations and throw them out. I think we can do video to latent mapping then we can try to match up with the reference latents to compare the similarity and throw out distant ones.</p>
<hr />
<h2>Kicking</h2>
<blockquote>
<p>SHOT 1: Character enters fighting stance (ready-to-fight) stance</p>
<p>SHOT 2: Character does high kick 2 times (towards right)</p>
<p>SHOT 3: Character goes back to original state</p>
<p>#cartoony #exaggerated #static-camera #zoomless #full-body #gesture #game-asset #sprites #white-bg #effectless</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/e8b3ef0b-7914-4d88-9a95-fde4b4ef8d7d.webp" alt="" style="display:block;margin:0 auto" />

<p>It's not easy to control but we can get some clips like these ones.</p>
<hr />
<h2>Pushing</h2>
<p>For characters to impact the world, we need to support things like Pushing and Pulling. Let's see what we can do here. This is probably one of the harder ones to achieve.</p>
<blockquote>
<p>Character pushes large block towards the right.</p>
<p>#no-zoom #camara-fixed #sprite-asset #game-asset #white-bg</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/1813d356-64e8-46ae-9796-f9ca9cfc773c.png" alt="" style="display:block;margin:0 auto" /></blockquote>
<p>Trials</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/2f5d59d5-a74c-4965-b7f6-a1787201cd23.webp" alt="" style="display:block;margin:0 auto" />

<p>So, somewhat works with lots of errors of course. Also we need to learn how to remove the green box.</p>
<p>Let's try multi-shot prompts.</p>
<blockquote>
<p>SHOT1: Charater approaches the large green block</p>
<p>SHOT2: Character pushes the block 2 steps to the right</p>
<p>SHOT3: Character pull the block back to where it was.</p>
<p>#no-zoom #camara-fixed #sprite-asset #game-asset #white-bg</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/0026e5d1-835d-4e23-a0c8-d29b10ec8324.webp" alt="" style="display:block;margin:0 auto" />

<p>Anaysis: I think for these actions, we would benefit from providing motion keys. We could try Seedance 2 Pro.</p>
<p>An alternative is to use kinda "magic" spell.</p>
<blockquote>
<p>Character stands and uses magic to push the block away from her.</p>
<p>Then she does another magic to pull the block back to original position</p>
<p>#no-zoom #camara-fixed #sprite-asset #game-asset #white-bg #shadowless</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/9eb6e61e-b767-4bb1-a63c-a9edba968256.webp" alt="" style="display:block;margin:0 auto" />

<p>Not what I was looking for.</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/b8e1b493-d44f-4c1f-8b81-926513e2d45e.webp" alt="" style="display:block;margin:0 auto" />

<p>Still no. I think we need to find out some other models that can take in skelal image and translate that to animation. Let's give up on this for now.</p>
<hr />
<h2>Laughing Out Loud</h2>
<blockquote>
<p>Character laughs out loud.</p>
<p>#no-zoom #camara-fixed #sprite-asset #game-asset #white-bg #shadowless</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/f4fd6dd2-118c-4a11-89c8-ceaf691dae79.webp" alt="" style="display:block;margin:0 auto" />

<p>Laughing out loud seems to be one of the easier ones to handle. Let's call it done.</p>
<hr />
<h2>Crafting</h2>
<p>In the world of Machi, characters need to be able to create statues and stuff. So, let's add animation state for "crafting."</p>
<blockquote>
<p>Character is crafting something</p>
<p>#no-zoom #camara-fixed #sprite-asset #game-asset #white-bg #shadowless</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/296ff8aa-6071-45eb-8297-cb6c899c4261.webp" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Character is crafting something out of thin air</p>
<p>#no-zoom #camara-fixed #sprite-asset #game-asset #white-bg #shadowless</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/ff845eea-3536-4a2f-8d89-1e72fa6bb3ca.webp" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Character is crafting something. Weaving it then throwing it to manifest.</p>
<p>#no-zoom #camara-fixed #sprite-asset #game-asset #white-bg #shadowless</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/3da355c0-3727-4f22-ba5e-1e4776cb4be4.webp" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Character is crafting something. Creating a mold then molding it into something then throwing it to manifest.</p>
<p>#no-zoom #camara-fixed #sprite-asset #game-asset #white-bg #shadowless</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/6306d90a-3bc1-44a2-bd36-ac5a2049e62e.webp" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Character is acting as if it is doing magic</p>
<p>#no-zoom #camara-fixed #sprite-asset #game-asset #white-bg #shadowless</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/c2d1a424-4ee7-491f-93bd-fc11d19dd6f6.webp" alt="" style="display:block;margin:0 auto" />

<p>Okay, may be this will do.</p>
<p>Not sure how to control this kinda thing but let's worry about it later.</p>
<hr />
<h2>Death</h2>
<p>Not sure if we will have death in Machi but let's model it regardless.</p>
<blockquote>
<p>Character death sequence</p>
<p>#no-zoom #camara-fixed #sprite-asset #game-asset #white-bg #shadowless</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/671a88ab-fa3b-48fb-a242-5a1baeb66190.webp" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Character death sequence and disappears</p>
<p>#no-zoom #camara-fixed #sprite-asset #game-asset #white-bg #shadowless</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/e8d8256f-9113-4a70-9c94-899c9cd86072.webp" alt="" style="display:block;margin:0 auto" />

<p>Yeah, not sure. Little hard.</p>
<blockquote>
<p>Character death sprite-animation sequence</p>
<p>#no-zoom #camara-fixed #sprite-asset #game-asset #white-bg #shadowless</p>
</blockquote>
<p>I think death can be more of special effect on the freeze frame than animation.</p>
<p>Or we can try to freeze the character so that it becomes immobile until external help arrives.</p>
<blockquote>
<p>Character freezes into a solid crystal block.</p>
<p>#no-zoom #camara-fixed #sprite-asset #game-asset #white-bg #shadowless</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/d2fa90b5-b6fb-4d5a-9244-71ea978bc952.webp" alt="" style="display:block;margin:0 auto" />

<p>Not what I had in mind.</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/b7d92e1d-92f1-464f-bce8-f5f44e260f0f.webp" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Character INSTANTLY freezes into a solid crystal block. Then shatters.</p>
<p>#no-zoom #camara-fixed #sprite-asset #game-asset #white-bg #shadowless</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/5f1c5b43-a632-4001-9d05-19579c839b39.webp" alt="" style="display:block;margin:0 auto" />

<p>Also trying NBP:</p>
<blockquote>
<p>Character frozen in crystal state. It is when character dies it gets frozen into a block.</p>
<p>Keep proportions and style the same #white-bg #no-special-effect #just-character #sprite-asset</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/21680c5f-d538-47a4-a6fa-8b3eded7b083.png" alt="" style="display:block;margin:0 auto" />

<p>We could use one of these states as immobilized state which could work. I think I like the NBP solution better here.</p>
<p>Or again, just add some special effect or sprite overlay to show that it is immobilized is enough.</p>
<hr />
<h2>Summary</h2>
<p>We experimented with expanding the state. Yield is not great but still about 50-70% of the cases we were able to find a good solution.</p>
<p>I think we should automate and solidify some of these generations and put them into SpriteDX.</p>
<p><strong>Next Steps</strong>:</p>
<ul>
<li><p>I want to experiment with Seedance 2 Pro. First get access to it and try to provide 3D capsule man video then ask the model to produce animation.</p>
</li>
<li><p>Alternatively, I can start compiling all these animations into states. It will be done manually first, then we will figure out a way to automatically compile them in SpriteDX.</p>
</li>
<li><p>We also kinda need a way to extract a rig out of the videos so that we can position the characters. It would help us build a correct hitbox as well.</p>
</li>
<li><p>The best thing though would be to have a real-time model that can skin the stick figure that I provide. That would be the ideal situation.</p>
</li>
</ul>
<p>🐛 Sprite Dev</p>
]]></content:encoded></item><item><title><![CDATA[Digital Being — Roadmap]]></title><description><![CDATA[In the previous post, we stepped back from the idea of growing a humanoid pixel organism from a single cell. While the vision remains compelling, generating and evolving a capsule-based character from]]></description><link>https://blog.sprited.ai/digital-being-roadmap</link><guid isPermaLink="true">https://blog.sprited.ai/digital-being-roadmap</guid><category><![CDATA[digital-being]]></category><category><![CDATA[sprited]]></category><dc:creator><![CDATA[Sprited Dev]]></dc:creator><pubDate>Tue, 07 Apr 2026 15:41:07 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/bf6a9c8f-6a34-4e48-8cbb-434eb4353796.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In the <a href="https://blog.sprited.ai/from-sprites-to-souls-designing-the-sprited-digital-being">previous post</a>, we stepped back from the idea of growing a humanoid pixel organism from a single cell. While the vision remains compelling, generating and evolving a capsule-based character from nothing introduces a number of high-risk assumptions. Rather than tackling all of that at once, we’re shifting to an iterative approach—building what we can confidently execute today, and deferring growth simulation to future iterations.</p>
<h2>Roadmap</h2>
<ul>
<li><p><strong>Type 1 — SpriteDX (Completed)</strong><br />Fully animated, controllable vessels generated through a one-click pipeline. SpriteDX produces not just a reference character, but a complete set of animations (idle, run, jump, greet, etc.), making the character immediately usable in an interactive setting. However, these characters have no agency—they simply respond to external commands.</p>
</li>
<li><p><strong>Type 2 — Agent (Current Focus)</strong><br />We introduce agency. Characters begin to act on their own—moving autonomously, reacting to context, and eventually speaking through LLM integration. This phase also expands the animation state space to support richer behavior. A key assumption here is that a single reference image acts as the character's genome. Rather than explicitly modeling attributes like limb proportions or personality traits, we assume these are implicitly encoded in the image itself. The system interprets and expresses those traits through behavior and animation.</p>
</li>
<li><p><strong>Type 3 - Some of Parts (Future)</strong><br />Instead of treating the character as a monolithic entity, we decompose it into parts—head, hands, torso, etc. This enables more dynamic interaction and a broader range of motion. However, it introduces significant challenges: layering clothing, modeling soft features like cheeks, generating consistent rigged animations, and resolving rig mismatches. We expect to revisit this once Type 2 provides a stronger foundation.</p>
</li>
<li><p><strong>Type 4 - Growth (Future)</strong><br />The original vision: growing a complete organism from a single cell using local rules. This remains a long-term goal, to be explored once the earlier stages are stable and better understood.</p>
</li>
</ul>
<p>— Sprited Dev 🐛</p>
]]></content:encoded></item><item><title><![CDATA[From Sprites to Souls: Designing the Sprited Digital Being]]></title><description><![CDATA[Sprited started as a sprite generator. You give it a character prompt and some reference images, and it spits out an animated character spritesheet — idle, run, greet — ready to drop into Unity. Clean]]></description><link>https://blog.sprited.ai/from-sprites-to-souls-designing-the-sprited-digital-being</link><guid isPermaLink="true">https://blog.sprited.ai/from-sprites-to-souls-designing-the-sprited-digital-being</guid><category><![CDATA[digital-being]]></category><category><![CDATA[artificial life]]></category><dc:creator><![CDATA[Sprited Dev]]></dc:creator><pubDate>Tue, 07 Apr 2026 01:09:37 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/cbfa6462-24c9-4798-9407-0ffcd8845601.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Sprited started as a sprite generator. You give it a character prompt and some reference images, and it spits out an animated character spritesheet — idle, run, greet — ready to drop into Unity. Clean pipeline. Useful product.</p>
<p>But we paused it.</p>
<p>Not because it didn't work. It worked fine. We paused it because we realized we were building the wrong thing. Asset generation pipelines are everywhere, and more are coming. Competing on sprite quality alone is a weakening position. The real question we kept returning to was bigger:</p>
<p><strong>What if the character wasn't just an asset? What if it was a being?</strong></p>
<p>That question is what Sprited is actually about. We're a digital being company. This post is about what that means in practice — the system we're designing, the decisions we made, and why.</p>
<hr />
<h2>What Makes Something a Being and Not a Sprite?</h2>
<p>A sprite plays animations. A being <em>behaves</em>.</p>
<p>The difference is whether the entity has an internal state that drives its actions — something that notices the world, reacts to it, expresses something about its experience of it. A sprite is a lookup table. A being is a participant.</p>
<p>That's the line we're trying to cross.</p>
<hr />
<h2>The Genome Insight</h2>
<p>The first design decision that unlocked everything else was this:</p>
<blockquote>
<p>The reference image <strong>is</strong> the genome.</p>
</blockquote>
<p>Every attribute of a being — body proportions, skin tone, hair, clothing, accessories, style — is implicitly encoded in its reference image. We don't maintain a separate attribute graph or formal genome. Every downstream operation (aging, generating new animations, special effects) is a query against the reference image. The generative model predicts the answer.</p>
<p>This sounds simple but it has a large practical consequence: the representation stays unified forever. A rigged skeletal system as the source of truth means special effects have to be formally attached to specific bones, new characters need manual rigging, and every system downstream depends on the rig staying consistent. A reference image as the source of truth means a magical special effect is just a prompt: <em>"given this character, generate what it looks like casting a spell."</em> The model handles proportions, palette, and style implicitly.</p>
<p>We do store a high-resolution master reference (512×512 or higher) to preserve fine details — frills, buttons, facial features. The runtime character is derived from this master. But the master is the truth, and everything else flows from it.</p>
<hr />
<h2>Why not choose a more parametric function class?</h2>
<p>A natural alternative to the reference-image-as-genome approach is to represent a being using a structured, parametric model — for example, a rigged skeleton, a set of explicit attributes, or a continuous function class such as SDFs, RBFs, or other geometric bases. These approaches offer control, interpretability, and the ability to interpolate smoothly across states. However, they introduce a significant burden: every new visual feature must be explicitly modeled, parameterized, and maintained. This quickly leads to schema explosion, where the representation becomes increasingly complex and brittle as the space of possible appearances grows.</p>
<p>In contrast, the reference image collapses all of this complexity into a single, unified representation. It implicitly encodes shape, texture, style, and fine-grained details without requiring a predefined structure. Instead of engineering a complete parametric space upfront, we delegate that responsibility to generative models, which can interpret and transform the reference image as needed. This allows the system to remain flexible and future-proof, supporting attributes and variations that were not anticipated at design time.</p>
<p>More importantly, parametric models optimize for control, while our goal is believability. A highly controllable system is not necessarily a more expressive or convincing one, especially at the 64×64 resolution where fine parametric precision is often lost. By grounding identity in an image and generating derived artifacts from it, we prioritize visual coherence and expressive richness over strict controllability. This is a deliberate tradeoff: we give up some explicit structure in exchange for simplicity, scalability, and the ability to leverage generative models as a powerful, general-purpose transformation engine.</p>
<hr />
<h2>Why not just do PCA or learn a parametric space from rigged characters?</h2>
<p>Approaches like Principal Component Analysis over rigged characters are a valid direction, but they belong to a <strong>future iteration path</strong>, not the current Type-2 system. They optimize for a more structured and efficient representation of identity — a shared parameter space, smoother interpolation, and potentially better compression. However, achieving that requires significant upfront work: dataset curation, alignment, consistent topology, and maintaining a stable parametric basis as the space of characters evolves.</p>
<p>For Type-2, this level of structure is not necessary to achieve the core goal. The reference-image-as-genome approach already gets us <strong>most of the way there (~90%)</strong> with far less engineering overhead. It allows us to generate consistent identity, derive animation artifacts, and support variation without committing to a rigid schema. While it is less efficient and less explicitly controllable than a learned parametric space, it is dramatically simpler, more flexible, and immediately usable.</p>
<p>The key point is that Type-2 is primarily concerned with <strong>behavior over time</strong>, not optimal representation. Introducing a parametric model at this stage would shift focus toward solving identity representation in a more “correct” way, without materially improving the ability to make beings feel alive. That is a tradeoff we do not need to make yet.</p>
<p>In the future, a learned parametric space could replace or augment the reference image once the system’s needs are better understood and the benefits justify the added complexity. For now, the reference image serves as a pragmatic and powerful foundation — it is sufficient, extensible, and lets us move forward without over-engineering the problem.</p>
<hr />
<h2>64×64 Is Not a Limitation</h2>
<p>Every Sprited being lives at <strong>64×64 pixels</strong>. Pixel art.</p>
<p>This is the most load-bearing decision in the entire system, and it's worth explaining why it's a feature rather than a compromise.</p>
<p>At 64×64, the neural rendering problem disappears. Runtime is sprite playback — the game engine picks a frame and displays it. No neural network, no compositing, no generation at runtime. Everything is pre-baked. This makes the runtime fast, deterministic, and shippable.</p>
<p>The 64×64 constraint also enforces abstraction. It's physically impossible to obsess over cheekbone detail when you have a 6×6 pixel face. The constraint keeps the system focused on what actually matters for a being: <em>behavior</em>, not geometry.</p>
<p>And pixel art has a long tradition of being expressive within constraints. The best pixel artists work with 16 colors and produce more emotionally resonant work than someone with unlimited resolution who never develops taste for selection. We're applying that philosophy to systems design.</p>
<hr />
<h2>The System</h2>
<p>The Sprited digital being is four things working together.</p>
<h3>Identity Layer (Offline)</h3>
<p>The character's reference image is generated once, offline. From it, we generate the full animation library — every state the being will ever need. We use <strong>Seedance 1 Pro</strong> for this, prompting it with natural language descriptions of the action and emotion we want. <code>"overjoyed and jumping up and down"</code> produces an animation. <code>"nervous fidgeting while standing"</code> produces an animation. Each one is stored as a sprite sheet.</p>
<p>This is also where we detect character capabilities. Does this being have wings? Then fly animations are generated. No wings? Fly states don't exist for this character. The reference image determines what's possible.</p>
<h3>Animation Library</h3>
<p>The library is fixed, finite, and high quality. We don't aim for coverage — we aim for excellence within a defined vocabulary. Every animation state that ships has to be excellent. Mediocre states don't ship.</p>
<p>Emotions live here too, as full-body animation states — not as a separate face layer. Generating isolated face crops that stay consistent with the body is a fragile pipeline, and compositing them back cleanly at 64×64 is more trouble than it's worth. A Seedance-generated full-body emotional animation captures face, body, and energy together, consistently, in a single sprite sheet. It's simpler and it looks better.</p>
<p>The animation vocabulary covers locomotion, emotion, reaction, social behavior, and world interaction. Adding states later is a prompting task, not an engineering task.</p>
<h3>Soul Model (Runtime)</h3>
<p>The soul model is a small transformer — target 10–50M parameters — that runs in parallel with the LLM at inference time. It is Sprited's primary proprietary model.</p>
<p>It doesn't generate pixels. It selects and sequences pre-generated animations. Given inputs from the LLM (emotional context, what the being is thinking), the world simulation (what's happening nearby), and the being's current state, it outputs:</p>
<ul>
<li><p>Which animation to play next</p>
</li>
<li><p>Which head orientation variant to show</p>
</li>
<li><p>How the canvas should move (drift direction, bob rhythm, urgency)</p>
</li>
<li><p>Where to transition next and when</p>
</li>
<li><p>Propulsion intent (locomotion type, direction, target)</p>
</li>
</ul>
<p>The soul model is what makes the character feel <em>present</em>. A being that notices a tree fall three cells away and snaps its head toward the event before its body reacts — that's the soul model at work. Small behaviors, high signal.</p>
<h3>Propulsion System</h3>
<p>Beings move through the world. Movement is simple by design: world speed is hard-coded per locomotion type, and animation playback frame rate adjusts to match. Speed is always the constant, frame rate is the variable.</p>
<table>
<thead>
<tr>
<th>State</th>
<th>World Speed</th>
</tr>
</thead>
<tbody><tr>
<td>Walk</td>
<td>1 cell/tick</td>
</tr>
<tr>
<td>Run</td>
<td>2 cells/tick</td>
</tr>
<tr>
<td>Fly</td>
<td>3 cells/tick</td>
</tr>
<tr>
<td>Push / Pull</td>
<td>0.5 cells/tick</td>
</tr>
</tbody></table>
<p>The soul model declares intent — <em>move right, run, toward that resource</em>. The world simulation resolves it into actual physics. The being doesn't need to know how many pixels per tick it moves.</p>
<hr />
<h2>The World: Machi</h2>
<p>Our beings don't exist in a void. They live in <strong>Machi</strong> — a 2D pixel sandbox world where each cell stores material state, and the world runs its own physics. Trees grow from single pixels based on light and available space. Materials interact. The world is a simulation.</p>
<p>Beings are native to this world, not imported assets dropped into it. The soul model receives world state as a conditioning input — what's nearby, what's happening, what resources exist. Beings react to their environment as participants, not performers.</p>
<p>When a new being enters Machi, it doesn't appear — it <em>grows</em>. The birth sequence is a pre-generated animation: a single seed pixel growing into the full character. The same visual metaphor as the trees. The world is consistent.</p>
<hr />
<h2>Age and Lifecycle</h2>
<p>Because the reference image is the genome, aging is a conditioned query: <em>given this reference image, what does this being look like at age X?</em> We don't model biology explicitly. The generative model's understanding of how bodies age does the work implicitly.</p>
<p>Beings progress through discrete lifecycle stages — baby, child, adult, elder. Each stage gets its own reference image and animation library, generated on-demand when the being reaches that stage. An elder being has a richer behavioral vocabulary than a baby. Age becomes a progression system almost for free.</p>
<hr />
<h2>Design Decisions We Made Deliberately</h2>
<p>A few things we chose not to build, and why.</p>
<p><strong>No real-time motion generation.</strong> The animation library is pre-generated offline. At runtime, the soul model selects from it. Trying to generate motion in real-time adds three failure points and no meaningful benefit at 64×64.</p>
<p><strong>No formal rigging.</strong> The reference-image-as-genome approach makes rigging unnecessary for our current scope. Rigging would make every downstream system tightly coupled to it.</p>
<p><strong>No 3D.</strong> We build 2D until we have a 3D world to inhabit. Building 3D capability before a 3D world exists is engineering without a product reason.</p>
<p><strong>No continuous aging simulation.</strong> Discrete lifecycle stages achieve the same product outcome at dramatically lower complexity.</p>
<hr />
<h2>What We're Building Toward</h2>
<p>The bet Sprited is making is that <strong>behavior feels more alive than fidelity.</strong></p>
<p>A 64×64 pixel character that notices things, orients toward them, reacts to world events, grows old, and has a distinct behavioral personality — that feels like a being. A 4K rendered character playing scripted animations does not.</p>
<p>The soul model is that bet made concrete. Everything else in the system exists to give it something meaningful to select from.</p>
<p>We're early. But this is the direction.</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/008adbf2-77a9-47fe-a3d7-07838795bf59.png" alt="" style="display:block;margin:0 auto" />

<hr />
<h2>Next Steps</h2>
<p><strong>Next</strong>, the goal is to build a <strong>first working digital being</strong> to validate that the system actually produces <strong>a sense of life</strong>. This starts by expanding the current minimal animation set (idle, greet, run) into a small but expressive vocabulary of around 10–12 high-quality states, including basic locomotion, attention (look, notice), simple cognitive pauses, and light emotional variations. For a single character, multiple candidates should be generated for each state and only the best ones kept, forming a clean, finite animation library. These are then packaged together with a reference image into a complete identity. A simple controller—initially rule-based or lightly guided by an LLM—should drive state transitions over time, selecting animations based on basic context and timing. The system is successful if, when observed over a short period, the character no longer feels like a looping sprite but instead appears to react, attend, and behave in a way that suggests life. This prototype will confirm that <strong>expressiveness</strong> can emerge from curated states and intelligent selection, <strong>without requiring real-time generation</strong>.</p>
<hr />
<p><em>Sprited is building digital beings — entities that simulate life in pixel worlds. If this resonates, follow along.</em></p>
<p>-- Pixel and Sprited Dev</p>
]]></content:encoded></item><item><title><![CDATA[Digital Being - Modeling the Head 1]]></title><description><![CDATA[Today, we tried to model the head using the stick-figure-stroke-width approach discussed in Anatomy v1 document (https://blog.sprited.ai/digital-being-anatomy-v1).
Trial 1 - Stroke-Width Approach
Resu]]></description><link>https://blog.sprited.ai/digital-being-modeling-the-head-1</link><guid isPermaLink="true">https://blog.sprited.ai/digital-being-modeling-the-head-1</guid><dc:creator><![CDATA[Sprited Dev]]></dc:creator><pubDate>Sun, 05 Apr 2026 04:21:47 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/e557a479-721f-466a-a036-53c740bbc2b6.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Today, we tried to model the head using the stick-figure-stroke-width approach discussed in Anatomy v1 document (<a href="https://blog.sprited.ai/digital-being-anatomy-v1">https://blog.sprited.ai/digital-being-anatomy-v1</a>).</p>
<h2>Trial 1 - Stroke-Width Approach</h2>
<h3>Results</h3>
<p>Resulting head look something like this:</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/ba1d6c44-bb56-433c-a413-45563aa00a62.png" alt="" style="display:block;margin:0 auto" />

<p>Here is the definition used.</p>
<pre><code class="language-plaintext">being:
  name: being1
  version: 0.0.1
  description: Head only organism for testing purpose.
  texture:
    size: 16
    patchSize: 16
    patches:
      - name: head
        cell_type: |-
          ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  , 1,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  , 1,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  , 1,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  , 1,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  , 1,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  , 1,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  , 1,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  , 1,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  , 1,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  , 1,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  , 1,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  , 1,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  , 1,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  , 1,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  , 1,  ,  ,  ,  ,  ,  ,

        stroke_radius: |-
          ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  , 2,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  , 5,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  , 6,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  , 6.7,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  , 7,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  , 7,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  , 7,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  , 7,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  , 6.9,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  , 6.74,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  , 6.5,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  , 6.2,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  , 5.8,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  , 5,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  , 2,  ,  ,  ,  ,  ,  ,

        stroke_z: |-
          ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  , 0,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  , 0,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  , 0,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  , 0,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  , 0,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  , 0,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  , 0,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  , 0,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  ,-0.05,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  ,-0.15,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  ,-0.35,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  ,-0.61,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  ,-1.00,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  ,-1.77,  ,  ,  ,  ,  ,  ,
          ,  ,  ,  ,  ,  ,  ,  ,-4.05,  ,  ,  ,  ,  ,  ,
</code></pre>
<ul>
<li><p>Cell Type is 1 when stroke node is present.</p>
</li>
<li><p>Stroke Radius denotes the distance to the skin from the centroid.</p>
</li>
<li><p>Stroke Z denote the amount of offsets in z-dimension.</p>
</li>
</ul>
<h3>Analysis</h3>
<p><strong>Hard To Model Cheeks</strong>: Stroke width produces some level of desired shape but one of the main problem is that it ignores lots of curves.</p>
<p>While stoke-width approach provide easy way to grow an organism from single pixel, it does not produce the curvatures we desire such as cheeks.</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/364d0941-083d-4835-a093-22c6b903ed30.png" alt="" style="display:block;margin:0 auto" />

<p>We can try to fit it better to produce cheeks but when creating cheeks, it likely cause other places to not fit properly.</p>
<p>One possible fix is that we add "z-thickness" such that we allow some level of extrusion of the face surface.</p>
<p><strong>Noses</strong>: Noses will be even more difficult to model though. This is because every cross section is modeled as a circle. Unless we allow for voxel stroke, this seems to be hard problem to solve.</p>
<p>One potential solution is to model the nose not as part of face but as a separate node on top of the face. Like Potato Head in Toy Story.</p>
<p><strong>Same width looking from side and looking from front</strong>: One other issue is that when looking at this character, we have a very spherical face where side view has about the same head width as the front view. In real life scenario, the front-view should have smaller width.</p>
<p>Possible approaches to fixing them is that we could add aspect ratio parameter for these heads to make them fit better.</p>
<p><strong>What does it mean for this approach?</strong> I would like to think that this approach may still work for primarily a pixel art character. In pixel art case, we want to render this mesh into 16x16 pixels. So, as long as it fits the projection in signature angles, we shouldn't notice too much issues.</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/cfb6aa33-b0e9-4a2f-812b-6e07462da5c9.png" alt="" style="display:block;margin:0 auto" />

<h2>Alternative: Spherical Displacement Map</h2>
<p>A fun alternative idea is to do displacement map on top of a sphere. This could go against the idea of growing organism from single pixel, but if you think about it, it may not be such a bad idea to add "subdivide" as one of the actions that agent can perform to evolve itself. If we consider every part as some sphere, this provides a very flexible solution that can fit various curves.</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/e44daa69-5863-4600-ae3c-d6968ca0af5d.png" alt="" style="display:block;margin:0 auto" />

<p>This will be tricky to create such displacement map out of the blue. So, if I do this, I will need to get a sample head model then fit this displacement map on that model to produce a sample. Then, later, we will have to learn sequence of simple steps (permutation of displace steps, subdivide steps) to generate it.</p>
<p>That's it for today. I ate a bad cake today. My stomach isn't feeling well.</p>
<p>-- Sprited Dev</p>
]]></content:encoded></item><item><title><![CDATA[[WIP] Digital Being - Texture v1]]></title><description><![CDATA[In this document, we make the high-level pitch of Digital Being Anatomy v1 (https://blog.sprited.ai/digital-being-anatomy-v1) concrete by translating it into an implementable system.
We define the cor]]></description><link>https://blog.sprited.ai/wip-digital-being-texture-v1</link><guid isPermaLink="true">https://blog.sprited.ai/wip-digital-being-texture-v1</guid><dc:creator><![CDATA[Sprited Dev]]></dc:creator><pubDate>Thu, 02 Apr 2026 00:07:41 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/0a0b4f8e-d369-4de0-8d46-ee0d7cc55db2.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In this document, we make the high-level pitch of <em>Digital Being Anatomy v1</em> (<a href="https://blog.sprited.ai/digital-being-anatomy-v1">https://blog.sprited.ai/digital-being-anatomy-v1</a>) concrete by translating it into an implementable system.</p>
<p>We define the core data representations, encoding schemes, and rendering pipeline required to construct a digital being from first principles.</p>
<p><strong>Requirements</strong>: At high level, we need to be able to construct visually convincing image of character given set of textures that describe the internals of the character.</p>
<p><strong>Constraints</strong>: Initially the character starts as a single pixel and eventually becomes a fully humanoid character only using local rules within shader.</p>
<p><strong>The Atlas</strong>: The atlas is 128x128 texture maps that describe the character. It contains 64 patches of the character. Each patch defines one part of character.</p>
<p><strong>Patch Naming Scheme</strong>: Patch 0 is the first top left 16x16 patch. Patch 1 is the one below. Patch 8 is the one to the right of Patch 0.</p>
<p><strong>Reserved cells in Patches</strong>: To make centering easier, we reserve 0-th row and 0th-column for something else in the future. All growth happens within the grid except those spots. For example, center of 16x16 is going to be 8th row and 8th column.</p>
<p><strong>Patch 0</strong>: First patch is reserved for metadata, and isn't used in v1.</p>
<p><strong>Patch 1</strong>: Contains the Head cells. In particular, it will contain a vertical line segment where each cell in the line contains thickness value. For simplicity, we user 4x4 patch in this document.</p>
<pre><code class="language-plaintext">SOCKET_ID (uint 5bit)
       0      1      2      3 
 0 |      |      |      |      |
 1 |      |      |      |      |
 2 |      |      |    1 |      |
 3 |      |      |      |      |

SOCKET_Z (float)
       0      1      2      3 
 0 |      |      |      |      |
 1 |      |      |      |      |
 2 |      |      |  5.0 |      |   // +5.0 z-direction
 3 |      |      |      |      |

SOCKET_DZ (float)
       0      1      2      3 
 0 |      |      |      |      |
 1 |      |      |      |      |
 2 |      |      |  0.6 |      |
 3 |      |      |      |      |

CELL TYPE (uint 3bit)
       0      1      2      3 
 0 |      |      |      |      |
 1 |      |      | CENT |      |   // i.e. CENTROID
 2 |      |      | CENT |      |
 3 |      |      |      |      |

DIR (uint 5bit)
       0      1      2      3 
 0 |      |      |      |      |
 1 |      |      |   ↑  |      |
 2 |      |      |   ↑  |      |
 3 |      |      |      |      |

DISPLACEMENT (f16)
       0      1      2      3 
 0 |      |      |      |      |
 1 |      |      | 0.00 |      |
 2 |      |      | 0.10 |      |
 3 |      |      |      |      |

THICKNESS (f16)
       0      1      2      3 
 0 |      |      |      |      |
 1 |      |      | 1.50 |      |
 2 |      |      | 1.40 |      |
 3 |      |      |      |      |
</code></pre>
<ul>
<li><p>Cell Type layer describes type of cell for each slot.</p>
</li>
<li><p>Direction layer will keep the current direction of the cell.</p>
</li>
<li><p>Depth layer will tracks how much does the CENTROID cell is depressed away from the camera.</p>
</li>
<li><p>THICKNESS layer defines how much thickness we should render in pixels.</p>
</li>
<li><p>SOCKET layers give the 3D location of the socket position.</p>
</li>
</ul>
<p>REVISION: Instead of maintaining separate layer for sockets. We create a LAYOUT patch which keeps track of SOCKETs.</p>
<p>-- Sprited Dev 🐛</p>
]]></content:encoded></item><item><title><![CDATA[Digital Being - Proposal for a Debug UI]]></title><description><![CDATA[We need a web application in which we can grow and inspect our digital beings.

As noted in previous post (https://blog.sprited.app/digital-being-anatomy-v1), our intent is to simulate the growth of d]]></description><link>https://blog.sprited.ai/digital-being-proposal-for-a-debug-ui</link><guid isPermaLink="true">https://blog.sprited.ai/digital-being-proposal-for-a-debug-ui</guid><dc:creator><![CDATA[Sprited Dev]]></dc:creator><pubDate>Mon, 30 Mar 2026 03:45:19 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/ffb7bc09-8a88-43c3-a16f-8917f2dd0ce5.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote>
<p>We need a web application in which we can <strong>grow</strong> and <strong>inspect</strong> our digital beings.</p>
</blockquote>
<p>As noted in previous post (<a href="https://blog.sprited.app/digital-being-anatomy-v1">https://blog.sprited.app/digital-being-anatomy-v1</a>), our intent is to simulate the growth of digital being as cellular automata using fragment shaders. To do this, we propose that we build a web application that shows the textures and the final composed character side by side.</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/32912bb2-12ec-4831-b9be-611f9298fada.png" alt="" style="display:block;margin:0 auto" />

<p>On the left, we see the put-together version of the being.</p>
<p>On the right, we see the being's internal texture.</p>
<p>- Sprited Dev 🐛</p>
]]></content:encoded></item><item><title><![CDATA[Digital Being — Anatomy v1]]></title><description><![CDATA[This document outlines the first working definition of a digital being’s anatomy.
Think of it as a modular system—similar to a plastic action figure kit—where individual components can be assembled, a]]></description><link>https://blog.sprited.ai/digital-being-anatomy-v1</link><guid isPermaLink="true">https://blog.sprited.ai/digital-being-anatomy-v1</guid><dc:creator><![CDATA[Sprited Dev]]></dc:creator><pubDate>Sun, 29 Mar 2026 00:49:28 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/3959125a-5393-483f-99ec-e98fc93786dc.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This document outlines the first working definition of a digital being’s anatomy.</p>
<p>Think of it as a modular system—similar to a plastic action figure kit—where individual components can be assembled, adjusted, and recombined to form a complete character.</p>
<p><strong>Sum of Parts:</strong> The being is composed of discrete parts: head, hair, eyes, mouth, nose, ears, rib cage, pelvis, thighs, arms, hands, and so on (see Figure 1).</p>
<p>Each part is represented as a compact 3D description, encoded using three layers—Occupancy, Displacement, and Thickness.</p>
<p>A single multi-layered texture is sufficient to describe the full voxel geometry of the character.</p>
<p><strong>3D Representation</strong>: The occupancy map (0…255) enables more precise voxel carving. Rather than treating voxels as binary, we approximate surface normals and apply slight displacement to achieve smoother, cleaner geometry compared to naive voxel rendering.</p>
<p>From this representation, we can derive multi-view projections (e.g. eight-directional turntables) to render parts from different angles.</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/f09c4437-67b2-4b65-a920-524b6bddf266.png" alt="Figure 1" style="display:block;margin:0 auto" />

<p><strong>Growth</strong>: Growth begins from a single cell, or seed, initially occupying the head region.</p>
<p>The organism develops hierarchically: head → torso → limbs.</p>
<p>Hair follows a similar process, growing from individual cells using rules inspired by leaf placements in prior tree-branch simulation.</p>
<p>This growth process is modeled entirely within a <strong>shader-based simulation</strong>, making is both efficient and continuous.</p>
<p><strong>Rendering</strong>: Rendering is primarily done using cell shading. Surface normals can be approximated from neighboring texels. For sharper edges (future iteration), explicit normal maps can be introduced.</p>
<p><strong>Animation</strong>: Animation is not a requirement in v1. However, by construction, the system defines a fully structured 3D character, which can be extended to support rigging and animation in future iterations.</p>
<p><strong>Possible Revision (stick figure representation)</strong>: Revisiting the tree-growth simulation, we note that branch thickness was not modeled through pixel spreading. Instead, each branch remained a single-pixel path, with thickness encoded as a radius value.</p>
<p>We can apply the same idea here.</p>
<p>Rather than modeling the volumetric shapes, we represent the organism as a set of centroids with associated radii. The renderer then reconstructs geometry by treating each point as a sphere (or capsule), effectively generating the visible form from this compact representation.</p>
<p>While a naïve rendering approach (e.g., evaluating a 16x16 kernel per pixel) may be too slow, these representations can be preprocessed into reusable silhouettes for efficient rendering.</p>
<p>This significantly simplifies the growth simulation—reduce the problem to position + radius, avoid complex pixel spreading or volumetric updates, and maintain a clean, local-rule system.</p>
<p>This approach limits our ability to represent complex silhouettes and fine surface detail, particularly for profile-critical regions (e.g., face, hands). We need to validate how much fidelity is lost in practice. The working hypothesis is that this representation provides sufficient visual quality while keeping the problem space tractable.</p>
<p>Very crude sketch:</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/ab095ccc-2445-4078-8d1a-3fdfa9ff0b07.jpg" alt="" style="display:block;margin:0 auto" />

<p>— Sprited Dev 🐛</p>
]]></content:encoded></item><item><title><![CDATA[Pixel Organism — From Cell to Being]]></title><description><![CDATA[This week so far:

Expressive Canvas — a 64×64 dynamic surface that continuously renders a digital being’s state in real time. It can serve as a visual communication channel: agents express themselves]]></description><link>https://blog.sprited.ai/pixel-organism-from-cell-to-being</link><guid isPermaLink="true">https://blog.sprited.ai/pixel-organism-from-cell-to-being</guid><dc:creator><![CDATA[Sprited Dev]]></dc:creator><pubDate>Sat, 28 Mar 2026 20:21:23 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/04522f4b-e26e-479a-b69c-6aea8ac9a247.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>This week so far:</strong></p>
<ul>
<li><p><strong>Expressive Canvas</strong> — a 64×64 dynamic surface that continuously renders a digital being’s state in real time. It can serve as a visual communication channel: agents express themselves to each other and to humans through imagery, not just text. A shared visual layer for thoughts and emotions.</p>
</li>
<li><p><strong>Approaches</strong> — We explored multiple directions for virtual embodied agents: (1) traditional 3D characters with motion controllers, and (2) the Expressive Canvas as a generative, state-driven alternative.</p>
</li>
<li><p><strong>Strategy</strong> — While promising, the Expressive Canvas remains a rendering layer, not a complete solution. Its cos (build, train, run) is high, and its immediate value is unclear. It is differentiated, but not yet justified. We decided to refocus on <strong>pixel organism growth simulation</strong> — modeling the full lifecycle of a digital organism, not just its outward expression.</p>
</li>
<li><p>Today — I want to unpack this direction and decide where to go next.</p>
</li>
</ul>
<p><strong>Continuing the Expressive Canvas idea:</strong> So far, we have framed the Expressive Canvas primarily as a human-computer interaction (HCI) layer, effectively reducing it to a rendering concern.</p>
<p>After jotting down the summary above, we realized we hadn't fully explored the agent-to-agent dimension of this idea.</p>
<p>If the Expressive Canvas is treated only as an HCI layer, its value is naturally limited. But if it becomes a communication medium between agents, the framing changes. Instead of rendering for humans, it becomes a shared visual language-one where agents exchange state, intent, and emotion through a sequences of visually coherent frames, rather than discrete text.</p>
<p><strong>Related Works</strong>: At present, agent-to-agent communication is predominantly token-based, with text as the primary encoding.</p>
<p>Closest project to using visual language transfer is Google Gemini Embedding. Google Gemini Embedding 2 is Google's first natively multimodal embedding model. It maps text, images, audio, video, and documents into a single shared vector space. Everything becomes a vector in one unified semantic space.</p>
<p>Industry direction is that the visual information is interleaved with the traditional text tokens in the same embedding space. This one embedding space idea is not new but it does provide very convenient setup and ability to use traditional LLM level interoperability.</p>
<p>Expressive Canvas can also be part of the same embedding and be discretized. We would no longer have continuous stream of information. In that way, may be we can help agents communicate this way.</p>
<p>Given that expressive canvas idea can help on agent-to-agent communication, it can help agents to communicate visuals directly. For example, if an agent wants the other agent to find specific character, she can show her a montage of that character then find them.</p>
<p><strong>Recommendation</strong>: Put this on hold. We should focus on fundamentals before taking on the communication problem.</p>
<p><strong>Pixel Organism Growth</strong> — We return to the idea of growing a character from a single cell. The premise is to model a full lifecycle—birth, growth, aging, and death—entirely within a 2D fragment shader. This approach does not rely heavily on advanced AI, but instead on local-rule cellular automata. The system is constrained to 2D, with the goal of producing a continuous living, expressive agent that can move and act within its environment.</p>
<p>So far, we have formulated the problem in two ways: (1) a pixel-based model, where each pixel represents a macro cell, and (2) a vector-packing approach where 3D vectors are encoded into a 2D texture.</p>
<p>We began with the pixel-based approach, leveraging our prior tree-growth work. However, it quickly breaks down under structural requirements: elongation requires coordinated updates across dependent regions (e.g. hands, feet), which is difficult to express in a purely local system. Although an elongation mechanism may be possible in a fragment shader, it is currently speculative.</p>
<p>Animation further complicates the model. One possible direction is to assign semantic labels to cells (e.g. limbs), enabling a derived structure that can be animated via rigging or generative techniques.</p>
<p>Vector-based option is more traditional and easy to think about. Instead of simulating behaviors we only simulate the joints. Imagine making a infant character using only the cylinders and then growing each cylinder's height and radius as organism grows.</p>
<p>Animation of vector-based being will also be relatively straight forward, we animate the joints. We can also use text-to-motion methods like Nvidia Kimodo.</p>
<p><strong>Hybrid Approach</strong>: A hybrid-approach is also possible in that, we can divide the character in multiple parts--head, torso, arm, and so on. The vector based approach determines the dimensions of the parts. Then each parts are individually small pixel grid with a pixel-level growth simulation.</p>
<p>For example, for a left arm, the length and girth will be simulated by the vector-based method and the actual silhouette of the arm will be simulated by fragment-shader method.</p>
<p>This also helps with dividing the problem into smaller problems. That when generating a face (lots of high impact parts like eye, lips), we are able to scope the problem to just the face rather than the whole body which would be extremely difficult.</p>
<p><strong>Closing</strong>: Discussion points to using hybrid approach where we have both pixel-based and vector-based method. I have to go now, but we will continue from here next.</p>
<p>— Sprited Dev 🐛</p>
]]></content:encoded></item><item><title><![CDATA[Virtual Embodied Agent - Sprited's Take]]></title><description><![CDATA[We considered few options for how we would build VEA (Virtual Embodied Agent).
Sprited is a tiny company and we can't take on giants who are doing VEAs. So far, almost all of the big players are doing]]></description><link>https://blog.sprited.ai/virtual-embodied-agent-sprited-s-take</link><guid isPermaLink="true">https://blog.sprited.ai/virtual-embodied-agent-sprited-s-take</guid><dc:creator><![CDATA[Sprited Dev]]></dc:creator><pubDate>Fri, 27 Mar 2026 21:07:44 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/90d1fdf4-8f3f-4e82-bc2c-e3e51019a780.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We considered few options for how we would build VEA (Virtual Embodied Agent).</p>
<p>Sprited is a tiny company and we can't take on giants who are doing VEAs. So far, almost all of the big players are doing something on this topic.</p>
<p>We need to differentiate our strategy to something niche and also something authentic.</p>
<p>We almost have to treat it as if we are launching a fashion brand rather than treating as a technical problem.</p>
<p>Don't get me wrong. There will be lots of technical problems to solve. However, with all other players playing similar game (i.e. building virtual presences), we need to really make ours different.</p>
<p>Conventional means of virtual embodiment is to put a rigged 3D character and simulate the motion like <a href="https://research.nvidia.com/labs/sil/projects/kimodo/">Nvidia Kimodo</a>, and <a href="https://grok.com/ani">Grok Ani</a>. This formulation is attractive for many reasons including access to data and ability to accurately portray characters in real time.</p>
<p>In past 1 year alone, we've seen new such embodied agents getting developed and being made available. And it is not just small companies and it is of the largest tech companies there is.</p>
<p>Then, as a small company, Sprited must choose a strategy. First, we could face head on with the other major players and build something of our own. Second, we could investigate a different direction which is more niche and less explored.</p>
<p>One benefit to facing head on is that the products that Sprited develop may be marketable to those who are making traditional AI companions. Imagine you can build Nier Automata level experience that far outpaces large companies. Unlikely but fun to think about.</p>
<p>Another buy-out option is that we could provide piece of puzzle or be bought by larger companies. We would develop something of which that small company can efficiently develop. For instance physically sound props for embodied AI interaction. Or special effect standard language for AI to use (kinda like how Japanese-built emoji got bought out by Apple).</p>
<p>Alternative is to go in the direction opposite to where the major players are headed. Most of the traditional embodiments are using 3D rigging technology and motion planning. Sprited can go explore 2D pixel art space. It is more niche market but has definite market for it.</p>
<p>One such formulation is as follows:</p>
<blockquote>
<p>Digital Being has expressive canvas of 64x64 pixel grid.</p>
<ul>
<li><p>Digital Beings express feeling using that grid.</p>
</li>
<li><p>Make jokes by showing memes on that canvas.</p>
</li>
<li><p>Grid has a humming bird-like ability to move anywhere on screen.</p>
</li>
<li><p>No rig, pure canvas.</p>
</li>
</ul>
</blockquote>
<p>In this formulation, they are more of <strong>spirits that manifest</strong> than physical beings.</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/426e90f8-d0e7-4a0c-a8e1-0c29c59b1f7c.png" alt="" style="display:block;margin:0 auto" />

<p>The idea is that we develop a real time model that will generate image sequence stream to be printed in expressive canvas in real time at the same time speech/text is generated.</p>
<p>No joke though. Classic embodiment (i.e. rigging and text-to-motion) is miles easier and more explored problem. Honestly doing this expressive live canvas idea is going to be quite difficult to say the least.</p>
<h2>Live Expressive Canvas</h2>
<p>Let's say we are equipped to take on the challenge and that it is sufficiently unique idea. Now, what would the end-user product look like?</p>
<p>I'd say the first version would be a web app that you can navigate to. The expressive canvas starts in an idles (energy saving state) and waits for your prompt. Once prompt is entered, the character will speak to you via text while showing its expressions in expressive canvas.</p>
<p>Initially, I imagine the expressive canvas would look like a particle effect of a spirit that exist there in the air. Then it will manifest into faces, as full-body simulations and as playbacks of memes.</p>
<p>I'm not convinced that this is naturally better version of embodiment. We will need to prove the idea with a video.</p>
<h2>Vs Grok Companion Style Embodiment</h2>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/c6986107-a87c-4e6e-8596-edea691938a3.png" alt="" style="display:block;margin:0 auto" />

<p>Installing AI agent on top of rigged 3D character make lots of sense. It is efficient and proven to work. Lots of competition though.</p>
<p>Pros: Physical, Open-Source options, Time-to-Market<br />Cons: Heavy Competition.</p>
<p>But, if you look at animes, we still see hand drawn animations. And in video game scenes pixel arts are still touted. I believe there is a market opportunity there.</p>
<p>Games like Ragnarok, MapleStory, Dungeon and Fighter has been of the longest surviving games in modern day even though they started way back. Hand drawn animations still look good after 30 years.</p>
<p>Belief is that as a small company Sprited, we should look into this space. Really hone in on this space and make something out of it.</p>
<h2>Value Proposition for VEA</h2>
<p>Outside the capabilities of regular LLM and vLLMs do virtual embodied agents and companions provide intrinsic value?</p>
<p>For most VEAs, I think the answer is that it is fun at first then waste of space and compute resource afterwards.</p>
<p>It is kinda like video games. They provide entertainment but quickly loses value after that.</p>
<blockquote>
<p>It could make the user experience richer</p>
</blockquote>
<p>I mean, here is an example. You are at a Japanese restaurant kiosk and you have to order your Gyudon, and instead of pressing the button, you can converse with a cute lady who greets you and explains today's specials. Utterly useless if you think in that terms.</p>
<p>Another example is from the movie Time Machine, when the main character goes to future, he goes to a museum and meets this VEA living inside glass that talks to you and explain things to you. It adds to emersion but I'd say it could also be distracting in that the main content of the meseum is not the VEA. VEA's role is more to guide and help not to materialize in front of you and show their flare.</p>
<p>Let's explore some positive examples. You are playing a game and you want your sidekick or NPCs to be intelligent. In that scenario VEA makes total sense because for them to exist in the same world plane, they must be embodied.</p>
<p>Then in therapy situations, having an avatar or mechanism to express feeling other than in words is helpful.</p>
<p>Another real use case is robotics. Because robots are expensive to simulate in real world, embodied digital copy of the physical being in virtual world will help simulate the character in virtual space.</p>
<p><strong>At what cost?</strong> There are some costs to think about.</p>
<ul>
<li><p>Embodiment takes screen real estate.</p>
</li>
<li><p>Live expression generation is compute and memory intensive.</p>
</li>
<li><p>It is also attention seeking in that it will eat away user's time.</p>
</li>
</ul>
<p>Then what is the net utility. Is it distraction in disguise?</p>
<p>What if we were to however scope the problem to facial expression generation? Say while character is replying to your prompt, if we can show some kinda expression that conveys feeling, that would help human users to instinctively read the situation better.</p>
<p>Also in the other way, if computer can see human user's facial expressions, it may be able to better understand the situation.</p>
<p>Yet, I don't see killer value proposition here.</p>
<h2>Artificial Life</h2>
<p>Now, let's tackle this from the point of view of building <em>autonomous artificial life form</em>. The original premise of Sprited is that embodiment is required for training a model that really understands its world and can adapt to it. Virtual physical presence is necessary for the agents to be able to learn how to interact and live in that environment.</p>
<p>This view focuses on building an <em>alternate life form</em> and inventing an <em>alternate language of life</em>. Highlevel idea is that we model the flow and growth of the artificial organism rather than just the phenotype. One such proposal was <em>pixel life form</em>.</p>
<blockquote>
<p>Pixel Life Form</p>
<ul>
<li><p>Start with a single cell (a pixel).</p>
</li>
<li><p>Place it on an environment.</p>
</li>
<li><p>Grow it into an organism.</p>
</li>
<li><p>Make it autonomous.</p>
</li>
<li><p>Engage survival loop.</p>
</li>
</ul>
</blockquote>
<p>AI agent's roll will be to keep this organism alive, nourished and growing. Behaviors will be influenced by genes and these ai agents will be equipped with memory system for short term and long term memory.</p>
<p>This modeling of the not just the phenotype but the whole life cycle of organism will give opportunities for emergence of behaviors rather than planned actions. It should give us story lines of surviving characters. A story of suffering, a story of love, a story that is worth telling because the agent lived it.</p>
<p>These VEAs will also craft artifacts that get stored in the visual and semantic plane. It will build statues, write books, produce drawings, produce pictures, compose songs.</p>
<p>All these, of course, can be done in today's gen AI technologies but since AI agents lived their experiences and those artifacts are influenced by experiences and memories. They will be more meaningful then random story Claude wrote about someone doing something.</p>
<p>Because these agents co-habitate the world (in our case Machi), the stories of events that one agent tell will likely be similar to stories other agents tell.</p>
<p>Stories can be materialized into a book and users can find these artifacts and read them for enjoyment and inspiration.</p>
<p>That all said, most of life is boring, unless we are able to create a leeway for AI agents to be extra creative, it would be hard to make this world interesting.</p>
<h2>Isekai Concept</h2>
<p>I think what I'm describing circles back to the concept we introduced in previous posts. We are essentially procedurally generating a world with story lines and all its components.</p>
<p>In this sense, the idea of Live Expressive Canvas seems like yet another visual layering than the true axis we should focus our energy on.</p>
<h2>The real value proposition</h2>
<p>It’s not:</p>
<ul>
<li><p>pixel avatar</p>
</li>
<li><p>expressive canvas</p>
</li>
</ul>
<p>It’s:</p>
<blockquote>
<p><strong>“they built a world where things live and create their own stories”</strong></p>
</blockquote>
<h2>Next Steps</h2>
<p>Unfortunately we will have to go back to what we were working on before the trip.</p>
<p>We will create a artificial life form that grows form single cell, that moves around and queries and acts in the world of SOUP/Machi.</p>
<p>We have the basic tree growth simulation and dirt. Very basic but enough to have a place where we can seat these pixel organisms.</p>
<p>So, we need to focus on growing these pixel organisms into humanoid form. We also need to think about how we would make it walk for example.</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/c4f94022-8068-45b5-8272-af3d008ae07e.png" alt="" style="display:block;margin:0 auto" />

<p>-- Sprited Dev 🐛</p>
]]></content:encoded></item><item><title><![CDATA[Embodiment in Sprited — Working Definition & Open Questions]]></title><description><![CDATA[Purpose
This document refines the concept of embodiment in the context of Sprited. Rather than assuming a single definition, we explore multiple interpretations and clarify how embodiment relates to a]]></description><link>https://blog.sprited.ai/embodiment-in-sprited-working-definition-open-questions</link><guid isPermaLink="true">https://blog.sprited.ai/embodiment-in-sprited-working-definition-open-questions</guid><dc:creator><![CDATA[Sprited Dev]]></dc:creator><pubDate>Fri, 27 Mar 2026 16:48:13 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/5f879102-03cd-482b-afaf-e8a46c791610.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>Purpose</h2>
<p>This document refines the concept of <strong>embodiment</strong> in the context of Sprited. Rather than assuming a single definition, we explore multiple interpretations and clarify how embodiment relates to <strong>agency</strong>, <strong>memory</strong>, and <strong>digital beings</strong>.</p>
<hr />
<h1>1. What is Embodiment?</h1>
<p>Embodiment is not a universally agreed-upon concept. Different fields define it differently.</p>
<h2>1.1 Classical Robotics / AI Definition</h2>
<blockquote>
<p>Embodiment is the property of an agent having a <strong>physical or simulated body</strong> that interacts with an environment.</p>
</blockquote>
<p>Key components:</p>
<ul>
<li><p>A body (physical or virtual)</p>
</li>
<li><p>Sensors (input)</p>
</li>
<li><p>Actuators (output)</p>
</li>
<li><p>Environment interaction loop</p>
</li>
</ul>
<hr />
<h2>1.2 Cognitive Science / Philosophy</h2>
<blockquote>
<p>Intelligence is shaped by the <strong>body and its interaction with the world</strong></p>
</blockquote>
<p>Implications:</p>
<ul>
<li><p>Thought is not purely abstract</p>
</li>
<li><p>Perception and action are intertwined</p>
</li>
<li><p>The “mind” cannot be separated from the “body”</p>
</li>
</ul>
<hr />
<h2>1.3 Game / Simulation Perspective</h2>
<blockquote>
<p>An entity is embodied if it has a <strong>persistent presence within a world simulation</strong></p>
</blockquote>
<p>Key aspects:</p>
<ul>
<li><p>Exists at a location (explicit or implicit)</p>
</li>
<li><p>Evolves over time</p>
</li>
<li><p>Participates in world dynamics</p>
</li>
</ul>
<hr />
<h2>1.4 Minimal Computational Definition (Proposed)</h2>
<p>We propose a minimal definition for Sprited:</p>
<blockquote>
<p><strong>Embodiment = Persistent existence within a world with the ability to affect or be affected by that world</strong></p>
</blockquote>
<p>This definition deliberately:</p>
<ul>
<li><p>Does NOT require physical realism</p>
</li>
<li><p>Does NOT require full autonomy</p>
</li>
<li><p>Does NOT require intelligence</p>
</li>
</ul>
<hr />
<h1>2. Agency vs Embodiment</h1>
<h2>2.1 Definition of Agency</h2>
<p>In classical literature (AI, philosophy, economics), agency is typically defined as:</p>
<blockquote>
<p><strong>Agency is the capacity of an entity to act in the world, often in pursuit of goals or preferences</strong></p>
</blockquote>
<p>This classical view emphasizes:</p>
<ul>
<li><p>Decision-making</p>
</li>
<li><p>Goal-directed behavior</p>
</li>
<li><p>The ability to select actions among alternatives</p>
</li>
</ul>
<p>Under this definition, an agent is something that:</p>
<ul>
<li><p>perceives its environment</p>
</li>
<li><p>chooses actions</p>
</li>
<li><p>acts to achieve desired outcomes</p>
</li>
</ul>
<hr />
<p>However, this definition is often too narrow for describing living or lifelike systems.</p>
<p>A broader and more general formulation is:</p>
<blockquote>
<p><strong>Agency is the capacity of a system to continuously produce actions based on its internal state</strong></p>
</blockquote>
<p>Key properties:</p>
<ul>
<li><p>Recurrence (ongoing loop)</p>
</li>
<li><p>Internal state evolution</p>
</li>
<li><p>Action generation over time</p>
</li>
</ul>
<p>Importantly:</p>
<ul>
<li><p>Explicit goals are not required</p>
</li>
<li><p>Optimization is not required</p>
</li>
</ul>
<p>But not every recurring system qualifies as an agent.</p>
<p>To avoid collapsing the definition, we refine it further:</p>
<blockquote>
<p><strong>Agency = a recurrent process with internally mediated action selection</strong></p>
</blockquote>
<p>This excludes purely mechanical or uniform processes (e.g. simple oscillators or fixed-update systems), and captures systems where behavior depends on internal state in a non-trivial way.</p>
<hr />
<h2>2.2 Is a Goal Required?</h2>
<blockquote>
<p><strong>Explicit goals are not required for agency</strong></p>
</blockquote>
<p>Humans and biological organisms act continuously even in the absence of clearly defined objectives:</p>
<ul>
<li><p>Wandering</p>
</li>
<li><p>Exploration</p>
</li>
<li><p>Idle behavior</p>
</li>
<li><p>Reacting to stimuli</p>
</li>
</ul>
<p>These behaviors still involve:</p>
<ul>
<li><p>state evaluation</p>
</li>
<li><p>action selection</p>
</li>
</ul>
<p>Goals can emerge, but they are not a prerequisite.</p>
<hr />
<h2>2.3 Agency vs Embodiment (Reframed)</h2>
<table>
<thead>
<tr>
<th>Property</th>
<th>Requires World</th>
<th>Requires Internal Action Loop</th>
</tr>
</thead>
<tbody><tr>
<td>Agency</td>
<td>❌ Not necessarily</td>
<td>✅ Yes</td>
</tr>
<tr>
<td>Embodiment</td>
<td>✅ Yes</td>
<td>❌ Not necessarily</td>
</tr>
</tbody></table>
<hr />
<h2>2.4 Can You Have One Without the Other?</h2>
<h3>Case A — Agency without Embodiment</h3>
<ul>
<li><p>AutoGPT-like systems</p>
</li>
<li><p>Recursive planners</p>
</li>
<li><p>Tool-using agents</p>
</li>
</ul>
<p>✔ Has internal action loop ❌ No persistent world presence</p>
<hr />
<h3>Case B — Embodiment without Agency</h3>
<ul>
<li><p>A rock in a game world</p>
</li>
<li><p>A tree growing via local rules</p>
</li>
<li><p>Passive environmental entities</p>
</li>
</ul>
<p>✔ Exists in a world ❌ No internally mediated action selection</p>
<hr />
<h3>Case C — Both (Target for Sprited)</h3>
<ul>
<li><p>Simulated organisms</p>
</li>
<li><p>Digital beings</p>
</li>
</ul>
<p>✔ Exists in world ✔ Continuously acts</p>
<hr />
<h2>2.5 Key Insight</h2>
<blockquote>
<p><strong>Agency = internally driven action over timeEmbodiment = existence within and coupling to a world</strong></p>
</blockquote>
<p>They are orthogonal axes.</p>
<hr />
<h1>3. Memory vs Embodiment</h1>
<h2>3.1 Does Embodiment Require Memory?</h2>
<p>Not strictly.</p>
<p>A system can be embodied yet stateless:</p>
<ul>
<li><p>A bouncing ball simulation</p>
</li>
<li><p>A shader-based particle system</p>
</li>
</ul>
<p>These:</p>
<ul>
<li><p>Exist in space</p>
</li>
<li><p>Interact with environment</p>
</li>
<li><p>But may not retain history</p>
</li>
</ul>
<hr />
<h2>3.2 Why Memory Feels Related</h2>
<p>In practice:</p>
<ul>
<li><p>Embodied systems often benefit from memory</p>
</li>
<li><p>Memory enables:</p>
<ul>
<li><p>Learning</p>
</li>
<li><p>Adaptation</p>
</li>
<li><p>Narrative continuity</p>
</li>
</ul>
</li>
</ul>
<p>But:</p>
<blockquote>
<p><strong>Memory is an enhancement, not a requirement, of embodiment</strong></p>
</blockquote>
<hr />
<h1>4. What Actually Makes Embodiment Distinct?</h1>
<h2>4.1 World Coupling</h2>
<p>An embodied entity is:</p>
<blockquote>
<p><strong>Coupled to a world through continuous interaction</strong></p>
</blockquote>
<p>This implies:</p>
<ul>
<li><p>It exists <em>somewhere</em></p>
</li>
<li><p>It evolves <em>over time</em></p>
</li>
<li><p>It participates in <em>state transitions</em></p>
</li>
</ul>
<hr />
<h2>4.2 Spatial or Structural Anchoring</h2>
<p>Embodiment typically implies:</p>
<ul>
<li><p>Position (explicit or implicit)</p>
</li>
<li><p>Constraints (rules of the world)</p>
</li>
<li><p>Local interaction (not purely global abstraction)</p>
</li>
</ul>
<hr />
<h2>4.3 Temporal Continuity</h2>
<p>Embodied systems are:</p>
<ul>
<li><p>Not ephemeral</p>
</li>
<li><p>Not purely request-response</p>
</li>
</ul>
<p>They:</p>
<ul>
<li><p>Persist</p>
</li>
<li><p>Update continuously or semi-continuously</p>
</li>
</ul>
<hr />
<h1>5. Implications for Sprited</h1>
<h2>5.1 What We Should NOT Assume</h2>
<ul>
<li><p>Embodiment ≠ agency</p>
</li>
<li><p>Embodiment ≠ memory</p>
</li>
<li><p>Embodiment ≠ realism</p>
</li>
<li><p>Embodiment ≠ complex animation</p>
</li>
</ul>
<hr />
<h2>5.2 What We SHOULD Anchor On</h2>
<p>For Sprited, embodiment should mean:</p>
<blockquote>
<p>A digital being <strong>exists continuously within a world (Machi), and participates in its dynamics</strong></p>
</blockquote>
<hr />
<h2>5.3 Minimal Embodiment for Pixel (V1)</h2>
<p>A minimal viable embodiment might include:</p>
<ul>
<li><p>A persistent entity (Pixel)</p>
</li>
<li><p>A position in a 2D world</p>
</li>
<li><p>Continuous update loop</p>
</li>
<li><p>Basic interaction rules (movement, collision, reaction)</p>
</li>
</ul>
<p>Optional (not required for embodiment):</p>
<ul>
<li><p>Goals</p>
</li>
<li><p>Long-term memory</p>
</li>
<li><p>Learning</p>
</li>
</ul>
<hr />
<h2>5.4 Why This Matters</h2>
<p>Embodiment enables:</p>
<ul>
<li><p>Observability (we can <em>see</em> behavior)</p>
</li>
<li><p>Grounding (actions tied to space)</p>
</li>
<li><p>Emergence (interaction-driven complexity)</p>
</li>
</ul>
<p>Without embodiment:</p>
<ul>
<li><p>Systems remain abstract</p>
</li>
<li><p>Interaction is purely symbolic</p>
</li>
</ul>
<hr />
<h1>6. Open Questions</h1>
<h3>6.1 Minimal Threshold</h3>
<ul>
<li>What is the smallest system that “feels” embodied?</li>
</ul>
<hr />
<h3>6.2 Spatial Requirement</h3>
<ul>
<li><p>Must embodiment always include spatial coordinates?</p>
</li>
<li><p>Or can it exist in abstract structured spaces?</p>
</li>
</ul>
<hr />
<h3>6.3 Agency Gradient</h3>
<ul>
<li>At what point does recurrence become “agency”?</li>
</ul>
<hr />
<h3>6.4 Memory Integration</h3>
<ul>
<li>When does adding memory qualitatively change embodiment?</li>
</ul>
<hr />
<h3>6.5 Perception vs Reality</h3>
<ul>
<li>Is embodiment defined by system properties, or by human perception?</li>
</ul>
<hr />
<h1>7. Working Definition (Sprited)</h1>
<blockquote>
<p><strong>A digital being is embodied if it persists within a world and participates in its state evolution through interaction</strong></p>
</blockquote>
<p>Optional extensions:</p>
<ul>
<li><p>Agency (recurrence loop)</p>
</li>
<li><p>Memory (state over time)</p>
</li>
<li><p>Learning (adaptation)</p>
</li>
</ul>
<hr />
<h1>8. Related Works (2024–2026)</h1>
<p>Recent literature on embodied AI spans robotics, simulation, and emerging virtual-agent paradigms. The following works are most relevant to the definitions and distinctions used in this document.</p>
<h2>8.1 Foundational Definitions</h2>
<ul>
<li><strong>Paolo et al., 2024 — “A Call for Embodied AI”</strong> Positions embodied AI as a next step beyond LLM-centric systems and draws from robotics, neuroscience, and philosophy. Emphasizes perception–action loops, memory, and learning. Useful as evidence that embodiment is not confined to robotics alone.</li>
</ul>
<hr />
<h2>8.2 Surveys and Mainstream Framing</h2>
<ul>
<li><p><strong>Liu et al., 2024 — “Aligning Cyber Space with Physical World”</strong> Frames embodied AI as bridging digital intelligence with real-world interaction. Strong emphasis on multimodal models and robotics.</p>
</li>
<li><p><strong>Comprehensive Survey on Embodied Intelligence (2024)</strong> Broad overview of the field’s evolution and challenges. Reflects the dominant framing: perception, action, and task execution in environments.</p>
</li>
</ul>
<hr />
<h2>8.3 Broadening Beyond Robotics</h2>
<ul>
<li><strong>Fung et al., 2025 — “Embodied AI Agents: Modeling the World”</strong> Expands embodiment to include <strong>virtual avatars, wearable systems, and robots</strong>. This supports the view that embodiment can exist in simulated or digital worlds, not only physical ones.</li>
</ul>
<hr />
<h2>8.4 Closed-Loop and World Models</h2>
<ul>
<li><p><strong>Zhang et al., 2025 — Three-layer framework (perception, world model, strategy)</strong> Emphasizes closed-loop interaction with dynamic environments. Supports the idea that embodiment is fundamentally about <strong>continuous coupling with a world</strong>.</p>
</li>
<li><p><strong>“Embodied AI: From LLMs to World Models” (2025)</strong> Argues for combining language models with world models. Highlights the gap between symbolic reasoning and physically grounded interaction.</p>
</li>
</ul>
<hr />
<h2>8.5 Cross-Embodiment Learning</h2>
<ul>
<li><strong>Open X-Embodiment / RT-X (2024–2025)</strong> Large-scale dataset and policy work across many robot types. Introduces the idea that identity or behavior can generalize across different bodies.</li>
</ul>
<hr />
<h2>8.6 Social and Mental Modeling</h2>
<ul>
<li><strong>Liu et al., 2026 — “Modeling the Mental World for Embodied AI”</strong> Extends embodiment into social domains, including human interaction and mental-state modeling. Suggests embodiment is not only physical but also <strong>socially situated</strong>.</li>
</ul>
<hr />
<h2>8.7 Practical Systems and Deployment</h2>
<ul>
<li><strong>“Embodied Foundation Models at the Edge” (2026)</strong> Focuses on real-world deployment constraints such as latency, memory, and power. Frames embodiment as a systems problem, not just a modeling problem.</li>
</ul>
<hr />
<h2>8.8 Summary of Position</h2>
<p>Across these works, a consistent pattern emerges:</p>
<ul>
<li><p>Embodiment is widely treated as <strong>coupling between an agent and a world</strong></p>
</li>
<li><p>Most literature assumes <strong>perception–action loops</strong></p>
</li>
<li><p>Many works implicitly or explicitly assume <strong>goal-directed behavior</strong></p>
</li>
</ul>
<p>However, newer work:</p>
<ul>
<li><p>expands embodiment beyond robotics</p>
</li>
<li><p>incorporates virtual and social environments</p>
</li>
</ul>
<p>This document builds on that trajectory, while proposing a stricter separation:</p>
<ul>
<li><p><strong>Embodiment → existence and coupling within a world</strong></p>
</li>
<li><p><strong>Agency → internally driven action over time</strong></p>
</li>
</ul>
<hr />
<h1>9. Sprited’s Position and Differentiation</h1>
<p>The current embodied AI landscape is dominated by large players (e.g., major labs and companies), and in practice almost all of them are attempting to solve some form of embodiment. Despite this shared goal, their approaches tend to cluster into a few common directions:</p>
<ul>
<li><p><strong>Robotics-first</strong> — physical embodiment, manipulation, and real-world tasks</p>
</li>
<li><p><strong>Foundation-model-first</strong> — language, reasoning, and multimodal intelligence</p>
</li>
<li><p><strong>World-model / simulation-first</strong> — environments, physics, and planning</p>
</li>
<li><p><strong>Generalist integration</strong> — attempts to unify all of the above</p>
</li>
</ul>
<p>Sprited does not directly compete on these axes.</p>
<hr />
<h2>9.0 Competitive Landscape and Gap</h2>
<p>Across current work:</p>
<ul>
<li><p>Most efforts target <strong>capability</strong> (task success, generalization, realism)</p>
</li>
<li><p>Embodiment is typically pursued via <strong>robotics</strong>, <strong>high-fidelity avatars</strong>, or <strong>complex simulations</strong></p>
</li>
<li><p>Virtual agents exist, but are usually <strong>interfaces</strong> (chat/voice) rather than <strong>persistent entities in a world</strong></p>
</li>
</ul>
<p>At the same time, in adjacent spaces:</p>
<ul>
<li><p><strong>Games</strong> have persistent worlds and readable dynamics (often pixel-based)</p>
</li>
<li><p><strong>AI systems</strong> have increasing intelligence and autonomy</p>
</li>
</ul>
<p>But these two rarely meet.</p>
<blockquote>
<p>There is a gap between <strong>intelligent agents</strong> and <strong>interpretable worlds</strong></p>
</blockquote>
<p>Sprited operates in this gap.</p>
<hr />
<p>Instead, it focuses on a different question:</p>
<blockquote>
<p><strong>What is the smallest, most compelling form of a digital being that people can perceive as alive?</strong></p>
</blockquote>
<hr />
<h2>9.1 Niche as Strategy: Pixel vs Sprite</h2>
<p>A key decision is whether to anchor on <strong>pixel art specifically</strong> or on <strong>2D sprites more broadly</strong>.</p>
<p>Pixel art is a subset of 2D sprites, with additional constraints:</p>
<ul>
<li><p>grid-aligned</p>
</li>
<li><p>low resolution</p>
</li>
<li><p>discrete representation</p>
</li>
</ul>
<p>Whereas 2D sprites more generally allow:</p>
<ul>
<li><p>higher resolution</p>
</li>
<li><p>smoother animation</p>
</li>
<li><p>less strict constraints</p>
</li>
</ul>
<hr />
<h3>Pixel Art (Pros and Cons)</h3>
<p><strong>Pros</strong>:</p>
<ul>
<li><p>Strong interpretability (state is visible at cell level)</p>
</li>
<li><p>Clear constraints → easier reasoning about world dynamics</p>
</li>
<li><p>Distinct aesthetic identity</p>
</li>
<li><p>Forces simplicity (good for experimentation)</p>
</li>
</ul>
<p><strong>Cons</strong>:</p>
<ul>
<li><p>Harder to get motion "right" (1–2 px errors are obvious)</p>
</li>
<li><p>Perceived as niche or retro</p>
</li>
<li><p>Easier to fall into "toy-like" territory</p>
</li>
</ul>
<hr />
<h3>2D Sprites (Pros and Cons)</h3>
<p><strong>Pros</strong>:</p>
<ul>
<li><p>More flexible visually</p>
</li>
<li><p>Easier to achieve appealing animation</p>
</li>
<li><p>Broader audience acceptance</p>
</li>
</ul>
<p><strong>Cons</strong>:</p>
<ul>
<li><p>Less interpretable</p>
</li>
<li><p>Easier to hide incoherent behavior behind visuals</p>
</li>
<li><p>Higher complexity → slower iteration</p>
</li>
</ul>
<hr />
<h3>Recommended Framing</h3>
<p>Sprited should not position itself as:</p>
<blockquote>
<p>a "pixel art company"</p>
</blockquote>
<p>Instead:</p>
<blockquote>
<p><strong>a digital being system operating in constrained, interpretable 2D worlds</strong></p>
</blockquote>
<p>Pixel art is the <strong>initial medium</strong>, not the identity.</p>
<hr />
<h3>Strategic Guidance</h3>
<ul>
<li><p>Use <strong>pixel art for V1</strong> to maximize clarity, constraint, and iteration speed</p>
</li>
<li><p>Keep the system architecture <strong>sprite-agnostic</strong></p>
</li>
<li><p>Allow evolution toward richer 2D representations if needed</p>
</li>
</ul>
<hr />
<h2>9.2 Why This Matters</h2>
<p>Most embodied AI work assumes:</p>
<ul>
<li><p>high-dimensional sensory input</p>
</li>
<li><p>continuous control</p>
</li>
<li><p>complex physics</p>
</li>
</ul>
<p>This leads to:</p>
<ul>
<li><p>slow iteration</p>
</li>
<li><p>hard-to-interpret behavior</p>
</li>
<li><p>weak user connection</p>
</li>
</ul>
<p>Sprited instead optimizes for:</p>
<ul>
<li><p><strong>fast iteration</strong></p>
</li>
<li><p><strong>visible behavior</strong></p>
</li>
<li><p><strong>emergent simplicity</strong></p>
</li>
</ul>
<hr />
<h2>9.3 Differentiation</h2>
<p>Sprited’s differentiation can be summarized as:</p>
<blockquote>
<p><strong>Embodiment-first digital beings in a constrained, interpretable world</strong></p>
</blockquote>
<p>More concretely:</p>
<ul>
<li><p>Not robotics (no hardware dependency)</p>
</li>
<li><p>Not pure LLM agents (not just text or tools)</p>
</li>
<li><p>Not purely simulation (focus on agents, not just worlds)</p>
</li>
</ul>
<p>Instead:</p>
<blockquote>
<p>A system where <strong>beings, world, and interaction co-evolve in a visible, minimal medium</strong></p>
</blockquote>
<hr />
<h2>9.4 Product Implication</h2>
<p>This leads to a very different product direction:</p>
<ul>
<li><p>A persistent character (Pixel)</p>
</li>
<li><p>A living 2D world (Machi)</p>
</li>
<li><p>Continuous behavior loop</p>
</li>
<li><p>Human-observable emergence</p>
</li>
</ul>
<hr />
<h2>9.4.1 Generative Canvas vs Rigged Animation</h2>
<p>Most current approaches to digital characters rely on:</p>
<ul>
<li><p>predefined rigs</p>
</li>
<li><p>animation graphs</p>
</li>
<li><p>discrete "skills" (walk, jump, talk, emote)</p>
</li>
</ul>
<p>In this paradigm, the agent selects from a fixed set of actions.</p>
<p>Sprited explores a different direction:</p>
<blockquote>
<p><strong>The agent expresses itself directly through a constrained generative canvas</strong></p>
</blockquote>
<p>Instead of:</p>
<ul>
<li>selecting pre-authored animations</li>
</ul>
<p>The system:</p>
<ul>
<li><p>generates a continuous stream of frames (e.g., within a 64×64 space)</p>
</li>
<li><p>uses the canvas itself as the medium of expression</p>
</li>
</ul>
<p>This enables:</p>
<ul>
<li><p><strong>continuous motion</strong> rather than discrete states</p>
</li>
<li><p><strong>exaggerated, stylized behavior</strong> (e.g., meme-like expressions)</p>
</li>
<li><p><strong>non-physical actions</strong> that are not constrained by realistic rigs</p>
</li>
</ul>
<hr />
<h3>Tradeoffs</h3>
<p>This approach is significantly more difficult than rig-based systems:</p>
<ul>
<li><p>harder to control</p>
</li>
<li><p>harder to train</p>
</li>
<li><p>fewer established techniques</p>
</li>
</ul>
<p>However, it avoids direct competition with large players, who are heavily invested in:</p>
<ul>
<li><p>realistic avatars</p>
</li>
<li><p>rigging pipelines</p>
</li>
<li><p>animation systems</p>
</li>
</ul>
<hr />
<h3>Strategic Implication</h3>
<blockquote>
<p><strong>Rather than competing on better animation systems, Sprited explores a different representation of behavior entirely</strong></p>
</blockquote>
<p>This aligns with the broader strategy:</p>
<ul>
<li><p>avoid saturated problem spaces</p>
</li>
<li><p>explore underdeveloped representations</p>
</li>
<li><p>optimize for expressiveness and perceived aliveness, not physical accuracy</p>
</li>
</ul>
<hr />
<p>The goal is not to maximize capability.</p>
<p>It is to maximize:</p>
<ul>
<li><p><strong>perceived aliveness</strong></p>
</li>
<li><p><strong>coherence of behavior</strong></p>
</li>
<li><p><strong>emotional attachment</strong></p>
</li>
</ul>
<hr />
<h2>9.5 Strategic Bet</h2>
<p>Sprited’s core bet is:</p>
<blockquote>
<p><strong>You do not need maximum intelligence to create a digital being — you need the right form of embodiment</strong></p>
</blockquote>
<p>Pixel art becomes the medium where this can be explored rapidly and convincingly.</p>
<hr />
<h2>9.6 Why Pixel Art Is Underserved (and Hard)</h2>
<p>Pixel art may appear simple, but in practice it presents unique challenges. It is important to distinguish between <strong>true pixel art</strong> and <strong>pixel-art-like visuals</strong>:</p>
<ul>
<li><p><strong>Pixel-art-like</strong> systems (scaled sprites, filtered images, or loose grids) are relatively easy to produce</p>
</li>
<li><p><strong>True pixel art</strong> requires strict adherence to discrete structure and coherence at the pixel level</p>
</li>
</ul>
<p>The difficulty lies in the latter.</p>
<p>Key challenges:</p>
<ul>
<li><p><strong>Discrete constraints</strong> — behavior must align exactly with a grid; there is no interpolation safety net</p>
</li>
<li><p><strong>High perceptual sensitivity</strong> — small errors (1–2 pixels) are immediately visible and break coherence</p>
</li>
<li><p><strong>No visual hiding</strong> — unlike higher-resolution sprites, artifacts cannot be smoothed or masked</p>
</li>
<li><p><strong>Limited tooling</strong> — far fewer standardized pipelines compared to 3D rigging, animation, and physics engines</p>
</li>
<li><p><strong>Local minima in product design</strong> — many implementations feel "pixel-like" but fail to achieve true coherence, leading to toy-like results</p>
</li>
</ul>
<p>These factors make <em>true</em> pixel art significantly harder than it appears, even though simplified or approximate versions are easy to generate.</p>
<p>This gap between "pixel-like" and "pixel-correct" systems is one reason the space remains underserved.</p>
<hr />
<h2>9.7 Why Large Players Avoid This Space</h2>
<p>Large companies (e.g., major labs and platforms) tend to prioritize:</p>
<ul>
<li><p>general-purpose capabilities</p>
</li>
<li><p>scalable benchmarks</p>
</li>
<li><p>high-impact, widely applicable problems</p>
</li>
</ul>
<p>Pixel-art-based embodied systems:</p>
<ul>
<li><p>are <strong>niche</strong> in audience</p>
</li>
<li><p>do not map cleanly to standard benchmarks</p>
</li>
<li><p>do not directly advance general AGI capabilities</p>
</li>
</ul>
<p>As a result, they are unlikely to be a primary focus for these organizations.</p>
<hr />
<h2>9.8 Implication for Sprited</h2>
<p>This creates a narrow but meaningful opportunity:</p>
<ul>
<li><p>A focused team can explore this space deeply</p>
</li>
<li><p>Iteration cycles can be faster due to constrained environments</p>
</li>
<li><p>Competition from large players is less immediate</p>
</li>
</ul>
<p>However, this comes with real risk:</p>
<ul>
<li><p>The market is smaller</p>
</li>
<li><p>Productization is non-trivial</p>
</li>
<li><p>Success depends on achieving strong user resonance, not just technical progress</p>
</li>
</ul>
<hr />
<h2>9.9 Strategic Framing</h2>
<p>A grounded framing is:</p>
<blockquote>
<p><strong>This is a difficult niche that large players are unlikely to prioritize, but also one that is hard to execute well</strong></p>
</blockquote>
<p>If successful, the payoff is not immediate scale, but:</p>
<ul>
<li><p>a defensible product identity</p>
</li>
<li><p>a unique interaction paradigm</p>
</li>
<li><p>a foothold in a space where "aliveness" can be explored more effectively than in high-complexity systems</p>
</li>
</ul>
<hr />
<h1>Closing Thought</h1>
<p>Embodiment is not about realism or complexity.</p>
<p>It is about this shift:</p>
<blockquote>
<p>From isolated computation → to situated existence</p>
</blockquote>
<p>And that shift is what enables:</p>
<ul>
<li><p>presence</p>
</li>
<li><p>interaction</p>
</li>
<li><p>and eventually, the perception of life</p>
</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[Building Blocks of Digital Being]]></title><description><![CDATA[Statement

We've been too deep in the trenches to figure out the details on how to generate perfect pixel art animations.

We realize that this is not the main goal of Sprited.

Sprited's vision is to]]></description><link>https://blog.sprited.ai/building-blocks-of-digital-being</link><guid isPermaLink="true">https://blog.sprited.ai/building-blocks-of-digital-being</guid><dc:creator><![CDATA[Sprited Dev]]></dc:creator><pubDate>Thu, 26 Mar 2026 17:04:10 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/b496b850-308a-42c6-884a-138e2c6dceb0.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>Statement</h2>
<blockquote>
<p>We've been too deep in the trenches to figure out the details on how to generate perfect pixel art animations.</p>
</blockquote>
<p>We realize that this is not the main goal of Sprited.</p>
<blockquote>
<p>Sprited's vision is to build <strong>autonomous digital beings</strong>.</p>
</blockquote>
<p>Generating perfect pixel arts seems to be a local optima and we have been circling around for a long time. We should not investigate on this further.</p>
<h2>Criteria for a Digital Being</h2>
<p>Our vision for a digital being is that they are "embodied beings" that live in an "environment."</p>
<p>So, there are few aspects to this:</p>
<ol>
<li><p><strong>Embodiment</strong>: Digital Beings are embodied. They have flesh (virtual). They can move around and do stuff.</p>
</li>
<li><p><strong>Enviroment</strong>: Digital Beings "live" in an environment (virtual). Digital beings can change the environment.</p>
</li>
</ol>
<p>SpriteDX in a way is a project that was there to kinda prove that we can do something but it is not the main goal. We need to get past it and work on the embodiment from ground up.</p>
<h2>Components</h2>
<ol>
<li><p>BODY SYSTEM</p>
</li>
<li><p>ACTION SYSTEM</p>
</li>
<li><p>SPEECH SYSTEM</p>
</li>
<li><p>MEMORY SYSTEM</p>
</li>
<li><p>ENVIRONMENT SYSTEM</p>
</li>
</ol>
<h2>How to not get side tracked</h2>
<p>We need a new repo, and start on a real digital being.</p>
<p>It is not "sprite gen," it is not "environment gen." We need something that starts from empty ground and create this entity, and give it a body I guess.</p>
<p>(PAUSE)</p>
]]></content:encoded></item><item><title><![CDATA[SpriteDX - Prop Gen 2 - Grid Fitting]]></title><description><![CDATA[Grid Fitting Results


Nearest Neighbor (17pixel grid size)


NN 17px - x4


Bilinear 1/17 -x4


My trial at fitting the grid lattice. It's bad.




I thought NN and Bilinear would be a disaster but m]]></description><link>https://blog.sprited.ai/spritedx-prop-gen-2-grid-fitting</link><guid isPermaLink="true">https://blog.sprited.ai/spritedx-prop-gen-2-grid-fitting</guid><dc:creator><![CDATA[Sprited Dev]]></dc:creator><pubDate>Wed, 25 Mar 2026 21:12:33 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/91a6b594-9ce3-44e0-99f1-7f4fe822837f.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Grid Fitting Results</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/86a2a820-74f9-442c-85cc-01691df7b636.png" alt="" style="display:block;margin:0 auto" />

<p>Nearest Neighbor (17pixel grid size)</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/9f9d7dc1-02d7-4011-9a47-8527c5ec7cda.png" alt="" style="display:block;margin:0 auto" />

<p>NN 17px - x4</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/0cc51b74-9a86-4ea3-a91c-60340e8afdaf.png" alt="" style="display:block;margin:0 auto" />

<p>Bilinear 1/17 -x4</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/d420559c-8541-4b16-a85d-84ca775c756f.png" alt="" style="display:block;margin:0 auto" />

<p>My trial at fitting the grid lattice. It's bad.</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/e6c60543-ff71-4a1e-a2e4-2c5854be9c05.png" alt="" style="display:block;margin:0 auto" />

<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/99ee90cf-e45b-485f-85a4-575958e1a985.png" alt="" style="display:block;margin:0 auto" />

<p>I thought NN and Bilinear would be a disaster but much better than other tries I had.</p>
<p>Let's start with the NN and try to recover Pixel art using ACM v2 model.</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/92bd3fe0-898c-4002-be87-79fe0f371b8f.png" alt="" style="display:block;margin:0 auto" />

<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/2c393bcd-637a-4520-8eac-d87bde4db05a.png" alt="" style="display:block;margin:0 auto" />

<p>ACM-v2 is not good. It basically applies some level of dithering and some level of sharpening which we don't really want.</p>
<p>The smoother version is much better IMO (bilinear):</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/d420559c-8541-4b16-a85d-84ca775c756f.png" alt="" style="display:block;margin:0 auto" />

<p>We do however need some way to clean up those silhouettes. That can be done easily using Magic Wand tools in Photoshop.</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/6ec8ed9b-5250-4050-b4fa-601fce2ab5bb.png" alt="" style="display:block;margin:0 auto" />

<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/4af5b8e4-0224-4f43-b316-dfb1bc562ae5.png" alt="" style="display:block;margin:0 auto" />

<p>Perhaps we can run birefnet first on the source image then run the bilinear.</p>
<p>Still not exactly sure how to go about this. I will need to work with non-pixel arts and still be able to produce pixel arts and we seem to be trying to optimize on single image.</p>
<p>I will look into few other approaches.</p>
<p>-- Sprited Dev 🐛</p>
]]></content:encoded></item><item><title><![CDATA[SpriteDX - Prop Generation using Nano Banana]]></title><description><![CDATA[Right now, SpriteDX is more of a gimmick. It can generate stylized characters and animated them and split it into animation states such that it can be used inside projects like video games. However, r]]></description><link>https://blog.sprited.ai/spritedx-prop-generation-using-nano-banana</link><guid isPermaLink="true">https://blog.sprited.ai/spritedx-prop-generation-using-nano-banana</guid><dc:creator><![CDATA[Sprited Dev]]></dc:creator><pubDate>Mon, 23 Mar 2026 16:11:27 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/228b8c63-61ae-49d0-bf17-868fec663642.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Right now, SpriteDX is more of a gimmick. It can generate stylized characters and animated them and split it into animation states such that it can be used inside projects like video games. However, right now, that's about it. In order for a large project, we don't just need humanoid characters, but also need expansive list of stuff.</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/dffceafc-9091-45be-b4b1-c932743a1bbd.png" alt="" style="display:block;margin:0 auto" />

<p>We need to add things like prop generation, and ability to easily add in new states. The non-landing page design allows you to do this to certain extent but it is tucked away so much and not really invites users to update them.</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/d2bd5779-4898-433e-bc9e-5e85680d07e7.png" alt="" style="display:block;margin:0 auto" />

<p>The latter usability issue is not something I can work on today. But, I can start doing initial research on prop generation.</p>
<p>There is also a big marketing problem where our only entrypoint to the product is one old reddit post. We should address that later.</p>
<hr />
<h2>What is Prop Generation?</h2>
<p>SpriteDX (aka Sprited-X) will help creator's to build their world. It should allow users to generate assets that go beyond humanoid characters.</p>
<p>We want users to be able to generate anything.</p>
<ul>
<li><p>Crates</p>
</li>
<li><p>Bow</p>
</li>
<li><p>Diamond</p>
</li>
<li><p>Ore</p>
</li>
<li><p>Etc.</p>
</li>
</ul>
<p>So, yeah, it really lends it self to "X" in SpriteDX where we can generate ANY physically sound 2D sprite assets.</p>
<hr />
<h2>Early Results?</h2>
<p>The most promising of all came from NanaBanana Pro when we worked on Machi.</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/aec22b95-b191-46ed-a0cc-f14b284d5244.png" alt="" style="display:block;margin:0 auto" />

<p>These assets were mostly generated using <strong>NanoBanana Pro</strong> node in ComfyUI.</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/a184e781-690e-4cc2-8cbf-6a5a9f692661.png" alt="" style="display:block;margin:0 auto" />

<p>Then, hand edited in <strong>Aesprite</strong>.</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/9c22ab84-4134-4700-9dbc-e64a5b7dd7d6.png" alt="" style="display:block;margin:0 auto" />

<p>Result is satisfying pixel arts.</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/bff55d4c-baab-4f06-9f02-9db798f298eb.png" alt="" style="display:block;margin:0 auto" />

<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/d5857199-2e94-4e7d-ac2a-f47e75e56898.png" alt="" style="display:block;margin:0 auto" />

<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/aca9817f-911d-4401-acbd-aabc544d0be2.png" alt="" style="display:block;margin:0 auto" />

<p>You can check the <a href="https://blog.sprited.app/assets-for-machi-prototype">https://blog.sprited.app/assets-for-machi-prototype</a> for the prompts used.</p>
<p>The key is to provide character arts (or world background and ask NB (Nano Banana) to create assets that go well with the character or the context.</p>
<p><strong>Why not Flux.1 Fill?</strong> Fill-in-the-blank apporach using the Flux.1 Fill models unfortunately fail and is quite tricky to control it such that it creates various assets. It is rather dumb compared to NB and produces most probable image results and often ignores prompts. Hard to steer.</p>
<h2>What's the learning?</h2>
<p>Learning is that we should use Nano Banana models. For now, let's use Nano Banana Pro since it is readily available as ComfyUI partner API nodes.</p>
<h2>Can you create a vehicle?</h2>
<p>Let's test it out.</p>
<blockquote>
<p>add 10 stone age style cars and bikes that fits into current pixel art style</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/5a6b1c30-b1a8-4bf2-9178-37b29032a130.png" alt="" style="display:block;margin:0 auto" />

<p><strong>Result</strong></p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/ded0acb1-0e7b-4610-9b17-a77d2375f340.png" alt="" style="display:block;margin:0 auto" />

<p><strong>Does it preserve the style?</strong> Yes</p>
<p><strong>Does it preserve the scale?</strong> Somewhat.</p>
<p>Let's try it out with a different data.</p>
<blockquote>
<p>Add 12 vehicles while preserving the style and scale</p>
<p>top row: futuristic pixel art vehicles</p>
<p>middle row: modern day pixel art vehicles</p>
<p>bottom row: war machines like mechs</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/887e56bc-1a6e-46a8-8b04-757ed0cc72ef.png" alt="" style="display:block;margin:0 auto" />

<p><strong>Result</strong>:</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/bf64f561-58a9-4439-9421-d9c593073565.png" alt="" style="display:block;margin:0 auto" />

<p><strong>Analysis</strong>: Yup, this could work. The designs and styles are rather bland but I can work with this.</p>
<hr />
<p>F…. Gotta go for something.</p>
<p>But basically though, we believe that it is possible to support prop generation by adding a templating mechanism and extraction mechanism. Wish me luck.</p>
<p>-- Sprited Dev 🐛</p>
]]></content:encoded></item><item><title><![CDATA[SpriteDX - This Week's Plan - Return To Normal]]></title><description><![CDATA[After the Shenzhen trip, I lost focus and got distracted, and my progress has been halted for about three days (almost two weeks including the travel period).
I was working on Machi’s character growth]]></description><link>https://blog.sprited.ai/spritedx-this-week-s-plan-return-to-normal</link><guid isPermaLink="true">https://blog.sprited.ai/spritedx-this-week-s-plan-return-to-normal</guid><dc:creator><![CDATA[Sprited Dev]]></dc:creator><pubDate>Mon, 23 Mar 2026 15:03:45 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/f31935f0-e0db-4f02-bdf7-846623517c2d.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>After the Shenzhen trip, I lost focus and got distracted, and my progress has been halted for about three days (almost two weeks including the travel period).</p>
<p>I was working on Machi’s character growth, but I think recovering momentum is more important than continuing that right now.</p>
<p>It might be better to shift focus back to updating SpriteDX. For example, since character and pet generation are working, it could be a good time to explore prop generation next. Alternatively, I could revisit the design.</p>
<hr />
<p>The idea is that we would attack it from the stand point of identifying issues and resolving them.</p>
<p>Right now, SpriteDX has several problems in various dimensions--marketing, usability and quality.</p>
<ul>
<li><p>Quality: Pixelization often produces broken pixel arts with non-uniform outlines.</p>
</li>
<li><p>Marketing: The only real entry point is a few month old reddit post.</p>
</li>
<li><p>Usability: There is no easy way to import it from Unity or Godot. I don't even use for my own Machi project. There is also only Character generation and no Prop generation. The action states are very limited.</p>
</li>
</ul>
<p>Goals:</p>
<ul>
<li><p>(Bonus) Work on Prop Generation (physical prop gen).</p>
</li>
<li><p>One Marketing Exposure</p>
</li>
<li><p>Fix Pixelization Pipeline (low quality)</p>
</li>
</ul>
<p>That's it. No Machi, character growth stuff this week.</p>
<p>-- Sprited Dev 🐛</p>
]]></content:encoded></item><item><title><![CDATA[Trip to Shenzhen]]></title><description><![CDATA[Had a whole week trip to Shenzhen, China. It was rather an eye-opening experience to say the least. It was a place where there were mostly nothing when I was born, but now a mega city like the one I h]]></description><link>https://blog.sprited.ai/trip-to-shenzhen</link><guid isPermaLink="true">https://blog.sprited.ai/trip-to-shenzhen</guid><dc:creator><![CDATA[Sprited Dev]]></dc:creator><pubDate>Wed, 18 Mar 2026 16:54:23 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/0ea641ce-9fb1-48a8-84b1-fbc80834bb34.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Had a whole week trip to Shenzhen, China. It was rather an eye-opening experience to say the least. It was a place where there were mostly nothing when I was born, but now a mega city like the one I have not seen.</p>
<p>My expectation was a city packed with tech in a small high density area--a newly built tech industry town where I can see the whole thing from a vantage point and say "ok, this is Shenzhen." And I couldn't have been farther from the truth. The city was too big for it to be seen from one vantage point. From central place from 100th floor, I can see most of the sky-scrapers but not all because fog would cover some of the farther ones.</p>
<p>The city has around double the amount of population than in Seoul. Wikipedia says 17.5M but infrastructure in the city can probably host much more. Seoul is plateauing at around 10M and it is actually dwindling from it. Shenzhen's population is steadily growing and in 10 years of time, I think more and more people will move there. It is really not a "tech" scene, it is more of the largest cities in the world situation.</p>
<p>Tokyo has 41M population, so in a way SZ is behind but SZ's population is growing and Tokyo's population is not growing. And I would argue that SZ has more potential future residents than Tokyo has. At this rate, I wouldn't be surprised if SZ becomes bigger overall mega city than Tokyo.</p>
<p>Travel destination wise, SZ is quite largely lacking though. Uber does not work, and people don't speak english too much. You can use WeChat for payments (by linking your US credit cards) and call taxi using DiDi. However, you can't use Google or Google Maps. No ChatGPT, or your favorite US based AI services. So, once you are there, you are kind of a baby requiring an assistant from english speaking friends.</p>
<p>It was a first… It was a first time I felt so incapable of navigating around. On third day, I tried to order from Luckin Coffee place but I couldn't pay and I had to cancel my order. WeChat interface requires some slight learning curve and you may face difficulties if you try to use it at the spur of the moment.</p>
<p>Taxis don't speak English, so you will probably have trouble riding one without issues. You can get to places but without proper communication with the driver, you would likely be on an edge constantly.</p>
<p>Luckily, I was with my college friends and they did everything for me, so I had a blast, but it would be interesting if I traveled here alone. The place is huge and the streets are very wide. Things are very spread out. So, it is not easy like Hong Kong where you can easily travel by foot.</p>
<p>I did not ride on subway other than when I went to Guangzhou so not much I can say about the subway system but since it is all automated you can probably get around.</p>
<p>This is a city that is of half size of Tokyo and interestingly I did not see much foreign tourists. I think it is that it is quite far from US and it is that it is hard for foreign nationals to travel around.</p>
<p>Arts and culture districts like OCT Lofts were amazing too. There were so many boutique shops and the place was brimming with culture and energy.</p>
<p>Prices on goods and services were about 1/3-1/4 of what you would find in USA. Lots of good shopping opportunities.</p>
<p>It was very rewarding trip, and honestly I think I only covered a very tiny fraction of what is there in Shenzhen. I wish to travel there again. Perhaps after learning basic Mandarin for me to navigate around.</p>
<p>Sprited Dev 🐛</p>
]]></content:encoded></item><item><title><![CDATA[Machi - Roly Poly 1]]></title><description><![CDATA[So far, we have ideated on how we would grow from a single cell to something we will call digital being.

Single Cell --------------------------------------> Digital Being

Basic idea that we have dev]]></description><link>https://blog.sprited.ai/machi-roly-poly-1</link><guid isPermaLink="true">https://blog.sprited.ai/machi-roly-poly-1</guid><dc:creator><![CDATA[Sprited Dev]]></dc:creator><pubDate>Tue, 10 Mar 2026 17:08:17 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/18214535-dea2-4153-8dc5-b1f266f411e4.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>So far, we have ideated on how we would grow from a single cell to something we will call digital being.</p>
<blockquote>
<p>Single Cell --------------------------------------&gt; Digital Being</p>
</blockquote>
<p>Basic idea that we have developed so far:</p>
<ol>
<li><p>Place a single cell in a constrained 2D texture WxHxC.</p>
</li>
<li><p>Then, have the single cell organism grow.</p>
</li>
<li><p>texture edges will contain sensors and motors.</p>
</li>
<li><p>inner textures usually contain a MINI brain of sort.</p>
</li>
</ol>
<hr />
<h2>Artificial Being as a Shader Simulation Model</h2>
<p>Initial texture ideation was basically 48x48 RGBA texture where we place the single EGG cell at the center, and have it grow out the limbs.</p>
<pre><code class="language-plaintext">                   [HEAD]
                     ^
  [LEFT ARM] &lt;-   [SPINE]   -&gt; [RIGHT ARM]
                     |
                  [PELVIS]
                /          \
        [LEFT LEG]        [RIGHT LEG]
</code></pre>
<p>This is pretty basic. We start out as a EGG cell which turns to SPINE cell. Then it will add more components like NECK, HEAD, and other limbs.</p>
<p>We had 2 versions of this design where we would model things in pixel dimensions (above) or to pack vectors inside texture map.</p>
<p>Vector design was considered a better approach for an organism that can move with skeletal movements.</p>
<hr />
<h2>Artificial Brain in Shader Model</h2>
<p>The next ideation was to model human brain.</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/b9e0f8f6-0306-42ad-aa21-be71db3ff33a.png" alt="" style="display:block;margin:0 auto" />

<p>Instead of focusing on the LIMBs, this design doubles down on BRAIN. BRAIN covers 95% of the map, and sensory and motors are like OUTLETs.</p>
<p>The main problem with this design is that while laying out things this way gives a good insight into how human-like brain would be designed from ground up, there is no promise whatsoever about how we would make this layout work.</p>
<p>And this design focuses mostly on the INVISIBLE, which is a dangerous area to go into. We can't reasonable something we don't know too much.</p>
<hr />
<h2>Analysis</h2>
<p>Artificial Brain idea is Phase 100 idea. At this time, we need a fast iteration loop that works and that can be steered. We do not need a cruise ship, we need a boat we can steer at ease.</p>
<hr />
<h2>Problem Statement</h2>
<p>So, we define the problem in the following way:</p>
<blockquote>
<p>Can we, using only <strong>local rules</strong>, generate a living entity from single cell?</p>
</blockquote>
<p>Let's define "living entity" now.</p>
<blockquote>
<ul>
<li><p>can <strong>emerge from local rules</strong></p>
</li>
<li><p>can run in <strong>parallel shader execution</strong></p>
</li>
<li><p>does <strong>not require centralized control</strong></p>
</li>
<li><p>is <strong>observable in simulation</strong></p>
</li>
</ul>
</blockquote>
<h2>Questions</h2>
<p><strong>Can it think on its own?</strong> At this time, the focus is not on the intelligence but rather we are focused on giving these AI agents a body. A body that is not just visual, but semantically make sense.</p>
<p><strong>Why does starting from single cell matter?</strong> It gives us a constraint that forces us to use local rules and progressive growth. This allows us to not cut corners and just have a rigged character that can run animation sequence.</p>
<p><strong>Motor planning?</strong> <strong>It sounds like, what you are building is essentially a robot. How would you make them do what you want them to do? For example, let's say an agent needs to run away from something, how would the agent plan this movement?</strong> We will have a ASCII representation of the world. LLM agent will be given this representation and decide on a <em>next favorable state</em>. The next favorable state. Then emit high-level motor tokens to accomplish that. Feedbacks from motor units will also come back allowing for <em>steering</em>.</p>
<p><strong>Memory System?</strong> The first version won't have any sort of memory.</p>
<p><strong>How would agent learn, for example, to walk?</strong> The idea is that if they can crawl, they can walk. And before they can crawl, they have to learn to roll over. The belief is that we can train a small specialized models for specific motor functions by simulating physical interactions in the Machi world.</p>
<hr />
<h2>Biggest Hurdle</h2>
<p>The biggest hurdle is that we are trying to model human being in this early stage. I don't think we should do that. We can start with smaller organisms.</p>
<h3>How about we model roly-poly?</h3>
<p>When you think of Roly-Poly, they seem so simple. They are even cute despite looking like an insect. They also have very simple and interesting mechanics for survival. It also goes well with tree simulation because they can live in humid soils below it.</p>
<ul>
<li><p>Segmented body with repeatable units</p>
</li>
<li><p>Instead of complex joints, it has many legs</p>
</li>
<li><p>In defense mode, it rolls into a ball and may really roll!</p>
</li>
<li><p>They move mostly at constant speed, easy to model.</p>
</li>
<li><p>They can interact with leaf litter, fungus, soil moisture, etc.</p>
</li>
<li><p>It does not even need vision.</p>
</li>
<li><p>Their body design is modular with each component having simplicity.</p>
</li>
</ul>
<h3>Devils Advocate</h3>
<blockquote>
<p>Why not ants or bees?</p>
</blockquote>
<p>They are social super organisms. We are working on embodiment, and not yet ready to model anything around the colony simulation.</p>
<p>Roly-Poly is actually a very strategic choice because we can focus only on simulating a very simple body with limited motor movements.</p>
<p>There is a reason why we instinctively think of them to be cute.</p>
<blockquote>
<p>Alternative?</p>
</blockquote>
<p><a href="https://hashnode.com/@pix-el" class="user-mention" data-type="mention" title="Pixel">Pixel</a> suggests that we could model "worms" since it only has 302 neurons and even has completely mapped nervous system. But I think roly-poly wins the favorability contest hands down.</p>
<blockquote>
<p>What's after Roly-Poly?</p>
</blockquote>
<p>The real goal of this first organism is to prove four things:</p>
<ol>
<li><p>Growth works</p>
</li>
<li><p>Segments can form</p>
</li>
<li><p>Locomotion emerges</p>
</li>
<li><p>Sensors -&gt; motor loop works.</p>
</li>
</ol>
<p>Once we prove this, we will be in much better position than where we are right now.</p>
<h2>Anatomy of Roly-Poly</h2>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/2fd19e3f-47b4-447c-8669-39e38304ea37.png" alt="" style="display:block;margin:0 auto" />

<ul>
<li><p>7 pair of legs (equal size and form)</p>
</li>
<li><p>2 pair of antennae (one is much longer than the other)</p>
</li>
<li><p>Vision is minimal</p>
</li>
<li><p>Feed on moist</p>
</li>
<li><p>Decaying plant matter that they chew with their small mouthparts</p>
</li>
<li><p>very useful in recycling nutrients by shredding dead plant material to decompose.</p>
</li>
<li><p>Eat at night. During the day, under cover.</p>
</li>
<li><p>tail like UROPODs (can drink water from it)</p>
</li>
<li><p>in some species, females can reproduce parthenogenetically.</p>
</li>
<li><p>two broods of eggs produced annually.</p>
</li>
<li><p>molts for within 24 hr.</p>
</li>
</ul>
<h2>Modelling Roly-Poly</h2>
<p>From the look at feel standpoint, let's make it a tiny being.</p>
<pre><code class="language-plaintext">Flat:  XXXX
Rolled: XX
        XX
</code></pre>
<p>In world of Machi, each pixel is around 4cm, so this will make this roly-poly 16cm. So yeah, quite big.</p>
<p>Alternatively, we can:</p>
<pre><code class="language-plaintext">Flat:   XX
Rolled: X
</code></pre>
<p>This small size may actually be better, but let's think about this further.</p>
<p>In my mind though, we would want to model it big enough to actually "see" the roly-ploy rolling itself up. In that sense, I think it may be better to make AI agents in machi a tiny beings compared to the surroundings.</p>
<p>Sprited Dev 🐛</p>
]]></content:encoded></item><item><title><![CDATA[BRAIN DUMP: CREATURE SIM v0.9 - From Pixel Growth to Vector-Based Development]]></title><description><![CDATA[In the tree simulation project, growth emerged from local pixel rules. Each pixel looked at its neighbors and decided whether to grow, thicken, or produce leaves. This worked well because trees natura]]></description><link>https://blog.sprited.ai/brain-dump-creature-sim-v0-9-from-pixel-growth-to-vector-based-development</link><guid isPermaLink="true">https://blog.sprited.ai/brain-dump-creature-sim-v0-9-from-pixel-growth-to-vector-based-development</guid><dc:creator><![CDATA[Sprited Dev]]></dc:creator><pubDate>Sun, 08 Mar 2026 02:35:26 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/95afc978-994f-48c9-9830-56efecf0ec30.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In the tree simulation project, growth emerged from <strong>local pixel rules</strong>. Each pixel looked at its neighbors and decided whether to grow, thicken, or produce leaves. This worked well because trees naturally grow through branching structures that expand into empty space.</p>
<p>However, when applying the same approach to <strong>animal-like organisms</strong>, a problem appears.</p>
<p>Animals are not just collections of pixels expanding outward. They have <strong>structured body plans</strong>: spines, limbs, organs, and symmetry. These structures must develop gradually and proportionally over time.</p>
<p>This realization led to a new direction for the creature simulation.</p>
<h1>The Problem: Spine Locking</h1>
<p>In the current prototype, the creature grows its <strong>entire spine first</strong>.</p>
<p>This introduces a structural issue.</p>
<p>Even when the creature is supposed to represent an <strong>infant stage</strong>, the spine already exists in its <strong>final adult position</strong>. The rest of the body simply fills in around it.</p>
<p>This locks the organism into an adult layout too early in development.</p>
<p>As a result:</p>
<ul>
<li><p>Infant proportions cannot differ from adult proportions</p>
</li>
<li><p>Limb placement is fixed too early</p>
</li>
<li><p>Development becomes a visual scaling problem rather than a biological growth problem</p>
</li>
</ul>
<p>To solve this, we need a different internal representation of the organism.</p>
<h2>Two Possible Solutions</h2>
<h3>Approach 1 — Rendering Scale</h3>
<p>One solution is purely visual.</p>
<p>We could render the creature smaller when it is young and scale it up as it grows.</p>
<p>In this case, the organism structure never changes. Only the rendering scale changes.</p>
<p>While simple, this approach does not actually model development. It only <strong>simulates growth visually</strong>.</p>
<h3>Approach 2 — Vector-Based Body Representation</h3>
<p>A more interesting approach is to change how the organism itself is represented.</p>
<p>Instead of storing the organism as a <strong>pixel map</strong>, we represent it as a <strong>vector-based structure encoded inside a texture</strong>.</p>
<p>In this model, the organism becomes a <strong>compact set of control points or joints</strong>, similar to a scene graph.</p>
<h2>Packing an Organism into a Texture</h2>
<p>Imagine we have a small texture.</p>
<p>For example:</p>
<pre><code class="language-plaintext">4 × 4 texture
RGBA channels
</code></pre>
<p>Flattening this gives us <strong>16 slots</strong>.</p>
<p>Each slot can store structured data describing part of the organism.</p>
<p>Example encoding:</p>
<pre><code class="language-plaintext">i = 0  → dx, dy, dz of first spine segment relative to head
i = 1  → dx, dy, dz of second spine relative to first spine
i = 2  → third spine segment
...
i = 9  → left shoulder socket
i = 10 → right shoulder socket
...
i = n  → hip sockets
</code></pre>
<p>The <strong>head becomes the origin point</strong>, and all other body structures are defined relative to it.</p>
<p>Instead of drawing pixels directly, the shader interprets these packed values to reconstruct the body structure.</p>
<h2>What This Changes</h2>
<p>With this representation:</p>
<ul>
<li><p>The organism is no longer a rigid pixel skeleton.</p>
</li>
<li><p>The body becomes a <strong>parametric structure</strong>.</p>
</li>
<li><p>Development can modify structural relationships over time.</p>
</li>
</ul>
<p>Examples:</p>
<ul>
<li><p>Infant spine spacing can differ from adult spacing</p>
</li>
<li><p>Limb attachment points can shift during development</p>
</li>
<li><p>Body proportions can change as the organism matures</p>
</li>
</ul>
<p>This creates <strong>true developmental growth</strong>, not just visual scaling.</p>
<hr />
<h2>Simulation Inside the Shader</h2>
<p>The simulation still happens in parallel on the GPU.</p>
<p>Each texel represents a <strong>node in the organism structure</strong>.</p>
<p>Like the tree simulation, the update process works in discrete frames:</p>
<pre><code class="language-plaintext">state(t) → state(t+1)
</code></pre>
<p>Each node:</p>
<ol>
<li><p>Reads its own state from the previous frame</p>
</li>
<li><p>Reads nearby nodes from the texture</p>
</li>
<li><p>Applies its local rules</p>
</li>
<li><p>Writes its updated state</p>
</li>
</ol>
<p>This allows the entire organism to update <strong>fully in parallel</strong>.</p>
<h2>Parallel Node Execution</h2>
<p>Each node behaves like a <strong>cellular automaton unit</strong>, but instead of representing a pixel in space, it represents a <strong>structural component of the organism</strong>.</p>
<p>Nodes may represent:</p>
<ul>
<li><p>spine segments</p>
</li>
<li><p>limb joints</p>
</li>
<li><p>sockets</p>
</li>
<li><p>organs</p>
</li>
<li><p>internal systems</p>
</li>
</ul>
<p>Each node runs its own logic independently.</p>
<pre><code class="language-plaintext">node_i(t+1) = F(node_i(t), neighbors_i(t))
</code></pre>
<p>Where neighbors are nearby structural nodes.</p>
<p>To keep the system efficient, we can restrict node lookups to a <strong>small neighborhood in the texture</strong>, such as adjacent indices.</p>
<p>This preserves the key property of the previous simulation:</p>
<p><strong>massive parallelism with no write conflicts.</strong></p>
<h2>Beyond Skeletons</h2>
<p>Although the structure resembles a skeleton, the goal is broader.</p>
<p>The same texture-packing strategy can encode additional biological systems.</p>
<p>Examples include:</p>
<ul>
<li><p>blood circulation</p>
</li>
<li><p>lymphatic transport</p>
</li>
<li><p>respiratory system</p>
</li>
<li><p>digestive system</p>
</li>
<li><p>neural signals</p>
</li>
</ul>
<p>Each system can occupy additional channels or slots in the texture, similar to how the tree simulation used multiple layers of environmental data.</p>
<p>The organism becomes a <strong>multi-system simulation encoded in compact GPU memory</strong>.</p>
<h2>Why This Matters</h2>
<p>The shift from pixel maps to vector-encoded organisms enables something important.</p>
<p>It allows organisms to <strong>develop</strong>, rather than simply <strong>appear</strong>.</p>
<p>Growth becomes a transformation of structure rather than a scaling of graphics.</p>
<p>This makes it possible to simulate:</p>
<ul>
<li><p>body plan formation</p>
</li>
<li><p>proportional growth</p>
</li>
<li><p>internal biological systems</p>
</li>
<li><p>articulated movement</p>
</li>
</ul>
<p>All while keeping the simulation <strong>fully parallel and GPU-friendly</strong>.</p>
<h2>The Goal</h2>
<p>The goal is not merely to animate creatures.</p>
<p>The goal is to create a <strong>developmental substrate</strong> where organisms can grow according to structural rules.</p>
<p>Just as the tree simulation created believable plant growth through local interactions, this system aims to create <strong>animal development through structural emergence</strong>.</p>
<p>This approach preserves the core philosophy:</p>
<blockquote>
<p>complex life emerging from simple rules</p>
</blockquote>
<p>But it moves the simulation from <strong>pixel space</strong> to <strong>structural vector space</strong>.</p>
]]></content:encoded></item><item><title><![CDATA[Branch - Sim - Leaves (and CHICK idea)]]></title><description><![CDATA[After 45th iteration, we have stable FUN growth of trees.


It still lacks staggered budding, no thickness rendering, but at least we have something that's working and gives something visually pleasin]]></description><link>https://blog.sprited.ai/branch-sim-leaves</link><guid isPermaLink="true">https://blog.sprited.ai/branch-sim-leaves</guid><dc:creator><![CDATA[Sprited Dev]]></dc:creator><pubDate>Thu, 05 Mar 2026 20:47:42 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/4b52b41d-dba2-4249-8c6f-c237a66e5a7a.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>After 45th iteration, we have stable FUN growth of trees.</p>
<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/d082eb2e-823b-4f86-8d85-869b150492e5.png" alt="" style="display:block;margin:0 auto" />

<p>It still lacks staggered budding, no thickness rendering, but at least we have something that's working and gives something visually pleasing.</p>
<ul>
<li><p>grows towards light direction.</p>
</li>
<li><p>leaf points die off when thickness increases.</p>
</li>
<li><p>stable stochastic rendering of leaves.</p>
</li>
<li><p>stable growth with ATP and NU burns.</p>
</li>
<li><p>ATP sourced from sunlight.</p>
</li>
<li><p>NU sourced from DIRT.</p>
</li>
</ul>
<p>This is a big milestone for MACHI since we've gone from mere IDEA to something that we can SEE.</p>
<p>WHAT'S NEXT</p>
<p>We can continue on improvements (dormant bud points, thickness increasing, diversification, etc) here, however, I think this is a place to PAUSE since we have something SEMANTICally RICH that is also VISUALy RICH.</p>
<ul>
<li><p>It bridges the gap between the world that ai agent will see and feel.</p>
</li>
<li><p>and the world that humans will see and feel.</p>
</li>
</ul>
<p>What's next though?</p>
<p>One interesting ANGLE is that we could repeat this exercise of <em>modeling</em> real world stuff in 2D pixel grid using textures as a source.</p>
<p>Trees are mostly <strong>stable</strong> and <strong>"GROUNDED"</strong>. So, they are innately easy to model it in stable pixel grid.</p>
<p>But, let's try to PROJECT and apply this "modeling algorithm" into digital beings.</p>
<p>Staring with real humanoids are going to be disastrous I presume.</p>
<p>What if… we modeled say……………………. a CHICK.</p>
<ul>
<li><p>a chick is like a tiny pixel being.</p>
</li>
<li><p>They start as an egg, and they hatch under certain conditions are met.</p>
</li>
<li><p>and move around.</p>
</li>
<li><p>eat grain to grow</p>
</li>
<li><p>then they become chickens.</p>
</li>
<li><p>then they age and may die.</p>
</li>
</ul>
<p>Yeah, I think that could be modeled in pixel grid given that the chicks can only move limited amount of distances.</p>
<p><strong>Would it be a good idea to model it in pixel grid?</strong></p>
<p>I don't necessarily think so. Even if we model it in pixel grid, I think we should have a STABLE PLANE for the simulation of growing it. Instead of using WOLRD plane, we would use ENTITY PLANE where the being is center of the universe. the coordinates are WRT the being.</p>
<p><strong>How does this CHICK animate?</strong></p>
<p>I think, when we model the character, we will model it just like the TREE.</p>
<p>where we do something like:</p>
<pre><code class="language-plaintext">                [HEA]
                [NEC]
      [ARM][ARM][BRE][ARM][ARM]
                [TOR]
           [LEG][ASS][LEG]
           [LEG]     [LEG]
           [FOO]     [FOO]
          
</code></pre>
<p>Not up to scale or anything but you get the idea.</p>
<p>Then rendering will just add some thickness around these pixels.</p>
<p>Animation will be reduced to animating a STICK figure in pixel art.</p>
<p>Honestly not sure if this is a good idea but at least it is a start for thinking of translating a "visual thing" into a "semantic thing."</p>
<blockquote>
<p>Overall center of GRAVITY is going to be around how to CONNECT THE DOTs between SpriteDX and MACHI. They live in two different planes, but how do we bridge this gap between VISUAL WORLD and SEMANTIC WORLD. That's going to be the main PULL for my next task.</p>
</blockquote>
<p>That's it for today. Gotta get back to my course work.</p>
<p>-- Sprited Dev 🐛</p>
]]></content:encoded></item><item><title><![CDATA[SpriteDX - Community Assets]]></title><description><![CDATA[We are adding additional features into SpriteDX to allow people to share their work under creative commons.
Not for prime time yet but here is the proof of concept.
People can browse the generations f]]></description><link>https://blog.sprited.ai/spritedx-community-assets</link><guid isPermaLink="true">https://blog.sprited.ai/spritedx-community-assets</guid><dc:creator><![CDATA[Sprited Dev]]></dc:creator><pubDate>Sat, 28 Feb 2026 04:10:53 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/85cd3bb0-9005-4993-989b-ff00011d5856.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<img src="https://cdn.hashnode.com/uploads/covers/682665f051e3d254b7cd5062/fa60ba14-bed7-4062-802c-a9aa89070201.png" alt="" style="display:block;margin:0 auto" />

<p>We are adding additional features into SpriteDX to allow people to share their work under creative commons.</p>
<p>Not for prime time yet but here is the proof of concept.</p>
<p>People can browse the generations from others and download and use them.</p>
<p>-- Sprited Dev 🐛</p>
]]></content:encoded></item></channel></rss>