Skip to main content

Command Palette

Search for a command to run...

Day 0 - FumoCam Beginnings

Updated
Day 0 - FumoCam Beginnings

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 they thought of it.

image.png

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.

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.

image.png

But there quickly grew other issues.

image.png image.png

We discussed solutions for a bit, but almost everything was extremely hypothetical. image.png

6 hours later, we ran into the biggest problem yet: He wanted to play something else. image.png

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...

image.png

"Hm, well easy enough fix" I thought, "just create a virtual audio device that doesnt route through any speakers".

image.png Progressively, I began to help more with Sirno's "FumoCam". image.png

image.png

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.

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.

(To any perceptive community members, my version of FumoCam used to use the Reisen character, it was not always the Momiji character) image.png "Well, that's nice," I thought. "Maybe I can get one or two people before he re-launches his bot on Monday."

image.png Um.

image.png Well now I have to work even faster.

image.png Uh... why is the creator of this game watching my stream?

I quickly found out Twitch greatly prefers if you write code in Javascript. image.png But I pushed through and got it working. image.png And very quickly, the creator of the game decided to tweet about it not once, but twice. 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) image.png 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.

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.

Pretty funny though, I'll say yes.

image.png