proposal to reduce combat attack streakiness

For what's not in 'Top Priority Game Design'. Post your ideas, visions, suggestions for the game, rules, modifications, etc.

Moderators: Oberlus, Oberlus

Post Reply
Message
Author
User avatar
Dilvish
AI Lead and Programmer Emeritus
Posts: 4768
Joined: Sat Sep 22, 2012 6:25 pm

proposal to reduce combat attack streakiness

#1 Post by Dilvish » Sat Aug 31, 2013 7:35 pm

We get quite a few comments about our combat results seeming excessively streaky. It's been enough that a couple different times I've gone looking for bugs in the relevant code (but didn't find any). I suspect it's all just valid streaks under the current rules, but that doesn't really lessen the sense of concern in a situation with 1 ship versus 4 (all five ships being identical), and the single ship winds up with all but 1 or 2 of the 15 total attacks and wins the battle. Most broadly, I'd like to simply propose a simple framework for reducing such streakiness. The basic framework is simply to impose a limit on how many times an individual attacker can be selected for attack before all other attackers have also attacked (right now there is no limit). This can be done in a way to slightly reduce streakiness or or it could be done to very substantially reduce streakiness.

The basic framework is to add a 'has_attacked' counter for each current attacker. Each round the random selection of attackers would be done not from all attackers remaining in combat but from the remaining attackers whose 'has_attacked' value is below N. Once each remaining attacker has a 'has_attacked' value at least P (might not be the same as N) then the 'has_attacked' values could be reset. Increasing N increases streakiness; increasing P reduces streakiness.

The strongest reduction (probably stronger than we want) would be to put both N and P at 1 -- after an attacker had attacked once it wouldn't have a chance to attack again until all remaining attackers had also attacked once since the last reset. If we consider scenarios with all ships identical starting with full health, and it takes 3 rounds of attack to kill a ship, then N=1, P=1 would mean that in a 1 v 1 combat the winner would always be substantially damaged, and with 1 v 2 combat the singleton ship could never beat the pair and at least one of the pair would always take some damage in beating the singleton.

A midling reduction in streaks, could be to put N at 3 and P at 1 or 2. In either case a 1 v 1 combat (with the above ships) could be won without taking damage. Also in either case, in a 1 v 2 combat the singleton would have a chance to beat the pair (but not without taking some damage) and the pair would have a chance to beat the singleton without taking damage. In neither of these cases would a singleton ship as described above be able to beat a trio of equally matched ships (though with P=1 it could come extremely close). At [N=5, P=1] a singleton would have a small chance to beat a trio, at or [N=6, P=2] I think the singleton would have a slightly better chance; in either case the singleton would be substantially damaged even if it won. I would propose we try N=3, P=1 (I personally don't see the need for a singleton to be able to fully beat a trio).

A follow-up to this framework could be to make N dependent on the attacker (though P should be constant for all attackers). Certain ship designs could have a higher N, or planets might get a higher N, or we could have a system were attackers advance a veteran status that gives them a higher N.
If I provided any code, scripts or other content here, it's released under GPL 2.0 and CC-BY-SA 3.0

User avatar
Geoff the Medio
Programming, Design, Admin
Posts: 12641
Joined: Wed Oct 08, 2003 1:33 am
Location: Munich

Re: proposal to reduce combat attack streakiness

#2 Post by Geoff the Medio » Sat Aug 31, 2013 7:43 pm

I'd be more inclined to change a combat round from being a single attack by a randomly selected ship, to every ship simultaneously attacking once. "Simultaneous" in this case means that the pool of valid targets and attackers aren't updated until the end of the round, and ships could end up targeting enemy ships redundantly (ie. after they've already being attacked enough to be destroyed at the end of the round), and ships would still get of an attack in the same round they are destroyed.

yandonman
Creative Contributor
Posts: 699
Joined: Thu Aug 30, 2012 12:32 am

Re: proposal to reduce combat attack streakiness

#3 Post by yandonman » Sat Aug 31, 2013 7:49 pm

I would be inclined towards Geoff's suggestion.
Code released under GPL 2.0. Content released under GPL 2.0 and Creative Commons Attribution-ShareAlike 3.0.

AndrewW
Juggernaut
Posts: 790
Joined: Mon Feb 04, 2013 10:15 pm

Re: proposal to reduce combat attack streakiness

#4 Post by AndrewW » Sat Aug 31, 2013 8:02 pm

yandonman wrote:I would be inclined towards Geoff's suggestion.
Agreed, makes sense. Why would a ship sit out a round of combat? (Ok can be valid reasons in some circumstances but still.)

User avatar
MatGB
Creative Contributor
Posts: 3310
Joined: Fri Jun 28, 2013 11:45 pm

Re: proposal to reduce combat attack streakiness

#5 Post by MatGB » Sat Aug 31, 2013 8:10 pm

When I initially read how combat is currently resolved, my mind boggled and I thought it was terrible, and wondered why something similar to Geoff's suggestion hadn't been implemented.

However, having seen it in action a lot more, I do sorta like the current sytem, even if it's too random and needs some tweaking, and I quite like Dilvish's suggestion for limiting it.

If all ships are guaranteed to fire before any damage is resolved, then you'd basically be very sure of victory versus monsters, whereas currently they can get lucky and kill a few attackers.

Some form of balancing is definitely needed though.
Mat Bowles

Any code or patches in anything posted here is released under the CC and GPL licences in use for the FO project.

User avatar
Geoff the Medio
Programming, Design, Admin
Posts: 12641
Joined: Wed Oct 08, 2003 1:33 am
Location: Munich

Re: proposal to reduce combat attack streakiness

#6 Post by Geoff the Medio » Sat Aug 31, 2013 8:17 pm

AndrewW wrote:Why would a ship sit out a round of combat?
The idea of the current random system is not ships dutifully lining up and taking shots in turn, and thinking of a ship not firing as it "sitting out" a "round of combat" are not the right way to look at it. Combat rounds are just an implementation detail, and not meant to model any realistic aspect of a battle.

A better model is that a ship might overcome the odds and damage a larger opposing force by luck or clever tactics or trickery. Scifi, and various other war stories, have many instances of inferior forces beating the odds against a more powerful force, particularly when the groups are small and someone has the chance to be heroic or uniquely skillful.
MatGB wrote:If all ships are guaranteed to fire before any damage is resolved, then you'd basically be very sure of victory versus monsters, whereas currently they can get lucky and kill a few attackers.
Tweaking of existing content would likely be required after a mechanics change. Monsters might get several weapons capable of destroying early ships in one shot, or more structure. Or maybe monsters need to spawn in packs more often, so there's random variation in how many player ships attack each monster.

User avatar
eleazar
Design & Graphics Lead Emeritus
Posts: 3858
Joined: Sat Sep 23, 2006 7:09 pm
Location: USA — midwest

Re: proposal to reduce combat attack streakiness

#7 Post by eleazar » Sat Aug 31, 2013 8:29 pm

I like unpredictability in combat, but I agree with the OP, we've got too much right now.

User avatar
Geoff the Medio
Programming, Design, Admin
Posts: 12641
Joined: Wed Oct 08, 2003 1:33 am
Location: Munich

Re: proposal to reduce combat attack streakiness

#8 Post by Geoff the Medio » Sat Aug 31, 2013 8:44 pm

Another option is to increase the number of rounds that occur in each combat. More random rolls combined tend to produce results closer to the average. Currently the number is:

Code: Select all

const int NUM_COMBAT_ROUNDS = 3*valid_attacker_object_ids.size();
Making that 5 or 8 or somesuch might appreciably reduce the variance of combat results...

Additionally, the power of weapons could be decreased, or the structure of hulls increased. If it takes more shots to destroy things, then results should be closer to average as more ships will get chances to fire.

If, as above, the number of rounds of combat increases, then it will be important to also change the ratio of weapon power to ship structure, as if ships end up being destroyed in about 3*number_ships rounds, having twice as many rounds allowed won't matter since all the ships are already destroyed.

AndrewW
Juggernaut
Posts: 790
Joined: Mon Feb 04, 2013 10:15 pm

Re: proposal to reduce combat attack streakiness

#9 Post by AndrewW » Sat Aug 31, 2013 9:05 pm

Geoff the Medio wrote:The idea of the current random system is not ships dutifully lining up and taking shots in turn, and thinking of a ship not firing as it "sitting out" a "round of combat" are not the right way to look at it. Combat rounds are just an implementation detail, and not meant to model any realistic aspect of a battle.
Wasn't expecting realism. Just looking at it from that perspective. Could be ships not firing are getting themselves into position for a better shot.
Geoff the Medio wrote:A better model is that a ship might overcome the odds and damage a larger opposing force by luck or clever tactics or trickery. Scifi, and various other war stories, have many instances of inferior forces beating the odds against a more powerful force, particularly when the groups are small and someone has the chance to be heroic or uniquely skillful.
Just take the battle of Midway as an example of that.

User avatar
Krikkitone
Creative Contributor
Posts: 1517
Joined: Sat Sep 13, 2003 6:52 pm

Re: proposal to reduce combat attack streakiness

#10 Post by Krikkitone » Tue Sep 03, 2013 4:13 pm

Geoff the Medio wrote:Another option is to increase the number of rounds that occur in each combat. More random rolls combined tend to produce results closer to the average. Currently the number is:

Code: Select all

const int NUM_COMBAT_ROUNDS = 3*valid_attacker_object_ids.size();
Making that 5 or 8 or somesuch might appreciably reduce the variance of combat results...

Additionally, the power of weapons could be decreased, or the structure of hulls increased. If it takes more shots to destroy things, then results should be closer to average as more ships will get chances to fire.

If, as above, the number of rounds of combat increases, then it will be important to also change the ratio of weapon power to ship structure, as if ships end up being destroyed in about 3*number_ships rounds, having twice as many rounds allowed won't matter since all the ships are already destroyed.

This is probably the key... decreasing randomness means increasing numbers.

So early weapons: early hull values would be low
[in the later game, there are more ships in a fleet so more "one shot kills" are OK..sinc you still have to have a large number of kills]

meandyou
Space Krill
Posts: 6
Joined: Tue Jan 14, 2014 10:07 pm

Re: proposal to reduce combat attack streakiness

#11 Post by meandyou » Wed Jan 22, 2014 11:37 pm

On what is perhaps a parallel issue - it seems illogical that a large number of relatively weak ships e.g. small hulls with a single weapon, appear to be completely unable to destroy any of a smaller number of shielded ships when the weaker ship weapon has a lower attack value than the defensive value of the shields. If you imaging a swarm of fighters attacking a cruiser, there must be a high potential for the combined attack of the fighters to overcome the shield defences of the cruiser. At the moment I find the combat model frustrating when in a single turn a small force of not much more advanced ships will annihilate a much larger force of less advanced ships even when the 'on paper' relative strengths of the fleets are radically different (e.g. a fleet of 500 / 500 (attack/defence) unshielded ships armed with moderate weapons defeated without loss by a defending fleet of 100 / 100 strength with moderate shields). Perhaps there could be a simple factor included in the combat calculations that enables a number of 'group attacks' through comparison of the total weapon strengths of each combined fleet? This would be an additional number of attacks based on the relative scale of the fleets which would use a fraction of the total attacking strength rather than simply relying on each ship attacking single targets on their own. From a realism perspective the current system effectively allows a player to defeat all lower-tech rivals with a few advanced ships regardless of the total power of any defending fleet. From a playability perspective being on the giving or receiving end of combats that end in total annihilation for one side and almost or complete lack of destruction on the other makes the game unbalanced - at present you only have to assemble a decent sized fleet with good shields and you can rampage through an enemy empire with impunity. Yes, this can be very satisfying and can be argued to be a realistic effect of building a big and well armed fleet but on the other hand does not allow for the variability inherent in 'real world' warfare - history teaches us that combat, even between forces with very different levels of technology, is seldom 'clear cut' (well, you can argue that in modern warfare it is more so, but using e.g. the war in Iraq as an example the fact that the defenders had low levels of training and motivation was a significant factor in the relatively casualty-free assaults made on the coalition side - the Arab Israeli conflicts made it clear that high levels of patriotism and skill compensate significantly for fewer numbers and lack of technological superiority - many examples also from WWII where superior German tank tech. was defeated by inferior allied tech in greater numbers / tactically deployed). Apologies for the long list of bracketed examples are in order... Anyway, it would be nice even as a powerful invasion force to be thwarted occasionally by relatively puny defenders to create attrition effects that would absorb the invasion the deeper it went into enemy territory (perhaps an additional attack / defence factor based on supply lanes???). I'm trying to think of some simple (in coding and processor overhead) adjustments that would have a significant impact on game balancing and 'realism' by 'generalisation' rather than meticulous fiddling about which eats up programming and processor time.

ccla
Krill Swarm
Posts: 12
Joined: Wed Jan 01, 2014 10:02 pm

Re: proposal to reduce combat attack streakiness

#12 Post by ccla » Thu Jan 23, 2014 1:27 am

For what it's worth, I'm going to weakly vote for keeping the combat model as it is.

Right now I'm trying to come up with well-reasoned and well-motivated ways to rebalance modules and hulls that would allow for more richness of strategy. The current combat model allows for a "first strike effect", in that if there are a large number of ships against a much smaller number, there's some chance that the larger number can eliminate the smaller number without the smaller number ever getting the chance to attack. I'm thinking that this might be exploitable to impact strategies, but admittedly I'm a little early in the analysis to say for sure.

Thanks

shawndream
Space Kraken
Posts: 124
Joined: Fri Nov 22, 2013 8:47 pm

Re: proposal to reduce combat attack streakiness

#13 Post by shawndream » Thu Jan 23, 2014 3:41 pm

meandyou wrote:On what is perhaps a parallel issue - it seems illogical that a large number of relatively weak ships e.g. small hulls with a single weapon, appear to be completely unable to destroy any of a smaller number of shielded ships when the weaker ship weapon has a lower attack value than the defensive value of the shields. If you imaging a swarm of fighters attacking a cruiser, there must be a high potential for the combined attack of the fighters to overcome the shield defences of the cruiser. At the moment I find the combat model frustrating when in a single turn a small force of not much more advanced ships will annihilate a much larger force of less advanced ships even when the 'on paper' relative strengths of the fleets are radically different (e.g. a fleet of 500 / 500 (attack/defence) unshielded ships armed with moderate weapons defeated without loss by a defending fleet of 100 / 100 strength with moderate shields).
Definitely a separate issue, regardless of combat order, fleet sizes, or streakiness a weak piloting race is completely useless against equivalent tech shielding. (You must have been playing a weak piloting race). There is some discussion about that and how to improve the fleet strength indicator here:
viewtopic.php?f=6&t=8587&start=15
(I agree the mechanic is bad, but sadly they seem currently wedded to it)

In one respect, this is an interesting mechanic, as it makes the races start play VERY differently... but given how strong the effect is what I suspect usually winds up happening is weak pilot races just find a shieldless race to take over and use those guys for all warships, while strong guys find weak high pp/rp producers to feed their empire and everyone quickly winds up looking the same.

As a third tangent, I think the goal of effective racial bonuses might be better toned down a bit, and applied through the Imperial capital, so they effect every ship and colony, but to a lesser degree: ie:

Reduce the 25% bonus/malus to 10%.
Each planet/ship gets their bonuses, and those of the race on your capital.
Capital location has a big impact then, slightly less to start, but significant MUCH longer.

But anyway... back to the topic at hand, reducing streakiness... Humans naturally dislike true randomness, we value fairness more, with only a light seasoning of surprise.

I think making each combat round go all the way around (unless you are destroyed before you find a good firing angle) is both more obvious for players to grasp, and avoids distorting or bloating the structure numbers.

Round increases are likely to come more as part of the range initiative (by dividing which rounds some weapons are most useful in, more rounds are needed for the same overall damage).
Everything I post is self-created unless noted otherwise. It is simultaneously released under GPL 2.0 or later, CC Attribution-Share Alike 3.0, and GNU Free Documentation 1.2. Make something awesome with it please!

shawndream
Space Kraken
Posts: 124
Joined: Fri Nov 22, 2013 8:47 pm

Re: proposal to reduce combat attack streakiness

#14 Post by shawndream » Thu Jan 23, 2014 3:49 pm

ccla wrote:For what it's worth, I'm going to weakly vote for keeping the combat model as it is.

Right now I'm trying to come up with well-reasoned and well-motivated ways to rebalance modules and hulls that would allow for more richness of strategy. The current combat model allows for a "first strike effect", in that if there are a large number of ships against a much smaller number, there's some chance that the larger number can eliminate the smaller number without the smaller number ever getting the chance to attack. I'm thinking that this might be exploitable to impact strategies, but admittedly I'm a little early in the analysis to say for sure.

Thanks
Pretty sure you will find that on average, truly random order favors neither distribution of ships over precise turn order.

The same strength divided into smaller sections is at a minor disadvantage because damage output is reduced as ships are destroyed, while a single massive ship still does 100% damage, even with 99% structure gone. This effect is reduced a bit by the current mechanism that randomly distributes damage (spreading it out), and also would be reduced by allowing ships destroyed this round to attack and be targetted (both of which I disagree with btw).
Everything I post is self-created unless noted otherwise. It is simultaneously released under GPL 2.0 or later, CC Attribution-Share Alike 3.0, and GNU Free Documentation 1.2. Make something awesome with it please!

Post Reply