Confidence explained

Talk about anything related to Unvanquished.
User avatar
Viech
Project Head
Posts: 2139
Joined: Fri Aug 03, 2012 11:50 pm UTC
Location: Berlin

Confidence explained

Post by Viech »

We are trying out a new way of gaining stages on the Development & Testing Server. I'll try to explain how it works and why we made certain decisions.

Getting rid of feedingAfter moving from a fixed amount of build points to a resource system, the next thing we wanted to try out were alternative ways of gaining (and losing!) stages.

Tremulous put a team on a higher stage when they killed a number of enemies, which had two drawbacks. Most importantly, being killed by an enemy not only removed your personal equipment and gave the enemy player a resource advantage but it also made the enemy team stronger as a whole. Dying frequently was therefore called feeding and was considered a playing style that is harmful to your team, just like bad building or damaging teammates. In particular, newbies who were just learning the game and died often were at a risk of being demotivated by their teammates being mad at them.

Another problem with the old stage system was that it rewarded passive gameplay too much since it's easiest to kill an enemy if you are inside or close to your own base. So instead of rewarding progress or taking a risk, camping was a key strategy in staging up. Once a team reached the highest stage, there was really no reason to leave the home base for anything but a co-ordinated rush, which required personal resources acquired by even more camping.

Alternative winning strategies such as building aggressive forward bases were possible and a lot of fun but hard to accomplish in a public game when your teammates prefered staying in the main base.

Expansion isn't everythingSince we introduced the resource system, we are already rewarding expansion. Camping the main base won't kill you right away but you won't be able to stand a lot of attacks since you'll be running out of build points – especially if the enemy manages to build resource generating structures closeby to disrupt your own build point generation.

There are still issues, though: once a team has managed to cluster its base with a lot of defensive structures, attacks are very expensive and the attacking team would run out of personal resources, rendering the match a stalemate.

At one point, we tried to force expansion even more by directly linking a team's stage to its total mining efficiency. This eliminated camping completely, but the price was too high: the main issue was that the matches became unstable, and recovery from a setback was tough.

Another problem has been the high importance of builders over the course of the whole match – being forced to constantly switch between attacking and building made the games exhausting, especially in small matches. We backpedalled quickly. Our new approach for staging comes in the form of a new resource: confidence.

The overmind likes what it seesConfidence is a value that describes how much the overmind or human headquarters trust in their teams' capability of defeating the enemy. A team that is constantly pushing and trying to get control over the map would be considered worth the reinforcements or evolution process. Speaking in gameplay theory, we want to reward progress over time or pace.

One of our developers, Timoteo, noted that camping isn't evil in itself; rather, the lack of progress it results in is the evil. The same would probably apply to expansion: it isn't good in itself but it keeps the game going. So instead of forcing expansion or punishing camping directly, we decided to implement a framework that can be used to reward multiple forms of progress and punish multiple forms of passiveness.

So how does it work? Whenever you destroy an enemy buildable you will add an amount of confidence to your team's pool. Whenever you build a structure, this will also add confidence; but you get more if you don't cluster buildables in one place (small forwards yield a good amount, rooms full of turrets don't). Killing an enemy inside its main base will also add a small amount which is proportional to the amount of evos or credits you get. (I consider removing the same amount from the camping team.)

The cool thing about the system is that we can easily add, remove and adjust confidence generating events as we see fit, always with the goal to reward active, skilful and fun gameplay.

I like exponential decreaseThe system would now measure a team's total progress – but we don't want progress to lose importance once a team has reached the highest stage. So what we do is exponentially decrease the teams' confidence.

Let's say you rushed and gained a total of 400 confidence, and the server's confidence half life time (g_confidenceHalfLife) is set to five minutes, then your confidence will go back to 200 if you idle for so long.

Linking confidence to stages is straight-forward. There is a base threshold for both stage two and three as well as an increase per player. The cvars are g_stage23. In order to prevent stalemates when a high amount of defensive buildings meets teams that are stuck on a low stage, we introduced a half life time for the thresholds too (g_stageThresholdHalfLife) so that longer matches have a higher chance of being fought S3 vs S3. One team dropping to S1 in late game should be very unlikely, too.

To prevent hopping between two stages, we add extra confidence on stage up and remove some on stage down. This is controlled by g_minimimumStageTime (in seconds). A value of 60 means that you will get a stage-up reward that will let you stay at least one minute on the higher stage even if your team idles. Similarly, losing a stage removes an amount of confidence corresponding to one minute of idling.

Compared to the simple approach of Tremulous this might seem like a complicated system, but I'm confident that our HUDs will be able to hide the underlying complexity. I imagine a bar displaying confidence with two markers for stage thresholds on it. This will tell you your current situation at a glance. For now, though, we have to look at the text display.

Everyone likes pretty graphsImageStatistical plot of an Unvanquished matchWhich is why we started implementing a gameplay statistics facility! If you want to experiment with gnuplot to find out why your team failed the last match on the Development & Testing Server, you can download gameplay logs here. We will be adding more data in the future to have a good basis for balancing and gameplay adjustments. Here's the meaning of the columns in the log files:

TTime since match start in secondsnum[AH]Number of players per team[AH]S[23]TStage thresholds[AH]ConConfidenceLMRLevel mine rate[AH]MEMining efficiency[AH]BPBuild points
If you want to helpGet online and play on the Development & Testing Server! Give feedback if you want to and by all means take part in our weekly development games (each Saturday, 21:00 UTC), otherwise granger will be very sad.

Click here to read this article on the main site!

Responsible for: Arch Linux package & torrent distribution, Parpax (map), Chameleon (map texture editor), Sloth (material file generator), gameplay design & programming, artistic direction

User avatar
seana11
Tyrant
Posts: 430
Joined: Tue Jun 19, 2012 2:00 pm UTC
Location: Well, the sign says "You Are Here"...

Re: Confidence explained

Post by seana11 »

Very nice article you have there, Viech. I havn't really been playing unv due to the difficulty of playing without binds, but I might pick this up just to see how it plays.

Image
Image
Image

User avatar
KenuR
Tyrant
Posts: 369
Joined: Thu Mar 15, 2012 1:54 pm UTC

Re: Confidence explained

Post by KenuR »

This is a very interesting approach and I like it a lot more than any of the other suggestions I've seen here. There's a lot of balancing that needs to be done if this is going to work, but otherwise I'm looking forward to see how it changes up the gameplay.

Unregistered

Re: Confidence explained

Post by Unregistered »

Great work well done.

User avatar
Viech
Project Head
Posts: 2139
Joined: Fri Aug 03, 2012 11:50 pm UTC
Location: Berlin

Re: Confidence explained

Post by Viech »

Here are the python and gnuplot scripts I used to generate the graph.

You can use

wget -r -l 1 -A .log -nd -nc http://unvanquished.net/unv/stats/gameplay/

to download all logs from the dev server.

Responsible for: Arch Linux package & torrent distribution, Parpax (map), Chameleon (map texture editor), Sloth (material file generator), gameplay design & programming, artistic direction

User avatar
ViruS
Granger
Posts: 1020
Joined: Sun Mar 11, 2012 4:24 am UTC
Location: Antartica - West Australian Post shore
Contact:

Re: Confidence explained

Post by ViruS »

At last, an explanation comes.
Also, I'm still not keen on ckit-ing all game. It kind of reminds me (in a bad way) of [W]onderland where the builders are one of the most important players. I remember when I used to be the self-proclaimed team "ninja builder" (I literally don't fight in battle, due to instant build I literally built repeaters/eggs on sight of an enemy and start building defences to take them down, not to mention building enemies in)

Also, next to the health of resource buildables, what exactly does it represent? %rate of bp extraction?

ImageImageYou[TubeImage

User avatar
Viech
Project Head
Posts: 2139
Joined: Fri Aug 03, 2012 11:50 pm UTC
Location: Berlin

Re: Confidence explained

Post by Viech »

ViruS wrote:

Also, next to the health of resource buildables, what exactly does it represent? %rate of bp extraction?

Exactly. It is the efficiency of the extractor. Sum up all the efficiencies and multiply this with the current (level wide, team independent) base mine rate and you get your teams build point generation per minute.

Responsible for: Arch Linux package & torrent distribution, Parpax (map), Chameleon (map texture editor), Sloth (material file generator), gameplay design & programming, artistic direction

User avatar
DwarfVader
Mantis
Posts: 102
Joined: Sun Sep 09, 2012 4:40 am UTC

Re: Confidence explained

Post by DwarfVader »

Viech are there planes to replace the representation strings of the values with distinct icons? this would make room for another 2values: the expected bp generation per minute ( shown if you are going to build a drill/leech ) and the current bp rate as it is, because

Exactly. It is the efficiency of the extractor. Sum up all the efficiencies and multiply this with the current (level wide, team independent) base mine rate and you get your teams build point generation per minute.

I don't wanna do math in the middle of a fight :wink:

User avatar
Viech
Project Head
Posts: 2139
Joined: Fri Aug 03, 2012 11:50 pm UTC
Location: Berlin

Re: Confidence explained

Post by Viech »

DwarfVader wrote:

Viech are there planes to replace the representation strings of the values with distinct icons? this would make room for another 2values: the expected bp generation per minute ( shown if you are going to build a drill/leech ) and the current bp rate as it is

The way the prediction is displayed when placing a new RGS will change as soon as we implement the new HUDs on top of librocket (the current way of doing this is a dirty hack anyway). Predicting the overall effect of the new RGS (how much will your own generation go up, how much will that of the enemy go down) is definitely a nice feature and I'll look into it then. It isn't trivial to do but it should be possible. The current base rate in BP/min as well as a teams total rate is already displayed to builders if they use the default HUDs and it will also show up on our future HUDs.

If librocket will also be used to replace the health bars of buildables I will add more information in there, such as the mine rate in BP/min. There is no way I will touch the current UI code of doom. :shy:

Responsible for: Arch Linux package & torrent distribution, Parpax (map), Chameleon (map texture editor), Sloth (material file generator), gameplay design & programming, artistic direction

User avatar
DwarfVader
Mantis
Posts: 102
Joined: Sun Sep 09, 2012 4:40 am UTC

Re: Confidence explained

Post by DwarfVader »

There is no way I will touch the current UI code of doom.

damn right :tongue:

Post Reply