How can I run BattleStar Galactica Online on Linux?
I am aware that BattleStar Galactica Online requires the Unity 3D browser plug-in to play. It is currently only available to Windows. I installed the windows version of Firefox 20 using Wine 1.4.1. It ran beautifully and smoothly. Then I installed the United 3D browser plugin version 4.1.2f1 using Wine. I registered for the game and went to play it. However, it gave me this error when the game started to load:
Failed to update Unity web player
Error Details Install Manually
This is the newest version of the Unity player. Also, selecting Error details produces a pop up that says:
A New version of the Unity Web Player is required, but the auto-update download failed.
Was trying to download http://webplayer.unity3d.com//Channels/795a449bc926/UnityPlayer3.x.x-win32.zip
Does anyone know what is causing the problem? Has anyone figured out a work around?
Update
As per suggestion, I tried following the link given in the error details. The url changed since the problem started, it is now http://webplayer.unity3d.com//Channels/911c7369eeac/UnityPlayer3.x.x-win32.zip
. It opened in Ubuntu's Archive Manager and I extracted the contents to .../Local Settings/Application Data/Unity/WebPlayer/player/3.x.x/
in my user folder within my .wine
folder. I placed the old files in a new folder in case I needed to revert back. When I reloaded firefox and went to Battlestar Galactica Online, I had the identical error message as above. This idea was a dead end.
Comment
To avoid an extended conversation with myself, I'll add the following information which may or may not be helpful as an edit. The Unity forums, which is a clone of a stack exchange site, offers little help to people with issues. I found multiple posts by Windows users who have had the same problem. The answers were either vague or irrelevant in most cases with a few of them just plain out-of-date.
- http://answers.unity3d.com/questions/35664/web-player-auto-update-failed.html
- http://forum.unity3d.com/threads/166844-unity-web-player-doesn-t-work
- http://answers.unity3d.com/questions/438965/auto-update-failed-1.html
This link may actually prove to be helpful. However, I don't know which log file they are referring to. If someone can tell me, we may be one step close to getting this game running.
Update
I removed the log files I had previously uploaded here. One was the from when I attempted an to use an older version of Unity and therefore irrelevant. Here are the two new log files that are actually relevant. The first one is log_9e49528ca7602f43a8ab3e512f51ec85.txt
130531 13:49:16 ------------------------------------------------------------
130531 13:49:16 Instance starting, version 4.1.3f3_9174d583c97b, UNITY_WEB_ENABLE_AUTODOWNLOAD: 1, GetDisableAutoUpdates(): 0
130531 13:49:16 Datafile http://battlestargalactica-547.ah.bpcdn.net/client/bgoclient.unity3d?__cv=74ec5150a2588c2594bbc497c418cc00
130531 13:49:26 Setting error display: 'Failed to update Unity Web Player', details: 'A newer version of Unity Web Player is required, but the auto-update download failed.
Was trying to download http://webplayer.unity3d.com//Channels/9174d583c97b/UnityPlayer3.x.x-win32.zip', link: 1
The second one is manager_a9779ddffc02944b911eb9afcd5390ff.txt
130531 13:47:33 ------------------------------------------------------------
130531 13:47:33 Manager starting, version 4.1.3f3_9174d583c97b
130531 13:47:36 Requesting bundle 1 (3.x.x) update. Required revision range is 4138003 to 4138003, installed revision is ffffffff
130531 13:49:19 Requesting bundle 1 (3.x.x) update. Required revision range is 4138003 to 4138003, installed revision is ffffffff
Interpretation
From what I can tell from the log file, the number that precedes each line is actually the day in yymmdd format followed by the military time. The file that begins with "log" only has information on what the most recent session with the Unity Web Plugin outputed. The file beginning with "manager" seems to keep all error messages from the current browser session. The error message:
Requesting bundle 1 (3.x.x) update. Required revision range is 4138003 to 4138003, installed revision is ffffffff
Appears after all events in both log files. From searching the Unity forums, I noticed that this error appears for multiple Windows users. Of course they are offered no help in determining the cause aside from their generic explanation of the error message. But those users did not give up hope and eventually some of them discovered the cause. Many of them has some kind of encryption system that prevented Unity from reading the files and folders it needed. Other people had some kind of network encryption that also seemed incompatible with Unity.
The question now becomes what in wine is causing Unity to fail and is it something that can be worked around?
Possible Solution?
There is with forum thread at winehq that claims to have gotten wine to run Unity via a patched version of wine (see here). It requires modifying some code and recompiling wine, there is a link to this video in which youtube user David Techer instructs on how to get it working. Ironically, the video features this very page in it yet Techer did not bother to leave an answer, >:( .
This method uses a different version of Wine, Firefox, Unity, and Ubuntu than I asked, however if it works I would gladly accept it as an answer provided that someone answers it in a clear, well structured manner.
Edit: The forum thread mentions applying a four part patch to fix bug number 12067, however that patch is already applied to wine version 1.7.6 and newer. The current version of wine 1.7.9 has a bug that results in certain programs, like firefox, to crash at startup (firefox gives a "could not load xpcom" error). This is suppose to be fixed when 1.7.10 comes out, however 1.7.8 runs firefox quite well. Since the simple instructions on obtaining the source code for wine using git results in the 1.7.9 code, I'll wait until 1.7.10 comes out to attempt this workaround. However the forum thread replaces:
HDESK WINAPI OpenInputDesktop( DWORD flags, BOOL inherit, ACCESS_MASK access )
{
FIXME( "(%x,%i,%x): stub\n", flags, inherit, access );
SetLastError( ERROR_CALL_NOT_IMPLEMENTED );
return 0;
}
in winstation.c (in wine version 1.7.0) with
HDESK WINAPI OpenInputDesktop( DWORD flags, BOOL inherit, ACCESS_MASK access )
{
return CreateDesktopA("Desktop", 0, 0, flags, access, 0);
}
However, in the winstation.c file in 1.7.9 it's
HDESK WINAPI OpenInputDesktop( DWORD flags, BOOL inherit, ACCESS_MASK access )
{
HANDLE ret = 0;
TRACE( "(%x,%i,%x)\n", flags, inherit, access );
if (flags)
FIXME( "partial stub flags %08x\n", flags );
SERVER_START_REQ( open_input_desktop )
{
req->flags = flags;
req->access = access;
req->attributes = inherit ? OBJ_INHERIT : 0;
if (!wine_server_call_err( req )) ret = wine_server_ptr_handle( reply->handle );
}
SERVER_END_REQ;
return ret;
}
I'm a bit reluctant in making a change since it may break wine. It seems that since 1.7.0 that the call to the function OpenInputDesktop has been implemented and doesn't merely create an error message. OpenDesktopA function returns the OpenDesktopW function which returns the open_winstation_desktop function which basically looks like what 1.7.9 and 1.7.10 has written for the OpenInputDesktop. It's more efficient not to recompile wine with the mentioned patch as it will do the same thing as is only with a smaller runtime stack. So I need to try to install firefox, flash, and unity with 1.7.10 then copy and past the updated files from a windows pc into the correct folder. If anyone has already done it please post detailed instructions and your results so I can select it as the best answer.
Solution 1:
EDIT: I have found out that, unfortunately, no one has been able to get the Unity3D Web Player to run under Wine and there is no native version of the Web Player. I'm afraid it is impossible to get it to run under Linux for the time being.
If you have other things installed in your .wine
folder, try making a new, clean Wineprefix to do the install in, so that you are sure that nothing else in somehow interfering with the program.
To create a new Wineprefix, say in a folder called .BSGOnline
do this in a terminal:
mkdir .BSGOnline
export WINEPREFIX=/home/username/.BSGOnline
- Do the install the same way as you did previously; install Firefox inside the Wineprefix and then install the Unity3D Web Player. It might help to update Wine as well, but that might just as well make it worse.
Good luck, and I hope it helps!