After our recent interview with the creator of GamerOS, we are back with a new guest, the now famous GloriousEggroll for his magnificent contributions to the Proton’s ecosystem in the shape of ProtonGE. If you are not familiar with ProtonGE, we introduced it before, but in short, it’s a build of Proton that integrates the latest patches that make it to WINE development (and much more…) before Valve usually does. You can see it as the bleeding edge version of Proton, the one that you can use with the latest games and usually have better luck than vanilla Proton. Thanks to ProtonGE it was possible to play Forza Horizon 4 right on release on Linux, for example.
We wanted to know a little more about who is behind the project, his motivation, goals, and process.
Boiling Steam: Can you explain a little bit about yourself?
GloriousEggroll: Sure, I’m 36 years old, from Jacksonville, FL. I’m half thai (mom’s family is from Thailand). I moved to Denver, CO about 2ish years ago when I landed a job with Red Hat. Before Red Hat I worked as an IT admin for a small law firm, and before that I was a web developer for another small company in St. Augustine. I worked retail jobs in between here and there. As for how I got into computers and Linux, my grandpa on my Dad’s side had his own PC building business, so I was introduced to PCs and PC gaming early. This could go on to be a very dragged out story, but the short of it is — at some point I got into playing Lineage 2 on private servers, and got interested in how to run private servers, which led me down a rabbit hole of learning php, Java, MySQL, MSSQL, bits of C# and C++, python, and so on.
I used that knowledge to land my first job as a web developer, and after landing that job is when I really got introduced to Linux. There was a guy there that ran Knoppix, and the fact that it wasn’t Windows blew my mind. Shortly after that I had my first experience installing Debian, and cursing the proprietary gods for Nvidia drivers on Debian. Eventually that led to Ubuntu, and cursing the gods once again for broken wifi. I kept my interest for a while, but was always on windows until Windows 8 came out, along with the slew of ever growing windows features added since Windows 7 that I absolutely hate. I think I was around 28/29 years old when I finally got absolutely annoyed at Windows Update interrupting everything I do, and switched to Ubuntu. I learned that Ubuntu didn’t always have the newest things needed to run stuff out of the box, and moved to Arch. I installed Arch from scratch, and that’s where my full time Linux usage began.
As crazy as it sounds, I used Arch as my daily driver at the IT admin job for probably around 4-5 years. I didn’t start using Fedora until I landed my job with Red Hat in 2018, and once I got used to Fedora it’s been my daily driver ever since. (Sorry Arch, Fedora is just a wee bit more stable and polished).
BS: Glorious Eggroll… how did that name come about?
GE: So, I used to stream on Twitch under the name Blackhive — which I ripped off from a local tattoo shop. At some point I decided the name was too grim, and didn’t really reflect my personality. So I played off the card of being Asian and really liking eggrolls, and being a generally lighthearted person, and came up with GloriousEggroll. My brain is a wee bit odd I suppose.
BS: What made you create ProtonGE?
GE: I really liked playing Warframe, and at the time, Warframe’s launcher was terribly broken in WINE. So, I created a workaround script that manually downloaded + installed + updated the game. Next thing I know, DXVK came out, and I got involved with reporting bugs for it since Warframe OpenGL rendering was also terribly broken in WINE. THEN, Warframe dropped 32 bit support, and the 64 bit version’s audio caused constant crashes in WINE… and FAudio came along, so once again I began reporting bugs for Warframe to the FAudio developer. At that point I was managing an Arch PKGBUILD with my hobbled fixes tacked on to wine.
Finally, Proton came along and added all these things I’d already been working on into one convenient, cross-platform, portable distribution, and I was able to drop my hobbling of scripts and wine patches for Warframe in favor of proton. Warframe still needed patches from staging, and around that same time, the original staging developers had quit, so I started working on rebasing staging. Soon I found out Alistair and ZF were both also doing the same thing, so I reached out to them, got all of us in a group, and that’s how I ended up becoming a staging maintainer, although I mainly do testing and bug reporting. Those two really do all of the heavy lifting.
About the time I moved to Fedora was the same time TKG began working on his wine-tkg and proton-tkg builds, which again I really have to give a huge shout out to. TKG manages most of the major proton patch rebases these days. I do also on occasion, as well as fix some things, but he is most definitely a huge benefactor to GE builds, as we both use a lot of the same patches that he regularly rebases. The main difference is TKG’s build system and proton script are different from Valve’s, and are built natively on and for Arch, while I use the same build system as Valve. My builds are literally a clone of Valve’s proton with staging and other custom patches and components tacked on.
BS: How difficult is it for someone to get involved in hacking on Proton?
GE: I don’t think it’s too difficult to be honest. The hardest part is getting used to the ins and outs of WINE’s file structure, and knowing/figuring out what component(s) you need to fix a bug in. Once you have a patch and know how to apply it, building proton is the easy part, basically you just follow the directions on Valve’s README for setting up the build environment and building proton.
BS: Can you explain what the advantages of ProtonGE are over vanilla Proton?
- Upstream wine as opposed to the version proton uses
- Staging patches
- Patches not yet applied to proton or to upstream wine
- Patches that may work for games but are not accepted into wine for compatibility or stability issues (as we know wine is used for applications also)
- Upstream dxvk/vkd3d/faudio so you’re getting the latest fixes (and bugs) sooner.
- Additional components such as gstreamer plugins and ffmpeg that valve can’t include due to licensing — remember, I am an individual end consumer like everyone else, not a company. This is what allows more mfplat/video/audio functionality than vanilla proton
BS: What do you see at long term goals for Proton GE? Proton?
GE: Honestly I see proton-ge as wine-staging is to wine. The same concept applies — we’re tacking on fixes to an already great project. These are constantly changing, and new games are always coming out, so someone has to keep up with those fixes. I don’t see Proton GE going away any time soon since it serves as that bleeding edge buffer between proton and upstream wine.
BS: What do you think of the work done by Valve and their partners on Proton?
GE: Valve’s F*ckin’ awesome. LOL. Linux Gaming would not be anywhere near what it is now compared to 5+ years ago if not for proton. Projects like Wine, DXVK, vkd3d, and FAudio are amazing in their own right, but having them unified and backed by a well known organization has really made “the Linux desktop” evolve into a whole new beast. Along with unifying them, new parties have gotten involved that have absolutely rocked the scene as well (Shoutout to Derek Lesho and David Torok for mfplat and previous EAC work (it was working at one point), Alistair Leslie-Hughes and Ethan Lee for xaudio/xactengine/faudio work, Paul Goffman for his never ending list of game fixes, and ZF (Zebediah Figura) for esync/fsync. You guys rock!).
BS: Would you do things differently from their current approach?
GE: Not at all. They definitely know what they’re doing. People joke about ‘Valve time’ but I’ve seen them really get their gears moving with fixes in proton. With it being open source they’ve also gotten fixes from the community in a lot quicker too.
BS: What kind of work goes into making a new release? What do you decide to integrate?
GE: The biggest thing is regressions in upstream wine. If there are any regressions they need to be handled first. Sometimes there are small regressions, sometimes I bang my head against a wall repeatedly. The last 6.5 through 6.8 wine releases have had me going insane, but we finally got it to a ‘stable’ … ish point.
The next thing is new games. Are there any new games? Do they require new patches? Did vanilla proton already patch them? Did someone submit patches in wine? — We need to get those patches added ASAP. Since the focus is gaming, and new games are receiving hype, the more functional they are out of the box, the better it is for linux to be considered a good gaming platform.
BS: When do you decide to make a new release of Proton GE?
GE: I usually aim at least once a month, sometimes twice. It’s usually random, however I prefer to release on weekends as that’s when I actually have time off. I try to time the releases surrounding wine version releases, but I need time leading up through and after each release to check for regressions, which is where every month comes from. Sometimes I make it in time for every two weeks, sometimes it takes a month for things to not be absolute chaos in upstream wine.
BS: What kind of testing do you do before making a release?
GE: The main thing lately has been media foundation games and regressions. Video playback in tons of games. I have a set of the ‘usual’ games that break easily. Generally if they work then so do others, with a few oddball exceptions. They involve games on most game engines (unity, UE, etc), and a few independent ones.
The other thing is fullscreen hack — in the past some games have not played nicely with fullscreen hack (points angrily at MK11 and Injustice 2)
And also controller input. This one is not tested as frequently, but it is a constant issue due to Warframe’s steam version having a known issue where the game will force close after 5 minutes if a controller is not detected. I have a patch in place for steam client that works around the issue, but it works based on the joystick device name, and sometimes goofy things like tablets (OR CORSAIR PERIPHERALS >.<) get picked up, which still fail as gamepad devices and cause the crash to still occur. The other solution to this issue is to just run xboxdrv as a service, as it provides a fake emulated controller to the system.
BS: Do you involve some of your end users to do the testing?
GE: All the time. That’s part of what my discord is for. Sometimes there are just things I can’t reproduce, and I’m only one person. Sometimes it’s easier to ask someone that has the issue/OS/hardware etc to reproduce the issue than to try to do it myself (and it’s easier on my wallet).
BS: It seems that there are sometimes regressions when moving from one ProtonGE version to the next: what do you recommend your end users to do when they want to try ProtonGE with their games? Should they actively keep several versions of ProtonGE available?
GE: Think of Proton GE as a wine-staging version to proton. Sometimes it works great, sometimes there are issues. I try to knock out as many regressions as I can, but again, I’m one person and only human. If you have one version that you know works great for a game, keep that version. Chances are there is not going to be any performance difference between that version and a newer version unless some new feature was added (such as esync/fsync or fullscreen hack for example).
BS: How can the community help?
GE: The community has already been amazingly helpful. The Patreon support has been amazing, the Reddit support has been amazing, people in my discord have been extremely helpful with testing and bug reporting. I really can’t say a big enough thank you. The one biggest issue is misinformation. The blind leading the blind is never good, and I often see a lot of bad advice given for trying to resolve issues. I understand people are trying to help, but please make sure you are informed yourself before providing information to others. The valve bug tracker is plagued with people recommending things like trying environment variables that don’t even exist, or applying changes that are irrelevant to the actual problem, or recommending illegal workarounds (mf-install is a huge one here — those DLLS are pulled directly from a windows install, you can’t get them anywhere else). That’s the only real issue I see repeatedly from the community side. Everyone is extremely helpful, but not everyone is an expert.
BS: Do you hope GE will not be needed in the future, or do you think there will always be a need for the custom Proton?
GE: I pretty much answered this in the goals question but I think it will likely always be needed. Honestly I don’t even feel it’s a ‘need’ per say, just a really, really nice convenient alternative.
BS: How has Proton changed gaming for you?
GE: I mean Linux in general has changed my life. It’s my career now. Proton specifically was just the catalyst to help me get off Windows, focus more on projects, and less on getting interrupted all the damn time by Windows Update. However, I am INCREDIBLY grateful for the adoption of Vulkan as a major graphics API standard. I honestly feel like that was a big kick starter for proton to begin with, and for my move to gaming on linux.
BS: Do you only game on Linux? Do you keep Windows around?
GE: I only game on Linux. I honestly gave up an addiction to Destiny 2 for linux, and it still breaks my heart. Every now and then you’ll see me tweet a sad plea to Bungie, but they never listen ;_;. I have tried alternatives like Geforce Now for games like D2 and Apex, but I’m not fond of giving Nvidia money. The grudge I hold to them for my debian driver experience years ago is a strong one.
BS: What are some of your favorite games/genres?
GE: Shooters, Sci-Fi shooters in particular. As mentioned, I’m a big Destiny 2 fan, but also Warframe, DOOM, and Wolfenstein. I’m also a big fan of ARPGs, I can’t tell you how many tweets I sent to Path of Exile before we finally got a Vulkan renderer. Shoutout to Last Epoch for providing a linux version! (And shame to Wolcen: Lords of Mayhem for promising but then backing out of their linux version). I also like the Resident Evil games, but I’ll admit I’m way late to the game there. I didn’t really get into Resident Evil until recently. 3rd person RPGs I’m also a huge fan of, any setting really. I’m not big on 2d platformers, but to each their own you know?
BS: Do you think EAC will ever be supported via Proton?
GE: Of course! We already had it working once, although for a very short lifespan. We have some very smart people behind that work, and I don’t feel they’ve stopped, it’s just not something that can be immediately resolved. A few years ago even the thought of DXVK was a dream, but here we are.
BS: Any other projects you work on (or like) a Linux gamer should know about?
GE: First and foremost, I need to show TKG some love. He puts massive amounts of work into his rebases, not just for wine/proton but for all of his projects, including kernel versions, Nvidia drivers, and so on:
Next, wine-staging of course. All of the other maintainers are amazing, and I give them infinite thanks for listening to my endless bug reports and dealing with me annoying the crap out of them to get them fixed:
Portions of my patreon go to them, so if you support me, you’re also supporting them.
Also, I don’t work on this as much as I used to, but Lutris and the Lutris development team. Strider and Tannis bust their butts to keep games working outside of steam, and it’s REALLY damn hard to keep up with:
Lastly, I keep saying meaning to work on this, but it’s hard to find time to actually keep it updated. I’ve been working on a wine-ge-custom which is a portable lutris build with the same goal as proton. You just drop it in a folder for lutris and can use the build for lutris games, however as mentioned, it’s nowhere near updated currently. It’s on my todo list:
I also have a lot of Fedora specific game/application fixes pinned in my Discord, which can be found in the proton-ge-custom README. I recently made a Fedora package that allows DaVinci Resolve to work on AMD and doesn’t interfere with mesa, and am working on a version of OBS that has better ffmpeg functionality. I’ve also been bug reporting to the obs-vkcapture bug tracker to get better support for vulkan capture and ogl capture directly. Lots of fun things in the pipeline.
And that was it! If you are interested in what Glorious Eggroll is doing, we would recommend you to follow him on Twitter as he is quite active there. And of course, his github repository to be aware of the latest updates! It was really fun to get to know Glorious Eggroll more, and we will be watching closely what Proton GE delivers going forward.
BoilingSteam lets you access our content for free, but writing articles is a constant investment. We don't use ads or sponsporship, help us make our activities sustainable by donating via Patreon or LiberaPay if you prefer it anonymous. You can follow what we do via our newsletter, our RSS feed, our Mastodon profile or our Twitter feed. We also have Peertube, Youtube and LBRY channels. If you'd like to chat, you can also find us on #boilingsteam:matrix.org. (what is Matrix?)
Thanks for the interesting Interview.
I asked myself, if there isn’t something like an automated regression testing for Proton.
Does Valve and awesome people like GloriousEggroll really have to do everything by hand?
Ahh, and WTF is “fullscreen hack”?
Valve and partners are pretty consistent in insuring there are very few regressions when moving to the newer versions of Proton: you rarely seen games that break when let’s say moving from 5.x to 6.x. GloriousEggroll has to do a lot of that by himself because he works with upstream WINE and wine-staging, which is prone to regressions, before this is even integrated into vanilla Proton.
Fullscreen hack -> guessing some games don’t use the same kind of fullscreen mode (borderless windows for example) and sometimes this requires hacks.
“Valve and partners are pretty consistent in insuring there are very few regressions when moving to the newer versions of Proton:”
I know, but what I mean is, there should be some automatic regression testing, shouldn’t it?
On the other hand, perhaps that is something Valve can not make public.
Would be nice thing though. At least to automatically test, if something crashes. And if available, run a benchmark in game or so.
How would automatic regression testing work, exactly? If it’s simply whether the game launches or not, that’s feasible, but if it’s about detecting that the textures in the 3rd level are not showing up properly, that’s a lot more tricky.
Of course a tricky thing. Just find out if it crashes should not be too hard.
Next step could be, to run the game at least in a defined manner. This would be easy for the game dev as they usually use testing frameworks to automatically test their games – but harder if you do not have access to that.
Looking at the textures with something like openCV or so is surely quiet interesting, but not easy work.
If I only had a lot of time, I would give it a try.