<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[FumoCam]]></title><description><![CDATA[FumoCam]]></description><link>https://fumocam.xyz</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Apr 2026 08:57:45 GMT</lastBuildDate><atom:link href="https://fumocam.xyz/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Day 0 - FumoCam Beginnings]]></title><description><![CDATA[Believe it or not, I've never played Roblox. I didn't know what Touhou was, and I certainly had no clue about the entire subculture of "Fumos", the limited line of plushies made after (typically) Touhou characters from a very specific vendor in Japan...]]></description><link>https://fumocam.xyz/day-0-fumocam-beginnings</link><guid isPermaLink="true">https://fumocam.xyz/day-0-fumocam-beginnings</guid><dc:creator><![CDATA[CamDev]]></dc:creator><pubDate>Fri, 19 Nov 2021 18:56:23 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1637348593762/5Y1AbrjWR.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Believe it or not, I've never played Roblox. I didn't know what Touhou was, and I certainly had no clue about the entire subculture of "Fumos", the limited line of plushies made after (typically) Touhou characters from a very specific vendor in Japan. So to find myself as the longest-running, self-sufficient bot for a community thats at the center of these already niche fields is something I don't think anyone saw coming. 
Why did I start FumoCam? Here's a shocker, I didn't. And even the person who did, didn't do it because <em>they</em> thought of it.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1637343263682/ufrhTH1gI.png" alt="image.png" /></p>
<p>A friend of mine (and his sister), who we'll call Sirno, has had an interest in all three of these for a long time. Sirno is actually making their own Touhou game, but that's getting off-track. </p>
<p>They ran a brief trial of a live stream on a static position with no user interaction, and let it run for a while. Within the first 20 minutes, it was disconnected due to activity. So he wrote a script.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1637343569030/TD_vSyZSTj.png" alt="image.png" /></p>
<p>But there quickly grew other issues.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1637343692623/oURB0KhFx.png" alt="image.png" />
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1637343934112/cqRsQzT_g.png" alt="image.png" /></p>
<p>We discussed solutions for a bit, but almost everything was extremely hypothetical.
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1637344067849/eBEWo7RU6.png" alt="image.png" /></p>
<p>6 hours later, we ran into the biggest problem yet: He wanted to play something else.
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1637344169941/_8boVuDqe.png" alt="image.png" /></p>
<p>The concept had a lot of hype behind it, the community seemed to really enjoy it. I encouraged him to pursue this as it had a lot of potential, but...</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1637344471840/l4QGXQv0W.png" alt="image.png" /></p>
<p>"Hm, well easy enough fix" I thought, "just create a virtual audio device that doesnt route through any speakers".</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1637344584695/OZmsplF_S.png" alt="image.png" />
Progressively, I began to help more with Sirno's "FumoCam".
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1637347644625/Kg-RZPKgT.png" alt="image.png" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1637348816100/H7H1APEnl.png" alt="image.png" /></p>
<p>Wow. Insane. $50 for a hack for a children's game? And not to mention, you never got raw access! You received access to an always-online, closed source GUI and even then it didn't work all the time because the memory addresses would need to be re-mapped EVERY TIME THE GAME UPDATES. And in many cases, causes the game to crash. For something thats supposed to be headless, this was not going to be a good solution. So Sirno started to lose faith, since he was dead-set on the idea of using an injector. I continued to suggest that perhaps a more system-agnostic approach would be more viable, such as switching to the application if not active, and manually emulating keypresses. This was something he wasn't interested in doing, as the effort far exceeded what he originally intended to do, and that he had no time.
Time? That would take no time to do at all. So my goal was to create a proof-of-concept with Python (which is typically more suited for such automation) in the least amount of time possible. Let the speedrun begin.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1637345591334/RfFPnKKeD.png" alt="image.png" />
I started coding on my spare laptop, and since I was in a room I was renting has no A/C, essentially, I had to take my laptop out of my room, run a charging cable under the door, and code on the floor of a dimly lit, dirty basement. I start streaming to no one, just so I can test things out, and then I receive a message.</p>
<p><em>(To any perceptive community members, my version of FumoCam used to use the Reisen character, it was not always the Momiji character)</em>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1637347803635/Ir60od6J5.png" alt="image.png" />
"Well, that's nice," I thought. "Maybe I can get one or two people before he re-launches his bot on Monday." </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1637345939262/vOB_mFMC-.png" alt="image.png" />
Um.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1637345950191/C3fvseWNuV.png" alt="image.png" />
Well now I have to work even faster.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1637345968348/H7zEeoDXP.png" alt="image.png" />
Uh... why is the creator of this game watching my stream?</p>
<p>I quickly found out Twitch greatly prefers if you write code in Javascript. 
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1637346053672/NG33ZJ92b.png" alt="image.png" />
But I pushed through and got it working.
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1637346117368/FiE7g_u0X.png" alt="image.png" />
And very quickly, the creator of the game decided to tweet about it not once, but twice.
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1637346806419/rh2YUNafN.png" alt="image.png" />
After I woke up the next morning to check if it was still up (I had not coded any in-game checks yet)
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1637346860401/tP1J8ZjAP.png" alt="image.png" />
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1637346960097/rS84PTQOf.png" alt="image.png" />
And so, unfortunately, the first FumoCam, "AyaCam", never appeared back online. Sirno ended up going to the military so he couldn't if he wanted to, so through nothing other than proving something could be done, I accidentally became the sole owner of one of the longest-standing bots that currently stands at over 1.2k followers,  and to anyone reading from the community, I still to this day have not played a single Touhou game, or anything else on Roblox. I'm still more than happy in continuing to  upgrade and innovate on this little-bot-that-could. And in future posts to come, I'll outline how some obstacles were overcome, what deprecated features were removed, how the bot works these days, and whats to come.</p>
<p>Oh, and the device running it? I've moved since then and I have A/C so it has a proper place, but I'll never forget how janky and out-of-place this laptop looked outside my door of a place I shared with two older individuals, as well as the looks they gave me. Developers find a way, but its definitely not always pretty. </p>
<p>Pretty <em>funny</em> though, I'll say yes.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1637347429977/Lz3SM3tE4.png" alt="image.png" /></p>
]]></content:encoded></item></channel></rss>