<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Saikat Das</title>
    <description>The latest articles on DEV Community by Saikat Das (@ipsamurai).</description>
    <link>https://dev.to/ipsamurai</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4172655%2Ffc9b98de-afa2-488e-927a-f4a907ae4931.webp</url>
      <title>DEV Community: Saikat Das</title>
      <link>https://dev.to/ipsamurai</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ipsamurai"/>
    <language>en</language>
    <item>
      <title>FRAGLINE: an offline neon arena shooter that turns one laptop and a Wi-Fi network into a LAN party</title>
      <dc:creator>Saikat Das</dc:creator>
      <pubDate>Sun, 11 Oct 2026 06:15:27 +0000</pubDate>
      <link>https://dev.to/ipsamurai/fragline-an-offline-neon-arena-shooter-that-turns-one-laptop-and-a-wi-fi-network-into-a-lan-party-3jk6</link>
      <guid>https://dev.to/ipsamurai/fragline-an-offline-neon-arena-shooter-that-turns-one-laptop-and-a-wi-fi-network-into-a-lan-party-3jk6</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week1-2026-10-05"&gt;Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built:
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;FRAGLINE&lt;/strong&gt; is a fast, neon 2D arena shooter that runs in a browser tab, with bots and LAN multiplayer built in. It's a modern tribute to the Newgrounds classic &lt;em&gt;Unreal Flash&lt;/em&gt;, built from scratch in Godot 4.7.&lt;/p&gt;

&lt;p&gt;The "touch grass" part is the multiplayer. There are no accounts, no matchmaking servers and no lobbies on someone else's cloud. One person runs a tiny local server and shares a 6-character room code. Everyone else on the same Wi-Fi opens the address in their browser and joins. Up to 8 players fight in the same room, with the host's bots filling any empty slots.&lt;/p&gt;

&lt;p&gt;It's for friends, classmates and teammates who want a quick game in the same room, on whatever devices people already have. The whole game is about 4 MB of data, so nobody has to download or install anything.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;9 weapons&lt;/strong&gt; with alt-fire modes (Shock Rifle combos, rocket jumps, sticky grenades, wall-piercing sniper shots)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;6 mirrored PvP arenas&lt;/strong&gt; with hazards, plus a Training Room&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bots at 5 skill levels&lt;/strong&gt; that navigate ladders, jump pads and drop-through floors&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;12 recolourable fighters&lt;/strong&gt;, a CC0 synthwave and drum-and-bass soundtrack, and no sprite sheets (everything is drawn in code)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Demo:
&lt;/h2&gt;

&lt;p&gt;Screenshots (from the repo):&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvw5ha6h4dh23vx5k8goi.jpg" 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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvw5ha6h4dh23vx5k8goi.jpg" alt="FRAGLINE main menu over a live bot match" width="800" height="501"&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnug8zs5ewibiajabx5hm.jpg" 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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnug8zs5ewibiajabx5hm.jpg" alt="Foundry arena: molten pit, catwalks and a shock-rifle beam" width="800" height="501"&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1yp59lbnfr8iuuew1hum.jpg" 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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1yp59lbnfr8iuuew1hum.jpg" alt="Cryo Station arena" width="800" height="501"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Code:
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/ipsamurai" rel="noopener noreferrer"&gt;
        ipsamurai
      &lt;/a&gt; / &lt;a href="https://github.com/ipsamurai/fragline" rel="noopener noreferrer"&gt;
        fragline
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;FRAGLINE&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Fast, neon 2D arena combat that runs in your browser, with bots and LAN multiplayer built in.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A modern tribute to the Newgrounds classic &lt;em&gt;Unreal Flash&lt;/em&gt;, built from scratch in Godot 4.7.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/d181e0b50e8665c0ee22414ee0c9f28fb1d0a2d622873b2f63429eaf61d1bace/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f476f646f742d342e372d3437384342463f6c6f676f3d676f646f74656e67696e65266c6f676f436f6c6f723d7768697465"&gt;&lt;img src="https://camo.githubusercontent.com/d181e0b50e8665c0ee22414ee0c9f28fb1d0a2d622873b2f63429eaf61d1bace/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f476f646f742d342e372d3437384342463f6c6f676f3d676f646f74656e67696e65266c6f676f436f6c6f723d7768697465" alt="Godot 4.7"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/3f0d9e252675f61fedc2340162a2b844a6c458f03e6a8e5e7e663969859a381a/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d5765622532302537432532304465736b746f702d306631373261"&gt;&lt;img src="https://camo.githubusercontent.com/3f0d9e252675f61fedc2340162a2b844a6c458f03e6a8e5e7e663969859a381a/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d5765622532302537432532304465736b746f702d306631373261" alt="Platform"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/468c6c3fb239ead43241ed88592e544a3f0e5ce2f8141357d8e56e867c21a8c9/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c414e2532305076502d5765625254432532305032502d323264336565"&gt;&lt;img src="https://camo.githubusercontent.com/468c6c3fb239ead43241ed88592e544a3f0e5ce2f8141357d8e56e867c21a8c9/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c414e2532305076502d5765625254432532305032502d323264336565" alt="Multiplayer"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/c3717d66cb1fe0580e47ea3af1e7bf07168f0a485c419816aeeef63dac0cbb79/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f67616d65253230646174612d7e342532304d422d613835356637"&gt;&lt;img src="https://camo.githubusercontent.com/c3717d66cb1fe0580e47ea3af1e7bf07168f0a485c419816aeeef63dac0cbb79/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f67616d65253230646174612d7e342532304d422d613835356637" alt="Game data"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/efadcdccdcd2307dd19348fe6ca10a5dc35448286ba48cd4407b6e31c5616154/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f74657374732d34253230686561646c6573732532307375697465732d323263353565"&gt;&lt;img src="https://camo.githubusercontent.com/efadcdccdcd2307dd19348fe6ca10a5dc35448286ba48cd4407b6e31c5616154/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f74657374732d34253230686561646c6573732532307375697465732d323263353565" alt="Tests"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/ipsamurai/fragline/docs/screenshots/menu.jpg"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fipsamurai%2Ffragline%2FHEAD%2Fdocs%2Fscreenshots%2Fmenu.jpg" alt="FRAGLINE main menu over a live bot match"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why FRAGLINE&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Opens in a browser tab.&lt;/strong&gt; No install and no plugins. It runs on WebGL 2 using Godot's no-threads web build, so it works on any static host without special server headers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Small download.&lt;/strong&gt; All the game data (art, levels, sound and music) is about 4 MB. Every character, weapon, level and effect is drawn in code, so there are no sprite sheets.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bots that play properly.&lt;/strong&gt; Bots find their way around every arena using ladders, jump pads and drop-through floors. They pick up items, avoid traps, lead their shots and dodge. There are five skill levels, from Rookie to Godlike.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LAN multiplayer with a room code.&lt;/strong&gt; Host a match and share a 6-character code…&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/ipsamurai/fragline" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Run it yourself:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./tools/build_web.sh        &lt;span class="c"&gt;# export to build/web/&lt;/span&gt;
python3 tools/serve.py      &lt;span class="c"&gt;# serves on http://localhost:8000 and on your LAN&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Quick Start : &lt;a href="https://github.com/ipsamurai/fragline#quick-start" rel="noopener noreferrer"&gt;https://github.com/ipsamurai/fragline#quick-start&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How I Built It:
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Engine and rendering.&lt;/strong&gt; Godot 4.7 with the no-threads web export, so it works on any static host without special headers. Characters, weapons, levels and effects are all drawn procedurally in code, which keeps the download tiny.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Levels are ASCII art.&lt;/strong&gt; Each arena is a block of text in &lt;code&gt;src/data/maps.gd&lt;/code&gt;. The game builds collision, decoration, item spawns and the bot navigation graph from it, and every map is mirrored for fairness.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Events at the core.&lt;/strong&gt; The &lt;code&gt;World&lt;/code&gt; node announces every game event: shots, hits, pickups, kills. Single-player handles them locally. In multiplayer the host sends the same events to every client, so both modes run the same rules code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LAN multiplayer over WebRTC.&lt;/strong&gt; &lt;code&gt;tools/serve.py&lt;/code&gt; serves the game and swaps WebRTC connection details using the room code. After that, game traffic goes browser to browser and never touches the server. Your own movement runs locally so it never feels laggy, and other players are updated 30 times a second and smoothed. The host makes the final call on damage, pickups and scores, and checks each client's fire rate, ammo, weapon ownership and muzzle position.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bots.&lt;/strong&gt; They plan routes over a navigation graph (walking, jumping, double jumps, drop-throughs, ladders, jump pads). They pick what to do (heal, armour up, grab a weapon, hunt, roam) by scoring each option. In a fight they choose a weapon for the range, lead moving targets, arc grenades, aim rockets at your feet and set up shock combos.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tests.&lt;/strong&gt; Four headless suites cover combat rules, menus, bot navigation on every arena, and full bot matches.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;Every layer of FRAGLINE is open: the engine (Godot, MIT), the music (CC0, The Cynic Project), the sound effects (CC0, Kenney) and the font (OFL, Chakra Petch). That is what made a small, self-hostable, no-account game possible. There's no hosted API to depend on, no per-player cost and no service that can disappear, so the game works on a Wi-Fi network with no internet connection once it's served. A closed platform would have meant accounts, servers and fees between friends sitting in the same room.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Agent Session:
&lt;/h2&gt;

&lt;p&gt;I used github copilot to plan, and start the initial building of this shooting multiplayer game project. and then completed this project using Claude Code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize Categories:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Gemma Open Wright Local LLM through llama.cpp&lt;/li&gt;
&lt;li&gt;Github Copilot (for making this project possible)&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Team:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Saikat Das : me :P&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>gamedev</category>
      <category>godot</category>
    </item>
  </channel>
</rss>
