# [WIP] Epoch Headless Client EHC v1.1 RC

## Recommended Posts

Description

The purpose of EHC is to offload the servers management of zombies and building loot spawn to a headless client.

This should enable the server to focus on server stuff, and the HC will take care of the zombie management.

In theory, this could increase server performance while allowing more zombies to be spawned.

This mod is not extensively tested - anyone who helps out testing and commenting feedback automatically qualifies for bro status. :)

Installation instructions

Warning!

This is still a work in progress and has yet to mature into a stable release.

Any testing and feedback is greatly appreciated, but be mindful of the nature of this if you choose to install this mod.

Credits

Goober - Original source

David - Active developer

TayTayTheKiller - Collaborator

https://github.com/DavidFrendin/epoch-hc/archive/master.zip

Github repository: https://github.com/DavidFrendin/epoch-hc

##### Share on other sites

*reserved for future use*

##### Share on other sites

very interested to see how this goes.  I'd just like to note, that for many of us battleye is essential so if you can get that working, that would be tits!

I did have an idea for this.  You should be able to pull the latest BE dll's right from BE's website if you get that far.  I got HC's working before but they had to be manually updated.  A batch script that pulls it right before the HC starts may be the key.

##### Share on other sites

I actually have the EHC running on my server along with BE. I'll update the install guide section shortly, though the installation and server configuration at times seems to be overlapping..

I was thinking of making a youtube video describing step by step how to install it, just have to get into the mood first :)

##### Share on other sites

very interested to see how this goes.  I'd just like to note, that for many of us battleye is essential so if you can get that working, that would be tits!

I did have an idea for this.  You should be able to pull the latest BE dll's right from BE's website if you get that far.  I got HC's working before but they had to be manually updated.  A batch script that pulls it right before the HC starts may be the key.

I actually have the EHC running on my server along with BE. I'll update the install guide section shortly, though the installation and server configuration at times seems to be overlapping..

I was thinking of making a youtube video describing step by step how to install it, just have to get into the mood first :)

Yep this even uses a battleye kick for the HC to make sure it goes into the correct slot at server startup if no one joins before it.

Credits go to Goober for that one also :)

##### Share on other sites

I actually have the EHC running on my server along with BE. I'll update the install guide section shortly, though the installation and server configuration at times seems to be overlapping..

I was thinking of making a youtube video describing step by step how to install it, just have to get into the mood first :)

for me and a lot of the guys, a video is great but text is king.  It is much easier to copy/paste and follow along with a text instruction than a video.  But videos are always nice.

Love to help test this out maybe sometime this weekend if I get time.  Kind of stretched as it is but good work none the less.

##### Share on other sites

for me and a lot of the guys, a video is great but text is king.  It is much easier to copy/paste and follow along with a text instruction than a video.  But videos are always nice.

Of course the text description has priority; some people have a hard time following written instructions though but I was mostly thinking of the commentary monologue of the do's, don'ts and to better visualize what stuff should look like when you are tinkering with it :)

Love to help test this out maybe sometime this weekend if I get time.  Kind of stretched as it is but good work none the less.

Looking forward to the input, and thanks.

##### Share on other sites

Looking forward to the input, and thanks.

oh god, what have I done!  lol jk I'm pretty eager to test this out and see how it works.  Running two overpoch servers so I'll provide you with some decent performance reports.

##### Share on other sites

oh god, what have I done!  lol jk I'm pretty eager to test this out and see how it works.  Running two overpoch servers so I'll provide you with some decent performance reports.

I hope for a smooth sailing, but if you miss anything out of the installation description please let me know.

##### Share on other sites

+1 vote for written tutorial. Videos are meh.

##### Share on other sites

Glad you guys are having fun.  Couple of points:

1)  I don't think I am the one who did the BattleEye kick thingy.

2)  zombie_agent.fsm (a finite state machine) has internal script references to player position.  This FSM file is part of what makes a zombie do stuff (see the execVM of the fsm in zombie_generateHC.sqf ).  When in loitering behaviour, the fsm wants to make the zombie shuffle in the general direction of the player that spawned it.  SO, that means all your loitering zombies will be basically heading toward wherever you put the HC in the mission.sqm file.  This may be unintentionally hilarious, especially if you have put your HC in an odd place on the map (you typically want to put it smack in the middle of the map).

I used plain oid FSMEditor to change it. https://community.bistudio.com/wiki/FSM_Editor

Goober

##### Share on other sites
Nice to see how this project goes up!
And Thank you for your great work are you doing, that needs to be said
:P
I'm going to try the HC this next days again.

Ace

##### Share on other sites

The startup parameter, do I just add -profiles=HeadlessClient or does it require a new .bat?
And, I see you use the arma2oa_be.exe, not the server?

##### Share on other sites

Glad you guys are having fun.  Couple of points:

1)  I don't think I am the one who did the BattleEye kick thingy.

2)  zombie_agent.fsm (a finite state machine) has internal script references to player position.  This FSM file is part of what makes a zombie do stuff (see the execVM of the fsm in zombie_generateHC.sqf ).  When in loitering behaviour, the fsm wants to make the zombie shuffle in the general direction of the player that spawned it.  SO, that means all your loitering zombies will be basically heading toward wherever you put the HC in the mission.sqm file.  This may be unintentionally hilarious, especially if you have put your HC in an odd place on the map (you typically want to put it smack in the middle of the map).

I used plain oid FSMEditor to change it. https://community.bistudio.com/wiki/FSM_Editor

Goober

Glad you guys are having fun.  Couple of points:

1)  I don't think I am the one who did the BattleEye kick thingy.

2)  zombie_agent.fsm (a finite state machine) has internal script references to player position.  This FSM file is part of what makes a zombie do stuff (see the execVM of the fsm in zombie_generateHC.sqf ).  When in loitering behaviour, the fsm wants to make the zombie shuffle in the general direction of the player that spawned it.  SO, that means all your loitering zombies will be basically heading toward wherever you put the HC in the mission.sqm file.  This may be unintentionally hilarious, especially if you have put your HC in an odd place on the map (you typically want to put it smack in the middle of the map).

I used plain oid FSMEditor to change it. https://community.bistudio.com/wiki/FSM_Editor

Goober

I was reading up about the port of dzai on opendayz and I assumed it was you same avatar etc jwo7777777 linked to the battleye kick and it was posted by jwo7777777 :)

##### Share on other sites

The startup parameter, do I just add -profiles=HeadlessClient or does it require a new .bat?

And, I see you use the arma2oa_be.exe, not the server?

Headless client is not a parameter for the server, it's an actual client you start and connect to the server (hence arma2oa_be.exe, not the server).

##### Share on other sites

Here is the start up bat i use on my test server.

@echo off
::Set Server Settings Start

::BEC Settings
::set BECpath="C:\- Dayz-Servers\OverPoch\bec"
::set BecExeName=BEC_OverPoch.exe
::set BecConfigFile=OverPoch.cfg

::Server Settings
set ARMApath="C:\- Dayz-Servers\TestServer"
set ServerExeName=test.exe
set mod=Expansion\beta;@DayzOverwatch;@DayZ_Epoch;@hive
set config=instance_666_overpoch\instance_666_overpoch.cfg
set cfg=instance_666_overpoch\basic.cfg
set profiles=instance_666_overpoch
set port=2367
set cpuCound=2
set ServerPriority=high

:: Note Server Mod Settings Also Used For HeadlessClient
set HCPath="C:\Program Files (x86)\Steam\SteamApps\common\Arma 2 Operation Arrowhead"

::Needed For New Steam Beta To launch ArmA2OA.exe
set HCExeName=ArmA2OA_BE.exe
set HCExeNameKill=ArmA2OA.exe
set HCpriority=low

::Set Server Settings End

timeout 6

goto Initialize

:Initialize
cls
echo Killing Current Running Server ...
echo.
goto Start

:Start
echo STARTING SERVER UP..
timeout 5
cd %ARMApath%
@start /%ServerPriority% %ServerExeName% -mod=%mod% -name=%name% -config=%config% -cfg=%cfg% -profiles=%profiles% -port=%port% -cpuCount=%cpucount% -exThreads=%exThreads% -beta=Expansion\beta;Expansion\beta\Expansion -noPause -noSound -maxMem=2048
echo.
goto Start_Bec

:Start_Bec
::echo Starting BEC Again In...
timeout 5
::echo.
::cd %BECpath%
::@start %becExeName% -f %BecConfigFile%

echo.
echo Starting Up Headless Client In..
timeout 20
echo.

cd %HCPath%
@start /%HCpriority% %HCExeName% 0 0 -skipIntro -nosplash -showScriptErrors -noPause -client -connect=127.0.0.1 -port=%port% -nosound "-mod=Expansion\beta;Expansion\beta\Expansion" -mod=%mod% -cpuCount=2 -name=HeadlessClient -profiles=HeadlessClient
echo.

echo StartUp Complete
timeout 10
exit



(Everything BEC related has been commented out as I'm not using it on my test server)

##### Share on other sites

OK time for me to chime in....

I have this installed, the HC connects and no longer gets kicked by BE for being idle. However.......

The HC is not invisible or totally indestructible, put enough round in him and he dies.

Also there doesn't seem to a drastic change in the number of zombies if at all.

I would really appreciate some input on this from some more capable coders, what would be the best way to test whether it's the HC or clients that are spawning the zeds?

BTW David

Edit the mission.sqf file, in the Groups class, change items to items=3.

needs changing to

Edit the mission.SQM file, in the Groups class, change items to items=3.

and

arma2oa_be.exe 0 0 -skipintro -nosplash -noPause -client -connect 127.0.0.1 -port:2302 -nosound "[email protected]_epoch" -cpuCount=2 -name=Server -profiles=HeadlessClient

needs changing to

arma2oa_be.exe 0 0 -skipintro -nosplash -noPause -client -connect 127.0.0.1 -port:2302 -nosound "[email protected]_epoch" -cpuCount=2 -name=Server -profile=HeadlessClient

the extra S will cause failures to start and BE kicks.

##### Share on other sites

OK time for me to chime in....

I have this installed, the HC connects and no longer gets kicked by BE for being idle. However.......

The HC is not invisible or totally indestructible, put enough round in him and he dies.

Also there doesn't seem to a drastic change in the number of zombies if at all.

I would really appreciate some input on this from some more capable coders, what would be the best way to test whether it's the HC or clients that are spawning the zeds?

BTW David

Edit the mission.sqf file, in the Groups class, change items to items=3.

needs changing to

Edit the mission.SQM file, in the Groups class, change items to items=3.

and

arma2oa_be.exe 0 0 -skipintro -nosplash -noPause -client -connect 127.0.0.1 -port:2302 -nosound "[email protected]_epoch" -cpuCount=2 -name=Server -profiles=HeadlessClient

needs changing to

arma2oa_be.exe 0 0 -skipintro -nosplash -noPause -client -connect 127.0.0.1 -port:2302 -nosound "[email protected]_epoch" -cpuCount=2 -name=Server -profile=HeadlessClient

the extra S will cause failures to start and BE kicks.

I have a fix in place for the headless client taking damage, spawning on the shore and not being invisible   Just working on it now.

Also to increase zombie numbers you need to edit the loot tables :)

Edit >>

Also editing the players max Zombies is still needed. And about telling if the HC is controlling the zombies? I would like to know this also as I cant figure out a way of telling lol.

I mainly been using this for spawning ai personally.

##### Share on other sites

Ok current posted version doesn't work!

I managed to get it working and zombies are 100% spawning off the HC, I test this by kicking the HC  and the zombies disappear.

Just testing this some more until I push an updated version.

##### Share on other sites

You guys are awesome. Keep it up!

AI/Zombies/Loot controlled by HC is the goal!

##### Share on other sites

At First you seem them... And then you don't :D

Good progress porting it to 1.0.5.1 so far.

The Fix for the HC taking damage and moving him to center of the map seems to be working fine also.

For the lol's

##### Share on other sites

any chance i can get it from you... like yesterday :P

##### Share on other sites

any chance i can get it from you... like yesterday :P

Everything is a mess right now file wise lol but its getting there...

##### Share on other sites

I was reading up about the port of dzai on opendayz and I assumed it was you same avatar etc jwo7777777 linked to the battleye kick and it was posted by jwo7777777 :)

Sorry.  Yes, I am jwo7777777.  I suppose I simply didn't remember doing anything like that.

Oh, well.  I am getting old ...

Goober

##### Share on other sites

I have a fix in place for the headless client taking damage, spawning on the shore and not being invisible   Just working on it now.

class Item2
{
side="CIV";
class Vehicles
{
items=1;
class Item0
{
position[]={4078.8516,30.836605,4757.7241};
id=0;
side="CIV";
vehicle="Survivor1_DZ";
player="PLAYER COMMANDER";
skill=0.60000002;
init="this enableSimulation false; this allowDamage false";
};
};
};


From mission.sqm for epoch zombie HC code.   The position[] is the middle of the map (this position happens to be Lingor 1.5 center).

init="this enableSimulation false; this allowDamage false";  <-- tells every machine that processes it (server, HC, and player clients) that they cannot hurt it AND it will be frozen (unmoving).

Don't remember the really neat way to make it invisible ... but I kinda like to see an indestructible civilian statue in full color in the middle of my islands.  Weirdly, only sun and moon light sources will interact with it (a side effect of "enableSImulation false").  So don't stick your HCs in the middle of roads unless you like random vehicle destruction on dark nights.

Goober

## Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

×   Pasted as rich text.   Paste as plain text instead

Only 75 emoji are allowed.