Jump to content
Sign in to follow this  
Kindling

ARMA III on Linux servers via WINE

Recommended Posts

It does, Roger, but the problem is that the function we require - D3D11CreateDeviceAndSwapChain - is within the base d3d11.dll which isn't provided by winetricks and doesn't work under WINE when copied from a Windows system (like many core Windows OS libraries). D3DX11 isn't provided in any redistributable, either, it's a core part of the Windows operating system from Windows Vista onward.

I have tried to implement the function similarly to the currently provided workaround for EVE Online's DirectX 11 requirement, but this doesn't allow the game to launch and probably wouldn't have the game running if it did (many more DirectX 11 functions are likely required). The next potential issue after DirectX 11 is BattlEye - the BattlEye application requires a few functions that aren't currently provided by WINE and will need to be re-implemented from a 'black-box' or clean-room perspective to avoid infringing Microsoft's EULA.

That's as far as I've been in considering ARMA3 support under WINE. To go forward, we need somebody to implement more of DirectX11 - Austin English's work seems promising in that direction. Alternatively, a native port of ARMA3 to Linux is required.

I think we need to be wary about jumping to any conclusions from Gustavsson's interview, there - he's certainly interested in Linux as a platform, but I think that EA is more likely to sit in the background and watch for a while, yet. As they're directly competing with Valve in distribution, I'm betting that they'll be waiting to see if Linux becomes a more popular system or not before they jump to port anything, though perhaps they'll look at publishing some of their more obscure content under Linux to 'test the waters' (as BiS seem to be doing, themselves, with ARMA Tactics!). I could be wrong, of course, I've just become a little salty concerning promises of Linux support by now.

That said, I hope that if they do port any games they do it natively. WINE is great as a way to run Windows binaries but it's been created only to translate Windows API calls to Linux ones - it's another layer between the hardware and software, another level of potential problems and performance issues. It still encourages the Windows 'way of thinking' and programming styles which are totally suboptimal under Linux. To get the most out of Linux, you have to port natively.

Share this post


Link to post
Share on other sites

I don't have much to add to what you've stated, sounds good to me.

I also think native code is the best method, as we obviously don't have NVIDIA drivers running through Wine. And as I've stated in the past, doesn't take much more to write sed/awk scripts substituting Windows functions with Linux functions. The code will likely be more stable using Linux libraries, with the hindrances being at the point when Linux library dependencies are updated or ceased, requiring code updating. (ie. NVIDIA drivers 96 version require older xorg versions, as this version was never updated to work with newer xorg versions.) On the flip, Windows has more problems when updating libraries, as this step usually also requires users to buy a new operating system and new development tools, etc. I'm usually not too finicky, and will play using Wine as it is just a game, while using all other needed as open source or native applications.

Again, nice last post.

Share this post


Link to post
Share on other sites

Honestly after EA going the DX11.2 route i doubt they will 'burn' the bridges instantly with nix port ;) especially with all the good link EA-MS right ...

now about the WINE ... i'm deeply shocked nobody is pouring millions on the WINE to already have decent DX10/11 implementation and resolved remaiming old DX

because if you could run 90% games on the WINE, it would seriously shake the balance

in fact ... if i could just start SteamOS and run nearly all of my windows games on it ... why would i need Windows ?

just think about that ...

and with the D3D command stream bufffer ofloading D3D calls for OpenGL into separate thread(s)

some of the games can actually pull higher FPS under WINE than under Windows

Share this post


Link to post
Share on other sites

Nobody wants the people who play games, to bother running or using Linux. ;-)

Yup. And nobody wants to hear Wine (ie. Linux) runs applications better then Microsoft. (God forbid I say anything of the such within these forums! ;-)

Share this post


Link to post
Share on other sites
Nobody wants the people who play games, to bother running or using Linux. ;-)

Yup. And nobody wants to hear Wine (ie. Linux) runs applications better then Microsoft. (God forbid I say anything of the such within these forums! ;-)

ask IBM why the want pour 1 billion USD into Linux ... and why not put e.g. 1% (10 millions) on WINE development !

Share this post


Link to post
Share on other sites

I always enjoy learning something new, when looking at something from a different perspective! Never dawned on me to compare Valve Corporation's Steam application to IBM Linux servers!

As such, I can now realize why people are investing into Valve Corporation's Steam application. I always looked at Valve Corporation's Steam application as hype within the Linux News, or not really needed. The Steam application does provide a significant benefit to those wanting to protect their code while offloading some of the cost of Sales required by manufacturers, while providing benefits to consumers as well. Hence similar to IBM utilizing Linux within the Server market, or NVIDIA maintaining stable Linux drivers. (ie. NVIDIA has gained a very good reputation based on providing stable multiple O/S drivers for many years now.) (Now I'm thinking! ;-) But I think when it gets to comparing basic needs and wants, most Linux users realize playing games is just a want, however that said, a lot of CAD and useful applications require good OpenGL or 3D environments. Likely a lot of political biased opinions from coders, but in the end we all know Open Source is the best end game. (ie. Nothing like having old binary code simply tossed into the trash can at the end of a decade!)

Cheers!

Share this post


Link to post
Share on other sites

Hi. I setup a Arma 3 Server under Linux 7.0 with wine-1.7.4. So far the server is running perfect. Now I tried to setup a 2nd arma 3 server with wine. But now there is the problem. 1st server is already running. When I try to start the 2nd Arma 3 server I become the error message "p11-kit: couldn't load module: /usr/lib/i386-linux-gnu/pkcs11/gnome-keyring-pkcsl11.so: /usr/lib/i386-linux-gnu/pkcs11/gnome-keyring-pkcs11.so: Can't open Shared-Object-File: File or Directory not found

err:winediag:SECUR32_initNTLMSP ntlm_auth was not found or is outdated. Make sure that ntlm_auth >= 3.0.25 is in your path. Usually, you can find it in the winbind package of your distribution.

X Error of failed request: BadWindow (invalid Window parameter)

Major opcode of failed request: 1 (X_CreateWindow)

Resource id in failed request: 0x5400007

Serial number of failed request: 7

Current serial number in output stream: 11

How I said. One server is running. But I'm not able to start the 2nd server under wine. Does someone have an idea how to fix this?

Edited by razor168

Share this post


Link to post
Share on other sites

Not to include useless info, but this sounds like Windows file locking preventing reading or writing of already opened files?

Share this post


Link to post
Share on other sites

I used this method for a few months, but now lately, it has stopped working. I have included the error/log from Wine. Does anyone know how to solve this?

[

fixme:heap:HeapSetInformation (nil) 1 (nil) 0
[2013-11-05 23:26:56] Startup - updater built Oct 30 2013 11:08:12
fixme:advapi:EventRegister {47a9201e-73b0-42ce-9821-7e134361bc6f}, 0x3f005ad0, 0x3f03ab30, 0x3f03ab28
fixme:advapi:EventRegister {58a9201e-73b0-42ce-9821-7e134361bc70}, 0x3f005ad0, 0x3f03ab68, 0x3f03ab60
fixme:advapi:EventRegister {3fa9201e-73b0-43fe-9821-7e145359bc6f}, 0x3f005ad0, 0x3f03aaf8, 0x3f03aaf0
fixme:advapi:EventRegister {1432afee-73b0-42ce-9821-7e134361b433}, 0x3f005ad0, 0x3f03aba0, 0x3f03ab98
fixme:advapi:EventRegister {4372afee-73b0-42ce-9821-7e134361b519}, 0x3f005ad0, 0x3f03abd8, 0x3f03abd0
fixme:heap:HeapSetInformation (nil) 1 (nil) 0
Looks like steam didn't shutdown cleanly, scheduling immediate update check
[2013-11-05 23:26:56] Checking for update on startup
[2013-11-05 23:26:56] Checking for available updates...
fixme:winhttp:WinHttpDetectAutoProxyConfigUrl discovery via DHCP not supported
[2013-11-05 23:26:57] Download skipped: /client/steam_client_win32 version 1383158641, installed version 1383158641
[2013-11-05 23:26:57] Nothing to do
[2013-11-05 23:26:57] Verifying installation...
[2013-11-05 23:26:57] Performing checksum verification of executable files
[2013-11-05 23:26:57] Verification complete
fixme:advapi:EventRegister {47a9201e-73b0-42ce-9821-7e134361bc6f}, 0x3f005ad0, 0x3f03ab30, 0x3f03ab28
fixme:advapi:EventRegister {58a9201e-73b0-42ce-9821-7e134361bc70}, 0x3f005ad0, 0x3f03ab68, 0x3f03ab60
fixme:advapi:EventRegister {3fa9201e-73b0-43fe-9821-7e145359bc6f}, 0x3f005ad0, 0x3f03aaf8, 0x3f03aaf0
fixme:advapi:EventRegister {1432afee-73b0-42ce-9821-7e134361b433}, 0x3f005ad0, 0x3f03aba0, 0x3f03ab98
fixme:advapi:EventRegister {4372afee-73b0-42ce-9821-7e134361b519}, 0x3f005ad0, 0x3f03abd8, 0x3f03abd0
fixme:process:SetProcessShutdownParameters (00000100, 00000000): partial stub.
fixme:ole:RemUnknown_QueryInterface No interface for iid {00000019-0000-0000-c000-000000000046}
[1105/232658:ERROR:resource_bundle.cc(417)] Failed to load Z:\home\Sp0nk\.local\share\wineprefixes\steam\drive_c\Program Files (x86)\Steam\bin\chrome.pak
Some features may not be available.
fixme:iphlpapi:NotifyAddrChange (Handle 0x1c8d4c8, overlapped 0x1aa27e0): stub
fixme:winsock:WSALookupServiceBeginW (0x1c8d5c8 0x00000ff0 0x1c8d610) Stub!
[1105/232658:ERROR:network_change_notifier_win.cc(126)] WSALookupServiceBegin failed with: 8
err:pulse:pulse_contextcallback Context failed: Connection refused
ALSA lib confmisc.c:768:(parse_card) cannot find card '0'
ALSA lib conf.c:4241:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
ALSA lib conf.c:4241:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name
ALSA lib conf.c:4241:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4720:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM default
ALSA lib confmisc.c:768:(parse_card) cannot find card '0'
ALSA lib conf.c:4241:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
ALSA lib conf.c:4241:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name
ALSA lib conf.c:4241:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4720:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM default
err:ole:CoInitializeEx Attempt to change threading model of this apartment from multi-threaded to apartment threaded
fixme:dbghelp:elf_search_auxv can't find symbol in module

EDIT: Solved. Fault was that i was trying to load ALSA sound drivers or something, so i went into the registry, and changed it to OSS and now it works flawlessly. Using wine 1.7.4 i think aswell.

Edited by Sp0nk
Solved

Share this post


Link to post
Share on other sites

I was able to get a headless client running via wine on the same machine as the server, and it works great! I loaded up 400 AI + town AI: the load was distributed and the server FPS kept up.

However I have encountered an issue which I need help with. I am forced to disable server BattleEye to use the hc, or the server kicks the hc due to BattlEye client not responding. The BattlEye process is running, and the client reports the correct version etc in its console. Not sure what to do, does anyone have any ideas? Is there maybe a way to exempt its ID?

EDIT: The solution ended up being to wipe out my .wine folder, and reconfigure winearch as 32 bit. BattlEye Client had no difficulties staying connected once I did this.

rm -rf ~/.wine

WINEARCH=win32 WINEPREFIX=~/.wine winecfg

Edited by lastelement22

Share this post


Link to post
Share on other sites

Yes, I have a separate key and steam account for the headless client. There is no duplicate client issue.

The server kicks the HC after 15 sec or so because it is not able to communicate with the BattlEye client on the HC. The license agreement is accepted. The client console shows BattlEye start and run with the correct version. I am able to see the BattlEye client process start and run in top, and that process does not crash or hang before the server kicks the client. My Windows client has no issues staying connected, so the BattlEye server is fine.

When BattlEye is not required by the server, the HC is rock solid. It stayed connected for 8 hours of stress testing and handled AI with no problems.

So basically, why might the BattlEye client not be able to communicate with the server?

EDIT: The solution ended up being to wipe out my .wine folder, and reconfigure winearch as 32 bit. BattlEye Client had no difficulties staying connected once I did this.

rm -rf ~/.wine

WINEARCH=win32 WINEPREFIX=~/.wine winecfg

Edited by lastelement22

Share this post


Link to post
Share on other sites
Yes, I have a separate key and steam account for the headless client. There is no duplicate client issue.

The server kicks the HC after 15 sec or so because it is not able to communicate with the BattlEye client on the HC. The license agreement is accepted. The client console shows BattlEye start and run with the correct version. I am able to see the BattlEye client process start and run in top, and that process does not crash or hang before the server kicks the client. My Windows client has no issues staying connected, so the BattlEye server is fine.

When BattlEye is not required by the server, the HC is rock solid. It stayed connected for 8 hours of stress testing and handled AI with no problems.

So basically, why might the BattlEye client not be able to communicate with the server?

... just a question: do you have battleyeLicense=1; in your HC profile?

Share this post


Link to post
Share on other sites
... just a question: do you have battleyeLicense=1; in your HC profile?

Yup, it is set. "battleyeLicense=1;" is present in Arma 3/hc/Users/hc/hc.Arma3Profile

(Made sure it was there, tried again same result.)

EDIT: The solution ended up being to wipe out my .wine folder, and reconfigure winearch as 32 bit. Once it was re-installed on this architecture of wine, BattlEye Client had no difficulties staying connected once I did this.

rm -rf ~/.wine

WINEARCH=win32 WINEPREFIX=~/.wine winecfg

Edited by lastelement22

Share this post


Link to post
Share on other sites
I was able to get a headless client running via wine on the same machine as the server, and it works great! I loaded up 400 AI + town AI: the load was distributed and the server FPS kept up.

However I have encountered an issue which I need help with. I am forced to disable server BattleEye to use the hc, or the server kicks the hc due to BattlEye client not responding. The BattlEye process is running, and the client reports the correct version etc in its console. Not sure what to do, does anyone have any ideas? Is there maybe a way to exempt its ID?

EDIT: The solution ended up being to wipe out my .wine folder, and reconfigure winearch as 32 bit. BattlEye Client had no difficulties staying connected once I did this.

rm -rf ~/.wine

WINEARCH=win32 WINEPREFIX=~/.wine winecfg

Apologies could you clarify something for me:

you say :

... the load was distributed ...

But before that you said

... a headless client running via wine on the same machine as the server ...

Those two statements contradict each other.

Having the load distributed means there is more than one server (hence cpu/ram/hdd/etc) handling clients and coordinating with the other servers in the pool.

A video explaining what it means to be able to distribute the load:

Personally I'm really hoping the Arma 3 linux server binary is able to be horizontally scaled behind a edge node.

Share this post


Link to post
Share on other sites

I know what load distribution is.

This server does not use multiple cores for AI processing. Using a headless client on the same machine is the workaround, to offload/distribute the AI processing to more CPU cores (assuming RAM isn't a limitation). Most people are running the HC on the same machine as the server. Regarding your second question: Yes, it can do that. I tested using a second machine to run the HC, and it worked fine. The HC and server connect via IP, just like a normal client.

Please read this guide: http://www.reddit.com/r/arma/comments/16nl5x/a_quick_n_dirty_guide_to_headless_clients_for/

Share this post


Link to post
Share on other sites

Hello I followed the tutorial until:

winetricks --no-isolate steam

But Steam does not open up. I have an emtpy workspace on my VNC monitor.

What should I do?

Edited by Quanti

Share this post


Link to post
Share on other sites

try this:

winetricks xact_jun2010

or

winetricks –force xact_jun2010

winetricks d3dx11_42

winetricks d3dx11_43

Share this post


Link to post
Share on other sites

Does anyone have that issue that the server looses connection to steam network? for some reason it does and i don't know what to do about it. Steam just says not connected after a day or so...

I also manage to make it visible on the gamespy query only though. Server runs on port 2302 and steam ports are 2300 and 2301 in the server.cfg file.

edit: never mind... it was a hardware issue with the disconnecting from steam.

Edited by mike187

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×