Jump to content

Why is good wingman AI in so many sims so difficult to achieve?


Recommended Posts

Posted

I get nostalgic for BOBII when I try to use radio commands to tell my wingmen what to do in any of the newer CFS titles, whether it's BoS, CoD or DCS.

 

In BOBII if you padlock an aircraft or ground target, and tell your wingmen/flight to attack it, they actually do. You can padlock multiple targets, issue the command multiple times, and the AI will assign two of your aircraft at a time to attack each target, until you have no wingmen left. Or if you are in the area of the target and issue a general 'attack enemy air/ground targets' they will find their own targets (again, the AI will assign 1-2 aircraft per target so you don't get every AI going for the same target).  Fighter-bombers like the Bf110C fly in the formation you order them to, and gasp, drop bombs on command when level bombing, or can be released to hunt for targets on their own.

 

In BoS I play mostly ground attack, and no matter what I tell wingmen to do they mostly circle around following me, rarely attack anything, and usually return to base with most or all of their weapons still attached to their wings. Bomber wingies only sometimes drop on the target, usually don't, and again, more often than not, return home with bombs still aboard.

 

CoD is no different, the radio commands have been fritzed since day 1 and still are today. The AI won't even follow you as a flight leader unless you first engage autopilot while on the runway and then disengage it. Ground attack aircraft are a little better at attacking ground targets than in BoS, but not much.

 

In DCS, again mostly flying ground attack in the P-51, getting my wingman to attack ground targets is a real lottery - I never know if he'll attack, circle around uselessly or just plain bug out.

 

Maybe your experience is different, but good wingman AI seems like it should be one of the most basic elements of a combat sim, but it seems so hard to achieve!

 

H

  • Upvote 4
Posted

I feel you.

Right now, the wingmen are pretty much useless when flying a ground attack mission. They just fly around until they get shot down or I completed the mission.Also I would like to have more specific orders (attack aaa, attack vehicles, etc...).

In bombing missions with the he-111, you can get them to attack the target, but each will make their own pass, so no formation bombing.

 

They do what they are supposed to do in dogfights, but I would like to have more specific orders, too (attack bombers, attack fighters, etc...).

 

In CoD, the buggy AI is the biggest showstopper for me.

Posted

Similar to my experience with BoS.

 

I wish I could also issue commands to my escorts to STAY with us instead of taking off after every enemy aircraft that they see leaving us unprotected over the target.

 

And yes, I do issue the commands to them, but it doesn't work very well, if at all.   Must be those cheap Soviet radios...  :wacko:

  • Upvote 3
Posted

Heinkill,

 

Its a real bummer to fly a long He111 mission only to get shot up over the target, turn for home and see your bomber buddies still fully loaded with bombs. Surely it can't be that hard to fix and hopefully the BoS team will do just that.

 

Cheers

Posted

Sigh. The fact it isn't just BoS tells me this is a tough thing to code. Too many interacting parameters?

 

But not impossible!

 

H

BraveSirRobin
Posted

Similar to my experience with BoS.

 

I wish I could also issue commands to my escorts to STAY with us instead of taking off after every enemy aircraft that they see leaving us unprotected over the target.

 

And yes, I do issue the commands to them, but it doesn't work very well, if at all.   Must be those cheap Soviet radios...  :wacko:

 

When I was flying the campaign I told them to stay with me when I saw them going to chase squirrels and they responded.  Usually when exiting the target area I didn't even have to give the command.  Maybe they don't like you?  

voncrapenhauser
Posted (edited)

Sigh. The fact it isn't just BoS tells me this is a tough thing to code. Too many interacting parameters?

 

But not impossible!

 

H

+1

 

It was ok ish in Il2 1946....well at least better than in BOS at this time.

 

Maybe in time will get fixed I hope.

Edited by voncrapenhauser
Posted

While the fighter pilots do a decent job, the bomber pilots do not.

 

I really look forward to the day where my AI H-111 wingmen starts to drop their bombs when I ask them to.

 

But I´m sure we will get there.

 

 

FinnJ

Posted

BOB2 had "intelligent" AI as well, the AI in that sim are fantastic, i always feel that i am flying against another person rather than a super-uber tie fighter, none of the super soar climbs from a standing start and incessant barrel rolls that i have seen in the past,but i agree with you Heinkill, BOB2 wingmen Are a joy to fly and fight with, not like the load of drunks and wasters i have to fly with in most other sims.

Begs the question,if one sim can do it...

Posted

I think you need to have, or find, a passionate dedicated person coding it. BoB2 had a volunteer called Buddye, a Texan gentleman, who specialised in the AI and spent thousands of hours tweaking it. By memory the key to his success was implementing a huge palate of potential manoeuvres/actions, adding random noise to the selection filtered by AI skill level, then tying the radio commands to these.

 

He wrote a great article about his AI coding 'philosophy'. I will try to find it.

Posted

Found it. I find this stuff fascinating.

 

Buddye on design of the BOB2 AI Maneuver Selection

The design of the AI maneuver Selection Criteria was driven by the need to become more deterministic and less random in selecting AI maneuvers. I felt the need to move in this direction to improve the AI offence and defense so the AI selection software had more control...

Here is a summary of how the AI selects from the (more than 80) available maneuvers:

1. Altitude (how much altitude and rate of change)
2. Speed (how much speed, and rate of change)
3. Position of A/C to each other (nose to tail, tail to tail, nose to beam, tail to beam or left, right, front, back) This is what makes the AI really 'smart' - it is constantly testing to see if it is 'offensive' or 'defensive' and chooses its response dynamically as the fight progresses.

To implement the new selection criteria I built a 3 X 6 matrix (a truth table) and many new programs. For each A/C (the unfriendly and the AI or the player), I designed programs to look at Altitude, Speed, and position and to first try and select the best maneuver option (aggressive or defense) based on AI skill level. The same I applied to ground attack scenarios, was the aircraft offensive (targets in range, and not being targeted by player or other AI aircraft or AAA) or was it defensive (targets in range but being targeted itself).

Altitude and speed can also be thought of as “energy” as altitude can be turned into speed.

I created an uber aggressive 'Terminator AI' which only chooses from the offensive tactical set, it never goes defensive, so you might want to try it out. With the tweak to Terminator routines, he was getting “cocky” so I implemented a random spinout feature. The Terminator flies so close to the edge now that he has a chance to “spinout”. This is when you can most easily get him. 

I also implemented a new AI feature called “Flying Factor (FF)”. This is the knowledge of the AI pilot to fly a given maneuver (the game tracks the experience of every individual AI pilot in successful or unsuccessful sorties) and how well the AI pilot will actually fly the given maneuver (skill). The FF is based on the Skill Level (customer selected in Instant Action Missions and software assigned in the Campaign). The Terminator is assigned a Skill Level of Hero2 (the highest in the game) so that is where he gets his boost in performance (edge). BOB2 has since 2009 had up to 4 mixed skills within a flight Novice, Veteran, Ace or Hero. So you might get lucky and bag a novice with limited abilities, to then be up against an ace who has the full range of AI talents available to it.

AI Maneuver Selection is the KEY

First, the BOBII AI has a special case for selection called “Evasive maneuver selection”. The Evasive maneuver is required when an AI is shot at (either a hit or near miss) or padlocked by an aircraft within visual line of sight and range. The AI will select a defensive maneuver randomly based on the criteria/data for both Player and enemy AI (speed, altitude, and the position of the targeting AI and the AI being targeted with respect to each other). Of course, the AI will evade the players quicker, if and only if, the AI can see the enemy (remember in BOBII, the AI vision is blocked just like the player's vision is blocked by the cockpit/airframe, wings, sun, clouds and distance). So as in real combat, you have the best chance if you surprise the AI by attacking from a blind spot, with altitude advantage, out of the sun or cloud.

The first key decision to be made by the AI is to select either an aggressive or defensive maneuver. This is a complex decision based on the available information on both the Player and the Enemy AI or the friendly AI and the enemy AI. The core data considered for both Player and enemy is speed, altitude, and the tactical position of the targeting AI and the AI being targeted with respect to each other.

After selecting either an aggressive or defensive tactic, then a semi random approach is used to select a category (choose good, choose bad, or choose “neither” good nor bad maneuver). This also makes the AI very human, creating the chance that it will choose a 'bad' maneuver in some circumstances. The chance is higher for novice, and lowest for Hero AI.

Maneuvers are then divided into three parts Vertical, Horizontal, and dive for each of our categories (choose good, choose bad, and choose neither good nor bad maneuver).

In BOBII we have over 80 complex maneuvers for selection (both the aggressive and defensive maneuvers) for the fighters (Spit,Hurri,109.110) and over 50 maneuvers for selection for the ground attack aircraft like the JU87. The following are BOBII’s complex maneuvers. Highlighted maneuvers can be ordered by the player and are also tied to the radio commands so that the player can order their wingmen to perform the maneouver:  

MANOEUVRE_SELECT
MANOEUVRE_LOOKROUND (AI will weave and roll to allow it to try to 'check' in blind spots when in the combat area.)
MANOEUVRE_WELDEDWINGMAN
MANOEUVRE_BAILOUT
MANOEUVRE_TOPCOVER
MANOEUVRE_FORCETOPCOVER
MANOEUVRE_LINEABREAST
MANOEUVRE_PINCER
MANOEUVRE_MULTIWAVE
MANOEUVRE_DIVEANDZOOM
MANOEUVRE_INSIDELOOP
MANOEUVRE_LAGPURSUIT
MANOEUVRE_SPLITMANOEUVRE
MANOEUVRE_HEADON
MANOEUVRE_LINEASTERN
MANOEUVRE_VICATTACK
MANOEUVRE_BARRELROLLATTACK
MANOEUVRE_SCISSORS
MANOEUVRE_MILDSCISSORS
MANOEUVRE_TURNINGFIGHT
MANOEUVRE_SPLITS
MANOEUVRE_ZOOMANDDROP
MANOEUVRE_STRAIGHTANDLEVEL
MANOEUVRE_SPINOUT
MANOEUVRE_DIVEFORHOME
MANOEUVRE_GOHOME (Radio command for RTB)

MANOEUVRE_MAKEFORFRIENDLY
MANOEUVRE_MOVEAWAY
MANOEUVRE_QUICKROLL
MANOEUVRE_IMMELMANNTURN
MANOEUVRE_IMMELMANN

MANOEUVRE_ATTACKMYTARGET (Radio command. In ground attack radio menu, if the player has padlocked a target, the AI assigns 2 aircraft if available to attack the padlocked target. If no target is padlocked, the AI assigns 2 aircraft if available to search for ground targets and attack them, within visual range. Similar for air targets in the air attack radio menu context.)
MANOEUVRE_STAYWITHPREY (Radio command which forces AI to ignore eg fighters and concentrate on bombers. The PREY is defined by the mission target type, either fighter, bomber or ground target. Important for BOB because RAF doctrine said pilots were not to deviate from mission objectives to attack targets of opportunity.)
MANOEUVRE_CLIMBFORHOME 
MANOEUVRE_STRAIGHTDIVE (for LW, this is a bunt, for the RAF Merlin engine fighters, they will roll to invert, then dive)
MANOEUVRE_OUTSIDELOOP
MANOEUVRE_SHOOTTOFRIGHTEN (eg if AI detects a comrade under attack within range)
MANOEUVRE_SHOOTTOOEARLY
MANOEUVRE_GAINHEIGHT
MANOEUVRE_LAGROLL
MANOEUVRE_EXTENSION
MANOEUVRE_DIVINGROLL
MANOEUVRE_REVERSETURN
MANOEUVRE_SELFASBAIT (or 'drag and bag' in other parlance - AI flying with an AI wingman - one AI will fly steady and slow, luring the player, while its wingman stalks)
MANOEUVRE_JINK
MANOEUVRE_BREAKTURN
MANOEUVRE_LAZYTURN
MANOEUVRE_BREAKLOW
MANOEUVRE_BREAKHIGH
MANOEUVRE_BREAK90
MANOEUVRE_BREAK180
MANOEUVRE_HIGBARRELROLL
MANOEUVRE_PANICTURN
MANOEUVRE_TURNANDRUN
MANOEUVRE_LOWALT
MANOEUVRE_ZOOM
MANOEUVRE_INTERCEPTHIGH
MANOEUVRE_INTERCEPTLOW

MANOEUVRE_GAINSPEED
MANOEUVRE_HEADONATTACK
MANOEUVRE_LUFBERRY (a special manoeuver for the Bf110s)
MANOEUVRE_STEEPDIVE
MANOEUVRE_UPANDUNDER
MANOEUVRE_STALLTURN
MANOEUVRE_SLASHINGATTACK
MANOEUVRE_CLIMBTURN
MANOEUVRE_ROLL360
MANOEUVRE_STRAFFE (if given as a radio command - attack ground targets within visual range, or if player has padlocked a specific target, attack that target)
MANOEUVRE_TRANSITION
MANOEUVRE_PEELOFF
MANOEUVRE_SNAPSHOT
MANOEUVRE_STAYONTAIL 
(if given as a radio command - attack nearest air target within visual range, or if player has padlocked a specific target, attack that target)
MANOEUVRE_FLYTHROUGHCLOUD (a defensive manouver available if clouds are present - the AI dives for the nearest cloud)
MANOEUVRE_REGROUP
MANOEUVRE_DISENGAGED
MANOEUVRE_SPINRECOVERY
MANOEUVRE_COLLIDE
MANOEUVRE_LAST
MANOEUVRE_ALIGNMENT
MANOEUVRE_DROPANDZOOM
MANOEUVRE_COLLISIONAVOIDANCE
MANOEUVRE_TURNTOHDGANDPITCH (turn to heading, a waypoint command)
MANOEUVRE_SCREWYOUGUYSIMGOINGHOME (when damaged, out of fuel, or low on morale -  the AI will still evade if attacked when running for home.).

The AI Performance Criteria/Dependencies

Skill Level

The AI performance is dependent on AI Skill Level (which is customer selected in Instant Action and SW assigned in the campaign). BOBII AI do make mistakes (spin, crash, dumb maneuvers, bad judgment, shoot late , shoot bad, etc) which is after all very human.

The skill level of the AI is key in making decisions on about everything with respect to AI performance like (1) how well the AI fly, shoot, shoot fast, slow, accuracy, or not shoot, (2) how well the AI fly, what maneuvers are selected, and how well the AI will fly the chosen maneuver.

 

Experience

 

Each AI pilot/aircraft in the game is assigned a unique identifier. Each time that pilot is included in a sortie their experience score increases. If the sortie is successful (enemy destroyed by squadron>friendly lost) experience is also increased. If the sortie is unsuccessful (enemy destroyed<friendly lost) experience remains the same. Experience determines how many maneuvers the pilot can choose from, skill determines how well they execute them (choose good, choose bad, or choose “neither” good nor bad maneuver). This is the Flying Factor.

 

Morale

 

The game tracks the morale of every pilot and squadron/staffel in the game. Losses during combat impact the morale of a pilot and his unit in real time. If the AI pilot achieves a kill, morale is increased for themselves, and for their unit. If the unit takes losses, the AI pilot morale is decreased. When they land if enemy destroyed by squadron>friendly lost, overall morale is increased for the whole unit. If the sortie is unsuccessful (enemy destroyed<friendly lost) overall morale is decreased for the whole unit. An AI pilot's morale level and any losses of their unit during an actual combat, will increase or decrease the likelihood of the pilot choosing a bug-out maneuver ('RTB', 'turn_and_run', 'dive_for_home', 'screw you I'm going home') or a panic maneuver (panic_turn, maneuver_collide, shoot_too_early).

Random Numbers (Luck of the draw)

The BOBII AI A/C is also dependent on luck (specifically on random numbers). Random number decisions are coded through out the AI code. BOBII’s random approach keeps BOBII from doing the same thing each time. Even something as simple as the direction to start a maneuver (left or right), I will use a random number to decide (why hard code something when you can use a random number).

For example, most BOBII vertical maneuvers use a random number to assign a length of time to for a specific vertical maneuver (Like Zoom). The AI pilot will sometimes cut off early, or late, or somewhere in the middle. If early, the maneuver may carry too much speed, and if late, the AI may slow down so much that control is lost (very human).

The bottom line is that the customer will always see a somewhat different maneuver (very good, good, not so good, and loss of control) both because of the random implementation and the different physic’s parameters (speed, roll, heading, pitch, and overall energy) going into each maneuver.

The very real downside of random numbers is it is very hard to test (not repeatable) and the processing power used.

Conditions

The conditions for each maneuver are always different  - weather: wind speed, and wind direction will affect airspeed, and damage to AI aircraft affects how well the AI can maneuver or what maneuvers are available. A damaged AI will not fly as well as an undamaged AI as engine damage effects airspeed and structural damage limits control surface response (damage is always taken into account in the AI flying performance).

 

 

As you can see, he was one detail oriented guy.

 

But as I said, the success of the BOB2 AI system was building the matrix of offensive and defensive maneuvers and linking them to experience, skill and morale. After that, he was able to more successfully tie radio commands to the relevant maneuvers.

 

By comparison here is the list of BoS AI codes (from Dev diary 36 so more may have been added) and the BoS AI philosophy. Here Han talks about pilots needing '20-30 variations of such states including: taxiing, take-off, taking the point, following the leader, finding and designating targets, engaging an aerial target, aerial combat, and so on'. As discussed above, BOB2 had not '20-30 such states', but 80, each one multiplied by factors such as experience, moral and skill. This gives literally thousands of potential states for each individual AI.

 

It is interesting to go back and examine what Han says about ground attack, because this is a routine which is badly broken in BoS.

 

"For instance, the "engaging a ground target" has 5 basic decision levels:

  • AI constructs a flight trajectory and speed chart describing its changes on this trajectory depending on plane's and target's position.
  • AI controls stick, rudder and throttle to stay on this trajectory and keep appropriate speed, also taking into account current altitude and specific plane's parameters.
  • AI continues to evaluate the situation the plane is in all the time. In case if a threat appears, or if the target evades, or if targets of a higher priority appears - AI breaks the "state of engaging" and enters another state that would be more appropriate in the new circumstances.
  • AI keeps tracking commands coming from the mission scripts. When a new command comes, it will disengage and enter the state determined by the mission script.
  • AI is monitoring the condition of the plane. If the remaining fuel or ammo is estimated as insufficient to proceed to attack, it will disengage and enter the "return to base" state."

Clearly some of these routines are just plain not working in BOS. I am guessing it is rule 3: 'if a threat appears or if targets of higher priority appear the AI breaks the state of engaging and enters another state'. Seeing the AI circle around uselessly over the target tells me the AI is simply having trouble picking a damn target and continually 'breaking the state of engaging'. Also rule 5 appears not to work, as fully armed aircraft are returning to base without attacking at all.

 

But the philosophy has some similarities (and even some new sophistication) so hopefully the bones are there if someone one day can start building on them.

 

 

http://forum.il2sturmovik.com/topic/168-developer-diary/#dd36

 

H

  • Upvote 2
-NW-ChiefRedCloud
Posted

 

 

CoD is no different, the radio commands have been fritzed since day 1 and still are today. The AI won't even follow you as a flight leader unless you first engage autopilot while on the runway and then disengage it. Ground attack aircraft are a little better at attacking ground targets than in BoS, but not much.

 

 

 

H

 

I noticed the other night when I got curious that I wanted to see if the "AUTOPILOT" could handle a complete mission in campaign all by itself. First let me back up a bit. When "I" fly the campaigns in the IL-2 almost always my AI Wingmen will crash on take off or shortly after. This goes without exception and I have reported it though they say it has been fixed. Now back to what you said about engaging the Autopilot first in CloD. I did this in BoS letting the AI handle every thing and the Wingmen did just fine. As for myself flying and the AI wingmen, I tried bank left, bank right straight and slow accent. None of it worked.

 

With the AI in charge of the attack the wingmen faired little different. And the AI in charge of my aircraft flew like he was at Coney Island on a roller coaster. And of course dies every time.

 

Do not get my words wrong, as I know the Dev's have put a lot of time and effort in their programming. But In my humble opinion, I'd just write all AI Wingmen off from the start. The AI Cap is ok as it seems to do it's best to keep the 109's off my back.

 

Chief

Posted

This is the area that really needs a lot of work to make good SP. I would even pay for an "enhanced AI module" along the lines the OP discusses in BoB.

 

As of now, the BoB AI is less convincing than RoF's, which is at least made simpler by the lack of voice comms.  Good enough to have a decent game, but every so often it does something strange that makes you sit up and say, not "gosh, a truly random and different reaction" but rather " Oh look, bad code".

 

New campaigns from 3rd party providers will be great, but unless the AI is more convincing they will still compare poorly to the equivalent from IL2 46.

Posted

This is the area that really needs a lot of work to make good SP. I would even pay for an "enhanced AI module" along the lines the OP discusses in BoB.

 

Devs pls note. I would also buy an 'Hero AI upgrade module' because I know it would require dedicating resources to the problem. Heck, I would even buy early access to a 'Hero AI upgrade module'. I would even support it being included as an UNLOCK for people who had unlocked everything else!

 

I find the AI in BoS to be superior to CoD in air to air combat, so that is a good platform to build on, it is ground and bomber AI that needs total rework. Then the response to radio commands.

 

H

  • Upvote 2
Posted

In my opinion BOS AI is rather good, it's challenging and it makes you think about the full house ... your tactics with the ACE AI has to be on the ball to beat them, but it can be done, but the wingman is constant problem, he/they ... well, i won't go on and on about it.

Posted (edited)

Most of the time for me they take off and then crash about 30 seconds after or they fly off and do nothing I tell them to. Sometimes all my 'wingmen' don't even take off and just sit on the runway until I return from the mission so I cant even land properly.  :rolleyes:  :wacko:

Edited by Flack88
Posted (edited)

This is another one of those "impossible requests" that we in the flight sim "community" are actually rather good at.

 

Even large aerospace manufacturers cannot program truly effective/human like, AI behaviors.

 

Sure computers can do calculations at mind numbing speed, but they really fall apart on making decisions, and it's really difficult, if not impossible, to program them to be unpredictable, like us humans are.

 

Maybe in another decade or so we will have the hardware in our homes, and the programming to make this somewhat possible, but not at the current state of technology.

 

And this is why flying against humans has always been so much more challenging than flying against the AI.

 

Not that I have been online much in the past couple years, but my feelings on this still hold true, especially after all the offline flying I've done of late.

Edited by BlitzPig_EL
Posted

I wish the AI could be squad leader and I was the wingman .

SCG_Space_Ghost
Posted

This is another one of those "impossible requests" that we in the flight sim "community" are actually rather good at.

 

Even large aerospace manufacturers cannot program truly effective/human like, AI behaviors.

 

Sure computers can do calculations at mind numbing speed, but they really fall apart on making decisions, and it's really difficult, if not impossible, to program them to be unpredictable, like us humans are.

 

Maybe in another decade or so we will have the hardware in our homes, and the programming to make this somewhat possible, but not at the current state of technology.

 

And this is why flying against humans has always been so much more challenging than flying against the AI.

 

Not that I have been online much in the past couple years, but my feelings on this still hold true, especially after all the offline flying I've done of late.

 

An effective AI logic is definitely possible and has been deployed in other areas of the genre.

 

It is simply a matter of getting there.

Posted

This is another one of those "impossible requests" that we in the flight sim "community" are actually rather good at.

 

Even large aerospace manufacturers cannot program truly effective/human like, AI behaviors.

I am sympathetic to this line of argument, but I do not think it is impossible for makers of a new product to at least meet the standards set by much older products, nor is it unreasonable of customers to demand this.

 

As OP pointed out, BoB's AI was considerably more sophisticated that BoS in some respects.

 

IL2 1946 handled formation flying and wingman commands better: to get AI to fly formations it had to "cheat" a little. The BoS developers are very keen that the AI pilots should have no "cheats" - but one unintended consequence is that they have to give us formations that are not accurate. There were good reasons why the LW fighters flew in finger-four, but in BoS they do not. I assume that this is because the AI simply cannot do it without crashing: hence the extended V which makes course changes easier.

 

I agree that getting AI to fly Fw190s BnZ/slashing attack style using teamwork would be an interesting undertaking.... but there is much that could be done to improve AI within reasonable resource limits.

 

The first thing I would do is change the behavior of wingmen at intercepts. Now they see the enemy way before you do and head off towards it without telling you. They can be recalled; but it is sometimes hard to see what they are up to, precisely because they are in a formation that makes it hard to keep them in view!

Posted

I would gladly pay for advanced AI module. AI needs obviously needs more development.

 

AI weak points have been brought up pretty well in this thread so I hope developers take notice of these comments.

And would be great to hear if they have any plans to improve the AI.

Guest deleted@1562
Posted

I asked the devs to heed Buddye's advice back in Dec. 2012 - apparently they decided not to: http://forum.il2sturmovik.com/topic/137-ai-behavior/

 

If you don't design your engine with the AI in mind, you've pretty much lost the battle for believable AI behavior. I don't expect any real improvement in that department.

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
×
×
  • Create New...