DaloLorn / Rising-Stars

A large-scale mod for Star Ruler 2.
http://steamcommunity.com/sharedfiles/filedetails/?id=812827373
Other
18 stars 7 forks source link

Mechanoid hydroponics satellite equivalent money/labor exploit #88

Closed BottledByte closed 1 year ago

BottledByte commented 1 year ago

Mechanoid equivalent of hydroponics satellite, Antimatter Core Assembler, performs flat reduction of population build costs (-150k money and -7 labor). When more than 1 is present in planet's orbit, money and labor costs for building population can go negative, generating money and labor on build!

Description of the satellite states that only 1 can be built per planet, but, as defined in data/orbitals/economy/MonoHydroponics.txt, it is possible to build 2 around a single planet.

Found in commit 69c880b8c8fd8a172c85480ed72210b863d932eb

Free money when you build 2 Antimatter Core Assemblers around a single planet:

free money

Reproduction steps

  1. Play as a Mechanoid race
  2. Research the Antimatter Core Assembler
  3. Build two of them around a single planet
  4. Population build costs may go negative, depending on amount of population already built

Additional notes

Balancing of this orbital also seems a little bit off to me. Such flat cost reduction by a specific amount is not used anywhere else in the game I believe?

And even when it would not be possible to go negative with it and only to zero, it would probably still be exploitable to get free, immediate population construction (which is still a massive exploit, but at least player would not get rewarded for it in form of additional money :smile:)

But I guess that balancing (in general) should be left for another issue(s).

DaloLorn commented 1 year ago

It's a flat reduction because my preferred mechanism (tell the planet that its owner has built less population than he has) isn't technically feasible. I also wouldn't say that any part of it constitutes a particularly severe exploit, since you would have to be doing everything exactly wrong to even briefly generate a net profit using ACAs.

BottledByte commented 1 year ago

I don't know if you are aware that some SR2 players are really abusing every mechanic and/or their synergies. Normally, such abuses take a lot of time and effort to build up and result in small to medium gains and I personally think they are OK - they can lead to insanely funny situations, to be honest :smile: : .

However, ACAs, in their current form, are allowing a massive abuse, too quickly and with insane gains. To proof it, here is a screenshot from game I played after your fixes (it was the same before the fixes): 1

The fix works you did works, now I cannot build 2 ACAs around single planet :+1: .

However, I do not need to build ACAs around a single planet :smirk: I can built one around planet without it... and tractor it to orbit of another planet, where ACA (or several of them) is already present... I guess now you also understand what I mean by that current balancing is very exploitable.

I am not sure if you can make the ACAs self-destruct when they are tractored into an orbit of a planet, where ACA is already present - that would be 1st orbital with such behavior (which sounds like you would have to implement a mechanism for that). Or maybe make them untractorable. But then why just ACAs should be untractorable?

That is why I propose to increase ACA's maintenace costs AND constraint the potential discount to some amount, but not past it. I thought about adding something like optional min/max cost arguments to the AddBuildCostStatusCount() and AddLaborCostStatusCount() hooks/functions - if something like that is possible.

These two constraints to ACA combined are in fact a relatively powerful to cope with this gigantic exploit. Now you can have infinite amount of ACAs and reap the benefits of free money - forever. After the changes however...

You could still reap the benefits of the theoretically infinite (and capped) discount - but what about paying for maintenance of all those ACAs you have built? :smirk: And if you could never gain any money directly just by building the population, how would you cover your maintenance expenses? :smirk:

At some point, this exploit - if the maintenance costs of ACAs would be high enough - could become unsustainable. You could have an insane population on a single planet (gaining A LOT of Labor in the process!), but you could end up being near or in debt, which could even negatively impact your fleet power. Yes, you could scuttle all ACAs now and everything would be sunny - but it would be next to impossible to build population until you would rebuild the ACAs.

As there is the FTL constraint for moving Mechanoid population, you would either have to have FTL Crystals planet on sufficiently high level in the same system as your population-overflowing planet to actually use the population to expand using the "free FTL from system" bonus, or move your population-overflowing planet around with Planetary Thruster to lower the FTL costs per population based on where you want to send it.

As you can see, even after the proposed fixes of adding maintenance costs and putting a cap to the discount, it would still be a big exploit. But it would take A LOT of time and effort to actually use - and therefore other players can deal with such abuse! Probably in a very entertaining way like trying to annex the planet overflowing with population or something like that.

PS: This is based on my experience with actually dealing with players who really abuse everything. One of them used this very exploit in an MP match. They did not told me how exactly they suddenly could make that 100 000+ sized battlecruiser - with comically small power compared to it's size (like in tens of millions - they were in massive debt due to the ship :smile:) - while having less than 10 planets in 2 systems. All I got from them that there is some "pretty" orbital Mono have and which provides "nice" discounts :rofl:

I figured out how they did it and therefore I raised this issue. They promised me to not to use the exploit, as it is "really too broken" (even for them), but if it can be actually mitigated (by proposed fixes or something else, I don't care), it would be really nice :+1:

DaloLorn commented 1 year ago

... What. The. Hell.

You really should have opened with "you can stack one-per-planet orbitals ad infinitum"! 😟

BottledByte commented 1 year ago

I apologize. :disappointed:

I consider it normal these days than you can actually tractor any "can be only one in orbit" orbital to planet's orbit multiple times. For me, it is core mechanic of Star Ruler 2 now.

That is why I wrote:

And even when it would not be possible to go negative with it and only to zero, it would probably still be exploitable to get free, immediate population construction (which is still a massive exploit, but at least player would not get rewarded for it in form of additional money :smile:)

I actually like aforementioned orbital tractoring mechanic - even though it is an exploit - but usually, it is expensive to use and provides only small benefits (and lots of fun, that is why I like it). Well, at least in base game.

But here in Rising Stars with ACAs... it is just plain broken :cry:

DaloLorn commented 1 year ago

I consider it normal these days than you can actually tractor any "can be only one in orbit" orbital to planet's orbit multiple times. For me, it is core mechanic of Star Ruler 2 now.

Um... I'm afraid to ask, but what other orbitals have that problem?

Skeletonxf commented 1 year ago

I'm looking through CE now, Solar Orbitals have the exploit on a tractoring multiple into one system though that's very minor since it just converts budget to energy Outposts have the exploit in vanilla for the attitude stacking, but that attiitude's been reworked in RS already so no exploit there

BottledByte commented 1 year ago

Like... almost all such orbitals?

You can have like 10 Ring Habitats... and several Solar Satellites... ALL in single planet's orbit :rofl:

In vanilla, the exploits of orbital tractoring are, as I said, not so severe. You need a ton of influence to build Ring Habitats to increase population indefinitely. And Solar Satellites provide only marginal native pressure increase.

But the Antimatter Core Assemblers... that's a different story.

BottledByte commented 1 year ago

I want to make clear that the problem here is NOT the orbital tractoring itself! Other players I know of, and myself, treat the tractoring exploit sort of as a core mechanic. It would be actually quite sad to see orbital tractoring being "fixed" in RS.

Instead, design and balance orbitals while keeping this in mind - like in example that Skeletonxf provided. Solar Orbital can be present multiple times in a system thanks to the tractoring, but it DOES NOT gives you energy for free, because it has maintenance costs! It is a trade-off and, therefore, it does not break the game.

Hence my proposal to just prevent "free money" exploit by putting maintenance costs and maximum discount cap on ACAs. Although it still would be insanely powerful exploit - one of the best in game - there would be a trade-off and, as I wrote earlier, it could be theoretically acted against. Thus it could become a "legitimate exploit" and not "game-breaking exploit".

BottledByte commented 1 year ago

@DaloLorn I see you are trying to fix the root cause of the exploit. :disappointed: I am sad to see that, but at least it can prevent further one-orbital-per-planet related game-breaking exploits happen in the future.

Nevertheless, I tried latest commit f4c57ad662515d3ff7113c6aa49643d9e1d4d9c7 with ACAs - this time the ACAs don't work at all - and other once-per-planet orbitals seems to stopped working as welll :slightly_smiling_face:

BottledByte commented 1 year ago

I tried it and after commit b0eb7e8d6a265b6c3cbf330da8b03e75f311a1a2 it is indeed no longer possible to have more than defined limit of orbitals in single planet's orbit. Attempt to tractor-in such orbital makes the tractored orbital to disappear, immediately. It takes aways a class of "legitimate exploits" :slightly_frowning_face: , but at least the ACA exploit that made the game broken is no longer possible :+1:

Closing.

DaloLorn commented 1 year ago

I mean, a chunk of vanilla code was failing to perform literally the only thing it was designed for. It had one job, and it was useless at it. (Worse than useless, because it lulled both devs and modders alike into a false sense of security, thinking they could do something they couldn't.)

BottledByte commented 1 year ago

It is nice to see it fixed :+1: I am still slightly ambivalent about it, though. :slightly_smiling_face:

I am not sure how SR2 mod dependencies work, but since it is an issue in vanilla scripts, I guess the fix should be done in OpenStarRuler-Modpack as well, right?

DaloLorn commented 1 year ago

That's the plan, yeah. Tomorrow, though! 😂