Accessibility notes, Linux / Proton / Wayland / wlroots perf hacking tips
Hiya! Long time player, started back in the beta of PoE 1. Love both games dearly, and have long found myself in passionate admiration of the team.
I'm just a lifelong hobbyist game developer who worked in the industry here and there. I'm also a decade-plus user of tiling window managers like i3 and sway. Couple years ago I switched to Wayland and bounce around, checking out different compositors. Used sway a lot, blamed it over the years for bugginess with games, but there *are* workarounds. If you know how to tune it. Lately I'm using niri. So here's my Linux performance tips for gaming comfortably on potentially dated hardware. My CPU is so ancient. * Figure out CPU power management on your system. I use a tool called cpupower-gui because it's easy. * Figure out gamemode for your system. You may have to add yourself to a group, relog, etc. * Invest in learning how to use gamescope. It may not be perfect, but it's extremely effective for improving game performance, especially in funky Wayland compositors that restrict window sizing and presentation. (:D) As an example, I'll describe the launch options I've been using to play comfortably for the past couple days. Absolutely loving my "sorcenary," a sorceress I'm bee-lining into 2H mace usage. It's a climb, but fun. SO. My launch command. Honestly I spent about 4 long days trying different iterations to solve a few different issues I was having. The issues were mainly: * Note: for PoE2 in steam, I have "overlay enabled" and "disable steam input". * In gamescope, many games degrade in performance after a while. This is a widespread, long-standing issue which Valve does not address nor look into. In testing PoE2, I notice the game's own launch option --nosound fixed the issue. I decided it's probably something to do with pipewire's default audio rate of 48000 not playing well with wine and potentially the game's 44100, though I don't know what is normal personally. SO. To fix that: ... I chose to wrap the game in an SDL backend. Tada, fixed FPS degradation. * Other than that, I had issues with it accepting mouse button input from my drawing tablet (I use a screenless $20 4" USB Huion "wacom spinoff" for drawing and many other tasks, and it's awesome). Sometimes it would map weirdly, sometimes it wouldn't click. I eventually figured it out but along the way I did discover that gamescope's --force-composition helps a lot with mouse positioning in gamescope under wayland, especially when during reduced-resolution nested use. * There are a number of times when you want the Steam overlay, but it interferes with performance. Disabling it is fine, but in my command you can see that I have to redirect the library to the game itself. These are the LD_PRELOAD sections. * Furthermore, you can see that I play the game at 800x600. It's quite fun and nostalgic at this resolution, and I like it. I do this to games because it's an accessibility improvement for me. Sharp, high-resolution visual details create a sense of overwhelm in my eyes. So pixellated games are a joy for me, and I have even made other mods to enable this (https://mods.factorio.com/mod/textureless)... so anyway that is why there's nested gamescopes at different resolutions. I'm sure there's a better way, but this is what works for me and I can play comfortably for hours and get a good framerate. I exagerratedly tried 100,000 different iterations of launch options and wanted to be done. " Additional accessibility notes: * I tried for a long, long time to get my Steam Controller to work as keyboard and mouse input using Steam Input Controller Configuration in the Steam Overlay. It did not work. I noticed an improvement in its *almost working* when I rerouted Steam's fake-Xbox-controller to null, at which point inputs were reported in the touch menu overlays I was making but the game didn't decide: "M&K mode?" > "Disable all controllers" - frankly it might be preferable to not even load the controllers... because I somehow think the game is intercepting (and nullifying) controller input? I don't know. I use this to play GGS, MHR, and other games fine on my system. ... well, so lately I'm building an input accessibility layer for Wayland so I can play PoE more comfortably, so, thanks for inspiring me... but it's worth it, because I need more stylus input mechanics and working touchpads. (no-click, utterly soft and low-impact; for gaming, my chronic-illness hands cannot really do keyboards that well anymore. so yeah. with controller or keyboard I can't hardly beat novice AI on GGS. I can 5/0 Maniac if I use touchpads. ok.) * Perfect Strike is hella fun but without sound it's really hard to time by sight. Even with sound the trigger is a bit quiet in the midst of battle, too. * I loooove the addition of separate scene and UI brightness sliders. I also would love if the scene could get a saturation and maybe sepia slider. * Pleeease let us pick Nearest for the downscaler filter. It is ssso so soo good. --- Anyway, love y'all keep it up.
Spoiler
difficult to point of viewhomosexualityacceptance
![]() Last edited by jynellae#2305 on Dec 29, 2024, 10:46:03 PM Last bumped on Jan 6, 2025, 8:01:33 PM
|
![]() |
Hi there,
I'm also running PoE (one and two) on... "not optimized hardware". I got a 4600g (vega7) and a RX550 (which performs worse than the onboard vega 7) I'm on debian 12, using wayland. TL:DR, using proton eggroll's FSR, this is my steam command line: DRI_PRIME=1 DXVK_FILTER_DEVICE_NAME="RENOIR" WINE_FULLSCREEN_FSR=1 WINE_FULLSCREEN_FSR_MODE=performance gamemoderun %command% --nologo --nosound The 1st 2 args are to make sure the game will run on the vega 7 and not the rx550. The rx550 handles my desktop and monitors, the vega stays idle, so poe can use it entirely without sharing with the desktop. The 3rd and 4th args are related to Proton Eggroll built-in FSR (that works on any card, not only AMD). For it to work you also need the game to be in dedicated fullscreen mode and native resolution. (not windowed fullscreen) Than gamemode is called. On game settings I use DX11, everything on low, resolution is 1080p, no upscale (proton fsr will handle that alone) and I lock fps at 30. The game plays fine (up to tier 6 maps so far), the only lock-ups I get are when the PC is looking at a texture for the 1st time. After that (even after quitting the game etc) it doesnt stutter anymore. So pretty much any "new" boss fight I will probably die to freeze-ups... but after the texture is loaded/saved it wont freeze or stutter ever again and I can do the fight just fine. Loading times are garbage tho, even just opening the map. That same exact config runs poe1 flawless btw, I'll test some of your stuff for poe2. Never heard of gamescope. |
![]() |
Hey Surtarso, nice work on your launch options! I feel that... yea, sometimes it takes a little work to find something that works specific to one's system. Glad to see others are out there making PoE on Linux a thing for themselves, personalyl PoE II is my new favorite game. So much goodness. So many things done right. Hope you're able to get it working well!
I saw you're using --nosound. That was fixed for me since wrapping in the gamescope SDL backend, so maybe that will let you have sound again too. Unless of course you use that command by preference. :) |
![]() |
" ![]() So this is happening, and very ergonomic for me. Still tuning the radial menu functionality / customizability but so far so good, not missing key presses due to keyboard anymore, and pairs well with the drawing stylus for mouse input (though only left click). Thought I'd share 'cause I'm proud of my work, put it on GitHub but bear in mind it's a pure prototype implementation and has no configurability nor cross-platform testing yet (currently relying on Wayland-specific windowing). |
![]() |