Jump to content
mons00n

Arma3 Headless Client Guide

Recommended Posts



Arma3 Headless Client Guide

for mission makers & server admins

by: Monsoon

c25t785.jpg?1

Today I'd like to share with everyone my Arma3 headless client guide. My Arma2 HC guide is nearly 2 years old and needed a bit of a makeover. I cover a large range of topics including:

  • What is a headless client?
  • When should you use a headless client?
  • How to add a headless client entity to your mission
  • Contextually spawning units on either the server or the headless client
    • spawn units via script
    • spawn units via DAC
    • spawn editor-placed units

    [*] How to transfer units from the server-->HC

    [*] Allowing headless clients to connect to your server

    [*] Starting the headless client on both Windows & Linux

I hope that this guide proves useful to both veteran and new mission creators alike. I will do my best to keep it updated as things change throughout the years. If you have any feedback or comments I'd love to hear from you, thanks!

Download

Arma3 Headless Client Guide

A3 HC Example Mission

  • Like 2

Share this post


Link to post
Share on other sites
Guest

Release frontpaged on the Armaholic homepage.

================================================

We have also "connected" these pages to your account on Armaholic.

This means soon you will be able to maintain these pages yourself if you wish to do so. Once this new feature is ready we will contact you about it and explain how things work and what options you have.

When you have any questions already feel free to PM or email me!

Share this post


Link to post
Share on other sites

Important note about owner and setGroupOwner on latest dev: owner is broken as is returning non-whole numbers leading to setGroupOwner not working and rejoined HC has incorrect clientID.

BIS is aware and engaged:

http://feedback.arma3.com/view.php?id=22649

http://feedback.arma3.com/view.php?id=22653

Excellent guide by the way!

Share this post


Link to post
Share on other sites

HC basically adds more performance to the server if issued properly?

Are there any numbers as how many HCs you'd need for a certain number of AI? (I'm guessing at 80-100 AI units per HC would be appropriate?)

It'd be nice to know what kind of numbers of AI units could theoretically be reached assuming there are low ping-high performing HCs used in a mission.

Other then that, excellent guide, might wanna improve my MP scripting a bit just for what it is!

Cheers

Share this post


Link to post
Share on other sites
Important note about owner and setGroupOwner on latest dev: owner is broken as is returning non-whole numbers leading to setGroupOwner not working and rejoined HC has incorrect clientID.

BIS is aware and engaged:

http://feedback.arma3.com/view.php?id=22649

http://feedback.arma3.com/view.php?id=22653

Excellent guide by the way!

I haven't personally done much testing with disconnecting/reconnecting headless client's so I didn't have much to say on that subject =) But glad to hear they are working on it!

HC basically adds more performance to the server if issued properly?

Are there any numbers as how many HCs you'd need for a certain number of AI? (I'm guessing at 80-100 AI units per HC would be appropriate?)

It'd be nice to know what kind of numbers of AI units could theoretically be reached assuming there are low ping-high performing HCs used in a mission.

It doesn't add performance to the server, but alleviates strain on the server by reducing the number of things it has to do. In regards to HC performance it's really all a matter of trial and error. Just give it a go and see how strained your HC processor becomes. Obviously the more processing power the better.

Share this post


Link to post
Share on other sites

Guide & Mission Updated:

  • bug fixes regarding errors with moveToHC.sqf
    • added waitUntil{time > 2}; to make sure the HC has properly loaded the mission
    • no longer gives errors when HC is not present, we now use isNull rather than isNil

    [*] doc update: array returned by playableUnits does not return the headless client

Share this post


Link to post
Share on other sites

Regarding the HC, I always wondered one thing. Given the AI HC is good but the HC is not immune to a disconnection or crash.

This happens if the AI is managed by a HC and it disconnects?

The AI does not work? There is an automatic transfer to the server?

If you have an answer, I'm interested.

Share this post


Link to post
Share on other sites
Regarding the HC, I always wondered one thing. Given the AI HC is good but the HC is not immune to a disconnection or crash.

This happens if the AI is managed by a HC and it disconnects?

The AI does not work? There is an automatic transfer to the server?

If you have an answer, I'm interested.

The AI should be transferred back to the server as I mention in the guide when discussing ownership. Less chance of disconnect is another reason why having the HC on the same network or in the same datacenter is ideal.

Share this post


Link to post
Share on other sites

EDIT: Oh well, posted in the wrong place.

Edited by mamasan8

Share this post


Link to post
Share on other sites
Guest

New version frontpaged on the Armaholic homepage.

================================================

We have also "connected" these pages to your account on Armaholic.

This means soon you will be able to maintain these pages yourself if you wish to do so. Once this new feature is ready we will contact you about it and explain how things work and what options you have.

When you have any questions already feel free to PM or email me!

Share this post


Link to post
Share on other sites

Headless clieent just keeps getting kicked from the game.

Ingame it says "Player headlessclient kicked off, Steam ticket check failed: (null)

Share this post


Link to post
Share on other sites
Headless clieent just keeps getting kicked from the game.

Ingame it says "Player headlessclient kicked off, Steam ticket check failed: (null)

That is due to using TADST or having an invalid server.cfg. Read the BIKI: https://community.bistudio.com/wiki/Arma_3_Headless_Client

This needs to be in your server.cfg:

headlessClients[]  = {"127.0.0.1", "192.168.1.100"};    // list of IP addresses allowed to connect using headless clients; example: {"127.0.0.1", "192.168.1.100"};
localClient[]      = {"127.0.0.1", "192.168.1.100"};    // list of IP addresses to which are granted unlimited bandwidth; example: {"127.0.0.1", "192.168.1.100"};

Correction to the guide:

Transferring units to the headless client after mission start means that you can leave them

in the editor. This is not the preferred way of doing things, mainly because these units will

lose any waypoints, behaviors, or objects synchronized to them in the transfer.

With new setGroupOwner, all appear to be transferred other than eventHandlers in latest dev branch. More testing is needed but I have verified for myself that: waypoints and synchronized objects are maintained. The pitfall is that the FSM state is not transferred meaning that the AI will "reset" behavior. An example of FSM reset is imagine a enemy AI group engaged with a "danger" variable of 2. Upon transfer, the AI will start from the beginning of the FSM with a danger value of 0 (I have no idea what the actual danger variables are but whatever). A workaround would be to only setGroupOwner for AI away from player, feel free to borrow code from ZBE_Cache as it is under CC-BY-SA as I do this to determine when to cache AI.

Edited by zorrobyte

Share this post


Link to post
Share on other sites

SO! the ai must spawn from server which is already placed and scripted in editor

NOT by Zeus which is client spawn it

Share this post


Link to post
Share on other sites

Question about this...

In the tutorial monsoon tells us how to integrate it with DAC.

I'm using the ALiVE mod for my mission, which has the feature of off-loading the CloseQuartersBattle unit's AI onto the Headless Client. So I'm just trying to get the Headless Client configured without worrying about its affect on all the AI (I think the CQB off-load will help performance enough).

Also, the code in the PDF really doesn't work well with copy-paste. Here it is after I typed it out (which isnt the best either but hey im new to this).

//define function to spawn units
_spawnUnits = {

//regular spawn method
[] execVM "spawn_viaScript.sqf";
[] execVM "spawn_EditorPlaced.sqf";
//DAC spawning
[] execVM "DAC\DAC_Config_Creator.sqf";
[] execVM "spawn_viaDAC.sqf";
True
};

//check if HC1 is present
HC1Present = if(isNil "HC1") then{False} else{True};

//spawn units on HC1 if present
if(HC1Present && isMultiplayer) then{
if(!isServer && !hasInterface) then{
	[] call _spawnUnits;
};
}

//otherwise spawn units on the server

else{
if(isServer) then{
	[] call _spawnUnits;
};
};

Edited by zyg0tic

Share this post


Link to post
Share on other sites

would really like some advice on this subject and how to set it up to suit our clan.

we are an Australian based group with 20 - 30 players and we rent a server from Las Vegas. We rent from US for better $ value, cept we get 150 - 200ms ping.

so, if we were to setup the headlesss client on our missions, are we able to use the dedicated server as the headless client or does that defeat the purpose?

i asked the same question to someone in our group and they said that it would still be worth it as the AI would use different cores which would result in better performance.

the other options as i understand it is to either have

a) another server box which is the HC or

b) have all clients run their game as a HC

any help on this would be greatly appreciated.

Share this post


Link to post
Share on other sites

My headless client is getting kicked

EDIT: Ok i added my ip (192.168.1.24 in addition of the 127.0.0.1 and now it is working)

Edited by Manzarek

Share this post


Link to post
Share on other sites
Oh mons00n, I don't know if it's any use to your guide, but I recently finished up writing an SQM to SQF converter specifically for use with a HC. Works with arma 2 & arma 3.

Between this and OP HC should be easier for those who need it. I haven't needed to use HC yet, I have yet to press my DS to the point of needing HC. BUT I certainly like this idea and will continue to follow this thread for more information. Thanks guys!

Share this post


Link to post
Share on other sites

I create the bikey and biprivatekey. I signed my pbo with the private key.

I put the bikey in the Keys folder and the bisign in the @hc/addons folder next to the pbo but i still get wrong signature for file @hc\addons\addon.pbo when the HC connect to the server

I dont understand?

EDIT: It worked when signing whith binpbo but not when signing a pbo packed with pbo manager

Edited by Manzarek

Share this post


Link to post
Share on other sites

Does the HC have to be another machine or can it be the host machine and still alleviate the server calculations?

What, if any, benefit would there be to using multiple HCs on the same machine?

Edited by TheCoolSideofthePillow

Share this post


Link to post
Share on other sites

Simply: More CPU usage and Ressource management. No AI on dedi : all the power for the player connection. Every HC can support an individual amount of ai till it breaks depending on Mods and scripts. Beware of the cps and fps. Shouldn't lower then 20. Every additional HC can support scripts and ai,too. Of course you need to set the CPU affinity per server and client manually otherwise everything is running on CPU 0+1 :-[

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

×