<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Hoodgail Benjamin</title>
    <description>The latest articles on Forem by Hoodgail Benjamin (@hoodgail).</description>
    <link>https://forem.com/hoodgail</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3557064%2F73a97d24-56b5-4c53-ab5d-66f3446c7a78.jpg</url>
      <title>Forem: Hoodgail Benjamin</title>
      <link>https://forem.com/hoodgail</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/hoodgail"/>
    <language>en</language>
    <item>
      <title>Building a Browser FPS from Scratch: Sicar.io and the Lumina.pw Engine (Devlog)</title>
      <dc:creator>Hoodgail Benjamin</dc:creator>
      <pubDate>Fri, 10 Oct 2025 06:31:57 +0000</pubDate>
      <link>https://forem.com/hoodgail/-5fc6</link>
      <guid>https://forem.com/hoodgail/-5fc6</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/hoodgail" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3557064%2F73a97d24-56b5-4c53-ab5d-66f3446c7a78.jpg" alt="hoodgail"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/hoodgail/building-a-browser-fps-from-scratch-sicario-and-the-luminapw-engine-gh7" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Building a Browser FPS from Scratch: Sicar.io and the Lumina.pw Engine&lt;/h2&gt;
      &lt;h3&gt;Hoodgail Benjamin ・ Oct 10&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#gamedev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#programming&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#typescript&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#threejs&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>gamedev</category>
      <category>programming</category>
      <category>typescript</category>
      <category>threejs</category>
    </item>
    <item>
      <title>Building a Browser FPS from Scratch: Sicar.io and the Lumina.pw Engine</title>
      <dc:creator>Hoodgail Benjamin</dc:creator>
      <pubDate>Fri, 10 Oct 2025 06:24:58 +0000</pubDate>
      <link>https://forem.com/hoodgail/building-a-browser-fps-from-scratch-sicario-and-the-luminapw-engine-gh7</link>
      <guid>https://forem.com/hoodgail/building-a-browser-fps-from-scratch-sicario-and-the-luminapw-engine-gh7</guid>
      <description>&lt;p&gt;I've been heads‑down on &lt;strong&gt;Sicar.io&lt;/strong&gt;, a fast, skill‑forward FPS that runs entirely in the browser. This devlog is a look behind the curtain: how the game came together and how I've been building &lt;strong&gt;Lumina.pw&lt;/strong&gt;, the custom web engine powering it.&lt;/p&gt;

&lt;p&gt;Creating a real‑time 3D multiplayer shooter for the web has been equal parts thrilling and stubborn. Browsers were not born for this, but with the right tricks they can sprint.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz13h5d5xx3jmf2l58ock.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz13h5d5xx3jmf2l58ock.png" alt="Sicar.io Ingame screenshot 1" width="800" height="334"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9k6cfx8fgl0r4zuel8mm.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9k6cfx8fgl0r4zuel8mm.jpeg" alt="Sicar.io Ingame screenshot 2" width="800" height="334"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Foundations: the Lumina.pw Engine
&lt;/h2&gt;

&lt;p&gt;The goal from day one was simple to say and hard to do: prove a high‑performance FPS can live natively in the browser. That meant building &lt;strong&gt;Lumina.pw&lt;/strong&gt; from scratch with &lt;strong&gt;WebGL&lt;/strong&gt; for rendering and &lt;strong&gt;JavaScript&lt;/strong&gt; for game logic. Every feature in Sicar.io pulled a matching feature into the engine, and vice‑versa.&lt;/p&gt;

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

&lt;p&gt;Watch: &lt;a href="https://i.imgur.com/qLPHv2V.mp4" rel="noopener noreferrer"&gt;Procedural Cycle&lt;/a&gt;, &lt;a href="https://i.imgur.com/OT5hTuQ.mp4" rel="noopener noreferrer"&gt;Dynamic Lighting&lt;/a&gt;, &lt;a href="https://i.imgur.com/E59qBmv.mp4" rel="noopener noreferrer"&gt;Outdoor Lighting&lt;/a&gt;, &lt;a href="https://i.imgur.com/aLKqqwg.mp4" rel="noopener noreferrer"&gt;Pre-generated Particles&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Core Mechanics: Recoil &amp;amp; Shooting
&lt;/h2&gt;

&lt;h3&gt;
  
  
  July 7, 2024 — Recoil system (WIP)
&lt;/h3&gt;

&lt;p&gt;I started with recoil because it defines how the game feels under pressure. Competitive shooters need &lt;strong&gt;predictable‑enough&lt;/strong&gt; patterns that skilled players can learn, without turning the gun into a metronome. A pure sinusoid was too readable; the current design blends a learnable base pattern with bounded variance so it stays manageable and still feels alive.&lt;/p&gt;

&lt;p&gt;Watch: &lt;a href="https://i.imgur.com/P5LYsjZ.mp4" rel="noopener noreferrer"&gt;Recoil video&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  August 20, 2024 — Movement + early shooting preview
&lt;/h3&gt;

&lt;p&gt;Hooking up movement to the first pass at shooting exposed the usual gremlins:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;IK limits&lt;/strong&gt; were clamping arm/hand reach beyond what the pose needed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Animation swapping&lt;/strong&gt; from fire → idle snapped instead of easing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Catching those early saved a lot of downstream tuning.&lt;/p&gt;

&lt;p&gt;Watch the clip: &lt;a href="https://youtu.be/4TjN5v6XDEo" rel="noopener noreferrer"&gt;FPS Movement &amp;amp; Shooting Mechanics Preview (unlisted)&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Making the World Breathe: AI Systems
&lt;/h2&gt;

&lt;h3&gt;
  
  
  September 12, 2024 — Bot pass
&lt;/h3&gt;

&lt;p&gt;To keep play meaningful without a full lobby, I built a lightweight bot layer: navigate, acquire, engage. It runs entirely on engine primitives so I can profile pathing and targeting costs in the same environment as players.&lt;/p&gt;

&lt;p&gt;Watch: &lt;a href="https://youtu.be/5wihLk8BTNM" rel="noopener noreferrer"&gt;AI Bot System in Action&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  First‑Person Polish: Inverse Kinematics
&lt;/h2&gt;

&lt;h3&gt;
  
  
  January 10, 2025 — Right‑arm IK
&lt;/h3&gt;

&lt;p&gt;Convincing first‑person hands are 90% of perceived quality. I implemented a right‑arm IK chain that keeps the weapon aligned while allowing &lt;strong&gt;separate reload and fire animations&lt;/strong&gt; to play concurrently. The target was fluidity in the vein of DOOM/Tarkov: responsive, but not floaty.&lt;/p&gt;

&lt;p&gt;Watch: &lt;a href="https://i.imgur.com/cdZQwyt.mp4" rel="noopener noreferrer"&gt;IK Testing in engine with character rig&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Smarter NPCs: Movement &amp;amp; Navigation
&lt;/h2&gt;

&lt;h3&gt;
  
  
  August 31, 2025 — Point‑and‑click navigation
&lt;/h3&gt;

&lt;p&gt;Building on the bot work, I added a simple point‑and‑click navigation showcase to stress test pathfinding, steering, and obstacle handling under engine timing.&lt;/p&gt;

&lt;p&gt;Demo: &lt;a href="https://youtu.be/Kf1Z-3I1ogE" rel="noopener noreferrer"&gt;Simple NPC Movement System Showcase&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Latest Build: Alpha Gameplay
&lt;/h2&gt;

&lt;h3&gt;
  
  
  October 10, 2025 — Alpha snapshot
&lt;/h3&gt;

&lt;p&gt;Here's a current slice with recoil, refined animations, and base AI all running on &lt;strong&gt;Lumina.pw&lt;/strong&gt; in‑browser.&lt;/p&gt;

&lt;p&gt;Watch: &lt;a href="https://youtu.be/N4ZAJAUIQvU?si=pZ120jbbn9spQFi9" rel="noopener noreferrer"&gt;Sicar.io Alpha Gameplay — Fast‑paced, precise&lt;/a&gt;&lt;/p&gt;

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




&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Tighten recoil tuning and expose per‑weapon curves.&lt;/li&gt;
&lt;li&gt;Expand animation state machine (partial‑body blends, better transitions).&lt;/li&gt;
&lt;li&gt;Broaden bot behaviors and map interaction.&lt;/li&gt;
&lt;li&gt;Keep pushing frame time down on mid‑tier hardware.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Feedback is fuel. If you're curious about any part of &lt;strong&gt;Lumina.pw&lt;/strong&gt; or &lt;strong&gt;Sicar.io&lt;/strong&gt;—rendering, IK, networking, or AI—tell me what you'd like to see next.&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>programming</category>
      <category>typescript</category>
      <category>threejs</category>
    </item>
  </channel>
</rss>
