dkfans / keeperfx

Open source remake and Fan Expansion of Dungeon Keeper.
https://keeperfx.net/
GNU General Public License v2.0
746 stars 77 forks source link

about level 15.Woodly Rhyme #166

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
I don´t know if this is really an Issue, but it has changed a lot compared to 
the original version so I want to know.

In the 15th stage: Woodly Rhyme, you have some empty floor already excavated; 
There are two enemy keepers and a little heroes fortress in the middle with 
neutral ghosts, neutral skeletons, two treasure rooms and tons of secret items 
guarded by doors and lots of powerful traps.

In the original version (I played this level three times and this always 
happen); at 20-30 minutes (Perhaps more), a Lord of the land and some samurais 
(level 10) attacks the blue keeper.

When the heroes destroy the heart, a message appear saying something like 
"seems that a rival keeper has been destroyed".

Then he goes over the green keeper but the Lord of the land dies there.

When I am near over the little heroes fortress and claiming the floor, some 
waves of heroes appear; I don´t remember well, but I remember two of three 
waves and finally a lord of the land (with others heroes) going after me.

Then, normally I go all the way against the green Keeper or I use the 
"armageddon" spell and thus destroy all his creatures.

Now, With the new version (and night build KeeperFX r872 patch, dated 
2013.11.11) the level 10 heroes attack the green keeper first (instead the blue 
one); when he is destroyed a message appear saying something like "an enemy 
keeper is weak, destroy him" (blue keeper didn´t reach max creatures, but me 
neither).

No more heores spawned (as far as I know, at least no hero attacks me even when 
I conquer the fortress) 

Lord of the land Fights blue keeper and died (killing some creatures in the 
process), and then I go against the Keeper with my 28 vs his 14 creatures and 
win easily.

I don´t know if this is a issue or is deliberate, but in my opinion I prefer 
the first version, because you have to fight heroes if you invade their 
fortress (buying time for the green Keeper) and then you need to destroy the 
green keeper (as it is further away from you he has more time to grow a little 
his forces) in his dominion or use armageddon and kill him.

With this version I just fight once, and versus an enemy too weak.

Original issue reported on code.google.com by tempri2...@gmail.com on 11 Nov 2013 at 4:07

GoogleCodeExporter commented 9 years ago
Actually, it's not that repetitive.

On this level, both blue and green keeper start with similar conditions - 4 
sides of gems and similar amount of gold, portal and heart.

Knight is on the level from start, waiting in the hero fortress.

So which player is defeated first, depends on which player will dig to the 
water first. And this is random - blue player may dig to it if he decides to 
start "attack plan", and green player may dig to it with "attack plan" and with 
"dig for far gold".

The decisions computer players will make are a bit random, and are also 
dependent of the kind of creatures they'll get (which is also random).

Blue player is closer to the water, so he has bigger chances of digging there 
by mistake when placing rooms. Green one may decide to dig there if he's low on 
gold - which is unlikely, but not impossible.

In summary - I'm not sure if we should re-design this level in any way.

Original comment by mefistotelis on 11 Nov 2013 at 7:08

GoogleCodeExporter commented 9 years ago
I see; so they can dig in "random-time"; in one play the blue keeper dig near 
water at 10 minutes and in other play he will not do it until 50 min, just 
random. Right?

I think The problem is how the Lord can win the level by himself; I barely had 
to fight to win the level.
<-- Maybe I just had bad luck this time.

What about those heroes who attacked me in the original? I remember like 3 or 4 
fairys (level 4 I think) going after me in the first wave; and see the "rocks 
falling" and appearing some more heroes in the fortress.

If I can do a suggestion; Do the keepers wait a little more time before start 
digging so when the green keeper start doing it, he is attacked and destroyed 
by the heroes; then the other keeper can dig and attract them being strong 
enough to repel the attack.

Then you can take advantage of the situation and attack the blue keeper with 
their forces slightly weakened (but not as much as fight against 14 low level 
creatures).

<-- Maybe this can happen randomly.

Or maybe give the heroes more forces to eliminate both keepers and then you 
must face the remaining level 10 heroes; the game gives you the time to create 
your army meanwhile the heroes are destroying both keepers; so seem that the 
heroes are on a crusade to eliminate all the guardians of the land (successful 
until they fight you).

Just a pair of ideas; in any case, thanks for the reply, and good job with 
KeeperFx.

Original comment by tempri2...@gmail.com on 11 Nov 2013 at 10:14

GoogleCodeExporter commented 9 years ago
I've played this level a few times by now, and even without the area damage, 
this level plays itself. Both keepers quickly dig towards the center, both die, 
leaving you with only a few heroes.

Once you dig to water, 1-3 damaged heroes will walk into your dungeon, die, and 
you have conquered the realm. This really needs a balance tweak. Either stop 
the computer players from digging towards the water so soon in the game, or 
stop the heroes from attacking straight away, or give the computer players a 
boost in power by starting them off with a few creatures and a bit of dungeon.

Right now this is a lost level.

Original comment by Loobinex on 19 Jun 2014 at 11:22

GoogleCodeExporter commented 9 years ago
Since this is the level where Armageddon makes it's first appearance, the final 
battle should be epic. There are 2 ways to fix this:

1. Both keepers should not dig outside their dungeon which has ample space and 
gems.
2. The 3 heroes could be spawned via hero gate, the action point being around 
the perimeter of the player's dungeon. This would prevent them from killing 
hasty enemy keepers.

Original comment by gaschamberblues on 26 Jun 2014 at 7:41

GoogleCodeExporter commented 9 years ago
If you look at the script, the point of this level is for the heroes to attack 
and almost kill one of the keepers: There are text messages in the script 
mentioning the near defeat of a keeper to you, and urging you to attack the 
weakened one.

What needs to change, is that the Keeper should win, not lose to the heroes. 
And certainly the heroes should not kill both Keepers. So there are a few other 
alternatives:

1. Make the heroes weaker
2. Make the keepers dig outside their dungeon later, when they are stronger
3. Give the keepers a head start(some rooms or creatures) so they are stronger 
when they dig out.

I would prefer option 2, a change in AI.
For myself I have edited the level and given the keepers some rooms and 2 
spiders to start out with, and turned imprisonment on. It now plays out ok, as 
the samurai are easily frozen.

Original comment by Loobinex on 26 Jun 2014 at 10:24

GoogleCodeExporter commented 9 years ago
That sounds about right especially since both keepers have a creature limit of 
40 each. That would be a difficult battle at the end.

I agree that 2 is a good option. The blue keeper would dig into my dungeon 
about 15 minutes into the game in 3/4 tries which is way too early. One keeper 
should do this early and die while the other should turtle until later on.

Original comment by gaschamberblues on 27 Jun 2014 at 12:13

GoogleCodeExporter commented 9 years ago
I think I did rebalanced the heroes on the map in 0.4.5, but I'm not entirely 
sure.. will check dates on map files.

Making heroes dig later might be a bit troublesome. We may reconfigure the gold 
digging to make it activate later, but computer players may still decide to 
build a room on the edge of water.

The question is, how long should the computer player wait exactly?
(best answer would be in game turns - this is how the game counts time)

Original comment by mefistotelis on 27 Jun 2014 at 7:55

GoogleCodeExporter commented 9 years ago
I don't think building a room near water is something to worry about. The 
dungeon hearths are quite far from the waters edge, by the time their dungeon 
is big enough to breach water they should be strong enough to defeat the 3 
strong heroes.

I've played this level quite a few times to see the behavior, and every time 
the problem was the keepers trying to dig to the gold on the other side of the 
water while they still only low level creatures.

How long should the CP wait? Until he is strong enough to beat the heroes,... I 
don't know when that is, but if you tell me which parameter to tweak I'm happy 
to run simulations until I get a proper value.

Original comment by Loobinex on 27 Jun 2014 at 8:53

GoogleCodeExporter commented 9 years ago
One interesting observation is that the blue keeper tries to dig to where the 
gold to the west of your heart *was*. i.e. he still digs there when you've 
already mined and stored all of it as if expecting to find something unless you 
reinforce the walls. This shouldn't be the case, should it? This happened 3/4 
times, the 4th was when I reinforced all walls.

How about they wait until creature limit (40) has been reached?

Original comment by gaschamberblues on 27 Jun 2014 at 3:05

Loobinex commented 8 years ago

Since KeeperFX v0.4.6 r1788 patch, git e5d13b3, dated 2015-12-08 02:00:00 the keepers are more effective, but they still occasionally both die before the player does anything.

Adding this to the level script fixes the map:

SET_COMPUTER_PROCESS(PLAYER1,"DIG TO CLOSE GOLD",0,5000,4000,25,30)
SET_COMPUTER_PROCESS(PLAYER2,"DIG TO GREEDY GOLD",0,5000,4000,25,30)

Sometimes a single keeper dies, sometimes both live, but they never both die.

mefistotelis commented 8 years ago

You've set to select 25 slabs of gold vein in one run of the process; isn't that a bit too much?

Note that original values are:

SET_COMPUTER_PROCESS(PLAYER1,"DIG TO CLOSE GOLD",0,30999,500,5,71)
SET_COMPUTER_PROCESS(PLAYER2,"DIG TO GREEDY GOLD",0,40999,400,7,900)
mefistotelis commented 8 years ago

If your aim is to make computer players dig only to nearby gold, then increasing value 3 and decreasing 5 is enough to achieve that.

Loobinex commented 8 years ago

I can't say I fully understand the consequences of changing the values, as documentation is understandably limited. I took these values to try to get the computer player to quickly dig out the local gold, and only dig out the local gold for roughly the time he needs to get strong enough to just about win against the 3 heroes.

My idea was start quickly, just select a lot of gold blocks, and don't expand to the other gold on the map for quite some time. I tested with some values and the above got me the results I was after, but I don't understand the downside of selecting many slabs at once.

I have now retested with these values and green almost always dies now:

SET_COMPUTER_PROCESS(PLAYER1,"DIG TO CLOSE GOLD",0,30999,4000,5,30)
SET_COMPUTER_PROCESS(PLAYER2,"DIG TO GREEDY GOLD",0,40999,4000,7,30)

Any suggestions on which values to test with?

mefistotelis commented 8 years ago

I can't say I understand fully the values too, I only know them from the programming perspective, not from the game balance perspective.

anyway, some description of values: 1 - priority. This should be 0, as it is increased automatically every time computer player wants to do something and stops due to lack of gold. Higher value puts the process higher in a queue when computer does many things at once. 2 - max gold amount which allows triggering the task. Computer player will consider digging for gold only if his current net gold amount (total gold less creatures pay) is below that value. 3 - max dig distance grow divider. In general the longer the game lasts, the further computer player is allowed to dig. If this value is set to 1200, then computer player is allowed to dig one slab further every minute. Consequently if the value is 12000, computer is allowed to dig one slab further every 10 minutes. 4 - amount of gold slabs to select for digging in one run of the process. This amount may be low, as computer will select more in subsequent runs of the process. 5 - initial max dig distance. Amount of slabs away computer player can dig at start of the level. Later the distance is gradually increased with speed based on the value of param 3.

Loobinex commented 8 years ago

That helps, but I think it conflicts with the information in the scripters guide and your comments in the config. I've been running simulations again for the last two hours and I'll also have to test a bit more, Green still does not behave as I want.

Looking closely, what I want is for blue to not dig out for more gold, because blue has a good chance to breach the water in building his dungeon. Green may dig out when he has roughly 24 creatures as at that point he will usually survive the fight with less than 14 creatures (triggering the objective message). The map has a portal speed of 500, so this is about 12000 gameturns before digging out. Green has been defined as a [computer1] and thus has both 'Dig to Gold' and 'Dig to Greedy Gold' processes. What makes it very annoying, is that the distance from the nearest room is taken, so it makes a huge difference how the dungeon layout is build.

Unclear to me are:

2) Your description diametrically opposes the script guide. You say the process is only used if gold is below that amount, the guide says "Minimal amount of money to use the specific process". So how exactly is determined which gold process is used,... and how does tweaking one affect the other.

4) But what is the effect on gameplay? This value differs between gold processes so I suppose it matters,... with 20 gameturns per second even with a value of '5' this could mean the entire gold vein is selected in one or two seconds, but does that mean it is,.... My guess was that as there's only one action per game turn, the CP can change it's mind what to do every gameturn and may decide to not continue selecting after the first batch. So I figured if you're gonna dig the gold, just select all of it straight away, that shouldn't hurt.

5) Here's also some conflict between documentation, config and your comment here,.. the documentation says it is in squares and the max value is 84. The config has values beyond that.

mefistotelis commented 8 years ago

Ok, I will try to prepare one version that is close to current implementation.

In general, I have doubts on whether the distance is computed correctly; it is a wallhug distance, so may be above 84; but currently the slabs are counted in a bit criptic way. I will look into it first.

Loobinex commented 8 years ago

I've been doing a lot more tests - really time consuming because even with the same values the behavior differs widely between games. It does seem to me that both gold processes need to be reconfigured for green, I've been having good results with these values:

SET_COMPUTER_PROCESS(PLAYER1,"DIG TO CLOSE GOLD",0,50000,10000,5,25)
SET_COMPUTER_PROCESS(PLAYER2,"DIG TO GOLD",0,50000,800,7,15)
SET_COMPUTER_PROCESS(PLAYER2,"DIG TO GREEDY GOLD",0,50000,800,7,15)

However, I do notice that training suffers greatly from lack of gold. If you plan to fix gem mining before releasing the next version it might be best to wait and retest after that.

walt253 commented 9 months ago

I believe this issue is solved? Anything still going wrong with that map?

Loobinex commented 8 months ago

Unlike what I said a few years back, blue does occasionally die now through opening up to water through dungeon building.

walt253 commented 8 months ago

Unlike what I said a few years back, blue does occasionally die now through opening up to water through dungeon building.

Ok and I guess this is an issue cause if a player is (un)lucky then blue die too early?

Loobinex commented 8 months ago

Unlike what I said a few years back, blue does occasionally die now through opening up to water through dungeon building.

Ok and I guess this is an issue cause if a player is (un)lucky then blue die too early?

yes, quite often now blue dies early in the level.

walt253 commented 8 months ago

Unlike what I said a few years back, blue does occasionally die now through opening up to water through dungeon building.

Ok and I guess this is an issue cause if a player is (un)lucky then blue die too early?

yes, quite often now blue dies early in the level.

I think it can be solved if you spawn the Knight party with the job to defend location so they don't go for any player opening on the water, but then it will also change how the map play for the player. 🤔

Also I assume you'd rather fix blue behavior of digging into the water. 🤔

Loobinex commented 8 months ago

Well, blue digging into the water too soon. The map is designed for him to dig into the water eventually, for the knight to seriously hurt the keeper but not kill him, so the player has a window to exploit.