Jump to content

[WIP] Epoch Headless Client EHC v1.1 RC


david

Recommended Posts

ehc.jpg

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

See github readme for details: https://github.com/DavidFrendin/epoch-hc/blob/master/readme.md

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

Download

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

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

Link to comment
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.

Link to comment
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 :)

Link to comment
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 :)

Link to comment
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.

Link to comment
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.

Link to comment
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.

Link to comment
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).

 

Check my original HC.zip for a modified fsm:  http://www.mediafire.com/download/zyrzrs05x1um0mn/HC.zip

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

 

Goober

Link to comment
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).

 

Check my original HC.zip for a modified fsm:  http://www.mediafire.com/download/zyrzrs05x1um0mn/HC.zip

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).

 

Check my original HC.zip for a modified fsm:  http://www.mediafire.com/download/zyrzrs05x1um0mn/HC.zip

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

 

Goober

So your not jwo7777777?

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 :)

Link to comment
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).

Link to comment
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 exThreads=1
set ServerPriority=high

:: Headless Client Settings
:: 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 ...
taskkill /IM %ServerExeName% /F
taskkill /IM %HCExeNameKill% /F
::taskkill /IM %BecExeName% /F
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%
goto HCLoad

:HCLoad
echo.
echo Starting Up Headless Client In..
timeout 20
echo.
goto HCLoad

:HCLoad
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 Loading 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)

Link to comment
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 "-mod=@dayz_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 "-mod=@dayz_epoch" -cpuCount=2 -name=Server -profile=HeadlessClient

 

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

Link to comment
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 "-mod=@dayz_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 "-mod=@dayz_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.

Link to comment
Share on other sites

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

 

https://www.youtube.com/watch?v=2lT9v43ure4&feature=youtu.be

 

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

 

 
Link to comment
Share on other sites

So your not jwo7777777?

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

Link to comment
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;
					text="HeadlessClient";
					init="this enableSimulation false; this allowDamage false";
					description="HeadlessClient";
					name="HeadlessClient";
					forceHeadlessClient=1;
				};
			};
		};

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

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement
×
×
  • Create New...