The flaws in nextcolony's battle mechanistics and some suggestions to fix them.

in #nextcolony9 months ago

Intro

After my recent rant on an unfortunate battle result, @oliverschmid asked me to argue in a more civilized and friendly way. He was right, of course. But be warned: Criticism seldomly loses sharp edges if uttered more eloquently. ;-)

So I will use this post to summarize the many problems I see with the battle module as it was implemented last week, and to put forward some suggestions (or at least some initial breainstorming) on what could be done to solve them.

The starting point

My curiosities started with this battle, where @proof-of-work wracked my returning little "fleet" in an unexpected way:


Well done anyway, @proof-of-work!

Let's forget the civilian ships for once. But for a 5 vs 4 battle, I expected something else than a 5:0 survivor outcome. In most of the games I played so far, the attacker would have lost at least half his fleet aswell. When playing around with @jaruniks battle simulator, I observed that with similar numbers, attackers have a huge advantage.
Guess the result of 100 corvettes vs 100 corvettes. No, it's nowhere near equal. Defender loses 100 ships and the battle, attacker loses only 11 (!) ships.
Yes, eleven.
And this is because of:

Problem #1: Attackers shoot first.

The attacker has the bonus of shooting first, which leads to the shields and armor of the defenders line are depleted first, so the attacker kills the first ships, and when the defender shoots at the "naked" ships the first time, his fleet has already been diminished and he is less effective. Multiplied by several rounds, this results in the attacking fleet ruling battles with equal numbers.

Solution #1

This is a no-brainer. Let both sides shoot simultaneously. Easy to implement, problem solved.

Problem #2: Summing up stats

But let's not stop here. Next example: 100 corvettes attack, 120 corvettes defend. Your prediction?

Let me tell you: Wrong.

The result will be: Attacker loses 100 ships, defender loses 0. Yes 0. Zero.
Due to all armor, shields and especially the shield regeneration of the line being added together, 100 corvettes will not get through the "shield wall".
But from a player's point of view, this would be a very frustrating result. Of course, 100 should lose against 120 ships. But 0 losses at one side? Makes no sense at all. It is not a "realistic szenario" that all those little fighting ships share one big shield. In a "real" battle, some of those ships would be hit hard on both sides.

Solution proposal #2

This might be harder to implement as it needs some fundamental changes to calculations. But to closer resemble the epic battles we know from Star Wars etc., once a ship lost its induvidual shield, its armor should be hit. And then the structure, no matter if other ships around have not yet collected a single bullet.

You could calculate that as following, as demonstrated by an example:
Let's say we battle again corvettes vs corvettes. First off, we still add up all the stats from each line.

  • First round, the sum of shields is 100%, all the damage is absorbed by shields.
  • Second round, shield is maybe at 96%. Now, 96% of the damage goes to shields, 4% goes to armor.
  • Third round, Shields are at 92%, Armor at 98%. (of course, these are just hypothetical values)
    Now 92% of damage goes to shields, 98% of the remaining 8% total damage (=7,84%) hits armor, the rest already bites structure.

And so forth. After some more rounds, this would create ships dying before all the shields of all the ships in a line are depleted, and it would lead to more intuitive battle results, i.e. the stronger side still winning, but also taking some losses.

Problem #3: Fighting in lines.

Guys, we are fighting in open space. Why should we fire just at the first line of defense, when we can bring in little wasps from all sides, including below and above? Having to kill all the ships the opponent wants us to shoot at first before sending even one bullet at one of the other ships is not meeting anything we know about space battles.
Plus, it creates another gameplay problem. In mid to late game, many more ship types will be involved in battle. Even if victorious, combattants will regularly lose all ships of one type (those sent in the front), and none of those ships in the back. That does not resemble a realistic battle outcome either.

Admiral, we lost all our dreadnaughts, but none of our corvettes have as much as a single craze!

Solution proposal #3:

This is a point we have to discuss, as to fix this problem surely requires a total rehaul of the module, which I am almost certain that the dev team will not be willing to consider. Still, I will tell you what I would have liked to see:

A long long long long time ago, I played Planetarion, which was the most innovative browser game in the late 90ies. It was also around space battles, and they had a variety of around 50 different ships. Each ship - even the civilians - had a class at a scale from small to large. This would be our corvette - frigate- destroyer - ... - dreadnaught in nextcolony.

What would happen in a battle is that every ship had preferences on which ship type to shoot first. And that was perfectly logic: A corvette shooting with small bullets or lasers is there to hunt down other small ships, but those small weapons are of no use at all for penetrating the huge shield and armor of a dreadnaught. On the other hand, the huge cannons of a battlecruiser are great against big ship, but corvettes are much too agile and fast to be hit with those.
But then of course, there can also be small ships equipped with a single big rocket launcher targeting medium or big sized ships, and vice versa - a carrier letting go a huge swarm of small laser-equipped drones can be a weapon of mass destruction against corvettes/frigates.

I would have loved to see such a system with target preferences (and maybe even ships that ONLY target certain ship classes) implemented. I think it would be much more "realistic" and would add much more variety (i.e. you can have rocket ships in general target bigger ships etc.) and a more sophisticated battle planning that the current "line-up" system (that even comes without the snipe/sneak/blast/reflect etc. of steemmonsters).

Problem #4: Aborting missions.

We are on a blockchain, I get that. Sadly, this means that defending is very very difficult, as the attacker can see everything. Setting up a trap is almost impossible, which is a shame, because that is the fun in defunding... uhm, defending against large players.
But to make things worse, you let attackers abort the missions up to the last second. There is no way you can defend like this. Even if you would be able to organize a nice defense without the attacker seeing it in advance, he can check in a minute before battle and hit "abort". Not good.

Solution #4

Easy: Missions - and especially attacks - should not be able to be aborted. You can keep aborts for let's say the first 15 min of a mission, in case someone just misclicked. But no longer. Imo, this is a MUST or we will never see big battles.

Minor problems & tweeks

In addition to those 4 main problems I see with the battle module, I have a few minor suggestions on how to increase the satisfaction with fighting in this game:

Raids:

As in other games I played before (e.g. Travian), I would introduce a "raid" mission that is different to the "attack" mission by not fighting all troops to the death.
A pirate is interested in loot, and loot only. If he sees massive defense, he retreats. Same goes for defenders. If an attacker just wants to rob you, why put all your troops to a last man standing battle?

But if the death star is coming, and annihilation is threatening, I would fight to the last little corvette to prevent my people from unimaginable suffering.

Thus, I propose to create a raid mission, in which the battle stops after ~50% of the troops are destroyed. The retreating force loses the battle. To make its use more attractive, you could add a cargo bonus to ships on raid (or a malus on attacking ships, whatever seems better).

uranium refund

This is something I observed during one of @proof-of-work's attacks on me. Even with activated shield, he gained some uranium from me, supposedly accounting for the costs he had to send the fleet.

grafik.png

Sorry, but this is completely unnecessary and makes 0 sense. If a defender knows how to prevent a raider from looting, let the raider carry the costs of his attack. Delete that piece of code, please, it should never have been written.

docking

Imo, people should be allowed to build docks, where they can protect a certain number of ships (dependent on dock level) from incoming attacks. docking/undocking ships could be a mission that requires the equivalent of travelling 1-2 fields, to prevent abuse.

Conclusions

I hope that you can see that what I am after is not destructive criticism. I want to improve player experience with this incredible project. We are all early beta testers of an unfinished product, and I live up to that resposibility.
Feel free to discuss or disagree with my proposals. But please consider them seriously. This especially applies to the nextcolony team.

Sort:  

english version below
Lösungsvorschlag für Problem 2:
Baut einen Zufallsgenerator ein. Eine Corvette trifft eine andere Corvette mit einer 50% Wahrscheinlichkeit. 50% der Schüsse verfehlen das Ziel und bleiben ohne Wirkung. Wenn es ein Treffer war, wird nochmals gewürfelt, um die Schadenshöhe des Treffers zu bestimmen (1% bis 100%) ab 85% Schaden ist das tödlich. Mehrere kleine Treffer addieren sich bis 85% erreicht sind.

Wenn sich unterschiedliche Schiffe bekämpfen kann man noch einen Faktor einführen. Beispiel: Corvetten treffen große Zerstörer mit 80% Wahrscheinlichkeit, aber der einzelne Schaden ist gering. Zerstörer treffen die wendigen Corvetten nur zu 20%, aber wenn sie treffen ist "game over" für die Corvette.

english
Suggested solution to problem 2:
Builds a random generator. One Corvette hits another Corvette with a 50% probability. 50% of the shots miss the target and have no effect. If it was a hit, the dice are rolled again to determine the damage amount of the hit (1% to 100%) from 85% damage is fatal. Several small hits add up to 85% damage.

If different ships fight each other, you can introduce another factor. Example: Corvettes hit big destroyers with 80% probability, but the single damage is low. Destroyers only hit the agile Corvettes 20%, but if they hit is "game over" for the Corvette.

Translated with www.DeepL.com/Translator

One thing I have noticed is that some of the larger ships don't seem worth it just yet. Playing around with the simulator 1 dreadnought is worth about 21 corvettes. (21 corvettes will win if they attack a dread, it takes 22 if defending). For a ship that is described as-

"While Dreadnought Royal is only the second largest ship ever built by a human being, it's for sure not to going to be underestimated. Most armies will decide to flee rather than fight if they see this monster coming after them. It's large enough to defeat a whole army on its own and to steal a significant part of the resources of a planet. If accompanied by a larger fleet, it's most likely undefeatable for most armies."

21 corvettes seems a small amount to beat it, especially considering that the mechanics somehow come out worse when you add more ships to the equation. 1 dreadnought and 30 corvettes loses to 40 corvettes which makes the dread worth less than 10 corvettes in that scenario.

I have to look into that, but this would definatly be problem no 5. Ty for your comment.

I do agree though that its odd where one side loses 0 ships and the other is completely wiped out. I would hope that going forward the biggest fleets in the game at least lose some ships when they attack an opponent.

These are absolutely constructive arguments and they surely require an in-depth reply, for which I need a little bit more time. Let me get back to you however with one quick point already which is the uranium steel. This was not intended, but was temporarily necessary as we had a round bug in our calculation of uranium needed to return. So some ships were stuck and we wanted them to return - this was why we took that path. I know that this is not the way it should be and it will not happen in the future anymore.

I do not know Planetarion btw, I will try to see if I can information on that somewhere. But I will answer at a later time also with a more in-depth response to your proposal, which I think is exactly the thype of feedback we need.
Best regards,
Tim

And as such it was intended. Thx.

A lot of good points! I especially agree that both sides should attack simultaneously.

ty

#1 This advantage is mitigated by the fact that the defender can support himself and chose the countering formation plus shield regeneration. With regeneration of the shield and repair of armor the first shot is not that valuable. Simultaneously shooting would make it much harder to have the battle visualised as an animation in rounds/steps. (Prototype of a battle replay: https://nc-client.jarunik.com/replay/M-ZTX2I0J1QS0)

#2 This would complicate battle significantly. Calculating every single ship is currently very costly to implement, very performance consuming for our server and much harder to balance. We would also need some form form of area damage or piercing as high damage ships would waste a lot of DPS on very small ships which would completely destroy balancing. So overall I currently don't see enough benefit for the costs to change that. I would love to implement a really sophisticated battle logic some day.

#3 I agree that this simplification does not reflect reality but I don't think we will ever aim to do realistic 3D modelling in our game. I agree with your judgement. A complete overhaul is not feasible as of now. We did discuss some different targeting and damage types like area damage but discarded it due to the involved efforts to design it in a balanced way. Would be cool to be able to do some more fancy battle module some day.

#4 We implemented abort due to the repeated requests of the community. We will monitor how it develops. We discussed the drawbacks of aborting but decided against some hard to understand timers/limits. One of our idea is to bring some features to allow sieges to planet to allow to reduce the options of constantly evading any fights due to clever ship logistics. We didn't decide on any feature or changes to abort yet though.

#5 The uranium refund was a quick fix to prevent stuck ships due to missing uranium for the return flight. It is not a feature and only happens due to some rounding and calculation problem. It is always a minimal amount and we intend to build a better solution for this longer term. We generally try to avoid passive protection without costs. If we would bring something like docking it would need a significant "fee" to provide absolute protection.

Thanks for your in-depth reply. I do however disagree a lot with your opinions.

#1: Of course it is true that first attack is less relevant with more lines involved. It still decides the winner with the exact same numbers involved at both sides. Regarding the visaulization, this should not be an argument. Visualization might be a nice extra for some players with too much time on their hand, but the mass of players will not watch them, but just click on. All the browser games I played were perfectly fine without visualizations. It is a nice extra, but is certainly less important than balancing the battle module, and removing the first attack bonus would be a part of the latter.

#2 I think you did not read or not understand my proposal. I did explicitly NOT suggest to calculate every single ship, as I am well aware of the limitations. I proposed a calculation method that simulates single ships by still grouping all ships of a type together, and I am conviced that the implementation of such a model would lead to more intuitive results (i.e., with 120 vs 100 of the same ships, also the winner would lose ships^^) without requiring much extra calculation power.

#3 NEVER did I suggest to implement a 3D modelling. As said before, I don't need visualization. I suggested to create a battle algoritm which would lead to results that better match the expectations one has when thinking about space battles. Line vs line with always the first line taking all the damage is quite lame for a space game. Sorry.

#4 I am not against aborts. But being able to abort attacks in the last minute should not be possible, it really ruins the game.
Allow it for the first 10-15 minutes of a mission, that is enough. It doesn't need an extra timer. Travian allowed aborts for 1.5 minutes after a mission was sent, and then, the abort button just disappeared. Was perfectly fine and noone ever complained about that.

P.S. tagging also @rondras and @oliverschmid here.

To listen to the audio version of this article click on the play image.

Brought to you by @tts. If you find it useful please consider upvoting this reply.

Congratulations @doctor-cog-diss! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You published more than 50 posts. Your next target is to reach 60 posts.

You can view your badges on your Steem Board and compare to others on the Steem Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP

To support your work, I also upvoted your post!

Vote for @Steemitboard as a witness to get one more award and increased upvotes!

Hi, @doctor-cog-diss!

You just got a 0.05% upvote from SteemPlus!
To get higher upvotes, earn more SteemPlus Points (SPP). On your Steemit wallet, check your SPP balance and click on "How to earn SPP?" to find out all the ways to earn.
If you're not using SteemPlus yet, please check our last posts in here to see the many ways in which SteemPlus can improve your Steem experience on Steemit and Busy.