Good Bye, Friends

The 3DS community has spoken: There is no sufficient demand to fund development of a high-quality 3DS emulator for Android. Public Mikage development is put on an indefinite hiatus. This is a good-bye letter.

Good Bye, Friends

I'm sure some of you are getting ready to object; no sufficient demand for a 3DS emulator? Let me elaborate.

Update: Since the release of this post, development has been picked up again. Expect more news in the future!

How did we get here?

Mikage's mission was simple: A high-quality emulator that "just works" with minimal configuration yet excellent performance, bundled in a pleasant-to-use interface. DraStic but for the 3DS. The core premise to enable all of this: Full-time funding of an experienced professional who previously worked on gold-standard projects such as Dolphin and PPSSPP.

How do you even approach this? One typical way is ads. Another one is microtransactions. And then there's rebundling existing projects (hello MMJ). While (regrettably) widely accepted in the community, it was important to me that Mikage would do without any such shady compromises.

Many criticized Mikage's Patreon approach, but the truth is: Nobody came up with something better. Even ignoring "Just do X"-esque suggestions that clearly didn't consider the numbers involved in the first place, proposals like "Just put it on the Play Store" or "Just use ads" weren't an option. Doing things ethically has been of upmost priority to me, culminating in a 7-digit investment offer I received from a VC company - which I declined.

If Mikage's success depended on breaking my ethical code, it wasn't really a success in my book. If the honest approach wasn't going to work out, then so be it.

And well, that's where we are: It would be a lie to claim the Patreon campaign brought in any significant income that enabled me to work on Mikage any longer than without. Frankly, considering all the marketing overhead it has been a negative investment. I've been working on 3DS emulation pro bono for several years now, and it's been enough.

A turning point

Since 2020, response to the various progress reports and other updates visibly declined, and so it became clear the Patreon route just wasn't going to cut it. Even the biggest milestone to that point, Super Mario 3D Land being functionally playable, brought in virtually no new supporters. Imagine spending a whole month on preparing such a big announcement, and all you get out of it is 100 bucks.

The truth is, everybody wants a great 3DS emulator, but the fewest are willing to contribute towards a mere promise, no matter how convincing the argument. It doesn't help that the Android market is diluted with so many cheap $1 apps (most developed in few weeks) that emulators frankly can't be sold at fair prices. No matter if Mikage had been priced at $15, $50, or $200 - you'll bet either of them would've triggered massive outcries.

Then, [vaguely waves hands around] happened, so Mikage development at least was a nice way to spend the whole social distancing thing. Much to the benefit of Mikage's performance: Optimizing its GPU core significantly yielded a 3x frame rate improvement in e.g. the Zelda games, which are actually fully playable at 60 FPS on PC hardware now. I also got a couple of new games running in a playable state, notably Animal Crossing: New Leaf.

But it's no use.

What's next?

Mikage is a closed chapter for me now. It was one of the most challenging projects I've tackled in my career, and I'm glad about all the lessons it taught me and the technologies I had a chance to pick up along the way. Ultimately though with the commercial prospects written off, the project has served its purpose as far as personal interests go.

Under the hood, Mikage is a genuine masterpiece of software engineering. This goes beyond the "my code is so nice and clean" you'll hear any excited developer say: Where Mikage really shines is the technical foresight about long-term problems and its sophisticated solutions to address them, resulting in a powerful infrastructure to find and debug emulation issues quickly, ultimately making for a better user experience due to fewer game bugs. Imagine your game is broken, but instead of spending weeks of debugging the problem, the emulator essentially tells you were the problem lies right away.

One of my long-term plans for Patreon had been to fund blog posts to actually talk about this infrastructure and other elements of Mikage's code architecture, similar to Dolphin's Progress Reports but on a more technical level. If I kept the Patreon running I could write one of these about every 3 months - let me know if that's something you'd be interested in seeing!

Before I close I do want to apologize for the late statement on this, particularly to my patrons who up to this very point have supported me despite the lack of updates in the last few weeks. I had written several versions of this article but just never quite found the right words. Since I obviously couldn't deliver on my promise, please shoot me a Patreon PM if you'd like your recent pledges refunded. Of course I wish there were a more satisfying outcome here, but that's the least I can do.

Meanwhile, I've moved on to my next journey: Open-source graphics drivers for Linux, the kind of thing I dreamed of doing as a teenager but never imagined would actually happen. I'm incredibly excited about this opportunity to improve the Linux gaming experience for gamers around the world.

It's been a fun ride, emulation community. Thanks for having me.

All the best!