request for upcoming 2.6
#1
Posted 05 January 2008 - 09:13 AM
1. please reduce harassing time (AI is a poor at this, loosing more than gaining)
2. during harass CC squads should dance commanders (single sluggas and cultists always charge commanders and die - what a waste of life)
3. harassing squads should not harass bases, just outer points for decap. During decap they should reinforce if necessary to finish the job under fire.
4. some races are very late with their initial commanders, guard and orks if I remember correctly.
5. AI is still teching too much and not massing enough imo. Dynamic reaseach/addon squad requirements are too low. I sometimes watch incredible small armies still researching stuff or building turrets.
#2
Posted 09 January 2008 - 04:39 PM
5. AI is still teching too much and not massing enough imo. Dynamic reaseach/addon squad requirements are too low. I sometimes watch incredible small armies still researching stuff or building turrets.
Usually i decrease the Tech Speed in the AI control panel hoping to trigger more squad, agree about Turrets too even if the Turrets Spam days are gone the AI still build too many turrets they shall be capped at 2 at Tier 2 and maybe 4 and Tier 3 and 0 at Tier 1
Usually turrets are a waste of req.... No turrest shall not be built until squad cap and vehicule cap are reached, i am over reacting but you see the point
#3
Posted 09 January 2008 - 05:35 PM
-- Avoid being killed in firefight or early CC against superior enemy function InfantryTactic:CheckForDeath() -- Ranged or weak cc squads stationary, hurt and away from home base local unit_strength = self:GetUnitStrength() local weak_cc_unit = (unit_strength < 200 and g_iGMT < DefendChokePointPlan.HarassingTime * 60 and not self.squad_ai:IsRanged() and not self:IsCommander() and not self:CommanderAttached()) local squad_pos = self.squad_ai:GetPosition() local bCheckAvoidDeath = ((self.squad_ai:IsRanged() or weak_cc_unit) and self.squad_ai:WasRecentlyHurt() and not self.squad_ai:IsCapturing() and not self.squad_ai:IsInStateMove() and not self.squad_ai:IsBroken() and distance_sqr(squad_pos, cpu_manager.start_pos) > sqr(50)) -- Don't leave if we are in state of disengage if (self.stateID ~= Tactic.StateID.AvoidDeath and not bCheckAvoidDeath) then self.m_iDancing = 0 return false end -- Init health tolerance local squadsize = self.squad_ai:GetNumTroopers() local unit_max = self.squad_ai:GetMaxTroopers() local healthtolerance = 1.1 - squadsize / unit_max -- Check if we are a commander if (self:IsCommander()) then healthtolerance = 0.3 end -- Check active builders local building = (self.squad_ai:IsBuilding() ~= 0) if (building) then healthtolerance = 0.2 end -- Bonus if a commander is attached if (self:CommanderAttached()) then healthtolerance = healthtolerance - 0.1 elseif (weak_cc_unit) then local oEnemyUnit = cpu_manager.cpu_player:FindFirstEnemy(squad_pos, 20, 1) if (oEnemyUnit ~= nil and cpu_manager:GetUnitStrength(oEnemyUnit) > 300) then healthtolerance = 1 else healthtolerance = 0 end end --[[local iEnemyStrength, iAlliedStrength = cpu_manager:GetArmyStrengthAtPos(squad_pos, 35) local closecost = iAlliedStrength - iEnemyStrength healthtolerance = healthtolerance - (closecost / 1000) ]] -- Always run if (healthtolerance > 1) then healthtolerance = 1 -- Always stay elseif (healthtolerance < 0) then healthtolerance = 0 end -- Check health tolerance if (healthtolerance < 1 and self.squad_ai:GetHealthPercentage() > healthtolerance) then self.m_iDancing = 0 return false end -- Okay, let's dance local bFirstCall = (self.stateID == Tactic.StateID.NoState) -- Check for a safe destination if (not self:MoveToDisengage()) then if (not bFirstCall) then self.tolerance = self.tolerance + 10 else self.tolerance = self.tolerance_default end self.squad_ai:DoMoveToClosestSafePoint(self.safe_point, self.tolerance) end -- Set state local state_func, state_name = self:GetSubState() if (state_func ~= self.AvoidDeath) then Tactic.SetSubState( self, self.AvoidDeath, "AvoidDeath" ) self.squad_ai:DoSetStance( SquadAI.STANCE_StandGround ) self.stateID = Tactic.StateID.AvoidDeath end -- Set avoid death state self.m_eSubStateID = self.stateID return true end
Edited by LarkinVB, 09 January 2008 - 05:42 PM.
#4
Posted 12 January 2008 - 07:56 PM
Also, not sure ya knew but we finally figured out why the Necron Restored Monolith wasn't being built reliably. Now it gets built all the time? Why? Simple.. its stats in unitstats.ai were too low. Bump em up and presto.. all good now! Been tested extensively across the board.. Even had 2 Monoliths from the same faction in a balance mod work with this new fix and its so reliable now. Yey.
Dawn of War Advanced AI Headquarters
Latest DoW Advanced AI Download!
#5
Posted 13 January 2008 - 01:05 PM
Besides that, I agree with some of the mentioned points, and with some not (like always). I changed harassing time from 4 mins to 5 mins a long time ago because it wasn't enough on bigger maps, so naturally I disagree with this one. After all, harassing can be switched off in the AI control panel for those who don't like it. Same goes for the teching speed which can also be adjusted in the control panel. Though the force teching time are not yet modified by that. I guess I should change that for SS.
The weak CC unit change for harassing is very dangerous. I'd gladly sacrifice my cultist squad if I can save my chaos marine squad in return. Cultists and sluggas are cheap after all.
The avoid bases thing is interesting however. Ork and IG commanders are not in the quick build list. I guess that's the reason they are not built immediately. At least for Orks this could be changed since th mek boy is build always at the start anyway.
But after all, I lost all games vs hard AI in a DowXP LAN session with a friend lately (which happened never before), and so I'm not too unsatisfied with the current state of the AI.
Edited by ArkhanTheBlack, 13 January 2008 - 01:05 PM.
#6
Posted 13 January 2008 - 09:54 PM
The weak CC unit change for harassing is very dangerous. I'd gladly sacrifice my cultist squad if I can save my chaos marine squad in return. Cultists and sluggas are cheap after all.
I'm talking about the early lonely harassing cultist/slugga fighting a hero. This won't save any marines/shootas, they come much later.
I started to readjust DCpro initial build queue for all races to do fast heros. That is
1. Second builder
2. Both forced to build infantry building, generator later.
3. hero
But whatever. It's just a sudden burst of coding activity which will fade again soon most likely. What I still would like to see is a better cc code. I recently watched some ork AI replays and it still hurts to see the attacking cc squads, retreating just while reaching the enemy. Btw I watch big mek with attached sluggas trying to avoid CL during initial harass contact without a fight. Is this what was desired ?
One other thing though. DCpro has an ready slugga squad at gamestart. This will not start capping for more than 15 seconds, their tactic is set but it won't kick in as a move command for a long time. I hade to dirty fix the capture code.
function CapturePlan:CapturingFlag()
-- Check if we should capture the flag directly or just walk there in attack mode -- Initial squad at gamestart should start immediatly if (g_iGMT < 10) then self.capturing_squad:DoDefault(self.capturing_flag:GetEntity()) elseif ((distance_sqr(vFlagPos, vSquadPos) > sqr(35) or bIsInCombat) and bAttacker) then -- Attack move to target flag if (oTactic:GetState() ~= Tactic.States.Attack or distance_sqr(oTactic:GetTarget(), vFlagPos) > 1) then oTactic:SetState(Tactic.States.Attack) oTactic:SetTarget(vFlagPos, Tactic.Variant.Vector) end else -- Capture flag if (oTactic:GetState() ~= Tactic.States.Hold or distance_sqr(oTactic:GetTarget(), vFlagPos) > 1) then oTactic:SetState(Tactic.States.Hold) oTactic:SetTarget(vFlagPos, Tactic.Variant.Vector) else self.capturing_squad:DoDefault(self.capturing_flag:GetEntity()) end end
Edited by LarkinVB, 13 January 2008 - 10:00 PM.
#8
Posted 14 January 2008 - 02:13 PM
Dawn of War Advanced AI Headquarters
Latest DoW Advanced AI Download!
#9
Posted 30 January 2008 - 09:20 AM
Btw I found the kroot shaper not attaching in dcpro. Code is (same as 2.5)
self:TryAttachSquad( false, false, 1000, 100, nil )
Shouldn't it be
self:TryAttachSquad( true, false, 1000, 100, nil )
to attach to kroots ?
Edited by LarkinVB, 30 January 2008 - 09:23 AM.
#10
Posted 31 January 2008 - 04:12 PM
Been lurking for a while (here and in the Relic Forums). Tested Dawn of Skirmish and the DowXP version and found that can't play the single player campaign without being smashed by the Bloodthirster in the first map.
I know it is a common question in the forum, but, there is a real way to play the SP campaign with the improved AI and keeping the general setting of the maps? I mean, number of bases, type of units used, etc.
Thanks in advance
Reply to this topic
0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users