(I’m posting this here because I can’t figure out anywhere else to post it )
First off I want to say I love RetroArch. I use it a lot, and in particular I’ve used its NetPlay feature with several far away friends, since it has the benefit of being the only emulator NetPlay feature that actually works. RetroArch and libretro are wonderful things. However, this post contains only complaints
My first and foremost complaint is that the binaries distributed by the build bot are, as far as I can figure out, impossible to reproduce. It’s probably easy enough to get retroarch itself to the exact revision, but the cores that are distributed along with it have, as far as I can find, no documentation of the exact revision they were built from. Perhaps there is, and if there is I would love to be pointed to it, but I can’t find a file in the release that makes any such claims. I can assume that it’s probably a revision on the day of the release, but it’s hardly unheard of for there to be multiple revisions on a single day, and there’s no way of knowing if I have the right one, especially given that with distributed SCM like git, it’s quite possible that a revision was committed before release but pushed after release. Aside from the fact that many of these cores are GPL licensed, so it’s legally questionable to distribute them with no hint as to exactly which source code revision was used to make them, it’s a huge PITA if all I want to do is create on Linux a version that exactly matches the version my friends will use on Windows. Perhaps I’m being overly persnickety about the particular versions, but it just seems obvious that they should be documented somewhere.
My other complaints are about NetPlay and its documentation. I’ve used RetroArch’s netplay a lot. It is RetroArch’s killer feature. And nobody even knows about it because it’s barely documented to exist, and the documentation that does exist is full of lies. The wiki says that both the server and the client should set the same delay frame value. That is not true. I’ve used NetPlay a lot, and what I find is: If both are 0 and your connection isn’t magically fast, you get stutter; if the server is >0, regardless of the client, you get desync; if the client is >0 but the server is 0, you get perfect NetPlay. I seem to recall previous documentation claiming that the server and client were equal peers, which is also demonstrably untrue since I can reproduce desync with friends with either of us serving, so long as the server as delay frames >0. Reliable netplay = server uses 0 delay frames, client sets it as high as they can stand. Now I can go edit the wiki (that is the point after all), but I feel like it must have been originally written by someone who knew what they were talking about, right? Why is it that nobody at all seems to understand how NetPlay works, so I had to poke around to figure out how to make it reliable? Where the heck is the documentation?
(I’m relying on the wiki documentation for this last complaint, as I haven’t actually tried this:) Finally, NetPlay seems pointlessly lacking in one major way: You can’t play single player systems with NetPlay. It should be that any system that supports rewind supports NetPlay; if it’s a single-player system (handheld, ScummVM, whatever) it should just have both player grapple for the same controls. That’s fine if they’re just playing cooperatively. I’ve frequently played ScummVM over VNC with friends, which is stupid, and doing that over RetroArch would be much better, if only it worked.
Thanks for hearing my moaning. I do genuinely like RetroArch a lot.