This goes back to

xponen's local shield link change from about 9 months ago. First I will explain the behaviour from earlier. I will call the first system global shield link.
A network of shields is a connected bunch of shields (or more precisely; a maximal connected component of the graph). Global shield link acted on networks of shields without taking into account their shape. The charge distribution of this system was very simple. Every frame (30 times a second):
-
Take the average charge of the shields in the network (charge sum)/(shields in network).
-
Move every shield in the network 1% closer to the average.
-
Track overflow (charge being given to low max capacity shields) and redistribute this to shields with spare capacity.
So to use my previous example you have a shield with 500 charge and a shield with 200 charge. The average charge is 350, 350-500
-150 and 200-350
150. Then the charges on the next frame are 498.5 and 201.5.
It was long thought that global shield link was a bit simple. In large porc games people could just make a single massive shield network. A lot of interesting potential problems in the shape of the network were being overlooked (such as bottlenecks and attacking points with poor shape). It would have been nice to make shield link local somehow but I had not written that gadget and did not spend much time considering the problem. I am not sure if I even got the point of realizing that the problem is poorly defined.
About 9 months ago

xponen spent some time making shield link local and I accepted that he had done so without looking at it in depth. Then more recently there was an update to the way the links were drawn. I had a closer look at this change and ran a few tests to make sure the whole gadget worked. At this point I noticed strange behaviour.
I do not know the extent of what was wrong with the v1.2.7.7 shield link. My main test was 10 Thugs attached to a Felon all in a clump. In this test 5 of the Thugs were very efficient at moving their charge to the Felon (much more efficient than I recall) and the other 5 sat at about 40% shield. This behaviour lacks symmetry and is arbitrarily based on which unit happened to link up so it makes no sense. I don't want some sort of complicated arbitrary system which has limited links and priorities set for each type of shield. A more practical result is that the new shield link seemed to have faster charge transfer which acted as a stealth buff for Felon.
I began rewriting a lot of the shield link gadget. I suppose I had two design goals:
-
When all the shields are in a clump the behaviour should collapse to the global case. This is what the xponen version fails to do.
-
It should do "local stuff" (bottlenecking, network flow).
Another thing to keep in mind is that shield link is not some helpful unit AI. The mechanics should not need to be fought against but they will also not always implement smart or useful behaviour. It should be mechanically simple and leave it to players to figure out how to use it to their advantage.
I think my random neighbour transfer is close to achieving these goals. I have shown examples of the two shield case under both the global and random transfer systems.
The many Thugs + 1 Felon case is also theoretically equivalent with both systems. If you have a lot of Thugs then the average charge of the network will approximately 1250. So a Felon at 0 charge in a global link system would gain 12.5 charge per frame. With the random neighbour system each Thug has a 1/N chance of picking the Felon (N units in total) so approximately 1 Thug will link with the Felon and give the Felon 12.5 charge. The Felon will almost always link with a Thug and take 12.5 charge. This transfer happens every 2 frames so the systems have effectively equivalent behaviour.
One overlooked issue is that adding Thugs to a group of large shields that do not drop below Thug charge will hinder the transfer of charge between the large shields. This could be dealt with by not considering full units with less charge while looking for a partner to transfer with.
quote: The dynamic that any shield with charge > thug (max) charge does not benefit from thug regen is interesting, but not new iirc. |
This has always been the case.
quote: On another note, the system as you explained means that if you have x thugs in one ball and an empty shield touching exactly one of the thugs, then charge rate to the empty shield goes down the higher x gets. I find that unintuitive at best and (mechanically) unreasonable at worst... Is that part of the design idea? |
This behaviour sounds ok in terms of "local stuff". Local means that clumps of units will reinforce each other more strongly than tenuously connected ones. Large clumps could focus the reinforcement. Note however that the penalty for adding extra units will only go as low as 50% because the lone empty shield will still transfer charge with its neighbour. Also the charge transfer is likely to be more sustained as the neighbour has its charge refreshed to 100% by the large clump of shields.
quote: It seems the change has made sballing even more popular than it was. I'm getting tired of hearing "Vrooshhh Bushhhh" x100 from racketeer. I've noticed a markable increase in sballs lately. |
Perhaps a constant is off somewhere and charge transfer is now much more rapid. Alternately the xponen behaviour could have broken shieldballs in an unexpected way.