Making Wesnoth less frustrating

Discussion among members of the development team.

Moderator: Forum Moderators

Post Reply
szopen
Posts: 631
Joined: March 31st, 2005, 12:51 pm

Post by szopen »

Jetryl wrote: Another adaptation of this would be some way to code in WML that if the player is trying to muscle his way through a level by a "vulgar display of power" (e.g. hiring well in excess of the standard power level required to beat the scenario), then at some point midway through the scenario, reinforcements will show up to attack the player.
OMIGOD, is this discussion about how to made a Wesnoth even more frustrating?

How the player can decide whether he is hiring more unit than required to beat the scenario without first beating the scenario? Moreover, wouldn't that be punishing those players, who played exceptionally well on previous levels, so they have a lot of gold and higher level units?

Besides, I think that frustration is caused by campaign designers, not by game itself. I was frustrated in TRoW for example not because of game mechanics (Well, i HATE skirmishers and those Saurian creatures. Skirmish is a very BAD idea imho) but because at some point I had to withdraw few levels back, and I never know whether i am prepared ENOUGH.

Just printing: you have only 100gp, while campaign designer thinks it is 200gp at minimum needed to won this level would be enough to somehow reduce my frustration (e.g. simple message stating "you should have XXX gp by this point" so I don;t had to restart the whole campaign anew to see if I can get better).
User avatar
allefant
Units Database Administrator
Posts: 516
Joined: May 6th, 2005, 3:04 pm

Post by allefant »

Seeing the arguments around resurrection, I think the way to add it would be this:

- on easy level, make the costs of resurrection low enough so players actually using resurrection will not run out of gold. So probably you could about just recall your "wounded" units in the next szenario. This would fulfill just what it is meant to do, be forgiving to stupid players who send their levelled units to the front and lose them all, where a good player would have tricked the AI and lost just a few cannon fodder units in the very same szenario. And that's probably how the szenario designer likely expected it when balancing anyway.

- on medium, balance the cost of resurrection so you pay just what the unit is worth. Probably this would be simply the unit's value as if you recruited it.. or maybe 50%-100% of that value, since you already had to pay for it when you recruited/recalled it. If you use resurrection or not would now just be a personal preference, you will lose gold by it, but not so much that you never can afford resurrection.

- on hard, add an additional penalty cost for resurrection, e.g. 20-40 gold. So now, resurrecting a unit always is stupid, since you simply waste gold. 120 gold for a L3 mage just means resurrecting it is a bad idea - you could recall/resurrect a lot of other mages for it. Essential, on hard, you have no resurrection (just the posibility, if you e.g. simply want to resurrect that one dwarf in TRoW and know you can afford it, then you may do so).

So in short, for medium/hard, resurrection wouldn't touch the gold balancing at all, since it wouldn't change it, or even make the game harder if you use resurrection. For easy, it might even aid with re-balancing, since you'd probably be closer to the amount of units the campaign designer thought you would have when balancing, than now (right now you have no levelled units left at all where the campaign designer thought you have at least 5 level 3 and 10 level 2 :P).

And of course, resurrection would need some additional changes, like tell in WML which units are never to be added to the resurrection list because of campaign-technical reasons (not much changes needed, i experienced only a few cases so far). And in the way this seems to be planned to be added, it might even be the other way around, so szenarios would explicitley specify what you could resurrect..
szopen
Posts: 631
Joined: March 31st, 2005, 12:51 pm

Post by szopen »

Allefant, once again: in TRoW e.g. Haldric is fighting with EVIL Liches, who are using necromancy to resurrection. This is evil and Haldirc does not understood that.

How you would introduce resurrection into that campaign? Somehow, if Lich resurrects it is bad and not understandable, but when we do it is ok?

IMHO from RPG point of view, not matter of benefits from adding it to game engine, it is just DISASTROUS. There is no longer need to keep some units just because you were emotionally attached to them. They are just meat you use, no longer soldiers you get attached to.

The best ideas on forum i saw were minimum gold and units histories. Though instead of giving freely player minimum gold, you could just say that this is minimum amount of gold you should have to win this scenario, period. This would aim at reducing frustration, while adding history of units (and maybe not just stats, but words like "he fought in underground battle for sceptre of fire" etc) would be adding rewards.
Rhuvaen
Inactive Developer
Posts: 1272
Joined: August 27th, 2004, 8:05 am
Location: Berlin, Germany

Post by Rhuvaen »

I don't think the resurrection idea solves the frustration problem in the first place, because the unit still dies and the player doesn't get to use it until the next scenario - the initial frustration of losing the unit is the same.

I also think that even easy mode should reflect and teach the game of Wesnoth, not some distorted version of it. If a player gets used to using his units recklessly on easy to win a big early finish bonus, he will never develop the skill needed to progress to an intermediate and advanced player.

An interesting choice in playing BfW currently is how aggressive can you afford to be. There is a fine balance between pushing your level 2's and 3's to solve situations quickly, and preserving them. I think this is quite central to the game! There are scenarios when you will have to make sacrifices in order to survive. High level units are like queen pawns that sometimes you have to give away to win. Such scenarios are inherently frustrating, but that is part of the experience. Campaign designers didn't have to write such scenarios in the first place :).

I think downscaling the XP needed to level in easy mode is the best approach suggested yet: it will give the player a much better chance to prevent those units that he wants to level from dying, which is a far more common frustrating experience than the death of a level 3 unit, that in many scenarios can be avoided. I know that when I started the game, I found levelling units that weren't front-line fighters the hardest thing to do.

Also, giving an extra castle hex might be a simple way to adjust easy mode without being too unbalancing - the player just gets a quicker start, which can help in many ways.

I think Jetryl's ideas of scalable foes might be interesting in one or two scenarios for all difficulty levels to bleed stronger players more, but care has to be taken that the time limit doesn't become impossible when big numbers of units are involved on all sides. But I wouldn't make this a regular feature.
User avatar
allefant
Units Database Administrator
Posts: 516
Joined: May 6th, 2005, 3:04 pm

Post by allefant »

How you would introduce resurrection into that campaign? Somehow, if Lich resurrects it is bad and not understandable, but when we do it is ok?
Yes, since we do it with white magic :) I.e., the gods make the dead one to live again, as if never was dead. And there would be lots of other explanations as well not even involving actual resurrection, some already were named in this thread.
IMHO from RPG point of view, not matter of benefits from adding it to game engine, it is just DISASTROUS. There is no longer need to keep some units just because you were emotionally attached to them. They are just meat you use, no longer soldiers you get attached to.
Not in the way I see the game.. I always try to lose no units, and even try to avoid confusing the AI with cannon fodder units - so some of the units I'm attached to always die. Now with resurrection, I personally like the game much more, since I know I can get them back.
I don't think the resurrection idea solves the frustration problem in the first place, because the unit still dies and the player doesn't get to use it until the next scenario - the initial frustration of losing the unit is the same.
Well, it solves the frustration of knowing the unit is lost and dead. But I agree, resurrection wouldn't really solve the original problem resulting from the currently unbalanced campaigns.. it just would work around it in easy mode, since you don't lose your levelled units which you need later. It would more solve another sort of frustration, quite independent of the first one..
User avatar
Jetrel
Posts: 7242
Joined: February 23rd, 2004, 3:36 am
Location: Midwest US

Post by Jetrel »

szopen wrote:
Jetryl wrote: Another adaptation of this would be some way to code in WML that if the player is trying to muscle his way through a level by a "vulgar display of power" (e.g. hiring well in excess of the standard power level required to beat the scenario), then at some point midway through the scenario, reinforcements will show up to attack the player.
OMIGOD, is this discussion about how to made a Wesnoth even more frustrating?
IF you had read my post, that was intended to deal with the two balance issues that are truly unique to campaigns. RTWGDP - read the whole post and don't skim anything, or don't bother responding.
Rhuvaen wrote:I don't think the resurrection idea solves the frustration problem in the first place, because the unit still dies and the player doesn't get to use it until the next scenario - the initial frustration of losing the unit is the same.
It is not the death of the unit that frustrates, it is the irretrievable loss of the time the player has put into it that frustrates. This is why players like me, who save-load their way into space, never do so in single-player matches against the computer. I don't care about high-level units in single-scenario matches because I just got them, and can replace them (this is also intrinsically tied to me typically playing such matches, and most multi, at 50% xp).
Rhuvaen wrote:I think downscaling the XP needed to level in easy mode is the best approach suggested yet: it will give the player a much better chance to prevent those units that he wants to level from dying, which is a far more common frustrating experience than the death of a level 3 unit, that in many scenarios can be avoided. I know that when I started the game, I found levelling units that weren't front-line fighters the hardest thing to do.


I think that is a good idea, too - something like 70-80% on easy mode would really help.
User avatar
Jetrel
Posts: 7242
Joined: February 23rd, 2004, 3:36 am
Location: Midwest US

Post by Jetrel »

Another point, regardless of whether resurrection is or is not a good idea:

Our AI may, in Dave's own words, be quite bad at a number of things. There is one task that it excels at, though, and that is at, given a choice of units to attack, striking the one that has the best chance of being put down.

This is really hard on players, because the AI often does this with little regard of the overall strength of the unit - I haven't looked at the code, but I suspect it simply looks at chance to hit, and how much damage it does versus how many hitpoints the target has.

This leads to the following situation, which is really a bane: Lets say you're playing HttT, and have, in your front line, an elvish champion, an elvish marshal, and some elvish fighters. Let's also say the elvish champion has only 30 hitpoints, from attacking an enemy in the previous turn, thus having slightly less than the fighters around him. The ai, barring a slight random influence that would make it choose someone else, will jump on that guy with everything it has.

It's a great strategy, at least for killing the elvish champion. In fact, it's TOO GOOD. It's really mean to that newbie player to pick on the one unit he cares about in that front line. Interestingly, it may well be bad in some respects, since the champion can deal a lot more damage than a fighter. I'm guessing that the ai simply checks to see if it can, or has a reasonable chance of getting killed in the fight, and then moves based on that.

In many cases, these may be second-or-third-level units doing the attacking, partly based on the fact that they won't get killed. One of the things that is most grievous about this happening is that, in the minds of most players, 30 hitpoints should be a good shield against getting killed in one turn.


My suggestion - Make the AI attack the "apparently" weaker units - not in terms of current health, but in terms of damage capability and level. The realism argument is simple - big, tough units are scary, and the average soldier on a battlefield is a coward. He'd rather fight a calf, than a wounded bull.

Just make it so that the AI does not "seemingly" go out of it's way to attack weakened, but "valuable" units, where value is measured in the xp currently possessed by the unit, both currently, and what it needed to gain its current level.

Make it so that, even if attacking the unit would ostensibly be a good idea, the ai will attack it no more than once with his units - even if he attacks it at all. The likelihood of the ai attacking a unit should be inversely proportional to the current "full experience" of that unit. Note that this is when given a choice of units to attack - if there is only one choice, then the player is doing something really wrong, and deserves to have his hands slapped. Also, make it so that the ai deliberately throws itself against units that can sponge up the damage.


The easiest way to implement this would probably be a modified version of the current AI which would be used when the difficulty level is set to easy. I might be a taker on that project, after I get some sprite work done.
szopen
Posts: 631
Joined: March 31st, 2005, 12:51 pm

Post by szopen »

Jetryl wrote: IF you had read my post, that was intended to deal with the two balance issues that are truly unique to campaigns. RTWGDP - read the whole post and don't skim anything, or don't bother responding.
Jetryl, I have read the whole post. I wrote that this idea means that a) better players will be punished, and b) this will add more frustration for players like me.

If I would be playing campaign, how can I know whether I recruited JUST ENOUGH units? Only when I won I know that maybe I recruited too many units.

So, while this would fix the problem of "maximum power level", this would add MORE frustration and create NEW problems.

PS: I ALWAYS read the whole posts. with three crosses on head I learned to do that more than ten years ago.

Semi-flames EDITED out.
Last edited by szopen on June 28th, 2005, 12:05 pm, edited 1 time in total.
Invisible Philosopher
Posts: 873
Joined: July 4th, 2004, 9:14 pm
Location: My imagination
Contact:

Post by Invisible Philosopher »

Moderator's note: keep down the semi-flames; it's hard enough understanding others' words and the thoughts behind them, and trying to explain one's own thoughts, even without them and the feeling of hostility (real or imagined) that they spread.
Play a Silver Mage in the Wesvoid campaign.
ott
Inactive Developer
Posts: 838
Joined: September 28th, 2004, 10:20 am

Post by ott »

Jetryl wrote:There is one task that it excels at, though, and that is at, given a choice of units to attack, striking the one that has the best chance of being put down...I'm guessing that the ai simply checks to see if it can, or has a reasonable chance of getting killed in the fight, and then moves based on that.
Actually, the aggression parameter of the AI controls this behaviour. See the Wiki for a description of how it works: http://wesnoth.slack.it/?AiWML

In addition, the attack depth parameter is also relevant. Both of these parameters can be tweaked depending on the difficulty level, and attack depth already varies in the mainline campaigns, with common values of 3 or 4 on Easy and up to 6 on Hard.
My suggestion - Make the AI attack the "apparently" weaker units - not in terms of current health, but in terms of damage capability and level.
You are saying we should use aggression values of -1 to 0 for the AI, instead of the default 0.5 or the common 1. I agree that in HttT on Easy mode we should not be using aggression 1, it isn't much fun for new players.
This quote is not attributable to Antoine de Saint-Exupéry.
Dave
Founding Developer
Posts: 7071
Joined: August 17th, 2003, 5:07 am
Location: Seattle
Contact:

Post by Dave »

Yeah I had actually quietly withdrawn from this thread, deciding that for now my solution is to use AI parameters to make the AI weaker on 'easy'.

And yes, the AI is very predatory to units it thinks it can kill. How it actually works is by looking at each of your units in its range, and seeing all the combinations of units it can attack that unit with, up to combinations of 'attack_depth' size.

Each combination of attacks is known as an 'attack option', and the AI will calculate a slew of statistics for each attack option, and then rank them.

One of the important statistics is the chance the AI has to kill that unit. It then multiplies the chance it has to kill, by the value (cost) of the unit.

If the AI has a 20% chance to kill an Elvish Champion, its eyes light up: an Elvish Champion's cost is listed at 100, so 100*0.2 = 20 -- that's better than a 100% chance to kill most 1st level units.

Other factors such as doing some damage to a unit but not killing it, as well as how much damage the AI will take in retaliation, are also considered, but actually getting to kill a unit is king.

After all, this is an AI, and AIs are dumb as toast at most things. They can get a unit down to 2 hp, but then a good player is likely able to pull out some tricky maneuver and get their unit out of danger and to healing on the next turn. But the chance to kill a unit here and now, something the AI is actually good at calculating, and that's what it'll do.

Taking the AI aggression down is not the solution imo. An AI with an aggression of 1.0 is actually rather dumb, since it charges stupidly into combat. 0.0-0.5 is better imo.

Aggression is more commonly used to balance flavor, rather than difficulty though. Charging undead might have aggression of 1.0. Orcs perhaps 0.7. Conservative humans might have 0.3 or 0.0.

The main parameter we can use at the moment is the attack depth. Reducing it all the way to 1 or 2 on easy level. That way, if you have a red mage with 2 hp left, sure, the AI will still kill it. But if you have a champion with 30, the AI will only analyze attack possibilities with 1-2 units, decide it has little or no chance to kill, and pursue attacking a different unit instead.

Making the AI worse on easy level, and then get smarter on harder levels is the best way to do difficulty levels, where possible, imho. I previously have shyed away from doing this, since I didn't think the AI was smart enough to dumb it down, but now I realize that relative to a new player, the AI is actually rather smart.

An attack depth of 1 combined with an aggression of 1.0 makes a very nicely dumb AI -- it will charge mindlessly into combat, not really knowing who to attack, and will probably spread the blows around alot rather than concentrating on one poor unit.

David
“At Gambling, the deadly sin is to mistake bad play for bad luck.” -- Ian Fleming
ott
Inactive Developer
Posts: 838
Joined: September 28th, 2004, 10:20 am

Post by ott »

Dave wrote:An AI with an aggression of 1.0 is actually rather dumb, since it charges stupidly into combat. 0.0-0.5 is better imo.
Which is why I brought up the example of HttT, which uses aggression=1.0 in 20 of the 42 occurrences of the parameter. Only 7 times is an aggression parameter less than the default 0.5 specified, and 15 times between 0.6 and 0.9.
relative to a new player, the AI is actually rather smart.
Yes -- your AI is a worthy foe for all but very good players. Congratulations on this achievement!
This quote is not attributable to Antoine de Saint-Exupéry.
User avatar
Jetrel
Posts: 7242
Joined: February 23rd, 2004, 3:36 am
Location: Midwest US

Post by Jetrel »

Dave wrote:And yes, the AI is very predatory to units it thinks it can kill. How it actually works is by looking at each of your units in its range, and seeing all the combinations of units it can attack that unit with, up to combinations of 'attack_depth' size.

...

Other factors such as doing some damage to a unit but not killing it, as well as how much damage the AI will take in retaliation, are also considered, but actually getting to kill a unit is king.
Strikingly close to what I suspected. :o

And simple, but very effective, given how limited the player is in actions.
Dave wrote:Making the AI worse on easy level, and then get smarter on harder levels is the best way to do difficulty levels, where possible, imho. I previously have shyed away from doing this, since I didn't think the AI was smart enough to dumb it down, but now I realize that relative to a new player, the AI is actually rather smart.
Some parts of the AI, like overarching strategy, are lacking. But most levels have been designed to cope with this, and do so very well. On most of our levels, the very primitive "seek and destroy enemy leader/collect villages" default behavior works very well. I'm assuming that's basically what the units do, if they have no choice of attacking (not counting the grouping behaviour that was added).

Ironically, it almost seems to a newbie player that the AI does have complicated strategies in motion, and is specifically planning, across turns, to target and destroy specific units, or to seize certain terrain.

It took me some time to realize that, on the Isle of Anduin, the AI was not scripted to mass its units into the central mountains, that instead it was only doing so because my units were right next to those mountains on the plain, and it was doing a primitive grab of better terrain within attack range. It took me some time, in fact, to realize that the AI was not prescripted at all.

I think this is a great solution, which, though it might not solve the problem entirely, will take a big darn bite out of it.
Invisible Philosopher
Posts: 873
Joined: July 4th, 2004, 9:14 pm
Location: My imagination
Contact:

Post by Invisible Philosopher »

Jetryl wrote:Some parts of the AI, like overarching strategy, are lacking. But most levels have been designed to cope with this, and do so very well.
[off-topic] Unfortunately when an entirely different sort of AI behavior is desired by the designer, complex hacks are often needed to approximate it. Maybe I'll try to write a customizable AI again sometime.... [/off-topic]

The AI's short-range competence has a range of almost a third the width of many maps. Its long-range strategy (usually not even applied when enemies are close to it) is pretty simple but spreading out with scouts, getting villages, and going towards the enemy leader covers most of the useful behaviors for an AI whose goal is to defeat you without delay. Its shortsighted perfectionist behavior at short range can sometimes be a strategical failure, although Wesnoth's gameplay/maps are small enough that such an occurence is rare.
Play a Silver Mage in the Wesvoid campaign.
User avatar
Temuchin Khan
Posts: 1800
Joined: September 3rd, 2004, 6:35 pm
Location: Player 6 on the original Agaia map

Post by Temuchin Khan »

In my opinion, the best of the ideas suggested in this discussion are:

(a) scalable enemy forces, such that the AI will recruit less if your minimum forces are less than what the scenario designer expected.

(b) autosave at the beginning of the turn rather than the end, to encourage the player to experiment with different tactics and strategies {instead of just hope for a more favorable string of blind luck}.

(c) adjusting the attack depth and aggression of the AI for easy level.

(d) lowering the experience needed to advance units on easy level.

Together, these steps would go a long way toward making easy level easy, without changing the flavor of the game (as purists fear some of the other proposals would do). What chance is there of seeing these implemented?
Post Reply