I have been following the events on a few libretro related threads in reddit and I find it quite disappointing to see the amount of hatred directed to a project that has done nothing but do what end-users wanted for more than three years now. I also find it terrible (but interesting none the less) that the social media post is more active than the actual highlight.
Disclaimer: this represents my own experiences and my points of view with regard of the situations that surround our project.
A bit of my personal history with the project:
Let’s look back all the way to 2013. RetroArch was still called SSNES, a fairly small commandline program with just a few cores, a launcher that could be used to adjust options and that’s it. No bells or whistles, just a few nice cores implemented under one frontend with a common feature set. I hadn’t really been using emulators since the zSnes days other than a few tries with mobile emulators on my WinCE device.
I just had built a game-room / tv-room. So I setup XBMC and loved it. Soon I started looking for emulators that would work nicely with my setup. I installed Nestopia and some XBMC plugin that acted as a launcher with worked mostly fine. I liked the emulation but I also like the fact that I could set hotkeys to save, load, and it presented nice OSD messages on non-game actions and I could drive the whole thing with my gamepad only. I hoped other emulators would have the same features but I was let down almost instantly. Regardless I pursued my objective with a miriad of tools (Pinnacle Game Profiler, Xpadder, Joy2Key, batch files, Daemon Tools to name a few).
At a certain point I discovered bsnes. Maybe it was on it’s adolescence days or something, or maybe it was just the build I picked or whatever but it was slow with vsync, teared a lot without, couldn’t forward keys with any of the aforementioned tools and it didn’t have a nice scanline filter. As accurate and good as it was it didn’t fit my use case.
Soon I remembered an old multi-system emulator that had a few of those features. I didn’t really have a good experience with it in the past but I though I would give it a second chance, so I after some googling I found Mednafen. I was pleasantly surprised with one emulator that had the one thing I wanted, a common feature set so I could setup everything the way I wanted, ideally once, and forget. I was actually quite happy with it for a while.
Of course back then Mednafen didn’t have PSX or Saturn but it was “almost there” except from the fact that there wasn’t a single decent gui that was more that a configuration tool available. (I respect the author’s decision to stay mainly CLI driven but again it didn’t suit my use case). It was the time to setup a PSX emulator, so I had… XEBRA or EPSXE. XEBRA was accurate, promising but really not usable for me, it was too weird. And EPSXE saved settings in files and the registry and it was all over the place… still, it worked so I settled with it with the help of epsxecutor.
One day, while browsing bsnes forums I saw some guy with a happy face avatar (TheMaister) post about something called SSNES. It was an alternate frontend for bsnes, it actually ran well on my system! and progress was staggering, in just a few days went from an alternate bsnes frontend to supporting VBA, FBA and others so I started using it. I even enjoyed using phoenix (the now defunct desktop configuration tool) and the fact that it even had an updater for it’s own emulators. It showed great promise and I was really excited about the constant flow of releases. I never liked that the configuration wasn’t real-time (I was a zSnes / Nesticle fan after all) but it provided me with my game-room solution.
I joined IRC and it is one of those things that happend in a perfect moment, a new build was just out with RGUI (0.9.9). I won’t lie it was ugly, but I could load games and tweak a few important settings in real-time with just my gamepad. I think MAME had this before but MAME was always and unwieldy tool in my mind.
RetroArch did a lot of things better than anything else. Shaders quickly replaced CPU filters, audio and video sync were perfect and it supported exclusive fullscreen. It had an OSD and hotkeys to save and load states without needing to fallback to third party tools. It had literally everything. I even got a smartphone (Samsung S2) because of it.
After 0.9.9 lots of bugfixing releases followed. Even a preliminary emscripten browser port emerged. Yeah the experience in all platforms was inconsistent, The menu was all over the place. Even input mapping disappeared at some point if I remember correctly but it was still by far my emulation tool of choice.
In retrospective I think this might have been a high-point in RetroArch’s popularity. TheMaister was happy to accomodate many exotic requests and everyone was happy. Gamepads in many platforms worked out of the box (something you can’t say about many other emulators until the recent gamepad standarization in SDL2). When you become too popular bad things happen too and it was certainly the case. We lost the forums. Real life meant some of the devs had less time to be involved, and someone asked Google to take down RetroArch. To this day we are uncertain if it was some other “competing” project (we’re not really competing or trying to take the place of anything else) or the screenshots showing copyrighted material in the Google Play listing. We had to add a waiver to remove non-free cores and stuff like that. Anyway 1.0 was mostly a success. Mupen was now an “official” core, the menu was homogeneous among platforms, the history list was added and input binding was back. At this point I got a Nexus 7 and I had a long work trip. RetroArch was the only game related thing I needed.
By the time 1.1 was ready I think a year had passed, it had even skipped a version and became 1.2!. Bugs had been piling up, people were pissed about no new releases after all those blog posts and the lack of documentation and tools to build by myself was becoming a problem. During the course of that year I had literally had to depend on Twinaphex or TheMaister handing me a build if I wanted to test or use something. The lack of CI had dragged us down a lot.
That led me to start working on a buildbot (there were several other efforts but I guess mine prevailed for some reason).
The new buildbot was a great addition for us, it allowed us and users to test routinely and report bugs.
By the release there were a lot of changes and additions. A PSP port (which was really good even if it never got the attention it deserves), a PPSSPP core, various improved cores such as a really nice NXengine core (Cave Story). Kivutar had joined the team and he shaped up two menu drivers (GLUI and Lakka which is now XMB). We now had our own database system to scan for games and add them to playlists so they were directly associated with the platform being emulated/executed. Input mapping was back (again). Core re-mapping was introduced, and by popular demand cheats were supported.
The release was troubled of course. Several folders were missing, platform defaults were (and still are in various cases) problematic. etc.
After 1.2, 1.2.1, the 1.3 series and other service releases we’ve been forced to delay the release once again. Not because there isn’t anything new to show but because we want to release it properly.
User facing changes so far:
Most of the changes are under the hood, but these are a few highlights from the top of my head
– Separated keyboard menu input from core inputs
– New gamepad enabled on-screen keyboard
– Localization support
– Deprecated configurations per-core in favor of core and game specific overrides
– Netplay has been re-implemented and improved
– RetroArch on mobiles can act as a gamepad for another RetroArch instance via the RetroPad core
– Tons of cleanups on our cheats, image and information databases
– Improved font support
– Tons on improvements in the menu drivers
– Better setting grouping
– Several menu entries now have sublabels explaining their purpose
– Better platform defaults including default dirs
– Fixed window size support for people who like to play in window mode
– Better support for RetroAchievements
– Per-core and per-game shader preset saving
– Core options can be applied for a particular game now
– Ability to swap menu Ok/Cancel to match newer input conventions
– Better archive support
– Improved Vita support
– Improved PS3 support (still no nightlies)
– Improved Emscripten support including persistent saving
– Improved 3Ds support
– WiiU support!
And the reason for this daunting long-ass write-up?
Because I felt like it.
Because RetroArch has it’s problems but it also does a lot of stuff better than anything else out there.
There were many projects announced with lots of bells and whistles and even media coverage, but still nothing can touch RetroArch in actual delivery.
Sure we’ve broken some ETAs and we’ve failed to deliver on some promises but really. We get a lot of bad PR over nothing… Sure Twinaphex sometimes is aggressive on some social media outlets but it’s literally nothing. The UI is not perfect? Sure it’s not, we know it isn’t but it’s always improving. Controller support is not perfect… WE AGREE! but every other project has problems with controller mapping too. I’m not gonna cite specific cases out of respect for the devs. Try to mention one single community driven project related to gaming that tries to cater to so many (often obtuse) users with so many different ideals.
There was a time when not all the options were exposed on the menu. People ranted and complained incessantly over that.
Now people complain about too many options… What gives?
Truth is we have been living to please end-user demands to the best of our abilities.
I hope some of the naysayers can see my point of view. I don’t expect everyone to start liking our project because of this but I hope you’ll at least become aware that this is a huge project and we’re really just a handful of people working on it. We’re always listening, but we’ve noticed an ugly trend developing. Some people don’t just ask but demand and badger constantly. Remember we’re all just volunteers here.
Anyway, I also wanted to talk the people that support us. It’s easier to focus on the “I hate RetroArch” posts but I think the tide is turning and people are starting to see us differently. I also want to thank the emulator developers. Without them we would probably have never embarked in this crazy adventure.