<?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: Ibrahim Kashif</title>
    <description>The latest articles on DEV Community by Ibrahim Kashif (@ibrahimkashai).</description>
    <link>https://dev.to/ibrahimkashai</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3977713%2Fe2f4c2a5-57c7-4e0d-902c-242693358404.png</url>
      <title>DEV Community: Ibrahim Kashif</title>
      <link>https://dev.to/ibrahimkashai</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ibrahimkashai"/>
    <language>en</language>
    <item>
      <title>How Campfire Displays An Interactive Game To The Users Browser</title>
      <dc:creator>Ibrahim Kashif</dc:creator>
      <pubDate>Wed, 09 Sep 2026 07:17:24 +0000</pubDate>
      <link>https://dev.to/ibrahimkashai/how-campfire-displays-an-interactive-game-to-the-users-browser-44fp</link>
      <guid>https://dev.to/ibrahimkashai/how-campfire-displays-an-interactive-game-to-the-users-browser-44fp</guid>
      <description>&lt;p&gt;Campfire is an &lt;strong&gt;Agentic System&lt;/strong&gt; that builds entire games with simple prompts. You can think of it as a &lt;strong&gt;tool for the mind&lt;/strong&gt;. A way to enhance an individuals creativity and find a way to turn that into a &lt;strong&gt;reliable source of income and enjoyment&lt;/strong&gt; for them.&lt;/p&gt;

&lt;p&gt;The perspective that Campfire is not made for "Developers" but rather "Everyday people" really matters and it's been the d*&lt;em&gt;efining principle for the architecture of experience&lt;/em&gt;* surrounding Campfire.&lt;/p&gt;

&lt;p&gt;We've tried our best to make it as easy as possible for the user to &lt;strong&gt;genuinely create.&lt;/strong&gt; Understanding what they need to know and make decisions on. And not telling them anything about what &lt;strong&gt;genuinely does not concern them&lt;/strong&gt; or what &lt;strong&gt;Campfire can handle on its own.&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the perspective of the &lt;strong&gt;best Agentic Systems.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7li7o4t0f2zcb3u0xeqm.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7li7o4t0f2zcb3u0xeqm.png" alt=" " width="799" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Picture Of Playing A 100% Campfire Generated Game.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;However experience cannot bottleneck actual technology. And for Campfire to actually create games and iterate on a game and display it to the user we have to cheat a little bit to ensure we keep the &lt;strong&gt;beautiful elegance of Campfire's hidden architecture.&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This article is meant to help you immerse yourself in the months of iteration to finally conclude the architecture of &lt;strong&gt;Display and Compilation&lt;/strong&gt; as we have derived today. Please take time to really understand the flow, as if it were a river so that you may understand the peace and serenity of development and iteration and the excellence of flow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Problem:&lt;/strong&gt;&lt;br&gt;
A "Game Engine" is a collection of foundational tools and rules needed to build a video game. Every single game you've ever played has been built on a game engine. Something like "Unity, Unreal Engine etc".&lt;/p&gt;

&lt;p&gt;These not only hold tools for a &lt;strong&gt;human to create **within the Game Engine software but also the fundamental scripts to **run logic like physics and lighting.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Campfire is an Agentic System that handles the &lt;strong&gt;"human creation"&lt;/strong&gt; part within a game engine. We use the software's tools to do your part of &lt;strong&gt;manual labor.&lt;/strong&gt; However we are still entirely reliant on the mercy of the game engine's &lt;strong&gt;"actual engine logic"&lt;/strong&gt; to run whatever Campfire has built as the user has specified.&lt;/p&gt;

&lt;p&gt;For this very reason one can conclude that for Campfire to work, &lt;strong&gt;we need the Game Engine's backbone, regardless.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now imagine what this means, &lt;strong&gt;every single game **that's being created by Campfire needs a "process" of the game engine **open and running.&lt;/strong&gt; And to open the game engine to run the "artifacts" Campfire has created we need a &lt;strong&gt;computer to run the game engine.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So does one have to assume that you need a computer running a game engine open for every single game someone wants to create using Campfire? Imagine 500 users creating a game in a day. Does that mean we need to rent &lt;strong&gt;500 computers?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And how do we display the "running game" to the user's browser? The user is considered a 'non technical', he has no idea about "game engine". He doesn't want to see the overly complex UI of it either. So how could we possibly display something running on a computer to a user's browser. Without them waiting &lt;strong&gt;10 minutes for a single compile or us having to rent 500 computers for 500 users.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1ii8o7y0td7f464mcv3x.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1ii8o7y0td7f464mcv3x.png" alt=" " width="800" height="445"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Picture of the UI of a popular game engine software&amp;nbsp;(Unity)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here are the methods we implemented to solve exactly this problem and the limitations of each:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Preface:&lt;/strong&gt; So we looked at this problem and we concluded that we should break this down into 2 separate problems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Compiling the game&lt;/li&gt;
&lt;li&gt;Displaying the compiled game&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All the following methods that we invented and pioneered revolve around us trying to solve these 2 problems. Each method had its pros and cons. And the reason why we scrapped it.&lt;/p&gt;

&lt;p&gt;**Method 1: WebGL Compilation on the users own computer&lt;/p&gt;

&lt;p&gt;Displaying WebGL to the users computer:**&lt;br&gt;
So at first before Campfire was even in a production environment we ignored the question about "How are we going to serve this to x amount of users" and instead focussed on the singular question of &lt;strong&gt;"How do we even get anything shown to the user?".&lt;/strong&gt; We wanted very clearly to not show the "Game Engine" processes in front of the user because it would confuse them and destroy their creativity.&lt;/p&gt;

&lt;p&gt;But the **only place **the game is actually viewable from is the engine's own "UI".&amp;nbsp;&lt;/p&gt;

&lt;p&gt;That was, until we discovered &lt;strong&gt;WebGL.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F03b4t1ibh9mt42qtgcrj.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F03b4t1ibh9mt42qtgcrj.png" alt=" " width="800" height="673"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Picture of WebGL loading a Campfire Generated Game From A Singular&amp;nbsp;URL&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;WebGL is a coding tool that lets websites show 2D and 3D graphics right inside your** web browser** without needing extra plugins. For the end users it's a simple &lt;strong&gt;"type this URL inside your browser and you can play the game".&lt;/strong&gt; The most simplest of concepts. We thought it was perfect.&lt;/p&gt;

&lt;p&gt;At the time we were using NGROK which was a way for our backend to talk to our frontend. We wired the frontend iframe to fetch the URL from the backend which would give it a local file path /files/ and that would be uploaded and downloaded on the frontend.&lt;/p&gt;

&lt;p&gt;We had no issues with HTTPS or TLS certificates because the NGROK URL handled much of our problems. However unknown to us we were &lt;strong&gt;paying a major cost to take this through NGROK.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Imagine the flow: WebGL is produced on your Computer as a local folder (/g14/changes/c1). Then our browser gets the URL and fetches for it /files/g14/changes/c1. Our computer uploads the files over the internet to NGROKS servers and then the browser downloads it over the internet from NGROKS servers. Even though it's a local /file/ on the user's computer and so is the browser.&amp;nbsp;&lt;/p&gt;

&lt;p&gt;What did this result in? Well regardless of the actual compile time to produce a WebGL build inside the Game Engine. Just to download it to the browser took around 3–4 minutes and was entirely dependent on the mercy of your bandwidth which at times could be so slow that you'd be sitting there for **10 minutes just waiting **for the browser to download the "change" folder.&lt;/p&gt;

&lt;p&gt;What was the size of our file? It was &lt;strong&gt;50mb ish.&lt;/strong&gt; Nothing. However because of this routing problem we had this issue and it was unknown at the time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Compiling WebGl via the Game Engine:&lt;/strong&gt;&lt;br&gt;
Our major concern at the beginning however was not related to the browser download speed because 3 minutes was considered alright &lt;strong&gt;at the time.&lt;/strong&gt; What really concerned us was the raw "compile time" for our game engine to turn our game into WebGL. It was &lt;strong&gt;300 seconds.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now for comparison Campfire created for you an entire game in roughly &lt;strong&gt;400 seconds.&lt;/strong&gt; Now imagine having an entire game created, all the code, all the assets, the ui, everything and then you'd have to &lt;strong&gt;wait 5 minutes just for it to compile and 3 minutes for it to display.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If that was bad, one of the core principles of Campfire is 9*&lt;em&gt;0% good first output and 100% iteration tools. **We are absolutely with the concept of iteration as any good engineering project requires iteration. Imagine if you just did a singular script change or you resized or moved the character. A tiny change, you'd have to wait **8 minutes&lt;/em&gt;* to view that change. This killed the entire idea and at the time the only concept for viewing your game was "WebGL" so we knew we had to &lt;strong&gt;optimize the compile step.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Optimizing WebGL Compilation via the Game Engine:&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;This was our original baseline breakdown. Eventually we did a bunch of &lt;strong&gt;optimization steps&lt;/strong&gt; to get the compile time down to:&lt;/p&gt;

&lt;p&gt;**Asset-only changes: ~7s&lt;br&gt;
Script changes: ~51s, breakdown:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Domain reload + script detection: ~2s&lt;/li&gt;
&lt;li&gt;Scene re-authoring (549 FactoryCli calls): ~3s&lt;/li&gt;
&lt;li&gt;ProducePlayerScriptAssemblies: ~1s&lt;/li&gt;
&lt;li&gt;Compressed player packaging: ~4s&lt;/li&gt;
&lt;li&gt;Postprocess (IL2CPP/Emscripten/wasm-ld/wasm-opt): ~39s, of which wasm-ld link alone ≈ 27s**&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This was really good. However combine this with the bottleneck of &lt;strong&gt;WebGL - browser&lt;/strong&gt; we'd still be waiting +5 minutes per iteration which was absurd and we did &lt;strong&gt;not want that for our users.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So we started figuring out new ways.&lt;/p&gt;

&lt;p&gt;**Method 2: Renting Computers And Render Streaming To Users Browser&lt;/p&gt;

&lt;p&gt;Render Streaming:**&lt;br&gt;
We later heard of a new process of being able to &lt;strong&gt;display the compiled game to the frontend&lt;/strong&gt; called "Render Streaming". Render streaming is a process much like twitch or any stream that you watch live. A technology that lets you run a &lt;strong&gt;heavy, high-quality 3D application on a powerful server or computer,&lt;/strong&gt; and stream the live video and audio directly to a web browser on a smartphone, tablet, or low-powered laptop.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl7h7dfyoqo70pw53r5lb.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl7h7dfyoqo70pw53r5lb.webp" alt=" " width="720" height="462"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Picture Of Render Streaming (Using Sample&amp;nbsp;Scene).&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For this process we could ignore the entire WebGL pipeline which as you saw from the last method was the real cost &lt;strong&gt;(mainly in the displaying to the browser)&lt;/strong&gt; but also in the compile breakdown: "Postprocess (IL2CPP/Emscripten/wasm-ld/wasm-opt): ~39s, of which wasm-ld link alone ≈ 27s"&lt;/p&gt;

&lt;p&gt;We went ahead and tested it and were &lt;strong&gt;not impressed.&lt;/strong&gt; This invited &lt;strong&gt;Latency + Resolution Bitrate Issues.&lt;/strong&gt; But the major factor was that our users wouldn't have to wait (60 second compile time + 3–4 for webGL browser download) &lt;strong&gt;5 minutes per iteration.&lt;/strong&gt; It could be instant paying only the "compile time" which we knew was extremely short after removing WebGL entirely.&lt;/p&gt;

&lt;p&gt;We went ahead and tested the latency and it was &lt;strong&gt;completely fine locally.&lt;/strong&gt; The resolution was prone to fluctuations depending on your internet (obviously) but even at the best connection it couldn't stream much &lt;strong&gt;sharp edges and text was muffled&lt;/strong&gt;. We thought it was a worthwhile compromise to ensure time, especially if we introduced a "Produce Build" manual button on Campfire for when users wanted to publish their build to s*&lt;em&gt;how their friends before uploading it to steam in 2 clicks.&lt;/em&gt;*&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Iteration would be fast and reliable.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Renting Out Computers:&lt;/strong&gt;&lt;br&gt;
Now Campfire had been in development and testing for around &lt;strong&gt;7–8 months&lt;/strong&gt; and we were ready to move to the production environment. We rented a server to store Campfire's backend and got to the question of &lt;strong&gt;"How are we going to use a Game Engine when the user doesn't have one on their computer?".&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Our idea was to &lt;strong&gt;rent GPU computers&lt;/strong&gt; which had everything installed on it along with a launch script that launched the Game Engine and the related processes. Our backend would send files to it (Artifacts) via &lt;strong&gt;upload and download&lt;/strong&gt; and it would stream &lt;strong&gt;P2P with the user (Browser to Computer directly).&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now we can't just keep GPU computers on indefinitely so we devised a solution called &lt;strong&gt;"Worker/Seat + Warm Pool Instances".&lt;/strong&gt; The idea was a &lt;strong&gt;demand based orchestrator&lt;/strong&gt; that launched computers based on flux of the userbase, kept a warm pool filled for quick start and reused ones that have gone idle before terminating them if no users needed to "claim" them.&lt;/p&gt;

&lt;p&gt;We managed to optimise to get &lt;strong&gt;2 users on a computer **instead of a singular computer for one user and could scale this to **3 or even 4.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now besides the obvious fact that we now required to &lt;strong&gt;rent computers,&lt;/strong&gt; this did introduce a &lt;strong&gt;latency issue **for the Render Streaming. Though render streaming was working **P2P directly&lt;/strong&gt; from the users browser to the computer and back. This was obviously entirely dependent on &lt;strong&gt;where the user was and&lt;/strong&gt; &lt;strong&gt;where the computer was.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Compared to the local host the latency went from** 1–5ms to 120–150ms** (if you were in the same continent) or over the pacific &lt;strong&gt;300+.&lt;/strong&gt;&lt;br&gt;
Besides that the time to launch a worker (based on cold boot or warm boot) were roughly:&lt;/p&gt;

&lt;p&gt;**Warm Boot:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Boot - 200s&lt;/li&gt;
&lt;li&gt;Launch Unity - 200s&lt;/li&gt;
&lt;li&gt;Compile - 60s
Total: 7–8 minutes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cold Boot:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Boot - 200s&lt;/li&gt;
&lt;li&gt;Launch Unity - 500s&lt;/li&gt;
&lt;li&gt;Compile - 120s
Total: 13–14 minutes**&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We thought we could &lt;strong&gt;hide this underneath&lt;/strong&gt; the user's "first message" so we introduced the logic of &lt;strong&gt;"ensure capacity"&lt;/strong&gt; which would (like the orchestrator) launch a computer for the user on their &lt;strong&gt;first message&lt;/strong&gt;, anticipating a full build. If we follow how long it takes to build a full game (roughly 400s) then in the warm flow we are left with 60s total &lt;strong&gt;(460s - 400).&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The real win on this was after the computer launched &lt;strong&gt;iteration was instant (guarded only on actual compile time no webGL anymore).&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Final&amp;nbsp;System:&lt;/strong&gt;&lt;br&gt;
Now we looked at all of this data and concluded that regardless of what we do, we have to &lt;strong&gt;compromise on some place.&lt;/strong&gt; Either on the time, or on the quality or on the user experience.&lt;/p&gt;

&lt;p&gt;But then we asked ourselves the question: "&lt;strong&gt;What do we have access to?"&lt;/strong&gt; We came to the conclusion that every "compile time" even with WebGL was &lt;strong&gt;good enough **(1 minute, varying by CPU capability of the device). Render streaming, though it managed to make **compiling practically instant,&lt;/strong&gt; made everything look &lt;strong&gt;quality wise worse.&lt;/strong&gt; We didn't want to compromise on quality and playing experience so we agreed we'd go to the &lt;strong&gt;WebGL path.&lt;/strong&gt; The only problem left then, was the browser downloading WebGL. We agreed that we'd figure that out at another time and left the problem there.&lt;/p&gt;

&lt;p&gt;The next question was about how to &lt;strong&gt;"Run a Game Engine"&lt;/strong&gt; for the user.&lt;/p&gt;

&lt;p&gt;So we took the &lt;strong&gt;"renting GPU" idea *&lt;em&gt;and we switched it to *&lt;/em&gt;"using the user's computer to run their own game".&lt;/strong&gt; This meant that all the work &lt;strong&gt;(computation)&lt;/strong&gt; was happening on the users computer which it was &lt;strong&gt;more than capable handling.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And it meant that the user owned &lt;strong&gt;everything related to their project on their own computer&lt;/strong&gt;. Campfire was just the Agentic solution that modified the project and controlled the engine running on their GPU.&lt;/p&gt;

&lt;p&gt;But then we came back to &lt;strong&gt;"experience"&lt;/strong&gt; where we didn't want the user to &lt;strong&gt;"set up all this stuff"&lt;/strong&gt; and you know the long walk with 20 setup features like how some apps do it. But then it hit us that we can absolutely entirely &lt;strong&gt;automate this process.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7p3a4fmptli939cctc85.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7p3a4fmptli939cctc85.png" alt=" " width="800" height="503"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Picture Of User Downloading Campfire Bridge (one time download).&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2ilrr0vj0a20d7pah9k9.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2ilrr0vj0a20d7pah9k9.png" alt=" " width="800" height="503"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Picture Of Campfire Bridge Running On User's Computer Via Singular&amp;nbsp;Command.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The user didn't have to run around in circles. They just had to download a &lt;strong&gt;singular 'Campfire Bridge'&lt;/strong&gt; file on their computer, run a &lt;strong&gt;singular terminal command&lt;/strong&gt; and that was it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Campfire would handle the rest.&lt;/strong&gt; Downloading what it needs, modifying project files accordingly etc. It wouldn't touch anything inside the computer, just a singular folder we allowed it to touch called "Campfire" where everything related to Campfire would be. &lt;strong&gt;It was perfect and it worked well and was easy.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This also added the benefit that we didn't have to &lt;strong&gt;rent any architecture.&lt;/strong&gt; No computers no nothing because the users free GPU was right there.&lt;/p&gt;

&lt;p&gt;Now if we conclude: We got "compile" down to &lt;strong&gt;a minute&lt;/strong&gt; on the highest end and we automated the process of running the game engine to the point where the user wouldn't even &lt;strong&gt;see anything&lt;/strong&gt; which is exactly what &lt;strong&gt;we wanted experience wise **so as to not overwhelm them. We completely left render streaming meaning that there were no latency or resolution or bandwidth issues. **We gave the user control over their own project.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;All that was left was the tiny annoyance of browser download WebGL speed.&lt;/p&gt;

&lt;p&gt;We looked at the process again and instantly understood what we were doing wrong. The real build file as specified previously was barely anything** (50mb)&lt;strong&gt;. The problem was the network hopping **(computer to network to server to network to browser)&lt;/strong&gt; when both the browser and the folder existed on the &lt;strong&gt;same computer.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Our fix for this was to change it so that the &lt;strong&gt;computer directly streamed to the browser&lt;/strong&gt; via a secure &lt;strong&gt;TLS HTTPS server. **This gave us real **I/O disk speed&lt;/strong&gt; (The same speed as copying and pasting something on your computer).&lt;/p&gt;

&lt;p&gt;Conclusion: We managed to get the parts of Campfire that the user didn't need to know about, &lt;strong&gt;away from them.&lt;/strong&gt; Managed to get them to &lt;strong&gt;own their own project&lt;/strong&gt; and not cost us any architecture and got compile and iteration down to **under a minute **depending on the change.&lt;/p&gt;

&lt;p&gt;There are a few &lt;strong&gt;limitations to this method **like the fact that now that the user's computer is running the game engine so we are left to the **mercy of their own specs.&lt;/strong&gt; A normal computer can handle our game engine normally with &lt;strong&gt;0 problems&lt;/strong&gt; (you wouldn't even notice). If your computer is &lt;strong&gt;slower with less general specs&lt;/strong&gt; then the compile time would just be slower, nothing else would change. So a user may have &lt;strong&gt;20s compile&lt;/strong&gt; and another may have &lt;strong&gt;double that&lt;/strong&gt; at 40s. But overall it's a &lt;strong&gt;massive increase&lt;/strong&gt; in fluidity compared to renting GPU Computers and waiting &lt;strong&gt;13 minutes for it to do anything.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Note: We started writing this while still stuck on the rented-instance approach and it made us rethink our architecture. A few days in, we landed on the local execution model instead, which is the version we've dubbed "The Final System" and is what's currently implemented.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How Campfire Can Create An Entire Game's Assets And Animations From A Single Prompt.</title>
      <dc:creator>Ibrahim Kashif</dc:creator>
      <pubDate>Wed, 02 Sep 2026 13:32:02 +0000</pubDate>
      <link>https://dev.to/ibrahimkashai/how-campfire-can-create-an-entire-games-assets-and-animations-from-a-single-prompt-20o9</link>
      <guid>https://dev.to/ibrahimkashai/how-campfire-can-create-an-entire-games-assets-and-animations-from-a-single-prompt-20o9</guid>
      <description>&lt;p&gt;I’d like to take time out and discuss one of the core fundamental systems behind Campfire. Its entire Asset generation pipeline. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Campfire is an Agentic system that builds entire games with system prompts.&lt;/strong&gt; Imagine going back and forth with a few prompts and then having it build everything you need, art, code, game design the whole shablam. &lt;/p&gt;

&lt;p&gt;For a system like Campfire to even exist, we need to be able to take every human's basic inputs (A beginner will never describe in as much detail as is required) and turn that into &lt;strong&gt;an actual full game loop&lt;/strong&gt;. And a full game loop not only requires base assets but you also need animations which are like &lt;strong&gt;5-10 different images&lt;/strong&gt; of the same base asset. Multiply this between &lt;strong&gt;enemies, tilemap, UI, sky, low level and high level decorations&lt;/strong&gt; and you really need a robust system to reliably get base sprites and animations.&lt;/p&gt;

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

&lt;p&gt;Over the last few months we’ve taken a great deal to really go over every possible process to see what produces the &lt;strong&gt;best results.&lt;/strong&gt; This is really one of our most researched divisions as it's so essential to what we need Campfire to be so reliably. &lt;strong&gt;A means for everyday people to express their creativity without the limitations of our old crude learning practices of becoming an entire game developer to build a game.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When it comes to generating sprites and animations using AI there are 2 known methods:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Using a Video generation model like Wan1.7, Grok etc.&lt;/li&gt;
&lt;li&gt;Using a Image generation model like Images 2 GPT or NBPro&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I will go on to break down both of the known methods and some of the things that we have done to produce &lt;strong&gt;reliably enough results in Campfire&lt;/strong&gt;. Everything labelled below has taken months of research and development through various testing and consultations between experts in this division.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Image Generation:&lt;/strong&gt;&lt;br&gt;
An image generation model is &lt;strong&gt;a model that generates static single png files.&lt;/strong&gt; It can create remarkably well images especially in pixel art which is what most 2D platformers (currently all Campfire supports) choose as their art style. There is a known problem of &lt;strong&gt;“Mixels”&lt;/strong&gt; which is where if you really zoom in you’ll see that the Image generation model is generating &lt;strong&gt;FAKE pixels&lt;/strong&gt; but to the normal eye it's genuinely &lt;strong&gt;not noticeable&lt;/strong&gt;. We’ve chosen to ignore this problem in Campfire because it's just a mere “nice to have”. The reason it generates mixels is because it's taught to generate &lt;strong&gt;not in specific pixels but in “whole chunks of the image”&lt;/strong&gt; and there really is no work around to getting an image generation model to generate &lt;strong&gt;specific pixel perfect images for you&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;As for sprite sheets, image generation has increased exponentially to be almost perfectly &lt;strong&gt;style consistent&lt;/strong&gt; when generating different frames for an animation inside a singular png of a specific character. The problem does not lie with style, rather &lt;strong&gt;pure reasoning logic.&lt;/strong&gt; In a non loop animation, say a sword swing, an accurate animation sequence would be: &lt;strong&gt;frame 1 ( idle), frame 2 (rising up), frame 3 (about to attack), frame 4 (climax of attack), frame 5 (cooling down), frame 6 (back to idle).&lt;/strong&gt; A sort of incremental sequence of movements. However most often then not AI hallucinates this process, you get unnecessary frames like a &lt;strong&gt;frame 5 that instead of cooling down just points the sword up randomly.&lt;/strong&gt; Or an issue where it may get the motion correct but it decides to &lt;strong&gt;switch the hand in which the character is attacking&lt;/strong&gt; or just makes the sword &lt;strong&gt;disappear&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Another issue related to image generation for sprite sheets is that it fails to keep &lt;strong&gt;each frame inside a specific box&lt;/strong&gt; and you result in “frame spillage” where &lt;strong&gt;frame 3’s sword tip falls into frame 4’s box.&lt;/strong&gt; And besides that issue there is also the obvious problem &lt;strong&gt;(if not the hardest problem)&lt;/strong&gt; of the character jumping and jittering around inside its &lt;strong&gt;“Dedicated canvas zone”.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A proper animation sequence requires a known canvas size to draw each frame in relative to a specific anchor point.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The point being when you first see the result it looks promising however when you try to take that result and actually use it in an animation by just removing the background you’ll see &lt;strong&gt;minor inconsistencies&lt;/strong&gt; like this that ruin everything. And because of this you need a lot of post processing methods, some labelled below:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Chroma Key Removal&lt;/li&gt;
&lt;li&gt;Cut to image bounds&lt;/li&gt;
&lt;li&gt;Anchor Point Alignment + creating your own unified canvas throughout all the animations and inter animation frames.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can negate the lack of reasoning by increasing your prompt description to give &lt;strong&gt;frame by frame explanations&lt;/strong&gt; but of course as any generative AI you will never get 100% perfect results.&lt;/p&gt;

&lt;p&gt;GOOD RESULT VS BAD RESULT IMAGES&lt;br&gt;
Good Sprite Sheet Results:&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%2Frlvcl03e4jvqs4sxzcio.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frlvcl03e4jvqs4sxzcio.png" alt=" " width="800" height="800"&gt;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F45y9v0egcfbf7j14br1w.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F45y9v0egcfbf7j14br1w.png" alt=" " width="800" height="537"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bad Sprite Sheet Results:&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%2Fnqhimat5d2iheo22rwsf.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnqhimat5d2iheo22rwsf.png" alt=" " width="800" height="537"&gt;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Faj87rv7lm8o3ysgwqq0h.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Faj87rv7lm8o3ysgwqq0h.png" alt=" " width="800" height="537"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As for a singular sprite, like a character's &lt;strong&gt;“Base” asset&lt;/strong&gt; which is what we use to provide as reference for all the animation generations. The image generation model does a &lt;strong&gt;remarkably good job with the caveat that it fails to reliably produce a “solid flat base”&lt;/strong&gt; for the character. A 2D side scrolling platformer requires a character with a solid &lt;strong&gt;leveled base&lt;/strong&gt;. When you are generating the asset with chromakey as the background &lt;strong&gt;(the only way to properly remove the background from the generated sprite)&lt;/strong&gt; the character generated is essentially “floating” within this chroma background which results in a subtle &lt;strong&gt;tilt&lt;/strong&gt; on the character. What that looks like is essentially a: right foot lower than left foot type thing (just subtle enough to cause a problem):&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuxd6cgyvet1wzo2l5vr9.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuxd6cgyvet1wzo2l5vr9.png" alt=" " width="800" height="800"&gt;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F46ybivh0sho61lmm2lpy.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F46ybivh0sho61lmm2lpy.png" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can try your best to fix it with prompt enforcement but as mentioned before you won’t get 100% results. The way we’ve understood to solve this is by enforcing a &lt;strong&gt;“Chromakey base line”&lt;/strong&gt; in the same color of the chromakey background differed slightly so it’s visible but still easily removable. This enforces the character to have a solid base and works reliably well:&lt;/p&gt;

&lt;p&gt;A few examples:&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%2Fsr45pcqlaw67o1k9wepy.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsr45pcqlaw67o1k9wepy.png" alt=" " width="800" height="800"&gt;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj2l8ieoy49vm7whzmthr.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj2l8ieoy49vm7whzmthr.png" alt=" " width="800" height="800"&gt;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftqz5fmwympcp76kpu5k2.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftqz5fmwympcp76kpu5k2.png" alt=" " width="800" height="800"&gt;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2gz6glxtkvtzok3fsf6e.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2gz6glxtkvtzok3fsf6e.png" alt=" " width="800" height="800"&gt;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhhd94wu7aqhg198y9mc6.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhhd94wu7aqhg198y9mc6.png" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The only major restriction with generating using an image model is, regardless of what you try to do it will &lt;strong&gt;never manage to get a loop cycle animation&lt;/strong&gt;. Suppose a run cycle or a swim cycle or anything that is supposed to loop. You can try to increase your results by providing &lt;strong&gt;skeletal pose annotations&lt;/strong&gt; of the animation sequence but its still extremely unreliable and theres the fact that you have to create them specific for the type of character &lt;strong&gt;(e.g chibby proportions etc)&lt;/strong&gt;. The right way to handle loop animations is to go off singular sheet generation entirely and look into video generation.&lt;/p&gt;

&lt;p&gt;Example of using Image Generation for run animation:&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%2Fi7ur9n6lxd1qzkaewxpp.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%2Fi7ur9n6lxd1qzkaewxpp.jpg" alt=" " width="800" height="100"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Video Generation:&lt;br&gt;
This is by far the &lt;strong&gt;only way&lt;/strong&gt; that we’ve managed to generate loop animations. A 3 second video describing a run cycle actually generates roughly &lt;strong&gt;90 frames&lt;/strong&gt; (depending on your settings) which is definitely more than what you require. Inside these 90 frames the character probably loops multiple times. And you wont have any “inter frame alignment” issues because its a video that has been generated &lt;strong&gt;coherently&lt;/strong&gt; nor will you have terrible reasoning for the same benefit. &lt;/p&gt;

&lt;p&gt;It seems like a perfect solution you just cut the middle frames e.g 30 frames and write an algorithm to determine the loop cycle.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;However what seems perfect on the top can only truly be understood inside post processing. *&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;To ensure a clean background removal we must add a chromakey background to this generation request, however during the animation the &lt;strong&gt;color of the chromakey mixes with some of the outer edges of your character within some animation frames&lt;/strong&gt; so the character's ‘boot’ looks greenish in frame 12 and normal in frame 14. &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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs24xxbctgrtzikbjdco2.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs24xxbctgrtzikbjdco2.png" alt=" " width="746" height="628"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This &lt;strong&gt;inconsistency&lt;/strong&gt; in color doesn’t break the illusion of a smooth looping animation but it's noticeable enough for someone to point out &lt;strong&gt;“why does my character turn green when it starts running”.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Besides this, the biggest problem is probably specifically related to &lt;strong&gt;pixel art&lt;/strong&gt;. Video generation models are &lt;strong&gt;not trained on pixel art animation&lt;/strong&gt;, they're mainly trained on &lt;strong&gt;real life video&lt;/strong&gt;. Because of this they make very mushy pixels during the animation. If you use the right model however, from the perspective of the user the mushness is as less noticeable as the mixels are. As for the color leakage we currently have not implemented any solution for that but thoughts do come to mind by creating a unified color palette using the base asset provided as reference along with the normal frames without color leakage and using that to fix the color leakage frames. We will test this and will update you on how it went or any other solution we ended up using.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's the biggest problem Campfire has with using AI generation for base sprites and animations?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As for image generation, base sprites are generated remarkably well as mentioned. The main problem is with the** post processing singular canvas + anchor point for animation generation.** To help you understand let me take an example of a character's true animation requirements:&lt;/p&gt;

&lt;p&gt;Let us picture a “Lumberjack with a gun” player. The basic animations required are as follows: &lt;strong&gt;Run, Shoot, Jump, Idle, Death, Reload&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not only do we have to run post processing and remove the jitter between a &lt;strong&gt;singular animation sequence&lt;/strong&gt; (shoot for example known as the &lt;strong&gt;“inter animation frames alignment”&lt;/strong&gt; but we also have to normalize a &lt;strong&gt;singular canvas and anchor point&lt;/strong&gt; so that all other animations (already inter-aligned) can be &lt;strong&gt;aligned with each other.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A transition from Idle - Run cannot put the character on the right or move it up within the same canvas otherwise the transition isn’t smooth right?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is the proposed solution to fix this?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Well it seems obvious what we must do to fix this, we must &lt;strong&gt;determine a canonical anchor point for the character itself&lt;/strong&gt;. Something distinct that we can reference throughout every single animation (swim, run, jump, death, custom animation 1) whatever. Let us suppose when we are generating the base asset we specify a &lt;strong&gt;singular distinct anchor point&lt;/strong&gt;. Something like the users &lt;strong&gt;right boot or a ghost's tail&lt;/strong&gt;. Now when generating the animation sheet we reference this &lt;strong&gt;‘anchor point’&lt;/strong&gt; inside the &lt;strong&gt;“Frame by Frame Description”&lt;/strong&gt; and on the &lt;strong&gt;top level of the prompt&lt;/strong&gt;: “Keep the character's right boot locked on the same anchor position throughout all frames”. &lt;/p&gt;

&lt;p&gt;This doesn’t promise the character doesn’t jitter. What this promises is that &lt;strong&gt;the character's right boot looks the same (shape and color) throughout all frames&lt;/strong&gt; wherever they choose to spawn inside its dedicated canvas space on the singular sprite sheet. Then we can use basic &lt;strong&gt;pattern matching to align all the frames. *&lt;em&gt;And since we’ve agreed that this is the *&lt;/em&gt;“canonical anchor throughout this specific character”&lt;/strong&gt; a jump, idle, shoot all share the same &lt;strong&gt;“right boot locked rule”&lt;/strong&gt; so we can pattern match animation sequence 1 (idle) with animation sequence 2 (shoot) and it works amazingly. Quadruplets or characters like a bat or whatever imaginary character can also follow this method. The point is enforcing that &lt;strong&gt;every character or asset that we will generate has a “distinct” part of it that is easily recognizable.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frk36odqhv8zb087vd6nf.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frk36odqhv8zb087vd6nf.png" alt=" " width="800" height="146"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The limitations to this method:&lt;/strong&gt;&lt;br&gt;
This is when there is a &lt;strong&gt;clearly distinct part&lt;/strong&gt; of a character. What happens when the character is a slime blob? What happens when in the last frame of a death animation the character collapses entirely? How do you enforce a “lock right boot at the same place” while your frame by frame description says: "Collapse the character entirely as if he’s lying down”. And what happens when the character leaves the ground? Inside the raw generated sprite sheet he physically moves inside the canvas and the animation requires the boot to change into a more “pointed” way. &lt;/p&gt;

&lt;p&gt;We’ve tested and we’ve gotten these “inconsistencies” to be caught best we can through &lt;strong&gt;ample prompt principles + other special case fine tuning methods&lt;/strong&gt; but it's never 100% perfect. &lt;/p&gt;

&lt;p&gt;Rest all problems are merely an &lt;strong&gt;increase in prompting logic and fine tuning here and there&lt;/strong&gt; in post processing to get more accurate results. &lt;/p&gt;

&lt;p&gt;Other game assets&lt;br&gt;
AI Image models reliably produce all the relevant aspects of a game, the UI, the tilemap, the decorations all while maintaining style consistency. &lt;/p&gt;

&lt;p&gt;The way Campfire does it &lt;strong&gt;so well&lt;/strong&gt; is we use a &lt;strong&gt;multi agent architecture&lt;/strong&gt; which just means we have a singular &lt;strong&gt;planning agent that decides beforehand the entire experience of the game&lt;/strong&gt; and the style and the feel and then we have other sub agents that can &lt;strong&gt;interpret this “Design spec”.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fht4mum7l306hj9oar2az.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fht4mum7l306hj9oar2az.png" alt=" " width="800" height="458"&gt;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcc4w98v2uyat3bfa0k7z.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcc4w98v2uyat3bfa0k7z.png" alt=" " width="800" height="537"&gt;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxy6b2skbl99f654yt1q5.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxy6b2skbl99f654yt1q5.png" alt=" " width="800" height="800"&gt;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzw2dez4laceitms6l15a.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzw2dez4laceitms6l15a.png" alt=" " width="800" height="537"&gt;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0s4pjmt36b91343jp6cv.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0s4pjmt36b91343jp6cv.png" alt=" " width="800" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The hard part isn’t &lt;strong&gt;producing a single static image&lt;/strong&gt; (UI, tilemap etc), it’s mainly in the &lt;strong&gt;animations due to the fact that we turn a singular image to up to 40 different images (4-5 different animations)&lt;/strong&gt; of the same base image. Needing to be style + Incremental logic sequence consistent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My conclusion&lt;/strong&gt;&lt;br&gt;
The fundamental principle of Campfire is &lt;strong&gt;giving the user enough proof of concept and providing them with reliably enough iteration tools for them to fall into the creative cycle.&lt;/strong&gt; We prefer to give the user only WHAT they need to know. Campfire is not for &lt;strong&gt;game developers or technicals it’s for their counterpart: Everyday people.&lt;/strong&gt; An everyday person doesn’t care about canvas alignment or animation consistency they just say: &lt;strong&gt;“I want a run animation for this zombie and also throw in a bite one”.&lt;/strong&gt; 100% of the process Campfire has to handle because the users job as we believe is &lt;strong&gt;High level intent&lt;/strong&gt; where they belong. &lt;/p&gt;

&lt;p&gt;Generating using &lt;strong&gt;AI 100% is prone to hallucination.&lt;/strong&gt; That's why we’ve preferred to make it easy to iterate on an undesirable output. It's definitely not perfect but the prospect is here that these models are only ever getting *&lt;em&gt;cheaper and better. *&lt;/em&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm8ela5umejvssrndklez.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm8ela5umejvssrndklez.png" alt=" " width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To generate an entire game's assets have gone from &lt;strong&gt;thousands of dollars or hiring someone to spend 100s of hours to mere seconds&lt;/strong&gt; and less than &lt;strong&gt;5 dollars per game.&lt;/strong&gt; It's incredible what this can allow and enable. &lt;/p&gt;

&lt;p&gt;The loose end really is in how you get &lt;strong&gt;animations to be aligned well enough on their own&lt;/strong&gt; that you see no jitter at all or no out of the ordinary frame or frame leakage throughout all your animations for all your characters. There's a lot of moving parts and post processing steps that rely on each other and &lt;strong&gt;if one fails it doesn’t matter how good the other steps worked the animation feels off.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>gamedev</category>
    </item>
    <item>
      <title>Why game developers are scared to say they used AI</title>
      <dc:creator>Ibrahim Kashif</dc:creator>
      <pubDate>Mon, 15 Jun 2026 06:13:02 +0000</pubDate>
      <link>https://dev.to/ibrahimkashai/why-game-developers-are-scared-to-say-they-used-ai-3ka8</link>
      <guid>https://dev.to/ibrahimkashai/why-game-developers-are-scared-to-say-they-used-ai-3ka8</guid>
      <description>&lt;p&gt;Why game developers are scared to say they used AI&lt;/p&gt;

&lt;p&gt;A friend of mine recently posted in a game dev Discord asking whether he should include &lt;strong&gt;"AI used"&lt;/strong&gt; in his Steam page description. The replies were &lt;strong&gt;unanimous&lt;/strong&gt;. Don't do it. Players will **skip your game **before they even read the description.&lt;/p&gt;

&lt;p&gt;That fear is** real**. And it's worth talking about honestly.&lt;/p&gt;

&lt;p&gt;About &lt;strong&gt;70-85% of all digital content created today has touched AI somewhere in the workflow.&lt;/strong&gt; Whether that's idea generation or actually producing output. The problem is that people see the term "AI used" and immediately picture the same slop they scroll past on social media. Cheap generated videos, hollow images, content that took 3 seconds to make and looks like it. &lt;strong&gt;Their prejudice is understandable. It's just not accurate.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There is a fine line between people who waste time producing &lt;strong&gt;below average content&lt;/strong&gt; and people who are using this technology to &lt;strong&gt;enhance their own capabilities&lt;/strong&gt;. AI is a bicycle for the mind. Nothing more, nothing less. Where an artist creating game assets would take &lt;strong&gt;500+ hours&lt;/strong&gt; to generate all the artwork for a game, AI can take that artist's intent and generate it &lt;strong&gt;in minutes&lt;/strong&gt;. Where a programmer would &lt;strong&gt;spend months **defining and refining code, a single prompt to a context filled model gets it **done in seconds&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We as humans know exactly &lt;strong&gt;what we want.&lt;/strong&gt; We know the correct feeling. We are the architects. We've never been the fastest creature or the most sturdy. We gained dominance because we knew how to invent tools that &lt;strong&gt;suited us&lt;/strong&gt;. AI is &lt;strong&gt;exactly that&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Majority of Claude's code is generated by Claude itself. Majority of Google's code is generated by Google's own AI. Nobody has a problem with that. Because the &lt;strong&gt;output is real&lt;/strong&gt;, it works, and real people built something with it.&lt;/p&gt;

&lt;p&gt;Having a game touched by AI in the development process is a self filter. If it truly is just slop, &lt;strong&gt;nobody plays it&lt;/strong&gt;. Simple. But if you forget that label for a second and just look at the actual game, you'll find out pretty quickly whether it's &lt;strong&gt;good or not&lt;/strong&gt;. The label was never the &lt;strong&gt;point&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;When I heard some of my Game Developer friends were &lt;strong&gt;scared&lt;/strong&gt; to put the term “AI used” inside their info for the game they're working on in fear that people won’t play it, what's the hope for *&lt;em&gt;Campfire? *&lt;/em&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%2Feq64q58wfls4kq6v8w5g.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%2Feq64q58wfls4kq6v8w5g.png" alt=" " width="800" height="494"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generated 100% from Campfire. Game Assets, tilemap, ui, logic, terrain, entity placements etc. Took a few natural human-like planning prompts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Campfire is something that we’ve been building for the last 6 months now. &lt;strong&gt;It’s an agentic system that builds entire games from simple prompts&lt;/strong&gt;. Backed by a real game engine. If people shun at “AI Used” what about** “Entirely built by AI”&lt;strong&gt;. But the truth is, if you produce something real.&lt;/strong&gt; It doesn’t matter*&lt;em&gt;. Like google, like claude. If the output is real, and you’ve done your due diligence to iterate and refine and update then your outcome is **more powerful than any label.&lt;/em&gt;* Campfire isn’t a means of &lt;strong&gt;removing creativity&lt;/strong&gt;, its just a means of &lt;strong&gt;lowering the barrier of entry&lt;/strong&gt; so that people can have ALL their focus on creating instead of figuring out how to loop an animation.&lt;/p&gt;

&lt;p&gt;It’s definitely not perfect, but its the first thing we’ve seen that shows us that a time will come where everyday people will actually be able to &lt;strong&gt;express their ideas as well&lt;/strong&gt;. In the same way Claude Code or lovable, lowered the barrier of entry to developing real software products. &lt;strong&gt;Campfire is doing the same for games.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here, this is a video of Campfire creating a game, its not 100% but its more than a proof of concept: &lt;a href="https://www.instagram.com/p/DYd_-MEtOQ1/" rel="noopener noreferrer"&gt;https://www.instagram.com/p/DYd_-MEtOQ1/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>gamedev</category>
      <category>aislop</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Campfire, create entire games in simple prompts. This is why current Game Development is broken.</title>
      <dc:creator>Ibrahim Kashif</dc:creator>
      <pubDate>Wed, 10 Jun 2026 12:52:02 +0000</pubDate>
      <link>https://dev.to/ibrahimkashai/campfire-create-entire-games-in-simple-prompts-this-is-why-current-game-development-is-broken-1gbk</link>
      <guid>https://dev.to/ibrahimkashai/campfire-create-entire-games-in-simple-prompts-this-is-why-current-game-development-is-broken-1gbk</guid>
      <description>&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%2Fanl0xblydal1e2pl47p1.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%2Fanl0xblydal1e2pl47p1.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The part time game dev communities are full of the same post:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I wish I could quit my day job and just build games but games don't pay the bills."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The truth is, the world is filled with &lt;strong&gt;hidden flowers&lt;/strong&gt; waiting to bloom. However the barrier of entry to create has been the sole cost of them not chasing their dreams. Lets examine if someone woke up with an idea to create a game, what would it require? There are &lt;strong&gt;3 currencies&lt;/strong&gt; everyone has and each increase or decrease depending on the person:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Time&lt;/li&gt;
&lt;li&gt;Money&lt;/li&gt;
&lt;li&gt;Skills&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If someone really wanted to build a game and wanted to do it the most efficient way possible, you could average a &lt;strong&gt;few tens of thousands&lt;/strong&gt; of dollars (20-35K). Hollow Knight was 50K with a skilled dev team. You would need to &lt;strong&gt;hire talent and lead them&lt;/strong&gt;, having no idea of the basics, lets say 3 people (code, art, planning). And you would need &lt;strong&gt;months or even years&lt;/strong&gt; of full time commitment to get things right. And remember, you only reap the rewards **after **the game is finished. Now if you tell this to an everyday person who has that idea for the next GTA level game, they're going to bed happy with their day job.&lt;/p&gt;

&lt;p&gt;Instead of coming up with an idea, learning programming and art design and the rest of the game dev process, taking years, tens of thousands of dollars and most likely relying on a team just to express that very idea. &lt;strong&gt;Everyday people can do this in just a few back and forths with Campfire&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That's the essence that Campfire is built on. &lt;strong&gt;Campfire is an Agentic Solution that builds entire games with simple prompts.&lt;/strong&gt; It's not a tool meant to be used by a game developer that wants to speed up a task, rather for an everyday person to one day wake up and realise they have a chance to do something incredible and express their creativity in a way never seen before.&lt;/p&gt;

&lt;p&gt;And I want to be clear, this isn't a means of skipping or removing creativity. Rather the opposite. We're not giving people a shortcut, we're opening a new door. If Campfire can in a few prompts produce a well enough output, and provide people with good enough iteration tools, you'll find them &lt;strong&gt;more creative than ever.&lt;/strong&gt; I myself am proof of this, having sold software using no code solutions because I had an idea, a willingness to make it happen and most importantly the barrier to entry was reduced by these agentic systems.&lt;/p&gt;

&lt;p&gt;The eventual goal is not just to empower creativity for individuals to allow hidden gems to bloom. But it's also to allow those very people to turn this into a sustainable business for themselves, soon enough for it to be worth it. A means of sustaining their creative endeavors and &lt;strong&gt;chasing their dreams&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We've already seen this metric and this change in tools like Claude Code, Lovable.dev, Replit. These are softwares that have &lt;strong&gt;changed the entire engineering industry&lt;/strong&gt; because they lowered the barrier of entry to create and enhanced an individuals ability to create.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;The difference between a programmer and a non programmer in building something real like a software product is just an idea and the willingness to express it.&lt;/u&gt;&lt;/p&gt;

&lt;p&gt;People tell me that this seems like &lt;strong&gt;cheating&lt;/strong&gt;. That if someone really wanted to build a game they'd sacrifice the years and the effort and make it real to them. Well, &lt;strong&gt;not everyone can do that.&lt;/strong&gt; People have kids, they have jobs. People won't even try yet because the cost of success is &lt;strong&gt;too high&lt;/strong&gt;. That's what Campfire reduces. An everyday person is flexible unlike a dev. They won't say: "Give me a 16 frame loop animation of a run of this specific character". They'll just say: "Make the character run" and then Campfire handles the rest. And imagine a kid trying to express creativity. No responsibilities true but in the attention economy they need something proven to activate their &lt;strong&gt;natural creativity loop.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You see where I'm going with this? One path takes 15 steps and previous experience of redundant information to know. And one path is just: "Give me what I want." &lt;strong&gt;That's the point of Campfire.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F90hxfexjpukwsipg8d7x.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%2F90hxfexjpukwsipg8d7x.png" alt=" " width="800" height="559"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generated 100% from Campfire. Game Assets, tilemap, ui, logic, terrain, entity placements etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Imagine a process where you go back and forth with Campfire, debug, iterate and create a game to your liking. And then it's a 2 click upload to Steam. Something like that. Where people can turn their creativity into a revenue source.&lt;/p&gt;

&lt;p&gt;Another argument may be that because of this every game will just become cheap and lame.** That is hardly the case.** 90% of games already are those cheap web games you see around, not a proper game like GTA or RDR. If more people are creating games, then the games that come out on top are the ones that are the &lt;strong&gt;most fun.&lt;/strong&gt; People who want to express their ideas will have to actually try if they want to succeed. &lt;strong&gt;That never changes.&lt;/strong&gt; The end result? Better games for everyone and people being able to make a &lt;strong&gt;life off their passions.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Campfire is certainly not done right now. We're trying really hard and it's a lot of work. To generate any game in the future we do have to start small &lt;strong&gt;(2D sidescrolling platformers)&lt;/strong&gt;, there are some things that are still buggy, but it does a really good job at producing a provable outcome and done some things &lt;strong&gt;remarkably great.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;My theory is simple. If we can build a 75% good output on the first planned run, and provide 90% good iteration tools, people naturally fall into the creative spirit of iteration and engineering. That's truer than anything.&lt;/p&gt;

&lt;p&gt;Telling is boring though, I want to show you guys, it's easier that way. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here, watch Campfire create a game: &lt;a href="https://www.instagram.com/reel/DYjAyvXjEPB/" rel="noopener noreferrer"&gt;https://www.instagram.com/reel/DYjAyvXjEPB/&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The video does the talking.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ibrahim Kashif&lt;/strong&gt; is the founder of &lt;strong&gt;Campfire, an agentic AI system that generates complete playable games from simple prompts.&lt;/strong&gt;&lt;br&gt;
Follow the build on Instagram: &lt;a href="https://www.instagram.com/ibrahimkashai_/reels/" rel="noopener noreferrer"&gt;https://www.instagram.com/ibrahimkashai_/reels/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>ai</category>
      <category>indiegame</category>
      <category>buildinpublic</category>
    </item>
  </channel>
</rss>
