Jump to content
Dwarden

Dedicated Client / Headless Client feedback (dev branch)

Recommended Posts

I understand the flow charts about the interpolation of Artificial Intelligent shown here:https://community.bistudio.com/wiki/Category:AI

Question:

When Ai is off loaded to spawn on a headless client, do the difficulty settings from the Main Mission setting and Server Profile section (Game Options/Difficulty - AI Level that exist on the Server machine) carry over to the Headless client machine?

or

Are the headless client settings used as set in the control configuration of that machine?

Edited by KadinX

Share this post


Link to post
Share on other sites

It should generate a profile for itself under profiles/users/xxx where you can set the difficulties etc.

This is based on the A2 implementation though, not sure if the A3 one handles it differently.

Share this post


Link to post
Share on other sites

Thanks Cyruz, so AI created on the headless client interpolate their level of intelligence through the headless client difficulty profile, then (headlessclient.Arma3Profile)

Share this post


Link to post
Share on other sites
So nobody else has noticed the AI do not hear shots fired when on headless ?

Same issue here, waiting for fix...

Share this post


Link to post
Share on other sites
Same issue here, waiting for fix...

Thanks Gienkov

I thought we where going crazy as the only ones who noticed this.

Share this post


Link to post
Share on other sites

Hi all

The headless client architecture could be a useful solution to JIP synchronisation, say in CTI type games or any game where there are a large number of entities and dynamic objects and impact on the terrain, the headless client keeps a copy of the servers game data. I mentioned this some years ago in ArmA 1/2 when running the CoC modification.

When a player JIPs in, the primary game server hands them off to the synchronisation client. This then acts as a sub server and serves them the data up until say x seconds of synchronisation, it then hands them back to the game server, which updates the last few seconds of game data.

I might give it a go ;)

Kind Regards walker

Share this post


Link to post
Share on other sites

+ scripting news/dedi<>HC related:

Major change on horizon for AI locality changes (in relation to HC transits)

from 1.40 onward the 'setOwner' cease work with AI entity (will work only with non-AI object)

new command 'setGroupOwner is added for AI groups

(syntax is same as setOwner just the param is group instead of object)

note: locality transfers only if leader isn't player

Share this post


Link to post
Share on other sites

I'm attempting to use setGroupOwner however I cannot find the clientID of the HC as running (owner *name of headless client game logic*) = 1 which is the server. (http://forums.bistudio.com/showthread.php?188679-Returning-clientID-of-Headless-Client&highlight=headless+client+clientid)

Is this just me or am I using owner incorrectly?

**SOLVED**

The HC gamelogic MUST be playable, DOH

Edited by zorrobyte

Share this post


Link to post
Share on other sites

Mons00n, thank you for your detailed guide. It has helped me put things together conceptually :)

I have a question:

You have mentioned that certain scripts that modify the AI basic (editor or main script) intelligence level should also be run on the server as well as the Headless client.

If I got this statement correctly then if the AI are spawn exclusively on HC, do I still need to run that script on the Dedicated server also?

Share this post


Link to post
Share on other sites

I have a problem with HC and DAC. Every 2nd time I play, the AI just stops moving 5-10 mins into the mission. It's like HC crashed but it doesn't. HC is running, no program crash, no errors in the HC-window. Where do reports for HC even end up?

I can then login as admin to server, restart the mission and usually I can play the mission to the end. IIRC, it's not always the first time I play that mission, can be 2nd run too. Server is running. Some of the friendly AI is spawned on the server and they keep moving. HC AI are not transferred to server when HC stops responding (or whatevers happening).

I think this started happening around the launch of 1.38 to stable. I can't be sure, memory fails me.

Share this post


Link to post
Share on other sites

If you don't have a "profile" running on the command line of the headlessclient executable then the rpt. report is by default in this folder :C:\Users\yourName\AppData\Local\Arma 3. Check to see if you can get any leads in there.

Share this post


Link to post
Share on other sites
Mons00n, thank you for your detailed guide. It has helped me put things together conceptually :)

I have a question:

You have mentioned that certain scripts that modify the AI basic (editor or main script) intelligence level should also be run on the server as well as the Headless client.

If I got this statement correctly then if the AI are spawn exclusively on HC, do I still need to run that script on the Dedicated server also?

If there are no AI on the server then I presume not. But I probably still would just in case the HC crashes and all of the AI gets transferred back to the server. Either way if there are no AI on the server then it shouldn't be wasting too much processing power.

Share this post


Link to post
Share on other sites

56c946d475.png

7017bd2ffc.png

665c2b454b.png

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

It's important to note that the AI still simulates as expected (as in they don't freeze for connected clients), as only the server stops simulation for AI in this test with enablesimulation false. This works in inverse as if you run AI only on server and enablesimulation false those on HC, FPS increases.

Edited by zorrobyte

Share this post


Link to post
Share on other sites
Quote Originally Posted by Cyruz View Post

You're both over thinking this, it shouldn't require any user input at all. It should be handled internally by the application that spawns it's own thread and moves the AI handling, HC was a crutch to fix something they couldn't do in A2, I still want to see this handled better in A3 without a band aid solution.

The fact that you either need to understand how to transfer units or spawn them directly on the HC isn't really acceptable as it alienates a huge amount of casual mission makers who aren't interested in have to script this kind of stuff. Not going to touch the fact that the documentation is still shit and linking to 3rd party guides for A2...

I absolutely agree, if we get a solution now, it should be a proper one, without the need to script for hours again for mission builders. If a virtual client unit is placed on the map, the game should automatically detect it and move the AI calculations over to its own thread.

+ 1000 Would be so good to see.

Share this post


Link to post
Share on other sites
http://puu.sh/fMTfj/56c946d475.png

http://puu.sh/fMSZl/7017bd2ffc.png

http://puu.sh/fMTjb/665c2b454b.png

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

It's important to note that the AI still simulates as expected (as in they don't freeze for connected clients), as only the server stops simulation for AI in this test with enablesimulation false. This works in inverse as if you run AI only on server and enablesimulation false those on HC, FPS increases.

Dwarden, is this going to be fixed? It does make using a HC pretty useless, as thats the main purpose of an hc, better performance.

Share this post


Link to post
Share on other sites

Not only do they not seem to hear shots, if you have a trigger based on "alive unit", the trigger does not appear to activate.

Share this post


Link to post
Share on other sites

So with the 1.40 update BI introduced the "setGroupOwner" command I then wanted to try play around with it by creating a AI distribution script, so far so good, it works great when placing units in zeus/editor or MCC it moves the AI processing over to the HC, and I can interact with the units just fine, however when I force DC the HC and let the HC join the game again the script (basically the setGroupOwner command in a while loop executed on server) doesn't seem to allocate the unit back to the HC :S is it possible to use "setGroupOwner" to a HC after it disconnect?

Share this post


Link to post
Share on other sites
+ 1000 Would be so good to see.

Why even have the end user or mission maker have to do anything at all? Why doesn't the client and/or dedicated server automatically branch the AI onto a different thread? Don't applications like Google Chrome do this kind of thing already? Would latency between threads be a huge issue? Even if so would the global performance increases make up for this factor? Judging by the fact that running a dedicated server and a client on the same box you get massive FPS improvements on missions I can only assume splitting the workload in this way would only be beneficial.

You could always make it a menu setting if there are downsides to this or problems on certain hardware.

Even splitting the AI onto a different thread in singleplayer would likely increase performance dramatically.

Edited by plsgo

Share this post


Link to post
Share on other sites
Snip

Yeah, even for local missions having the AI jump in to it's own thread would be beneficial. I'm still not really happy with the current implementation of HC, it's still script based, it's still not automated and it still has weird bugs. I'm grateful for the work thats been done and it's already shaping up to be better than the A2 implementation.

I like the idea of using setGroupOwner to do cool things (at least in theory, like load balancing multiple HCs) but why not have the engine decide all this stuff, spawn x threads and let it hop the AI between them all as it sees fit. It's easy to sit here and arm chair code huge engine features so please don't think I don't understand the scope of what I'm asking.

Edited by Cyruz

Share this post


Link to post
Share on other sites
snip

I think a great start would be automating and simplifying the current HC so your average user could benefit from it. I don't expect them to perfect the way the engine handles threads because threading an application this complicated is probably a nightmare. But I don't think the current implementation is really useful for 90% of the player base and that seems like a waste to me. I also don't think that automating this process would be particularly difficult because the systems already exist and scripts could control the launching and connecting of additional clients.

I'm not really an experienced coder so I'm talking out of my ass here though!

Share this post


Link to post
Share on other sites

Feature request, not strictly dev branch, but this might be the best place to ask....

The rpt that the HC creates, it's called arma3server_<timestamp>.rpt. But this filename is the same, timestamp aside, as the rpt created by the dedi server.

rpt created by the client is just arma3_<timestamp).rpt

So, what I'm asking, is could the rpt created by the HC be called Arma3HC_<timestamp>.rpt to avoid confusion?

Share this post


Link to post
Share on other sites
Has anyone else Noticed that when AI are on the Headless and you shoot next to them but don't hit them, they do not react to the shot/impact.

Once you put the same AI on the server they will react to the shot/impact.

It seems to us that the reaction parameters of impacts or sounds are not working on the headless.

Maybe some type of locality thing ?

Can anyone confirm this ?

Definitely confirm this.

With server + HC, the AI ignore rounds landing close to them. With a standard server client, the AI goes active when round land nearby.

Share this post


Link to post
Share on other sites

Yer this has been ignored so we just stopped using HC as it doesn't work.

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

×