Jump to content
Sign in to follow this  
Spinor

CoC Command Engine X

Recommended Posts

Quote[/b] ]Is it possible now or in the future to have an General AI controll the system in some capacity.

Yes, this is already in development and should be implemented in 0.88 or so smile_o.gif. In the beginning it will just be a replacement for using Guard waypoints to control opposing forces. The mission editor will be able to assign important locations to a CEX unit (i.e. a platoon, a company, etc.) and if that unit is not controlled by a human, the AI will kick in and try to hold these locations. The AI will produce normal orders to subordinates so if you are playing at a lower level, you are still fully immersed in the CEX chain of command.

Quote[/b] ]Don't you get any fatal JIP errors every now and then with CoC_NS ?

Yes, this is a known NS bug.

Quote[/b] ]I don't even know where I can send my bugs.

Please post CEX bugs in this thread and NS bugs in the analogous thread here in the Addons & Mods section. These threads provide the greatest visibility to other users.

Share this post


Link to post
Share on other sites
Yes, this is already in development and should be implemented in 0.88 or so smile_o.gif. In the beginning it will just be a replacement for using Guard waypoints to control opposing forces. The mission editor will be able to assign important locations to a CEX unit (i.e. a platoon, a company, etc.) and if that unit is not controlled by a human, the AI will kick in and try to hold these locations. The AI will produce normal orders to subordinates so if you are playing at a lower level, you are still fully immersed in the CEX chain of command.

Sounds great!

Scripted missions with a thick plot are nice for once or a couple times thru but give me an AI General to dynamicially play against and I'm sold!

Share this post


Link to post
Share on other sites
In this case, can you explain how I can increse the timeout parameter for the NSA to allow us to have multiplayer capabilities with it on a remote dedicated server.

Thanks

The parameter is called CoC_ConnectTimeout and you can set that in the init.sqs or init.sqf of a mission using CEX. Here's a code snippet with a timeout value of 40 seconds that's been used in several CEX MP missions running on a dedicated server with good results:

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">CoC_ConnectTimeout=40;

Just wanted to say thanks this did indeed allow us to test the Cex_Test mission in multiplayer on the server!

Share this post


Link to post
Share on other sites

things id like:

ai leaders issuing more detailed commands (like the tactical moves). i want to just say attack the city to a platoon and id like to see them search it, room by room.

ai commanders ^^

Share this post


Link to post
Share on other sites

How do reporting between CEX-groups work? I have noticed that they report (say out loud) targets that has been spotted by other groups, but I'm just curious on how this actually work - do they report targets only within a platoon/company and do they share information on targets with groups far away?

Share this post


Link to post
Share on other sites

It works from bottom to top:

1) Information is gathered at the group (squad or fireteam) level, and new contacts are reported to the next level (usually platoon).

2) Then it just goes step by step up the ladder: Platoon leaders report to Company leader, Company leaders to Battalion leader, etc.

As of now, there is no 'reporting' from top to bottom. A unit is thus only ever aware of enemies detected by its subordinates. Usually this means they do not share information with groups far away unless a platoon is far spread out.

Share this post


Link to post
Share on other sites

I have just discovered something strange in that the coc_cex pbo seems to somehow clash with the sight adjustment addon. I definitely can't figure out why. Can anyone replicate this? I get a "sound gmj_sightadjustmentclick not found" error if the coc_cex pbo is installed when I run the sightadjustment mod. I have tried removing various addons, and this seems to be the culprit.

As for the command engine itself, I am greatly looking forward to further developments regarding the commanding AI. WIll be interesting to see what can be cooked up between this and the impending DAC. thumbs-up.gif

Cheers for your hard work!

Share this post


Link to post
Share on other sites
I have just discovered something strange in that the coc_cex pbo seems to somehow clash with the sight adjustment addon. I definitely can't figure out why. Can anyone replicate this? I get a "sound gmj_sightadjustmentclick not found" error if the coc_cex pbo is installed when I run the sightadjustment mod. I have tried removing various addons, and this seems to be the culprit.

Yep, I can replicate that issue. It seems to be related to the CfgSounds>>sounds array, which both addons have in their respective CfgSounds sections. Removing sounds[] = ... from both addons makes the problem go away.

In OFP, one was supposed to list all one's sounds in that array(*) though so perhaps things have changed in ArmA?

(*) In OFP and CoC UA, the "CoC_ObHum" sound problem was fixed by adding a sounds[] array to UA:s CfgSounds, IIRC.

Share this post


Link to post
Share on other sites

may i request one thing?

i like squads in your command wont send out his troop to engage the enemy (the 2, engage that somthing thingy). but right now, squads will engage the enemy and dispersing your forces considerably, plus not good for defensive mission.

so lets make a squad property so that it will open fire on the enemy, but not engage them. maybe you can use <group enableAttack false> command. on ofpec comref it says the leader will not issue attack command (i guess the engage thing).

if tested it out, i think it works perfect.. the ai will only move to find cover (behind bushes/trees/etc)

hope it can enhanced CEX more...

Share this post


Link to post
Share on other sites

Can i use CoC_NSA - fPublicArray with CEX? I have never used NSA before, and im not sure i've done things right, but i merged my mission with the CoCNS_AddonTemplate and wrote this in the Init.sqf:

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">CoC_PublicArrays = CoC_PublicArrays + ["Array1", "Array2"]; // Add my arrays to existing arrays to not overwrite CEX arrays???

CoC_NPA_PollInterval=2;

CoC_ConnectTimeout = 40;

CoC_MaxRetry = 3;

waituntil{CoC_ClientsReady};

and then waituntil{CoC_ClientReady} everywhere before even touching my public arrays. I then used "TheArray" call fPublicArray everytime i want to transfer that array. If i do it like this i get a nice CoCNS error:

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">CoC_PA ERR

ARRAY 'TheArray' NOT LIST

(["cex_groups"])

It seems to me that its conflicting with the CEX-engine. Is there a workaround, have I done something wrong or is NS public arrays a no-no with CEX?

Share this post


Link to post
Share on other sites

Ragnar, have you tried adding your array name to the public array list:

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">

CoC_PublicArrays = CoC_PublicArrays + ["Array1", "Array2", "TheArray"];

All public arrays must be added to this list in the init prior to calling fPublicArray.

Share this post


Link to post
Share on other sites

Yes, i have declared the array name in CoC_PublicArrays, Sorry for an unclear description but I use other variable names in my code and i changed them here in the posted example. If i put the CoC_PublicArrays = PublicArrays + [MyArrays]; line AFTER waituntil {CoC_ClientReady} i don't get the error described above, but my array doesnt seem to transfer across the network anyway (when i use fPublicArray). Also, if i use this code on the server:

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">[[{leader Mortar_Sqd sideChat "?";}], "fNcall"] call fNSendAll;

I get this error:

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">ERROR: DATA SENT TO THIS NODE WAS NOT VALID

on the client. It works while testing in Mission Editor though.

My testing environment is dedicated+client on one/same machine (through LAN)

I can send my public/global variable functions to you if you wish to have a look. This just have to be something simple as it always seems to be, maybe im missing something obvious - like if the public array needs to be updated on all client machines (but they don't have to, cause NS takes care of that, right?)

Share this post


Link to post
Share on other sites

My Init.sqf looks like this:

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">CoC_ConnectTimeout = 40;

CoC_MaxRetry = 2;

waituntil{CoC_ClientsReady};

[["NS running!"], "fNPrint"] call fNSendAll; // <---Works!

CoC_PublicArrays = CoC_PublicArrays + ["GlobalVars"];

#include "GlobalVars.sqf";

and GlobalVars.sqf (based on script by Dr_Eyeball):

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">fn_GetGlobalVar =

{

_paramName = _this select 0; // this is case sensitive

 _dualParamArray = GlobalVars;

 _default = _this select 1;

 result = _default;

 if (typeName _dualParamArray != "ARRAY") exitWith

 {

   hint format["Error: fn_GetParamByName[""%1"", ...]: param 1 must be an array of paired arrays", _paramName]; // debug

   result

 };

 

 {

   if (typeName _x != "ARRAY") exitWith

   {

     hint format["Warning: fn_GetParamByName[""%1"", ...]: param 1 array must contain named arrays not %2\n%3", _paramName, typeName _x, _x]; // debug

     result

   };

   

   if (count _x > 0 && _x select 0 == _paramName) then {

     result = _x select 1 };  

 } forEach _dualParamArray;

 

 result;

};

fn_SetGlobalVar =

{

_paramName = _this select 0; // this is case sensitive

 _dualParamArray = GlobalVars;

 _value = _this select 1;

 result = "";

 if (typeName _dualParamArray != "ARRAY") exitWith

 {

   hint format["Error: fn_GetParamByName[""%1"", ...]: param 1 must be an array of paired arrays", _paramName]; // debug

   result

 };

 

 for [{_i=0},{_i<=count GlobalVars},{_i=_i+1}] do

 {

 if (count (globalvars select _i) > 0 && (GlobalVars select _i) select 0 == _paramname) then

 {

 GlobalVars set [_i, [_paramname, _value]];

 result = _value;

};

};

"GlobalVars" call fPublicArray;

 result;

};

fn_AddGlobalVar =

{

_paramName = _this select 0; // this is case sensitive

 _value = _this select 1;

GlobalVars = GlobalVars + [[_paramname, _value]];

result = _value;

"GlobalVars" call fPublicArray;

 result;

};

GlobalVars = [];

Now, if i run the code:

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">["MyVariableName", "VariableValue"]  call fn_AddGlobalVar;

...on the server and then:

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">_returnvalue = ["MyVariableName", "DefaultValue"] call fn_GetGlobalVar;

...on the client, it should return "VariableValue", but doesnt! Why?  sad_o.gif

Share this post


Link to post
Share on other sites

I ran this code in an empty mission (without CEX or anything else, only NSA)

Init.sqf:

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">CoC_ConnectTimeout = 40;

CoC_MaxRetry = 2;

Array1 = [];

Array2 = [];

waituntil{CoC_ClientsReady};

[["NS running!"], "fNPrint"] call fNSendAll;

CoC_PublicArrays = ["Array1", "Array2"];

sleep 10;

if (isServer) then

{

_n = 0;

while {_n<100} do

{

[["Server benchmark: ", benchmark, _n], "fNPrint"] call fNSendAll;

Array1 = ["Hey"];

Array2 = ["How are you?"];

"Array1" call fPublicArray;

["Array2"] call fPublicArray;

sleep 5;

};

}

else

{

_n = 0;

while {_n<100} do

{

[["Client benchmark: ", benchmark, _n], "fNPrint"] call fNSendAll;

player sideChat format ["Array1=%1 (%2)", Array1, Array1 select 0];

player sideChat format ["Array2=%1 (%2)", Array2, Array2 select 0];

sleep 5;

};

};

The "benchmark" messages from both server and client was transmitted, but both arrays showed only NULL. Is fPublicArray broken?

Share this post


Link to post
Share on other sites

Bug Report: Unplayable FPS for non-Commanding Players in MP

Steps to repeat:

1. Create a copy of the test mission "CEX_USMC_Lt_Infantry_Company.Sara".

2. Select the leader of an existing group and make it PLAYABLE. For reference (in this bug report), we will call this slot "Cain".

3. Select a non-leader of an existing group and make it PLAYABLE. For reference (in this bug report), we will call this slot "Abel".

4. "Save" the mission and / or "Export to MP Missions" (as you desire).

5. Launch an MP server for the mission (dedicated or non-dedicated, as you desire).

4. Have 3 players fill the 3 available slots.

Issue Description

The player in slot "Abel" will experience a massive drop in FPS (sub-1fps) once CEX has initialised. This will continue until the mission end, making this slot effectively unplayable. It seems that any slots which are PLAYABLE and NOT NAMED LEADERS in the CEX class will experience this FPS issue.

Speculation

Without further digging, I would guess there is a check / loop which is endlessly executing on the non-command players' PCs.

Share this post


Link to post
Share on other sites

Ragnar_Darude, I take it your using the addon and creating a NS game logic unit in your mission? Otherwise, you will have to add the following after CoC_PublicArrays:

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">

CoC_PublicArrays = ["Array1", "Array2"];

comment " Add no addon gl, but make sure scripts in mission:";

call compile loadFile "CoC_NS\Network\init.sqf"

comment " Not necessary: ";

comment " Remove -> Array1 = []";

comment " Remove -> Array2 = []";

waituntil{CoC_ClientsReady};

[["NS running!"], "fNPrint"] call fNSendAll;

sleep 10;

if (isServer) then

{

_n = 0;

while {_n<100} do

{

[["Server benchmark: ", benchmark, _n], "fNPrint"] call fNSendAll;

Array1 = ["Hey"];

Array2 = ["How are you?"];

"Array1" call fPublicArray;

"Array2" call fPublicArray;

sleep 5;

};

}

else

{

_n = 0;

while {_n<100} do

{

[["Client benchmark: ", benchmark, _n], "fNPrint"] call fNSendAll;

player sideChat format ["Array1=%1 (%2)", Array1, Array1 select 0];

player sideChat format ["Array2=%1 (%2)", Array2, Array2 select 0];

sleep 5;

};

};

Share this post


Link to post
Share on other sites

Yes, thank you, the above script works. Just have to name the CoC-Server logic to "CoC_Server".

But how does it work with a mission with CEX? If i run the above code, i get this error nicely displayed in a pop-up message when testing in the editor:

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">CoC_PA ERR

ARRAY 'Array1' NOT LIST

(["cex_groups"])

If i put this line after the waitUntil {CoC_ClientReady};

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">CoC_PublicArrays = CoC_PublicArrays + ["Array1", "Array2"];

I don't get the error, but the public arrays (Array1 + Array2) doesnt work.

Im guessing that CEX overwrites the CoC_PublicArrays, and if I'm setting it later it will be too late?

Share this post


Link to post
Share on other sites

This is absolutley fantastic, I can get it sort of running on the editor, but Im struggling with the naming of units.

Can I be really cheeky and ask someone to give me a sort of template to copy n paste into the description.ext?

Im buildin a mission based on an actual mission while I was out on op herrick, last summer.

I know I am askin alot, but trust me I cannot get this right, and I hope to share, what will be manificent mission with you all once its done!

I need it to look a lil like this.

ACoy 3Para

1plt

1sect

2sect

3sect

2plt

4sect

5sect

6sect

3plt

7sect

8sect

9sect

ReccePlt

10sect

SniperPlt

11sect

BCoy 3Para

4plt

12sect

13sect

14sect

5plt

15sect

16sect

17sect

6plt

18sect

19sect

20sect

SFPlt

21sect

EngPlt

22sect

656SqnAAC

1flight

2flight

3flight

1310flightRAF

4flight

22SAS

Atroop

Btroop

Ctroop

PFPL

7RHA

1bty

2bty

If someone can righ that up, we will have a mission with over 200 Bluefor men, 6AH helicopters, 2 CH47s 24 SF soldiers and 2 batterys of light guns - ah right!!!

Bring it on!!

Share this post


Link to post
Share on other sites

Centurions team and I are following this with a big interest. Any news of a new version ?

Share this post


Link to post
Share on other sites

These rants mainly deal with AI group leaders in game.

I agree with an earlier post, that somehow we should be able to get a squad to stick together better. I know this deals mostly with internal AI workings, I've accomplished something similar in the OFP command engine with disableAI. What I'd really like to see is the group leader being disabled when switching teams, and then re-enable if new orders are given. I'd love to be able to jump to different groups, set them up how I want them (say a potential ambush or defensive position) and then jump to other groups and do the same without having the first group leader try to get the squad back into formation and stand up out of his own cover. It's a hard line to hold though, you want the group leader smart enough to act and react on their own while staying in line with current orders.

If transportation is to be reliable (sometimes I'd rather cargo myself into something flown by the AI then trust some random person to fly me around 10 minutes then crash into the side of a building) Having reliable transportation lines ala units ferrying between positions would open up the maps a lot more. Getting them to take off and touch down in relatively the same spot (without hovering over the LZ for minutes at a time) would be the trick to pull off here. I agree that Mandobles scripts would work if they were tweaked for combat insertion/extraction timing. It's all about finding the optimal speed and timing values, but even then they'd only be the best guess, terrain would still be a factor.

I look forward to future releases, although these AI issues inherent in ArmA are the only thing's my eye can see askew with the current release tounge2.gif

Share this post


Link to post
Share on other sites

Great mod!!

Really easy to use!

Don´t you have a Arma homepage?

I only found your OFP page?!

Share this post


Link to post
Share on other sites

Is there any new developments for this mod?. The current version with FFMAA runs nice and looks brilliant. I think I like that mission more than a good campaign. smile_o.gif

Share this post


Link to post
Share on other sites

No, there is no admins around in CoC forums and no updates, no emails, no nothing. Go figure sad_o.gif

Share this post


Link to post
Share on other sites

Sorry for the lack of updates. After arriving in the UK, I continued CEX development about two weeks ago. The next version should be ready by the end of November, mostly including bug fixes but also a few new goodies.

Regarding the forums: We are currently in the process of creating a new forum which should be available soon.

Share this post


Link to post
Share on other sites
Quote[/b] ]The next version should be ready by the end of November, mostly including bug fixes but also a few new goodies.

Looking forward!! As a matter of interest how many work on CEX?

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  

×