Jump to content


Photo

Skirmish AI 3.0 Beta 6 - Post Comments In Thread!


30 replies to this topic

#1 ArkhanTheBlack

ArkhanTheBlack

    title available

  • Members
  • 814 posts

Posted 04 April 2008 - 11:00 PM

I hope this is the last beta. I added a potential fix of the Necron Warrior crash bug, but since I don't seem to be able to reproduce the crash I need some feedback for that.
Even if the crash was not fixed, I've included more crash checkers to the AI traces, so the reports should be more informative.

Changes:

- Fixed a capturing bug

- Dancing behaviour changed, so they won't retreat immediately

- Some fine tuning to the build orders of the different races

- Tomb spyders won't stay anymore in the home base to spawn scarabs

- Improved the upgrading of some units

#2 dreddnott

dreddnott
  • Members
  • 60 posts

Posted 05 April 2008 - 02:45 AM

Can't wait! :D

#3 thudo

thudo

    Wacko AI Guy!

  • Division Leaders
  • 12,164 posts
  • Location:Lemonville North, Canada
  • Projects:DoW AI Scripting Project
  • Division:DoW
  • Job:Division Leader

Posted 05 April 2008 - 04:21 AM

Beta is up for the testers!
Advanced Skirmish AI Team Lead for the coolest Warhammer40k PC RTS out there:

Dawn of War Advanced AI Headquarters

Latest DoW Advanced AI Download!

#4 Zenoth

Zenoth

    title available

  • Members
  • 469 posts

Posted 05 April 2008 - 06:57 AM

@ The whole team and testers

Alright, this is it folks!

Arkhan you've done it, it doesn't crash anymore! :D

I've played four games to come to that conclusion, and one of them was a long 40 minutes fight, it just refused to crash. Usually it would crash after 10 to 20 minutes on each tries (really, for me it was about 99% of the games with Necrons on Broken Lands, of course it wasn't crashing on other maps as I mentioned in other posts). I've played two Skirmishes, on Hard, same settings as usual, on Broken Lands of course, me against two Necrons, allied with another Necron, two games like that, one of them lasting around 16 minutes I believe, and the other about 20 minutes. Then I tried the Campaign, two times, and it never crashed, the last attempt was the long one, as I said about 40 minutes of epic battles, going back and forth, being pushed, and then me pushing them back, it kept going on like that non-stop, until I couldn't take anymore and they just got me. But still, it never crashed, I'm just glad to type this! :)

Now that the crashing is over I can fully contemplate the sheer craziness behind this A.I in a one-on-one. I've very used to play team-based matches, I very rarely play deathmatches or 1 vs 1's, either off-line or on-line. And to be honest I never had that much problems in the Dark Crusade Campaign... but now those Necrons are just going through my forces as if my units were just particles of dust, completely inconsequential to them. They ruin my LP's in no time, the Necron Lords are raping my Farseer, and my Banshees get demolished in half before they manage to reach the NW's in hand to hand combat. I'll need some time to take that Campaign more seriously once the final build is up. I'll just keep testing for now, but oh my God I can't wait until all of this is over so I can have my revenge. I've got awesome challenge now, so it's worth it, even if the bases are not persistent.

#5 LarkinVB

LarkinVB

    title available

  • Members
  • 1,488 posts

Posted 05 April 2008 - 07:48 AM

I added a potential fix of the Necron Warrior crash bug, but since I don't seem to be able to reproduce the crash I need some feedback for that.


What did you fix ? I can't find it doing a diff with B5.

#6 Zenoth

Zenoth

    title available

  • Members
  • 469 posts

Posted 05 April 2008 - 08:02 AM

There has to be something Larkin, Arkhan is playing games with you :D

Just had a third Skirmish (that makes a total of five games with Necrons since I installed B6) in Broken Lands without a crash.

#7 LarkinVB

LarkinVB

    title available

  • Members
  • 1,488 posts

Posted 05 April 2008 - 08:37 AM

Som observations :

Are burnas usefull on sluggas ? I don't think so or at least only a limited number.

DE did build first LP only after 3 minutes. They had no req left, spending it for squads, cambers, research and stuff. I think one or two LP on first points should be mandatory at gamestart. Wasn't there a req_reserve for such situations ?

I watched a 2vs2 battle on broken land (no necrons), eldar nicely rebuilding in sisters base with the help of their allys builders. Neat ! I still don't like the obsession with mines and turrets (don't want to completly disable them either). I think the army size requirement for mines and turrets > 2 should be increased. Aren't sisters turrets nearly useless at all ? Didn't see sisters build a pentinent engine and didn't see aircrafts at all.

Isn't the sister squad limit a bit off
sisters_squad_missionary = 4,
				sisters_squad_battle_sister = math.random( 2,4 ),
				sisters_squad_seraphim = math.random( 2,4 ),
				sisters_squad_celestian = math.random( 2,4 ),
				sisters_squad_assassin = math.random( 2,4 ),
				sisters_squad_repentia = 3,

I'd like to see missionary max 3, repentia rand(2,3) and battle sister rand(3,4). Btw what are assassins ? Never watched them yet.

Will run some 2vs2 all necron on broken land now ...

Btw, I think necron warriors shouldn't dance before CC squads. They are too slow and fine in CC.

Edited by LarkinVB, 05 April 2008 - 08:55 AM.


#8 LarkinVB

LarkinVB

    title available

  • Members
  • 1,488 posts

Posted 05 April 2008 - 09:08 AM

Game crashed on broken land with necrons. Sad enough logs were disabled. Will repeat.

EDIT: Second try, second crash. These are the last words ...

AI1003 10:12 CpuManager: Starting AI Think
AI1003 10:12 Req: 0 | Pow: 29.5 | Pop: 0
AI1003 10:12 CpuManager: Critical range = 100.84146118164
AI1003 10:12 CpuManager: Critical threat = 0
AI1003 10:12 CpuManager: Critical support = 225
AI1003 10:12 CpuManager: Update unit tactics...
AI1003 10:12 Tactic: Update necron_lord_squad...
AI1003 10:12 Crash check 3
AI1003 10:12 Crash check 4
AI1003 10:12 Crash check 5
AI1003 10:12 Crash check 6
AI1003 10:12 Crash check 7
AI1003 10:12 Crash check 8
AI1003 10:12 Crash check 9
AI1003 10:12 Crash check 10
AI1003 10:12 Crash check 11
AI1003 10:12 Crash check 12


I guess the stack is quite interesting :

Call Stack:
0x01D5C4CE: PreciseTerrainMap::GetValue (J:\Dawn of War - Soulstorm\SimEngine.dll)
0x041C0101: ()
0x0D1D2B1E: GetDllVersion (J:\Dawn of War - Soulstorm\WXPMod.dll)
0x224CF415: ()

Edited by LarkinVB, 05 April 2008 - 09:41 AM.


#9 Zenoth

Zenoth

    title available

  • Members
  • 469 posts

Posted 05 April 2008 - 09:43 AM

What?! :D

No... no! ... noooooooo!!! Seriously I thought it was over. Just had a 6th Skirmish on Broken Lands without a crash. What the hell is wrong with all this I'm getting depressed.

#10 LarkinVB

LarkinVB

    title available

  • Members
  • 1,488 posts

Posted 05 April 2008 - 09:57 AM

Different map, another crash. This time it crashed earlier in tactics :

AI1003 12:20 CpuManager: Starting AI Think
AI1003 12:20 Req: 0 | Pow: 184.875 | Pop: 0
AI1003 12:20 CpuManager: Critical range = 70
AI1003 12:20 CpuManager: Critical threat = 0
AI1003 12:20 CpuManager: Critical support = 300
AI1003 12:20 CpuManager: Update unit tactics...
AI1003 12:20 Tactic: Update necron_lord_squad...
AI1003 12:20 Crash check 2


Stack was the same.

#11 LarkinVB

LarkinVB

    title available

  • Members
  • 1,488 posts

Posted 05 April 2008 - 10:18 AM

Guess I found the problem. Will investigate a bit more but I can recreate the crash immediatly with some extra test code.

EDIT:
Problem is self.squad_ai:CanJumpToPosition(vMovePos) in CompassMove. I guess when position is out of map bounds it will crash. I made the necron lord run and jump with compass move immediatly after being build on RokClaw ... (4player map). It crashed reliable soon after start. at the self.squad_ai:CanJumpToPosition(vMovePos) test of the compass direction loop.

Edited by LarkinVB, 05 April 2008 - 11:31 AM.


#12 ArkhanTheBlack

ArkhanTheBlack

    title available

  • Members
  • 814 posts

Posted 05 April 2008 - 11:37 AM

Well, I think I understand the problem now. The problem was not the GetPathingDistance() function, it was the CanJumpToPosition() funtion. This would explain why the Necron Warriors suddenly crashed too in SS. The GetPathingDistance() function is only used after CanJumpToPosition() was successfull. Therefore the Necron Warriors could never be affected by the GetPathingDistance() function since CanJumpToPosition() always fails for them. However, if CanJumpToPosition() is unstable itself, the Necron Warriors can definitely cause a crash.

This also explains why my Necron Lord fix didn't work. I fixed the wrong thing. The two Necron Lord crashes are pretty obvious. The first one was caused by the CompassMove through the EmergencyRetreat() function. The second crash was most likely caused by the JumpAttack() function through the movement part. That's the same function where the warriors crashed.
The odd thing is that the crash seems to be restricted to the Necron Warriors and the Lord. The good thing is that I can reactivate the pathing check for the other races. The bad thing is that I will now deactivate the jumping code for the Necron Lord completely. I will make sure that he doesn't even know anymore how the word 'Jump' is written! :D

#13 ArkhanTheBlack

ArkhanTheBlack

    title available

  • Members
  • 814 posts

Posted 05 April 2008 - 11:40 AM

EDIT:
Problem is self.squad_ai:CanJumpToPosition(vMovePos) in CompassMove. I guess when position is out of map bounds it will crash. I made the necron lord run and jump with compass move immediatly after being build on RokClaw ... (4player map). It crashed reliable soon after start. at the self.squad_ai:CanJumpToPosition(vMovePos) test of the compass direction loop.

The crash seem to happen very reliable on your computer. Can you therefore make the same test for Tau or Orcs? Both have jump commanders too. I'd like to make sure that the crash is restricted to Necrons.

#14 Smokeskin

Smokeskin
  • Members
  • 127 posts
  • Location:Denmark
  • Projects:Soulstorm Advanced AI betatester

Posted 05 April 2008 - 11:54 AM

The bad thing is that I will now deactivate the jumping code for the Necron Lord completely. I will make sure that he doesn't even know anymore how the word 'Jump' is written! :D


What so no jumps at all? That seriously gimps him...

#15 ArkhanTheBlack

ArkhanTheBlack

    title available

  • Members
  • 814 posts

Posted 05 April 2008 - 12:20 PM

What so no jumps at all? That seriously gimps him...

I'm not the one who breaks one AI function after another. (Pointing with finger on Relic/Iron Lore...)

#16 LarkinVB

LarkinVB

    title available

  • Members
  • 1,488 posts

Posted 05 April 2008 - 12:28 PM

Orks and tau crash too. I can reliably force the crash by adding some code to a jumping squads tactics like this :

function StealthTeamTactic:Update()

	if (self:IsComplete()) then
		return
	end

	-- State machine
	if (not InfantryTactic.Update(self)) then
		return
	end
	
	if (self.squad_ai:CanJump()) then
 		aitrace("Crash VB 1",true)
   
		  local maxd = self.squad_ai:GetJumpDistance()
		local move_pos = self:CompassMove(maxd)
 		aitrace("Crash VB 2",true)
	end
	
end

I'm pretty much sure that self.squad_ai:CanJumpToPosition(vMovePos) in CompassMove is the problem. Since the bias is to own start position and the loop is sorted accordingly it won't crash most of the time as the position is on the map and valid. Under some circustances though the position is not reachable (off map I guess) and it will crash.

I debugged the loop with x/z coordinates and a crash looks like this :

AI1000 02:14 Crash VB C: 1 : -23.274101257324/-64.618804931641 - First iteration, CanJumpToPosition() = true
AI1000 02:14 Crash VB C2 Position has threat
AI1000 02:14 Crash VB C: 2 : -2.7715759277344/-114.11627960205 - Second iteration, CanJumpToPosition() = false
AI1000 02:14 Crash VB C: 3 : -2.7715759277344/-15.12133026123 - Third iteration, CanJumpToPosition() = false
AI1000 02:14 Crash VB C: 4 : 46.725898742676/-134.61880493164 - Fourth iteration, CanJumpToPosition() crash as x/z is most likely off map.

#17 ArkhanTheBlack

ArkhanTheBlack

    title available

  • Members
  • 814 posts

Posted 05 April 2008 - 12:45 PM

Orks and tau crash too.

Well I suspected that somehow. That means Relic/Iron Lore broke this function in SS since it did never happen in DC.

I think I'll deactivate the CompassMove function for now since it has a high chance of getting an invalid position. However, I'll reactivate the Necron Lords jump attack code. Since the crash isn't restricted to Necrons, I would have to completely deactivate the jump code for all races to get a no crash guaranty. But since the other jump functions use valid positions as a basement and only add slight deviations, I think it's okay to let them live.

However, Relic should be informed about that issue. Although I don't think they will fix it, it doesn't hurt to ask.

#18 LarkinVB

LarkinVB

    title available

  • Members
  • 1,488 posts

Posted 05 April 2008 - 01:04 PM

I think the jump code can stay as is, just remove CompassMove() from MoveToDisengage().

It is sad that we don't have the map border coordinates so we can test for a valid position.

EDIT :

I slightly tweaked CompassMove() and had no crash in three testgame setups which crashed reliable before. I limted the loop to the three positions in direction of start position and added back the path distance code before the CanJumpToPosition(). Tested with orks, tau and necron, forcing CompassMove() all the time

-- Check move positions
	for iLoop1 = 1, 3 do
	
		-- Check if we can jump to move position
		local vMovePos = aMoveDirections[iLoop1][3]
		
		if (cpu_manager.terrain_analyzer:GetPathingDistance(vSquadPos, vMovePos) >= 0 and self.squad_ai:CanJumpToPosition(vMovePos)) then
		
			-- Check for threat
			if (not cpu_manager.terrain_analyzer:HasThreat(vMovePos, 35)) then
				return vMovePos
			end
		end
	end

Edited by LarkinVB, 05 April 2008 - 01:55 PM.


#19 ArkhanTheBlack

ArkhanTheBlack

    title available

  • Members
  • 814 posts

Posted 05 April 2008 - 02:04 PM

No chance! The function terrain_analyzer:GetPathingDistance() is only stable if used after a successfull CanJumpToPosition check.

#20 LarkinVB

LarkinVB

    title available

  • Members
  • 1,488 posts

Posted 05 April 2008 - 02:12 PM

Remove terrain_analyzer:GetPathingDistance() then or put it at end of test.

I really ask myself why I do spend my time with endless test while you brush it aside with one remark.

I'm tired of this. Do whatever you like. Will not waste more time with this problem.

Edited by LarkinVB, 05 April 2008 - 02:18 PM.




Reply to this topic



  


0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users