Jump to content
Sign in to follow this  
zorrobyte

The urgent debate about headless client in A3 (and HC general info)

Recommended Posts

There has been some debate over methods in which Arma 3 will use headless client that the general public need to be aware of. Even if you have never created a mission before, you have most likely played on a server using HC as for example all Dynamic War Sandbox servers use HC otherwise it'd be impossible to run the mission with any sort of playability with the current state of AI in A3.

Coming soon Dev changes could/will be introduced into stable which will break HC as we know it for everyone and could impact your favorite servers you enjoy playing on. There are ways around this but it involves buying yet another copy of Arma 3 and following new possibly complex SteamCMD instructions to run more than one steam client per machine. Simply put, the new cdkeychecking drm prevents a server admin from using his account to run the server and HC as he won't be able to play Arma with his bought copy for as long he/she wishes to use HC.

For simplicity I have created a presentation that summarizes what HC is and the issues surrounding it.

HERE

Please, provide constructive feedback on both the feedback tracker and in this forum topic if you understand the topic at hand. My documentation may not be 100% correct in all technical aspects but I am open to feedback.

Thank you,

Zorrobyte - Creator of DWS

Edited by zorrobyte

Share this post


Link to post
Share on other sites

Taken from http://forums.bistudio.com/showthread.php?147537-Tutorial-How-to-run-ArmA3-server-on-a-dedicated-server

15) Then set your Steam account on the server to OFFLINE Mode and leave it offline unless you need to update the server

16) Start up your client steam version of A3, run in ONLINE mode and you should then be able to see and join your server and play on it

I would assume you can do the same thing with a HC.

Try it out and let us know.

Cheers

Kremator

Share this post


Link to post
Share on other sites

I voted this up.

While HC is useful because it allows offloading to another process (and by extension, other machines), I believe most users would be better served by multithreaded AI in the server binary. It would be nice to have both options.

I did read your presentation (nicely done BTW), including the comments about multithreading, but I don't see how this is difficult or impossible. They can already distribute AI across processes, so distributing across threads shouldn't be an issue.

A good implementation of this would be to provide an -aiThreads command line option, and have the server automatically load balance AI by group. (When an AI group is created, assign it to the thread with the least amount of units. All units in a group would be assigned to the same thread, which avoids any performance penalties or complications from cross-thread communication across that group.)

The advantages of this approach are:

  • Simpler setup - just a command line option
  • No mission changes necessary
  • No server slots used
  • No licensing issues
  • Hopefully Linux server compatibility, since it would be a server feature and not technically a client

It would effectively be the same as HC in that AI is assigned once to a specific thread, and only handled by that thread. I suspect your comments are based on the assumption of very granular multithreading (that is, the simulation process for one unit running in parallel on multiple threads), which would definitely be complex and likely not as effective.

Share this post


Link to post
Share on other sites

it's unfortunate that you completely ignored / misunderstood and skipped

my explanation of the technical difficulties related to security ...

for now and foreseeable future the dedicated client (in any mode) needs unique ownership

possible workaround:

e.g. dedicated Slave server in relation to Master dedicated server

is definitely one of things on my MP ideas list, but

there might be obstacles, e.g. how Master recognize the Slave portion as client

commandline

Arma3server.exe -slave -masterIP=<IPv4> -masterPort=<number>

---

You can use https://developer.valvesoftware.com/wiki/SteamCMD

+ arma 3 alpha appID

to run dedicated client in HC mode ... but you will need to use unique steam account with arma 3 alpha ownership

Edited by Dwarden

Share this post


Link to post
Share on other sites

I don't really care about the HC client to be honest, i also think that support this would place the real problem out of focus: we really need this stuff to be handled by a proper multi-thread in a single running server and not by this work-arounds... so i believe that HC should exists only in a mission where you need to handle thousands AI (1500+) and not "just" 200-300 .. these numbers should be easily handled by a SINGLE server.

Share this post


Link to post
Share on other sites
I don't really care about the HC client to be honest, i also think that support this would place the real problem out of focus: we really need this stuff to be handled by a proper multi-thread in a single running server and not by this work-arounds... so i believe that HC should exists only in a mission where you need to handle thousands AI (1500+) and not "just" 200-300 .. these numbers should be easily handled by a SINGLE server.

dedicated client (headless) in mode where it's used within superfast network has many advantages in way you can branch it to another physical machine or virtual etc.

e.g. multiple servers in same rack, different shard, different blade, another rack at same floor in datacenter etc.

tho I would still prefer ability to use dedicated server in SLAVE mode linked to MASTER server

(imagine if that's combined with chance to be able join to either of the servers IP, then it's ideal)

Share this post


Link to post
Share on other sites
According to Xeno, this doesn't work anymore.

My Arma 3 HC is working fine with Steam in Offline Mode. EDIT - Still in non-DEV thats why !

Voicing our concerns is the right thing to do on this subject, but we must also appreciate that security is a major factor for both BIS and through that the community as whole. The lack of security in game is currently my major concern, but that is very closely followed by HC. The benefits are to great to ignore and my community all rely on HC to enjoy COOP games as we have grown so much.

I personally feel we have always been able to run multiple dedicated servers without purchasing new copies of the game. If the game is out stripping the capability of a single server for the large scale games that people want to play and the technical solution is HC then I feel the same relationship should apply. As Arma 3 has sold its soul to steam, I am very much afraid that this decision may not fall in the players favour. BIS may not be the only deciding party in this.

If we get a dedicated server.exe maybe as suggested here, a dedicated client (HC).exe maybe the answer.

Question - If we had a dedicated client.exe that could only be hosted locally would that avoid the security issues ?

Edited by UGLY58

Share this post


Link to post
Share on other sites
dedicated client (headless) in mode where it's used within superfast network has many advantages in way you can branch it to another physical machine or virtual etc.

e.g. multiple servers in same rack, different shard, different blade, another rack at same floor in datacenter etc.

tho I would still prefer ability to use dedicated server in SLAVE mode linked to MASTER server

(imagine if that's combined with chance to be able join to either of the servers IP, then it's ideal)

David i'm not saying that it won't have its usage, and i know for what it could be used for (distributed computing basically...), but most admins are using HC right now to compensate the lack of the current engine to handle a fair number of AI, and we're not talking about thousand, but about hundreds (200+), so i'm asking to FIX the current issues making the server idenpendently capable of doing it so without using "salves", since (honestly) i don't think that you would have any excuse to justify the need of running HC servers to handle "only" 250 AI, if not a lack in programming of the current engine.

Share this post


Link to post
Share on other sites

Redacted by Zorrobyte

Edited by zorrobyte

Share this post


Link to post
Share on other sites

it's not screwed it's result of merge of multiple threads on same subject...

anyway using HC it still possible,

You just need new STEAM account which owns Arma 3 Alpha

next to one running Arma 3 dedicated server

and you can use STEAMcmd for that https://developer.valvesoftware.com/wiki/SteamCMD

Share this post


Link to post
Share on other sites
it's not screwed it's result of merge of multiple threads on same subject...

anyway using HC it still possible,

You just need new STEAM account which owns Arma 3 Alpha

next to one running Arma 3 dedicated server

and you can use STEAMcmd for that https://developer.valvesoftware.com/wiki/SteamCMD

Simple !

But - No clue how to do that, from what I am reading on that link steamCMD is just an updater ?

Sorry but why can`t I have at least a GUI from a company the size of steam - Cmd Prompt is so retro !

Share this post


Link to post
Share on other sites
dedicated client (headless) in mode where it's used within superfast network has many advantages in way you can branch it to another physical machine or virtual etc.

e.g. multiple servers in same rack, different shard, different blade, another rack at same floor in datacenter etc.

tho I would still prefer ability to use dedicated server in SLAVE mode linked to MASTER server

(imagine if that's combined with chance to be able join to either of the servers IP, then it's ideal)

"e.g. multiple servers in same rack, different shard, different blade, another rack at same floor in datacenter etc."

Would work great for VBS or people with racks of servers. I doubt the vast majority of customers have the need or resources for such a thing whom would be left out of Dedi Client went localhost. How many people here run so many servers they need to run HC on another machine? If Arma 3 codebase is for the nextgen version of VBS then so be it; it'd make much more sense then the statement of "98th percentile of server admins run the HC on the same machine as the server" being wrong as I don't have the data.

tho I would still prefer ability to use dedicated server in SLAVE mode linked to MASTER server

(imagine if that's combined with chance to be able join to either of the servers IP, then it's ideal)

Oh perfect, as each server runs a client worldspace and server, combining the two would accomplish not only Dedicated Client abilities but should load balance netcode. :yay: Although this is a complex solution and will take time and maybe run into blockers along the way. It isn't the simple and cost effective solution me and others have proposed (to hold us over until release) but it's something. Most interestingly, how you you plan to auth a server to a server? The slave server's client worldspace would operate the same as a HC and the issue still remains that dedi server even in master<-> slave has no key.

The example: Arma3server.exe -slave -masterIP=<IPv4> -masterPort=<number> looks an awful lot like my proposed solution..

1. Add a switch to the dedi server binary -client or create a new dedicated client that is cdkeyless or universal (as the dedi server operates in this fashion)

2. Only allow the HC/Dedicated client to connect to localhost (127.0.0.1) to nullify security issues.

Let's modify my solution a bit shall we?

1. Add a switch or few to the dedi server binary a3server.exe -client=IP -port=PORT -hcpass=PASSWORD

2. Put hcpass = PASSWORD in the server cfg, I set allowHC=2 (how many HC are allowed on server, 0 for none)

3. Server runs checks on all clients currently for cdkey. Let cdkeyless clients connect IF they provide hcpass and pass a HC test (http://pastebin.com/nKHxyLNr) or hasInterface, or simply generate a RSA public/private keypair authenticating the HC as genuine..

4. Server runs disablesimulation and disableinput on each of these HC connected clients (or via special NEW undocumented command)

5. If you want to be super anal you could do hcallowed=IPaddress and only HC from these IPs could connect including localhost (127.0.0.1)

6. Server spawns HC in as a bird. If the Arma 3 dev-stable birdflu crisis is remembered by anyone, it should be noted that it's impossible to change units after being a bird..

So, let's pretend I'm a hacker/pirate Arrrg!

1. I can't get my hc connected to a server, I don't know the password..

1a. I got the password but can't connect as only 1 HC is allowed on the server..

1b. I got my HC connected to the server by using social engineering to get the password from a server admin.. Their normal HC crashed and wasn't setup in firedaemon so the slot was open but I got kicked since I wasn't in the IP address whitelist.

1c. I got the password, the slot is open, I hacked into their serverhost and placed a proxy on their machine. I hack and hack but go to prison shortly afterwords. (IRL ban anyone?)

1d. I'm a server admin. I have complete control over what missions I run, what code in the missions I run and full admin powers. I could use the HC to hack on my own server but it's a complete waste of time. I'll go ahead and use proving grounds and only see the addaction if I'm logged in or by UID so my other admins don't know..

2. I pirated the game and I got the HC connected to the server.. I can't spawn a directx renderer with the a3server.exe so I can't play without buying.. I also can't use the hc to cheat because of 1a,b,c.

3. I pirated the game and somehow through an act of god got a directx renderer spawned. I'm going to join a server and cheat... I dont know the password and even if I do I fail the hc check and it kicks me. I hack the checks and I get in but my screen is black and my controls are locked.. I somehow bypass that and I'm a bird. (Impossible unless you reverse engineer the binary and write a whole renderer in machine code, much more effective to simply buy 100 copies of Arma and get them all banned after a moment of lulz)

I found Terox's suggestions around passwords for HC a great improvement. Such a HC that must me auth with a separate password to join the server addresses additional security concerns.

His note is here

As Xeno writes:

So how do people who make MP stuff test now ?

I personally use up to three clients (two normal clients plus HC) beside a dedicated server on my local machine to test MP stuff, but, as already written above, it's no longer possible.

The solution thus far:

it still possible,

You just need new STEAM account which owns Arma 3 Alpha

next to one running Arma 3 dedicated server

and you can use STEAMcmd for that https://developer.valvesoftware.com/wiki/SteamCMD

I simply cannot afford 3 copies of the game ($98.97) and if this releases in this manner I most certainly cannot afford 3 copies then ($197.94) if MSRP is double of Alpha. If I wanted to run a server with HC while maintaining my dev environment I would need an additional copy for each server I run.

On further note, I'm experimenting with SteamCMD and while it allows you to login as a specific user to download the game files, nowhere does it say how to launch the actual game with that account.

Instructions:

1. Start SteamCMD and set your app install directory.

2. Install or update the app.

3. Once finished, type quit to properly log off of the Steam servers.

The document then goes into how to automate updating of your installed server, nowhere does it instruct the user on how to launch the server tied to a specific game account.

Edited by zorrobyte

Share this post


Link to post
Share on other sites
Simple !

But - No clue how to do that, from what I am reading on that link steamCMD is just an updater ?

Sorry but why can`t I have at least a GUI from a company the size of steam - Cmd Prompt is so retro !

it's application for deployment on servers, hence it uses command prompt as it expects no graphics card on the server

Share this post


Link to post
Share on other sites

I have created a whitepaper of sorts that goes beyond the issues currently plaguing HC that could solve the issue of AI performance within the core game engine. It has fancy graphics and doesn't drone on and on. Most importantly it offers a solution that should be accepted by both parties as it resolves all concerns. Keep in mind, HC is a stop gap (or addition to) and the real solution is here.

My document can be viewed here

Edited by zorrobyte

Share this post


Link to post
Share on other sites

zorrobyte, thanks for your constructive proposal!

I hope that this info could be any help for you, and since this posting was addressed to ALL people who have to run A3 more than once (certainly for testing purposes, not for cheating ;)), here is my english translation:

One more hint for those, who wants to execute A3 more than one time, respectively let run simultaneously a dedicated server with (parameter) "-server" (Usually blocked by Steam...).

Simply create a file with the name: steam_appid.txt in the Steam-directory. The content have to be only: 107410

Share this post


Link to post
Share on other sites
zorrobyte, thanks for your constructive proposal!

I hope that this info could be any help for you, and since this posting was addressed to ALL people who have to run A3 more than once (certainly for testing purposes, not for cheating ;)), here is my english translation:

The appid trick works for launching multiple copies of the game and should still once changes are merged, the issue is that you can no longer connect more than one client (HC or regular) from the same account as one gets kicked in Dev which will soon make it into stable (as you need a unique CD key for each client connecting). Note that the server (dedi or arma3.exe -server) doesn't use a CD key and should still support more than one server per account.

Purchasing multiple copies simply for Headless Client is ludicrous in A3 as there is a way to include HC (even multiple HC) without having to buy yet another copy. Compounding the issue is that HC is required for any "normal" amount of AI as we would expect from any CooP mission in the A2 game engine as AI in A3 stand optimization. Also, SteamCMD is yet to be seen functioning even with multiple copies of the game for clients/HC as the documentation regards installing/updating but not launching with a specific steamID. Some who have tried so far have failed to get it working.

Furthermore, HC will forever remain a stop-gap (or addition to) to the core issue as Xeno said "The engine simulates itself to death, a rice bag falls 200 miles away and while the player will never see it or hear it, it is still simulated on all localities". Ideally, HC could be merged into the dedi server binary and with transparent AI handoff (enhanced setowner that keeps WP, scripts, FSM), it could greatly increase the abilities of the A3 engine; optimized or not.

I'd suggest looking at my document regarding the matter a few posts up (#15).

Edited by zorrobyte

Share this post


Link to post
Share on other sites
it's application for deployment on servers, hence it uses command prompt as it expects no graphics card on the server

Ah OK, understood.....but how do we use it to launch multiple steam accounts on a single dedicated server ?

I have a very successful Public Arma 3 server using Headless Client. It runs very well because of the HC and many of the players remark on how different it runs to other servers. If you push this dev version to the Alpha, I will no longer be able to support it.

My community is not willing to buy more versions of Alpha than the one we already have on this server. We only needed a single extra copy of Arma 2 to support HC previously.

Share this post


Link to post
Share on other sites

dedicated client simply needs ownership check, because it's no different to normal client except the rendering part, HC mod included ...

when the dedicated server binary is out then that will allow you save the STEAM account (you now use for server) for the HC ...

Share this post


Link to post
Share on other sites
dedicated client simply needs ownership check, because it's no different to normal client except the rendering part, HC mod included ...

when the dedicated server binary is out then that will allow you save the STEAM account (you now use for server) for the HC ...

Ah good news indeed !

Share this post


Link to post
Share on other sites

Okay after reading this I do have two questions. If we are running two or more individual servers will we have to have a steam account with an Arma 3 license on each one?

Also correct me if I'm wrong but from what was stated by dwarden a server with an Arma 3 license can run a Dedicated Client (aka Headless) without a second license needed correct?

Because if you have to own multiple licenses just to run a server with a Dedicated client then that will be extremely absurd and that's not even mentioning the cost for a multiple server setup. As stated earlier by someone else its hard enough to keep afloat a server without tacking on the cost of having to buy multiple licenses of the game. Also will the dedicated server binary be out with the next patch, because it will really blow if my clan cant play coop matches just because of "security issues" that may or may not exist especially if you went a different route instead of screwing most of the player base.

Just having a hard time following this.

Thanks for your time.

Share this post


Link to post
Share on other sites

no, what I said that dedicated server is expected to not need STEAM account with Arma 3 Ownership,

while dedicated client (HC) needs STEAM account with Arma 3 Ownership

dedicated server is not expected to be out this week or at max some limited testing group to rule out major issues

Share this post


Link to post
Share on other sites
Okay after reading this I do have two questions. If we are running two or more individual servers will we have to have a steam account with an Arma 3 license on each one?

Also correct me if I'm wrong but from what was stated by dwarden a server with an Arma 3 license can run a Dedicated Client (aka Headless) without a second license needed correct?

Because if you have to own multiple licenses just to run a server with a Dedicated client then that will be extremely absurd and that's not even mentioning the cost for a multiple server setup. As stated earlier by someone else its hard enough to keep afloat a server without tacking on the cost of having to buy multiple licenses of the game. Also will the dedicated server binary be out with the next patch, because it will really blow if my clan cant play coop matches just because of "security issues" that may or may not exist especially if you went a different route instead of screwing most of the player base.

Just having a hard time following this.

Thanks for your time.

As Dwarden stated you should be able to run as many Dedicated Servers as you wish even if you don't own arma. However, you will need a licence for every Dedicated Client you plan on using plus a licence you use to play on.

I'm busy at work removing the need for HC in DWS by using a modified fpsmanager.fsm (object hiding and enablesimulation), dynamically spawning units up maxAI limit/simulation FPS, spawning AI local to connected clients, and using unit respawn in efforts to workaround A3 performance issues. I released DWS under a creative commons licence so please feel free to duplicate my methods in your own missions after the next release.

Edited by zorrobyte

Share this post


Link to post
Share on other sites

Unfortunately I am quite at a loss when it comes to doing what you do as far as coding DWS. I have a very large appreciation for it though as my clan does enjoy playing it on a weekly basis. So I wont be able to modify anything currently, thus we'll just wait for a newer version, which is unfortunate but a necessary step we must take with everything going on.

Also as an update just appeared this morning, I would assume the changes talked about in this thread have been added and Dedicated Clients will not be able to be used now unless you have a steam account with an arma 3 license on it to run them. Then again this work around probably isn't a valid option either as from what dwarden has said I don't believe its been implemented yet. If that is the case then once again I would find it quite frustrating that BIS would in essence "close a door without opening a window" for people that do wish to use the DC even with multiple licenses.

My last question on this topic would have to be: Can you run a Dedicated Client and a Dedicated Server off the same "machine" as we were doing or will you now need two different servers - one for the AI and one for the map?

It seems like the more I delve into this topic the more frustrating it gets.

Anyway thanks Zorrobyte for all that you do man. And good luck on your future work toward continually improving DWS. Our clan is definitely looking forward to it.

Share this post


Link to post
Share on other sites

As of this morning the change didn't make it into stable as I connected 6 HC and 3 normal clients to a server locally just because I could. I have since yet tested since I've slept but it may still..

My last question on this topic would have to be: Can you run a Dedicated Client and a Dedicated Server off the same "machine" as we were doing or will you now need two different servers - one for the AI and one for the map?

You will be able to run as many servers as you wish with one headless client, without using steamCMD or any other trickery other than the steam appid txt file you are used to now. The only immediate change is that you can't play on the steam account thats being used as the HC at the same time, (possibly only on) the same server. It's yet to be seen if this whole issue revolves around (2) clients with the same cdkey being in (1) server OR since there is no battleye/VAC yet if you could connect (1) hc to each server and yet play on another..

So yes, simply put; you can run the HC on the machine the server is on, even when the cdkey checking makes it into stable. No issues there.

I'm certainly less heated over the debate now as I'm confident that BIS will work out a solution, just give it time.

As for my changes in DWS, I still wish to make it HC independent as I've always felt it adds a barrier to entry. I'm experimenting with spawning AI local to connected clients (players) in a FPS sensitive way. I'm a far ways off from having something worth releasing but initial testing looks promising. I greatly appreciate the feedback on DWS!

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  

×