Linux support via Steam's new "Steam Play"?

Hello everyone,

Linux users, has anyone tried the new Steam Play feature to play Stonehearth on linux?

I have not tried it yet, but I hope it works!

:merry:

4 Likes

One of my coworkers was just discussing this. Sounds very promising :smile:

Not a full Linux user (95% of time using W10), but I like to try game ports for it.
Honestly, I just got to your thread because of the newsletter on my mail :stuck_out_tongue:

Now, about the main question:

First, you need to check the option on Steam in order to enable the download/play button in your library.

I was a little skeptical that Stonehearth will run without too much trouble. What a foolish thought ^-^

The game runs fine at the moment (still don’t tested it for a long time).

Gonna update my comment as I make some advancement.

Just in case, my specs are:
OS: Ubuntu 18.04 x64
CPU: AMD Ryzen 5 1400
GPU: Nvidia 1060 6 GB Zotac Mini
RAM: 8 GB 2400 MHz

Here’s an screenshot :stuck_out_tongue:

Update 1: Played for ~20 minutes. Nothing advanced, just building shared quarters, with a trapper working and the rest mining. Opened the Mason workshop and, for some reason, the UI locked. Couldn’t close the dialog, pressing something else did nothing, had to kill the process (yeah, the game keeps running background because of Wine. Linux things :confused: ).

Update 2: Me again, had to sleep xD. Loaded the game from the screenshot (‘Snow Fighters’, SF), it didn’t had any problems. UI locked again, but this time I noticed a weird movement in the cursor, just 1 second before the mason workshop open again. Tried to replicate that but couldn’t find the way. Better enable auto-save because you have to kill the process every time the lock happens.

Update 3: Yeah, too fast. The UI locked again, just after selecting a new mining area (4x4 tool), hovered on the hotbar and the lock happened. Now I’m waiting for the auto-saving before kill the process again :sweat_smile: Update for this update: the UI doesn’t rescale with the window (when it’s locked). F5 doesn’t work like it should. Thankfully, F6 works and I can save the game without wait the auto-save :relaxed:

Update 4: Alright, now, being a little more careful, only got 1 UI lock (after that, just quick-save the game, kill process, open again, load). There are moments where the FPS drops (sometimes like W10, I’m not gonna lie) but the rest seems to be fine. Something I should say before is that I’m playing with Trapper+ (first times playing with mods, this one is great :+1: ).

Another screenshot (keep in mind I lost my progress multiple times because of the UI lock & I’d been playing others games)

Update 5: Hello again, here with another update. Trying to fight the cold and get a carpenter (almost get it, just a little more). Noticed that LUA was using a lot of power and the FPS went from 60 to 10 multiple times. Turns out that the game speed was set to 2 (two arrows, 3 is disabled). One UI lock and that’s it (most of the time, I close the game only when that happens).

Update 6: Not too much to say…There’s a point where the game becomes barely playable because of the performance and remember that Steam Play isn’t perfect (yet?). UI locks became kinda weird (or maybe I was being mroe careful than before). I had a good time with SF, finally got an archer and meat was easier to obtain :merry: and my farmers got their job again (be nice, Winter).

Anyways, I’m going back to WIndows 10 until Linux has another surprise for me. Hope my experience gave you some insights about how Stonehearth runs on Linux.

Some screenshots ^-^

PS: Whoever had the idea for those little falls…I REALLY LOVE IT!
PPS: Didn’t tried multiplayer. If someone wants to test it with me (you don’t need to be using Linux, I think. Add me on Steam), I’ll be glad to add another update.

9 Likes

Thanks for the review, @Anerak! :merry:

1 Like

If there are any other Linux users who haven’t given up on the game already (and I couldn’t blame them) please try this out and report bugs while we still can! Obviously some of them are going to be Linux/Wine/Steam problems that can’t be fixed on SH’s end but… now that completing the cross-platform promise is no longer out of the question, I’m hoping it gets as good as possible for you.

4 Likes

Hi all,
after seeing the promising results from this thread, I decided to give it a shot again for myself.

First time launching, the game just immediately locked up. It would play the main menu background music, it would should a barely visible Radiant logo, but nothing else. So I tried just calling wine myself (which is used internally by Steam too, but with a lot of patches on top). And behold, it just worked! A multi-hour play session without any problems whatsoever, except that it was eventually interrupted by a UI lockup.

I found out that the loading error is actually caused by some missing font (though I’m not sure which one exactly). Standard Windows fonts are not shipped with Wine due to licensing reasons. Manually downloading and installing them into the prefix (i.e. virtual windows C: drive) makes the game run smoothly under SteamPlay, just as well as under Windows.

These are the commands you need:

export WINEPREFIX="$HOME/.local/share/Steam/steamapps/compatdata/253250/pfx"
winetricks corefonts

If you installed Stonehearth into a different path than the default, you’ll have to adjust the prefix path here. Also you’ll have to install winetricks, which does the hard work.


One odd thing I noticed is that the game seems to leak memory. I noticed my RAM gradually filling up, and investigated to find out that Stonehearth was holding some large files open on /tmp (which is a ramdisk). The files in question are actually created by the Wine Esync patches, to implement thread/process synchronization. I haven’t seen this kind of problem with other programs in Wine-esync before, so I assume it’s the game leaking references to these objects. After one or two hours of playing, it already sums up to a few Gigabytes.

Monitoring opened files of the Stonehearth.exe processes showed that it’s definitely leaking somewhere. Immediately after loading into the game, opened files (including mentioned synchronization objects) were less than 100, but during these two hours it went up to over 300. The game (especially the UI) has become incredibly slow towards the end, taking about a second to process a button click, and often the game would freeze completely for multiple seconds. SH’s Total RAM usage went from ~1.5GB to well over 8GB.


Another odd one: Very first thing after launching the game, the crash_reporter.exe dies on a null pointer. It’s quite possible that this kind of random crash is caused by an API function behaving slightly differently under Wine, or a DLL not being present/loaded. These are usually considered bugs in Wine.

Here’s the crash dump, maybe someone can find out what’s wrong:

Unhandled exception: page fault on read access to 0x00000000 in 64-bit code (0x000000014002aae2).
Register dump:
 rip:000000014002aae2 rsp:000000000023fb40 rbp:000000000023fbb0 eflags:00010206 (  R- --  I   - -P- )
 rax:0000000000000001 rbx:ffffffffffffffff rcx:00000000000100a8 rdx:0000000000000000
 rsi:000000000023fc78 rdi:000000000024a610  r8:0000000000240d18  r9:000000000000006a r10:0000000000000002
 r11:0000000000240d20 r12:000000000023fcc8 r13:0000000000000000 r14:000000000023fc58 r15:000000000023fc38
Stack dump:
0x000000000023fb40:  ffffffffffffffff ffffffffffffffff
0x000000000023fb50:  000000000023fc78 00000001403a6780
0x000000000023fb60:  0000000000000005 fffffffffffffffe
0x000000000023fb70:  0000000000240000 0000000000000000
0x000000000023fb80:  0000000000000000 0000000000000007
0x000000000023fb90:  0000000000000000 0000000000000000
0x000000000023fba0:  0000000000000000 000000000000000f
0x000000000023fbb0:  0000000000000000 0000000000000000
0x000000000023fbc0:  0000000000000000 0000000000000000
0x000000000023fbd0:  000000000023fce0 000000014002ae47
0x000000000023fbe0:  0000000140000000 0000000000000000
0x000000000023fbf0:  000000000023fe00 0000000000000000
Backtrace:
=>0 0x000000014002aae2 in crash_reporter (+0x2aae2) (0x000000000023fbb0)
  1 0x000000014002ae47 in crash_reporter (+0x2ae46) (0x000000000023fce0)
  2 0x0000000140030f57 in crash_reporter (+0x30f56) (0x000000000023ffd0)
  3 0x00000001401aca6b in crash_reporter (+0x1aca6a) (0x000000000023ffd0)
  4 0x000000007b4777ce start_process+0xfd() in kernel32 (0x000000000023ffd0)
0x000000014002aae2: cmpw	$0,(%rdx)
Modules:
Module	Address					Debug info	Name (62 modules)
ELF	        7b400000-        7b811000	Export          kernel32<elf>
  \-PE	        7b420000-        7b811000	\               kernel32
ELF	        7bc00000-        7bd32000	Deferred        ntdll<elf>
  \-PE	        7bc20000-        7bd32000	\               ntdll
ELF	        7c000000-        7c003000	Deferred        <wine-loader>
PE	       140000000-       1403d9000	Export          crash_reporter
PE	       180000000-       180059000	Deferred        tbb
ELF	    7f4e77a86000-    7f4e77a9b000	Deferred        api-ms-win-core-localization-l1-2-1<elf>
  \-PE	    7f4e77a90000-    7f4e77a9b000	\               api-ms-win-core-localization-l1-2-1
ELF	    7f4e77a9b000-    7f4e77aaf000	Deferred        api-ms-win-core-fibers-l1-1-1<elf>
  \-PE	    7f4e77aa0000-    7f4e77aaf000	\               api-ms-win-core-fibers-l1-1-1
ELF	    7f4e77aaf000-    7f4e77ac4000	Deferred        api-ms-win-core-synch-l1-2-0<elf>
  \-PE	    7f4e77ab0000-    7f4e77ac4000	\               api-ms-win-core-synch-l1-2-0
ELF	    7f4e77ac4000-    7f4e77aed000	Deferred        imm32<elf>
  \-PE	    7f4e77ad0000-    7f4e77aed000	\               imm32
ELF	    7f4e77e18000-    7f4e77e21000	Deferred        libuuid.so.1
ELF	    7f4e77e21000-    7f4e77e5d000	Deferred        libexpat.so.1
ELF	    7f4e77e5d000-    7f4e77ea4000	Deferred        libfontconfig.so.1
ELF	    7f4e77ea4000-    7f4e78116000	Deferred        libpcre.so.1
ELF	    7f4e78116000-    7f4e7813b000	Deferred        libgraphite2.so.3
ELF	    7f4e7813b000-    7f4e7825e000	Deferred        libglib-2.0.so.0
ELF	    7f4e7825e000-    7f4e78344000	Deferred        libharfbuzz.so.0
ELF	    7f4e78344000-    7f4e7855b000	Deferred        libz.so.1
ELF	    7f4e7855b000-    7f4e78593000	Deferred        libpng16.so.16
ELF	    7f4e78593000-    7f4e785a6000	Deferred        libbz2.so.1.0
ELF	    7f4e785a6000-    7f4e7886f000	Deferred        libfreetype.so.6
ELF	    7f4e7886f000-    7f4e788b1000	Deferred        ws2_32<elf>
  \-PE	    7f4e78880000-    7f4e788b1000	\               ws2_32
ELF	    7f4e788b1000-    7f4e788e1000	Deferred        iphlpapi<elf>
  \-PE	    7f4e788c0000-    7f4e788e1000	\               iphlpapi
ELF	    7f4e788e1000-    7f4e78971000	Deferred        shlwapi<elf>
  \-PE	    7f4e788f0000-    7f4e78971000	\               shlwapi
ELF	    7f4e78971000-    7f4e78c5f000	Deferred        shell32<elf>
  \-PE	    7f4e78990000-    7f4e78c5f000	\               shell32
ELF	    7f4e78c5f000-    7f4e78c7a000	Deferred        version<elf>
  \-PE	    7f4e78c60000-    7f4e78c7a000	\               version
ELF	    7f4e78c7a000-    7f4e78d0c000	Deferred        advapi32<elf>
  \-PE	    7f4e78c90000-    7f4e78d0c000	\               advapi32
ELF	    7f4e78d0c000-    7f4e78e8a000	Deferred        gdi32<elf>
  \-PE	    7f4e78d20000-    7f4e78e8a000	\               gdi32
ELF	    7f4e78f8a000-    7f4e791ea000	Deferred        user32<elf>
  \-PE	    7f4e78fb0000-    7f4e791ea000	\               user32
ELF	    7f4e792ea000-    7f4e792ff000	Deferred        libnss_files.so.2
ELF	    7f4e7a9de000-    7f4e7aa9a000	Deferred        libgldispatch.so.0
ELF	    7f4e7aa9a000-    7f4e7acac000	Deferred        libxext.so.6
ELF	    7f4e7acac000-    7f4e7adeb000	Deferred        libx11.so.6
ELF	    7f4e7adeb000-    7f4e7ae1e000	Deferred        libglx.so.0
ELF	    7f4e7ae20000-    7f4e7ae25000	Deferred        libdl.so.2
ELF	    7f4e7ae25000-    7f4e7ae2f000	Deferred        librt.so.1
ELF	    7f4e7ae2f000-    7f4e7aec2000	Deferred        libgl.so.1
ELF	    7f4e7aec2000-    7f4e7b0c8000	Deferred        libxdmcp.so.6
ELF	    7f4e7b0c8000-    7f4e7b2cc000	Deferred        libxau.so.6
ELF	    7f4e7b2ce000-    7f4e7b453000	Deferred        libm.so.6
ELF	    7f4e7b453000-    7f4e7b617000	Deferred        libc.so.6
ELF	    7f4e7b617000-    7f4e7b638000	Deferred        libpthread.so.0
ELF	    7f4e7b638000-    7f4e7b9de000	Export          libwine.so.1
ELF	    7f4e7b9de000-    7f4e7bc19000	Deferred        gameoverlayrenderer.so
ELF	    7f4e7bc19000-    7f4e7bc3b000	Deferred        libgpg-error.so
ELF	    7f4e7bc3d000-    7f4e7bc67000	Deferred        libxcb.so.1
ELF	    7f4e7bc67000-    7f4e7bc81000	Deferred        libgcc_s.so.1
ELF	    7f4e7be12000-    7f4e7be3e000	Deferred        ld-linux-x86-64.so.2
ELF	    7ffd1435d000-    7ffd1435e000	Deferred        [vdso].so
Threads:
process  tid      prio (all id:s are in hex)
0000000c services.exe
	00000022    0
	0000001f    0
	0000001a    0
	00000016    0
	00000013    0
	00000012    0
	00000011    0
	0000000e    0
	0000000d    0
0000000f winedevice.exe
	00000017    0
	00000015    0
	00000014    0
	00000010    0
00000018 plugplay.exe
	0000001c    0
	0000001b    0
	00000019    0
0000001d winedevice.exe
	00000023    0
	00000021    0
	00000020    0
	0000001e    0
00000024 explorer.exe
	00000028    0
	00000027    0
	00000026    0
	00000025    0
00000029 Stonehearth.exe
	0000002a    0
0000002b (D) Z:\home\wuestengecko\.local\share\Steam\steamapps\common\Stonehearth\x64\crash_reporter.exe
	0000002c    0 <==
System information:
    Wine build: wine-3.7
    Platform: x86_64
    Version: Windows 7
    Host system: Linux
    Host version: 4.19.12-1-ck

1 Like