2038 under WINE/Linux

We don’t have enough players using linux primarily to spend time and effort on supporting WINE. If you want I can give you instructions on how to manually download patch files and you can write a guide for WINE users.

Is it this simple? I was worried about how to actually run the .exe file. I was under the impression it needed some cryptic arguments. But if you can provide me with download and start instructions then it should be easy to make a simple launcher for WINE/Linux. I’d very much appreciate that :slight_smile:

Basically the launcher checks if your files are out of date by hash and updates any required. You will have to manually download new patches as they come out if you want to do it manually, but it’s possible. The client won’t let you log in if your patch is out of date FYI.

I’ll give you some instructions later, but it should work. You basically run the game as normal but using a different exe, no cryptic arguments or anything. Stay tuned.

Awesome. If you find the time to share some light on the hash check, too, then I’ll put it in as well!

I remember HG Global having some cryptic arguments, which didn’t allow one to start the game directly but always requiring their launcher. Anyhow, I gave it a quick test this morning and it’s working fine when one installs the game under Linux and Windows (including the new MP patch), runs it once under Windows to get the updates, and then copies the changed files over.

Uncapped fps with an Nvidia GTX960 and maxed settings is about 100-150 fps. So that’s nice. Ping is at around 110-120ms, too.

It requires no use of winetricks and nothing needs to be modified in WINE and one can just use i.e. the wine-development package straight out of the Debian distribution.

Only the DX10 client crashes. Neither use of the builtin DirectX functions of WINE nor using MS DirectX packages solves it. This might be a bug in WINE or the graphics drivers on my side.

The missing/changed files were:

Data/mp_hellgate_1.10.180.3416_1.0.86.4580.idx
Data/mp_hellgate_2038.dat
Data/mp_hellgate_2038.idx
Data/mp_hellgate_localized_1.10.180.3416_1.0.86.4580.idx
Data/serverlist.xml
MediaCenter/Launcher-MCE.lnk
MediaCenter/Launcher-MCE.mcl
MP_x64/fmodex64.dll
MP_x64/London2038_dx10_x64.exe
MP_x64/London2038_dx9_x64.exe

A picture of it: https://i.imgur.com/kQtlBFh.jpg

I’ve now been trying to play under Linux for a while, but there is one major issue. One gets a network error the second one starts to attack a mob.

Everything else I’ve tested works fine so far. One can change stations, enter maps and take damage, store items in the Stash and take them out again, etc… Only the second one attacks does one get thrown back to the login screen. However, no crash.

If you have any pointers for what could be causing this then please let me know. Is combat somehow transferred differently, i.e. udp vs. tcp? Seems to be a rather unique issue to combat.

I’ve the same problem but i’m using Win7 don’t know what is the problem.

Log in change station and can do every thing but go into any zone with mobs in them i can kill like 3 or 4 then they all stop on their place and after 10 seconds or so i get “Network error” and you have been disconnected.

I too can’t get the launcher to run in wine and don’t see the info in this thread, could you tell me what to download/put where instead? or if you can tell me how the launcher would do the file-comparison/download of file list and the actual files (or just let me take a look at the launcher’s source code) I could write a linux shell script and post it here for others to use as a “linux launcher” :slight_smile:

@SchummelBaron could you tell me how you even got it installed? I always mess my wineprefix up somehow, mostly because winetricks and playonlinux installers for directx and dotnet fail horribly on 64bits and there’s no 32bit client version in that file list you posted above. some kind of step-by-step installation guide for wine would be really great :slight_smile:

I’m running Debian, so the first thing I need to do to get WINE with 32-bit and 64-bit support is (as root):

dpkg --add-architecture i386
apt-get update
apt-get install wine wine32 wine64 libwine libwine:32 fonts-wine

The first line will add 32-bit as another architecture to your Debian or Debian-based distro. So now you’ll also have all the 32-bit packages available. The “apt-get update” just gets an updated list of packages and then you can install the 32-bit and 64-bit versions of WINE. The exact package names depend on the flavour of distro you use. So does Debian offer “wine” as well as a “wine-development” package where the first is the latest, stable version 2.0 and the other is the latest development versions 2.20. That’s basically it. You don’t need to use winetricks, you don’t have to install some version of DirectX, and you can run the game with WINE’s built-in DLLs. If anything else is needed I couldn’t tell you right now… (see below). The rest is just your usual stuff:

export WINEPREFIX=$HOME/.hgl    # give the game it's own WINE directory
export WINEDEBUG=-all           # makes everything run faster

Run winecfg once and let it create the directory and make changes such as setting a virtual desktop and a nice size i.e. 1920x1080.

You do need to have the original game, in the English language, to run it. So you first insert the game’s DVD and run the setup under WINE, enter the installation key and let the installer do it’s job. Once that’s done do you apply the 1.3 GB patch for MP 2.0.

The new launcher itself doesn’t work, because it requires the .NET Presentation Foundation Whatever Stuff, which is currently missing from Mono and it also doesn’t help to install .NET itself under WINE. You do need to install the game once under Windows, i.e. when you have a dual-boot setup can you do this more easily. Or you can try running a VM with Windows in it - which ever works for you. Start the launcher under Windows and let it patch the game (you’ll need to install the game, the patch and the new installer under Windows, too, for this to work). Now you go back to Linux and copy the patched files over onto your directory “$WINEPREFIX/.hgl/drive_c/Prgram Filex (x86)/Flagship Studios/Hellgate London/”. You’ll have to repeat the step each time the game receives a new patch for now.

If you’ve done all correctly then you’ll be able to start the game by running the MP_x64/London2038_dx9_x64.exe file with WINE:

wine MP_x64/London2038_dx9_x64.exe

Note, you’ll need to have a proper graphics driver installed under Linux. One which can handle OpenGL as all the DirectX calls are being translated/emulated with OpenGL. The DX10 version of the game didn’t run for me - it crashes. That’s probably due to some missing features or perhaps bugs in WINE’s DX10/11 implementation, which still is work in progress.

I did get the game to run a couple times now and could play it properly, but it seems that once it has created its directories it starts showing the network error and have I yet to pin-point the source of the problem. But you should be able to change stations, manage your stashes and characters, check your mails and sales, and chat with guild mates.

@SchummelBaron so essentially I just messed up the wineprefix by trying to install dx9 and .net to make the launcher happy, and just a plain 64bits prefix is all it needs? sounds doable, i feel a bit silly RN… :stuck_out_tongue:
about the network problems: if I get it to run and have the same problems I’ll gladly help debugging :slight_smile:

but the thing with windows dual-boot/vm is a bit annoying, @Omerta could you maybe tell me how the launcher gets its file list so I could just write a “launcher script” to wget the files instead? don’t want to decompile it, that always feels so dirty because MS CIL creeps the hell outta me :stuck_out_tongue:

EDIT: @SchummelBaron I don’t get the MP patch to run on 64bit wineprefix. what I did:

  • set up wineprefix with 64bit wine-2.12-staging
  • installed the game
  • fixed {region,language}.dat because the installer messed them up
  • ran the patch, output:

    wine /home/kyra/Downloads/Patch_NA_Europe_Germany_MP_2.0_(1.0.86.4580).exe
    fixme:winediag:start_process Wine Staging 2.12 is a testing version containing experimental patches.
    fixme:winediag:start_process Please mention your exact version when filing bug reports on winehq.org.
    fixme:actctx:parse_depend_manifests Could not find dependent assembly L"Microsoft.Windows.Common-Controls" (6.0.0.0)
    wine: Unhandled page fault on read access to 0x00000004 at address 0x7e9257a9 (thread 0009), starting debugger…

which I read as “can’t find dotnet components, the exe is ignoring that I didn’t find it, then try to access it, segfault” (which I didn’t install because you told me not to).
or it’s the usual “wine barfs all over everything with segfaults because I try to run badly written 32bit exes on 64bit” which shouldn’t happen, but does often enough sadly…

in the first case: we’re again at the problem of “client can’t run on 32bit but dotnet doesn’t want to install on 64bit wine”.

in the second case: it did install to Program Files, should I move it to Program Files (x86) instead? I don’t think the wine developers might be THAT stupid (that’s what file headers are for, not folder names), but maybe it helps detecting it as a WoW64 exe?

also yes, before you ask, it also fails the same way in the current stable version.

Hmm, may be that my version of WINE automatically installs Mono. Perhaps yours doesn’t and you’ll have to install it additionally / manually?

https://wiki.winehq.org/Mono

tried to install mono-2.10 using PlayOnLinux’s installer script, fails with:

start /unix mono-2.10.9-gtksharp-2.12.11-win32-0.exe /silent
fixme:winediag:start_process Wine Staging 2.12 is a testing version containing experimental patches.
fixme:winediag:start_process Please mention your exact version when filing bug reports on winehq.org.
fixme:actctx:parse_depend_manifests Could not find dependent assembly L"Microsoft.Windows.Common-Controls" (6.0.0.0)
fixme:file:SetSearchPathMode (8001): stub
fixme:process:SetProcessDEPPolicy (1): stub
fixme:actctx:parse_depend_manifests Could not find dependent assembly L"Microsoft.Windows.Common-Controls" (6.0.0.0)
fixme:file:SetSearchPathMode (8001): stub
fixme:process:SetProcessDEPPolicy (1): stub
fixme:win:DisableProcessWindowsGhosting : stub
fixme:graphics:ShutdownBlockReasonDestroy (0x10082): stub
fixme:graphics:ShutdownBlockReasonCreate (0x10082, L"Installing"): stub
fixme:graphics:ShutdownBlockReasonDestroy (0x10082): stub
fixme:graphics:ShutdownBlockReasonCreate (0x10082, L"Please wait while Setup installs Mono 2.10.9 with GTK# 2.12.11 on your computer."): stub
fixme:msg:ChangeWindowMessageFilterEx 0x10092 c047 1 (nil)
err:seh:setup_exception_record stack overflow 1696 bytes in thread 0031 eip 7ec6b389 esp 00240c90 stack 0x240000-0x241000-0x340000

which to me sounds like “can’t find the mono component, still can’t find it after messing with paths, then failing”

also, after trying that, even winecfg crashes with:

winecfg
fixme:winediag:start_process Wine Staging 2.12 is a testing version containing experimental patches.
fixme:winediag:start_process Please mention your exact version when filing bug reports on winehq.org.
wine: Unhandled page fault on read access to 0x00000008 at address 0x7f116e24e25a (thread 002f), starting debugger…

What one usually does is to install the offcial Mono package for WINE into /usr/share/wine/mono/

So you’ll just have to get http://dl.winehq.org/wine/wine-mono/4.7.1/wine-mono-4.7.1.msi and move it there.

Delete the ~/.hgl directory and start with winecfg again. It should setup Mono for you during the first configuration and if not at least tell you that it didn’t. This is what WINE does by default under Debian as well as when you’ve installed it from source code.

It might also work afterwards when you run it with msiexec, but I’ve never tried. I know the above works. Done it many times using the vanilla source code (but Debian packages are just fine).

well it neither did nor told me it didn’t i’m afraid.
but yeah i’ll wipe and try again.

for the record, wine-mono is installed system-wide.

if it fails again, I’ll just try to run the msi file from /usr/share/wine/mono myself, maybe that helps (and should be “more stable” than using the POL script)

ok, what I did now:

  • new wine prefix, 64bit, 2.20-staging
  • installed HGL
  • noticed mono got not auto-installed, so I ran msiexec /i /usr/share/wine/mono/wine-mono-4.7.1.msi
  • patch installed fine

now I have the problem I don’t actually have a copy of Windows (neither to dual-boot nor to set up in a VM), could you maybe tell me the files the launcher got for you again so I can just download them manually (the url prefix is in the patcher.xml anyway :stuck_out_tongue:, just need to know what files to get)?

I tried the list you posted above but I suspect it changed since then, because about half of the files you listed result in 404 errors.

what’d be really great (hey devs, looking at you :wink:) would be if we just could get the link to the manifest file.

The file names haven’t changed. I haven’t tried to download the files manually. Guess we’ll have to wait until Omerta or someone else has got the time to tell us how to do this for ourselves. And they’ll be busy with fixing bugs atm.

ok, for now what I did is paste your list into a file files and then ran:

while read i; do wget -O $i https://auth.london2038.com/patcher/$i ; done < files

which got me most of them, and all of the important looking ones.

testing now…

EDIT: tested, fails with:

wine: Call from 0x7b4584ea to unimplemented function d3dx9_34.dll.D3DXSHProjectCubeMap, aborting

you sure I don’t need native directx? according to https://source.winehq.org/WineAPI/d3dx9_34.html the function is stubbed.

oh btw to get the info about how the launcher works, I just noticed strings -e l (that’s a small L, not a big i) and strings -e b can search for utf16 (which .net uses for every string because idiots), maybe that’ll help to identify filenames

FOUND IT! https://auth.london2038.com/patcher/checksums.xml
ugly shell one-liner to get them (without checksum checking, because lazy and I don’t have the files anyway):

curl https://auth.london2038.com/patcher/checksums.xml | tr '\\' '/' |grep 'download="true"' | cut -d'"' -f 2 | while read i; do wget -O $i https://auth.london2038.com/patcher/$i ; done

now the only problem left seems to be the directx error. maybe I should try just putting that specific dll next to the exe without fancy installation stuff that messes up wine? my nvidia drivers support native Direct3D on linux, it just seems to be missing that dll function.

downloading the MS d3dx9_34.dll now allows it to start, but I get a black screen except for some slider-looking thing and no cursor or mouse/keyboard response:

Perhaps your driver requires it. I know I don’t need d3dx9_34, but I have seen it being mentioned. I cannot tell you what for ppl need it.