.com.unity Forums

.com.unity Forums (http://forum.shrapnelgames.com/index.php)
-   Dominions 3: The Awakening (http://forum.shrapnelgames.com/forumdisplay.php?f=138)
-   -   Bug: Bug Thread: Discussion (http://forum.shrapnelgames.com/showthread.php?t=30593)

thejeff July 22nd, 2010 07:16 AM

Re: Bug Thread: Discussion
 
I can't look at the turn right now, but when you say by himself, there's no one, including enemies near him when he casts bless?

In my tests, targeting was the problem. Bless would target any unit as long as the AoE in its tests included unblessed sacreds. Since the AoE spreads randomly it doesn't always include the same squares and the actual cast might not cover any actual sacreds.
This isn't necessarily a bad approach. If a non-sacred is between 2 groups of sacreds, targeting him might actually cover more sacreds than aiming for any of the actual targets.

RadicalTurnip July 22nd, 2010 09:34 AM

Re: Bug Thread: Discussion
 
It's rare, but this can happen, I believe the bless spell hits squares randomly and can miss the square it was actually cast in. Not sure that it's a bug, you may have just been unlucky.

thejeff July 22nd, 2010 10:22 AM

Re: Bug Thread: Discussion
 
I'm pretty sure the target square is always hit. My testing never showed that happening. The debug log will tell you which square was targeted.
I won't get a chance to look at this one until this evening.

rdonj July 22nd, 2010 02:24 PM

Re: Bug Thread: Discussion
 
This has happened to me numerous times, particularly noticeably with hinnom/ashdod. I've never had it happen with a sidhe lord, funnily enough. But it's happened enough with hinnom/ashdod that I always script them to bless twice now in the early game....

Squirrelloid July 22nd, 2010 03:52 PM

Re: Bug Thread: Discussion
 
Quote:

Originally Posted by thejeff (Post 752567)
I can't look at the turn right now, but when you say by himself, there's no one, including enemies near him when he casts bless?

In my tests, targeting was the problem. Bless would target any unit as long as the AoE in its tests included unblessed sacreds. Since the AoE spreads randomly it doesn't always include the same squares and the actual cast might not cover any actual sacreds.
This isn't necessarily a bad approach. If a non-sacred is between 2 groups of sacreds, targeting him might actually cover more sacreds than aiming for any of the actual targets.

There is a single friendly unit in the combat - the caster. (Kinnara thug raiding Caelum PD).

There are non-sacred enemy Caelum PD infantry next to him, but why god why would he target an enemy unit with a spell that only effects allied sacreds? Targeting enemies with bless would surely also constitute a bug.

Anyway, with only one allied sacred (himself), the best way to maximize coverage is obviously to target himself. Its kind of inexcusable that he doesn't. 100% precision is supposed to mean he never misses - what good is that if the targeting behaves inappropriately.

chrispedersen July 22nd, 2010 05:00 PM

Re: Bug Thread: Discussion
 
I believe (but do not know) that dominions applies a standard template on Aoe effects.

I believe (but do not know) that it will run through target squares and see how many units are withing the Aoe without considering that template. It uses the first square with the highest number of targeted units.

It then casts the spell and the Template is applied which results in a miss.

Sometime ago I worked on determining what the template was. I dno't ahve the results to hand.

However suppose for example the AoE was 4. the template may result in something like this:
.X1
XTX
.X
where X is the template applied effects, T was the target square and 1 is where the caster is standing when he desired to be blessed.

Playing mictlan I need to bless a lot - I almost always bless twice due to the frequency of units being 'missed'.

thejeff July 22nd, 2010 06:04 PM

Re: Bug Thread: Discussion
 
Ok, that clinches it then.

Yes, the AI will target enemy units with a bless. The targeting AI doesn't know what the spell does. It simulates casting the spell at a variety of targets, evaluates the results and chooses the target with the best score.
The code doesn't think. It can't look at the situation and decide that there is only one sacred unit and therefore it should be targeted. It just tries a bunch of locations and uses the one that seems to work best. In some situations that might legitimately be an enemy unit. If he'd been surrounded by your sacred troops, targeting the center enemy unit might actually get more.

In this case the debug log shows us he targeted the pair of Caelum's troops at 7,19 while your priest was at 6,18:
Code:

best Blessing this far, 6 17 (136 pnts)
best Blessing this far, 7 19 (140 pnts)
spellscore, Blessing score 146 (boost 106 scorat 0)
Eval: Blessing score 162 (fat 0)
comp_castspell: eval Blessing  result 162
best spell so far  Blessing (score100162)
...
castspell: cnr83 spl754 (Blessing) vis0 x7 y19 spldmg1
vis 0 xvis 0
blastsqr: unr2241 x7 y19 aoe1 dmg1 eff10 spc1086373888 as10217 al9
  affectvic vic6186 hv1
hitunit 2241 6186 dmg1 spec1086373888 ba-1
  affectvic vic6188 hv1
hitunit 2241 6188 dmg1 spec1086373888 ba-1
blastsqr: unr2241 x6 y19 aoe1 dmg1 eff10 spc1086373888 as10217 al9
blastsqr: unr2241 x8 y19 aoe1 dmg1 eff10 spc1086373888 as10217 al9
blastsqr: unr2241 x8 y18 aoe1 dmg1 eff10 spc1086373888 as10217 al9
blastsqr: unr2241 x9 y18 aoe1 dmg1 eff10 spc1086373888 as10217 al9
blastsqr: unr2241 x7 y18 aoe1 dmg1 eff10 spc1086373888 as10217 al9
blastsqr: unr2241 x9 y19 aoe1 dmg1 eff10 spc1086373888 as10217 al9
blastsqr: unr2241 x6 y20 aoe1 dmg1 eff10 spc1086373888 as10217 al9
blastsqr: unr2241 x7 y17 aoe1 dmg1 eff10 spc1086373888 as10217 al9
  affectvic vic6184 hv0
hitunit 2241 6184 dmg1 spec1086373888 ba-1
blastsqr: unr2241 x8 y20 aoe1 dmg1 eff10 spc1086373888 as10217 al9

What isn't clear to me is how the evaluation is done. It may be that only 2 tries are made, at 6,17 and 7,19. More likely, I think, the log only shows those tries that produce the best results so far. If only one test is done per target, the results should be binary, either the priest was blessed or he wasn't. But they're not, 7,19 gets 4 more points than 6,17. If multiple tries are made, then self-targeting would have the advantage, since it would always hit. It's possible that multiple, but too few tries are made. It's also possible that something is wrong with the scoring algorithm.



chris: I don't know how the actual squares hit by a given AoE are selected, but it isn't as simple as a single template. If you check the patterns for a couple of casts of the same spell they are different. Just looking at the H2 blessings in Squirreloid's turn I saw 5 different patterns, no repetition. Either it's actually generating random squares by some algorithm or picking from a decent number of templates.

Squirrelloid July 22nd, 2010 06:24 PM

Re: Bug Thread: Discussion
 
Surely the AI should know which targets can be effected by a spell its casting? I mean, it doesn't cast 'effects only enemies' spells on your own troops, nor does it drop its fireball right on your guys right in front of it even though its going to hit a lot more often that way.

Surely if it knows who enemies are, it knows who friendlies are. Blessing only affects friendly units. It shouldn't even look at enemy units for targetting it.

thejeff July 22nd, 2010 07:04 PM

Re: Bug Thread: Discussion
 
Handled differently, I think. The targeting may just try every unit within range. Or maybe a random subset.
The evaluation distinguishes. For damage spells, I believe, damage done to the enemy boosts the score and damage done to your own reduces it.
So, in most cases it doesn't matter who the actual target is. What matters is who is affected. It won't target clumps of your troops with damage spells because that isn't effective. Many of your own get hurt and few or no enemies.

Much of this is guess work. I can see in the debug log that it does target units from both sides. I can see that an evaluation is done. I don't know how it picks the targets to try or what factors into the evaluation. It does look to me as if something is sketchy in the blessing evaluation, but I don't know enough of the details to say.

It would be easy to mod a workaround for this. Just add a H1 Self-Bless spell with AoE 1. Or change the current H1 Bless to AoE 1, but that would make it much harder for nations with only H1 priests to use sacred troops. I'd like to see the Self-Bless added to CBM.

BTW: one quick caution on casting bless twice to avoid this. If the first one works, the AI will choose another spell to cast. Most of the time this will just be some added fatigue, which is still can be problematic for a SC/thug, but I've also had calamities like shockwave thugs casting Ironskin.

chrispedersen July 24th, 2010 02:02 AM

Re: Bug Thread: Discussion
 
In the nations I have played I have never seen the AI not cast bless twice if scripted. And I've done it *thousands* of times.

Someone wrote a little mod for just this purpose. Bless cast on caster, and then chained a regular bless.

I do think that bless is screwy.

By the way .. anyone notie that darkness in cave citadels is back working?


All times are GMT -4. The time now is 08:47 AM.

Powered by vBulletin® Version 3.8.1
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©1999 - 2025, Shrapnel Games, Inc. - All Rights Reserved.