Visual Pinball on Linux via Wine: A Guide

Viewing 8 posts - 1 through 8 (of 8 total)
  • Author
    Posts
  • #221251
    CrazyRocketGuy
    Participant
      @crazyrocketguy

      Visual Pinball is already a niche. Desktop Linux is also a niche. Both of them together is a niche within a niche, so, as expected, there is extremely little documentation on the matter. This guide attempts to change that.

      Note that these instructions are not foolproof. There are some tables that will just refuse to work, and unfortunately, there are few, if any, workarounds. Despite this, I have found that the majority of tables will be compatible. These instructions were tested on Linux Mint 20 using Wine 6.0. While prior versions of Wine might work, I have not tested it and I can guarantee nothing. TLDR: Wine, despite how powerful it is, is not perfect. Your mileage will vary.

      Prerequisites

      Installation

      	1. Set up a WinePrefix.
      		A. Set up a new, 32bit wineprefix using Winetricks, I called mine "pinballX". You can safely ignore the dialogues to install "Gecko"
      		B. Install the following "verbs" in the wineprefix through Winetricks
      			- d3dx9
      			- dotnet40
      			- wsh57
      
      	2. Run VPX6Setup.exe
      		A. Run VPX6Setup.exe in your wineprefix.
      		B. Go through the installation as normal. THE DIRECTX INSTALL WILL FAIL. However, the installation will continue normally.
      		C. In dotnet prompt, select cancel. It won't do anything, as we already installed dotnet in the prior step.
      		D. Finish the installation.
      

      Usage

      You can use VisualPinballX just as you would on a typical Windows install; put your tables in /Tables/, your roms in /VPinMAME/roms/, and you should be off to the races.

      For best performance, I recommend going into the Video/Graphics Options and disabling the setting “Force exclusive Fullscreen Mode.” This does introduce some issues with screen tearing, but I have found that, if you leave this enabled, your mouse can get trapped in the game window with no escape, among other issues.

      Issues and Compatibility

      • If you are getting an error among the lines of “Unknown Runtime error,” this means that the VisualBasic interpreter is not working. This was installed in ‘wsh57,’

      Below are some tables that I tested to ensure the functionality of VPX. I have confirmed that all the tables that have problems running in wine work perfectly fine in windows. All of the broken tables can start and render, but from there on out all bets are off.

      Here are some examples of tables working and tables not working.

      The Good

      Pirates of the Caribbean: Fully Functional, no issues whatsoever. Resolution is weird to demonstrate that it is running properly, no smoke and mirrors here.

      The Bad

      Scared Stiff (version 1.31): The null error. I have no clue what causes this or why, but it strikes at random with no warning on many different tables. I imagine this has to do with Wine’s implementation of the VisualBasic runtime.

      And The Ugly

      Scared Stuff (again) (Version 1.43): For some reason, the play field had leaped out of the cabinet and is now blocking the upper half of the table. I mean, the script issue seems to be fixed in this version, I no longer get the null error, and otherwise the game actually plays just fine, but is this much better?


      Since I do not design tables, I am not sure if there are any issues lurking in the editor. That being said, through my very brief interaction with it, I think it works fine. I am constantly looking for ways to fix the problems that are listed with the graphics and the VB implementation, if anyone has any experience with the matter, please let me know, and I can edit this post accordingly.

      Also untested is any physical hardware that you might have installed into your machine. Once again, your mileage will vary.

      I hope this guide was informative! Best of luck with your Virtual Pinball adventures!

      #221324
      strikekat
      Participant
        @strikekat

        Crazy timing… I literally just revisited this on my machine a couple days ago throwing an updated guide on my website and was coming on here to update the old thread I posted on.

        I can confirm that prior versions of Wine (5.0 and 5.13) do work, as I’m using the Proton forks of Wine (Which I believe also eliminates the dotnet and script host dependencies), but happy to see vanilla Wine is working great too.

        Tables that I’ve tested so far (Don’t have exact versions/authors, also only around 5-10 mins on each, so may not have uncovered every issue):

        • Black Knight – Works
        • Black Knight 2000 – Works
        • Lord of the Rings – Works
        • Bram Stoker’s Dracula – Works
        • Solar Fire – Works
        • Space Shuttle – Works
        • Star Light – Works
        • TOTAN – Works
        • Arena – Works
        • Firepower (g5k) – Unplayably slow (does not change w/ graphical settings)
        • Guns n’ Roses – Playable, but several graphical artifacts and elements rendering in pure black

        I will give Scared Stiff a shot and see if anything is different.
        EDIT – My copy of the table seems to be working great (1.31), maybe a difference in WSH implementation between the Wine branches?

        Other issues (So far):

        • Most tables crash (Player and Editor) when I press Escape or Q (Workaround – Close the player with window manager only)
        • Script window keeps losing focus when typing (Workaround – Disable autocomplete, the autocomplete popup is failing to render)
        • Also not an editor, so can’t comment if there’s any other issues I’m missing

        Most of these run great at 4K/60FPS, my specifications (ThinkPad P53) for reference:
        Fedora 33 / X11 w/ Nvidia proprietary drivers / Gnome 3.38
        Intel i9-9880H / 32GB RAM / Quadro RTX 4000 (Comparable to a 2060/2070)

        #221327
        CrazyRocketGuy
        Participant
          @crazyrocketguy

          Ha, that’s crazy, less than a 24 hour difference between the posts.

          While I considered using Proton, due to the fact that it is directly integrated in Steam and my general inexperience with it, I thought that it just would incur unnecessary complications. Given that WSH, dotnet, and a bunch of other dependencies are now built into proton vs having to use winetricks, it isn’t very surprising that it would work better. I will need to give it a shot when I get a chance and see how it fares.

          #221329
          strikekat
          Participant
            @strikekat

            I’ll freely admit that it was such a frustration the first time around getting it to work (See here) that I was just over constantly re-installing it and figuring out exactly what I’d need with vanilla Wine – plus being generally impressed by Proton’s ability to run certain games (Arma 3). My understanding is that you can install/run Proton outside of Steam as well, but I’ve no experience with that, unfortunately.

            Speaking of a niche within a niche – If you’re feeling froggy, I’d be happy to help work on some launcher/setup script/application or a more official guide with some more thorough debugging and testing.

             

            There’s also the vpweb and vpx-js projects, but I’ll fully admit that I’m not particularly experienced with frontend stacks and I’ve also been pretty much removed from the entire pinball scene for a year or so, so I’m a little out of date.

            #221476
            CrazyRocketGuy
            Participant
              @crazyrocketguy

              Hmm. I am having strange issues with using the proton wine. Any tables that require scripts (all of them) just refuse to work, so obviously there’s some kind of snafu with WSH. Even after I manually installed it in the proton prefix w/ winetricks, still no luck. Additionally, mouse support just feels better in stock wine, I can actually move the mouse anywhere I want instead of it being confined within one windows. At this point, at least for me, stock wine w winetricks is just working a lot better, so for now I’m going to stick with it. Even when I was able to load a table in, the graphical issue with the board on Scared Stiff 1.43 was still there.

              However, in my search to see if I could get a standalone version of Proton, I discovered a program called Lutris, which has its own branch of wine. It’s so much easier to set up then having to finagle with proton, and after installing wsh57 through winetricks, all the tables that were giving me trouble worked. One of the tables I didn’t mention in the original post was Theatre of Magic which instantly crashed wine once it loaded. In Lutris’s Wine, it worked fine, other than a weird bug with the board itself not thinking any balls were on the playfield. Even Scared Stiff 1.43, which had been giving me graphical issues, was working. For now, I am going to stick with lutris for my day to day, and I’d recommend it because of it’s ease of use. And because Lutris is basically like winetricks on steroids, with built in install scripts and the like, it’s possible to make an install script that works with VPX and handles all the dependencies.

              This would absolutely be the easiest route if you or I wanted to make a script/guide to install VPX, however, personally, I would rather not have to rely on an external program is possible. Nonetheless, it would make it extremely easy to make and distribute a script thanks to this all being built into Lutris.

              #221492
              strikekat
              Participant
                @strikekat

                Hm, that’s very strange. I’ve never had my cursor confined to a window (Do you have Wine’s virtual desktop enabled?) or the WSH errors on Proton (since 5.x at least).

                I’ve definitely heard of Lutris, and have cheated for a couple games by looking at the install script JSONs.. but didn’t care for the abstractions and I’ve always written my own launch scripts anyways (or played directly through Steam) so never really bothered trying it out. It looks like Lutris has it’s own set of Wine forks that are not Proton but you can get it to use it if you have Steam installed.
                To be fair at this point, the only major benefit of Proton for me is the fact that it is patched to allow exclusive-fullscreen applications to run in fullscreen-windowed mode (A godsend for people like me that run games at lower-than-4K resolutions on my 4K monitor – X11 does not handle frequent monitor resolution changes nearly as well as Windows), and perhaps a little higher performance.

                Either way, glad it’s working better for you. I may give it a shot too at some point.

                I think I’d still be interested in an extremely lightweight script or launcher that enumerated available tables with some basic metadata like year, manufacturer, etc, and let me immediately start them (Yes, I know about PinballX – not sure how it performs under Wine). I wrote one for Windows 6 or 7 years ago, but used a WPF GUI, which cross-platform .Net Core/5 isn’t a fan of. Maybe a fun little weekend golang project.

                #221918
                CrazyRocketGuy
                Participant
                  @crazyrocketguy

                  Honestly, I just wanted to get it to work, and I made this thread share some wisdom along the way for anyone who wanted. Making a full launcher kind of thing with a GUI and all that is well beyond my knowledge right now, hence why I’m going to work on making a lutris script because it’s pretty noob friendly and very accessible to anyone who wants something that *just works*. Nonetheless, if you do end up going with that, I would be happy to help wherever I could.

                  The issues I was facing with proton where due to an issue with your script, or more accurately, my setup. My /bin/sh is symlinked with the dash shell, whereas it might be different on your system. The spaces in the filepaths cause the shell to fail silently and not set all the environment variables correctly, so, you might want to edit the script to use a specific shell OR edit the script so it’s compatible with other shells. I think single quotes on all the lines might do it, though I’m not 100% sure. Out of curiosity, what is your /bin/sh linked to? Might help to figure out what shell the script would work best in.

                  Last thing. I was able to figure out how to make stock wine behave a lot more like lutris wine; the secret sauce was DXVK, using the installer script in its github repository. The installer in winetricks looks like it’s borked in 64bit mode, so wine was just using it’s built in libraries.

                  #221922
                  strikekat
                  Participant
                    @strikekat

                    That’s a good catch – I should’ve single-quoted the paths. My /bin/sh is symlinked to Bash (Fedora’s default), although my default user shell is Zsh. I think that would handle it since it’s just a bunch of exports, but will test.

                    (Side note, I’ve been in a habit of using /bin/sh as the hashbang for scripts because I’ve had a to write a ton of scripts for Alpine linux Docker images which do not have Bash installed – I should probably consider just Bash for regular desktop use)

                    That’s interesting on DXVK – I thought when I first set this all up (vanilla Wine) that I did install dxvk manually, package manager + winetricks in prefix, but it’s been so long, and I think that was all in Wine 4.x.

                    The major working paths (Wine variants) at this point that I can see:
                    Vanilla Wine 6.x + dotnet40, wsh57, and dxvk/dx11
                    Lutris Wine 6.x(?) + wsh57
                    Proton Wine 5.x + dinput
                    (This probably isn’t totally accurate without some testing)

                    If you get the Lutris script completed, feel free to link here. I’d be happy to test it out. I might spin up an empty Ubuntu VM or w/e to get a clean slate for testing setups.

                  Viewing 8 posts - 1 through 8 (of 8 total)

                  Forums are currently locked.

                  ©2024 VPinBall.com

                  Log in with your credentials

                  Forgot your details?