This forum is a valuable resource for me, and I would appreciate any feedback on this post: http://www.java-moo.com/?p=530
In particular, are there any I missed?
In particular, are there any I missed?
Are you, in fact, a pregnant lady who lives in the apartment next door to Superdeath's parents? - Commodore |
[Java MOO] Feedback on bugs, cheats & exploits
|
This forum is a valuable resource for me, and I would appreciate any feedback on this post: http://www.java-moo.com/?p=530
In particular, are there any I missed? (November 3rd, 2015, 22:52)Ray F Wrote: This forum is a valuable resource for me, and I would appreciate any feedback on this post: http://www.java-moo.com/?p=530 While digging around in MoO 1 OSG and observing the gameplay mechanics for my MoO 1 clone, Beyond Beyaan, I discovered several bugs that was never reported anywhere else. I will link threads where there's discussion on them, and summarize each bug: Pollution bug - The more factories you have, the less it pollute actually, until it reaches a point where it doesn't pollute anymore! Also, Sakkras lose 2x as much population from pollution as other races, so their growth modifier may have an effect on the pollution formula. The reason why this isn't really noticed is that the ECO slider automatically resets to at least "CLEAN" each turn. So if you want to exploit this, you'd have to drag the ECO slider for every planet for every turn. Gaia Discount - Discussion on Gaia and Fertile improvements led to discovery that if a planet was naturally fertile, it does not discount the Gaia cost (should be 150 BC for each upgrade, totalling 300 BC, but if a planet is naturally fertile, you still pay 300 BC instead of 150 as it should have) Factory Refit - I researched on how MoO 1 does refitting exactly. The manual and OSG both state that it should cost 10 BC for first 2 factories per pop, then refit them at 5 BC cost each to upgrade them to tier 3, then build tier 3 factories at cost of 15 BC each for each pop, and so forth. So you should see "FACTORY 3.4/turn" -> "REFIT" -> "FACTORY 2.1/turn" -> "REFIT" and so forth. In reality however, when you get a new RC tech, all the new factories change to that new cost. So what "REFIT" does actually is just waste production until the number of existing factories * the new cost is reached (it stores some kind of total cost paid somewhere) before building the new factories. While this part may be common knowledge, this next bit is new: You can immediately move population out of a planet as it immediately applies the new RC level. For example, with homeworld pop of 100 and 200 factories, when you research RC III, you can send 33 population off planet immediately, and the remaining 67 pop will utilize ALL of the factories (67 * 3 = 201). So this can be an exploit. Granted, those are minor bugs, but could potentially be used as exploits (the pollution and refit parts that is) by players with deep knowledge of the game.
Dominus Galaxia, a Master of Orion inspired game I'm working on.
On factory refit: There is actually NO "refit" cost for factories. (Sargon found a cost of 1BC TOTAL for the planet, but whether that exists or not is really splitting hairs.) So no cost is actually wasted. The planet screen says "refit" but actually all the "refit" production is going into new (higher-cost) factories. It is also by no means a minor bug. It severely affects optimal tech tree paths and timing, to the extent that drawing RC3 at an ART world in the early turns effectively adds multiple difficulty levels to the game. (Of course, II8, IER, Range 6, or Controlled Dead can reduce the effective difficulty severely).
Other bugs ... I'd have to rack my memory. Off the top of my head, some weird ones: - Negative Fleet Bug. AI fleets occasionally appear with a negative number of ships (which later "corrects" to >32000) for unknown reasons. - Comet and Pirate mitigation: This is inexplicably based strictly on the number and size of the ships. The most consistent way to damage/eliminate a Comet or Pirate in a given system is to throw a bunch of Small ships at it, regardless of whether they're armed. (Huge ships do random damage between 1 and some insufficiently large number, whereas small ships always do 1 damage each). - Going Diplo: The OSG claims that the diplo event severely reduces relations, and may even lead to war. If fact, the Diplo event leads to a war declaration every single time, without exception, even for allies at maximum Harmonious relations. In fact, it results in a war declaration message even when you are already at war! - In the base game, an AI with 4 colony ships will not initiate any colony missions (if I'm remembering kyrub's analysis correctly). If this happens with no colships already en route (or if they are prevented from colonizing their targets but not destroyed) the AI will be unable to peacefully expand again until it loses a colship in battle, scraps its colship design (for a newer one) or colonizes a planet accidentally (i.e. by sending a fleet that happens to include a colship to a world where, upon the arrival of the fleet, no colony is present and the environment is suitable to its technology.
On the list you've compiled so far:
(Spoilered for length. By which I mean for lennnnnnnnnnnnnngth.) Kudos on thinking all this stuff through; hopefully the ideas above will be of use as well!
My reply to Zeraan:
(November 4th, 2015, 00:39)Zeraan Wrote: Pollution bug - The more factories you have, the less it pollute actually, until it reaches a point where it doesn't pollute anymore! Also, Sakkras lose 2x as much population from pollution as other races, so their growth modifier may have an effect on the pollution formula. The reason why this isn't really noticed is that the ECO slider automatically resets to at least "CLEAN" each turn. So if you want to exploit this, you'd have to drag the ECO slider for every planet for every turn. This factory pollution bug will not occur in Java MOO. Also, the Sakkra do not suffer any special pollution penalties. Are they supposed to? (November 4th, 2015, 00:39)Zeraan Wrote: Gaia Discount - Discussion on Gaia and Fertile improvements led to discovery that if a planet was naturally fertile, it does not discount the Gaia cost (should be 150 BC for each upgrade, totalling 300 BC, but if a planet is naturally fertile, you still pay 300 BC instead of 150 as it should have) Gaia upgrade costs are only 150 BC from any Fertile planet. (November 4th, 2015, 00:39)Zeraan Wrote: Factory Refit - I researched on how MoO 1 does refitting exactly. The manual and OSG both state that it should cost 10 BC for first 2 factories per pop, then refit them at 5 BC cost each to upgrade them to tier 3, then build tier 3 factories at cost of 15 BC each for each pop, and so forth. So you should see "FACTORY 3.4/turn" -> "REFIT" -> "FACTORY 2.1/turn" -> "REFIT" and so forth. In reality however, when you get a new RC tech, all the new factories change to that new cost. So what "REFIT" does actually is just waste production until the number of existing factories * the new cost is reached (it stores some kind of total cost paid somewhere) before building the new factories. While this part may be common knowledge, this next bit is new: You can immediately move population out of a planet as it immediately applies the new RC level. For example, with homeworld pop of 100 and 200 factories, when you research RC III, you can send 33 population off planet immediately, and the remaining 67 pop will utilize ALL of the factories (67 * 3 = 201). So this can be an exploit. Java MOO does not allow this exploit since the robotic controls level for a colony does not increase until all refit costs are paid. (I had to check my code to be sure...
My reply to RefSteel:
(November 4th, 2015, 01:46)RefSteel Wrote: - Negative Fleet Bug. AI fleets occasionally appear with a negative number of ships (which later "corrects" to >32000) for unknown reasons. Integers in Java are signed 32 bits instead of the signed 16 bits in the original MOO (which is what caused the overflow at 32767). This allows you to build over 2 billion ships in a stack before hitting this problem. (November 4th, 2015, 01:46)RefSteel Wrote: - Comet and Pirate mitigation: This is inexplicably based strictly on the number and size of the ships. The most consistent way to damage/eliminate a Comet or Pirate in a given system is to throw a bunch of Small ships at it, regardless of whether they're armed. (Huge ships do random damage between 1 and some insufficiently large number, whereas small ships always do 1 damage each). Java MOO bases this one the estimated firepower of the ships. Building a giant, empty hull would be completely ineffective against comets or pirates. (November 4th, 2015, 01:46)RefSteel Wrote: - Going Diplo: The OSG claims that the diplo event severely reduces relations, and may even lead to war. If fact, the Diplo event leads to a war declaration every single time, without exception, even for allies at maximum Harmonious relations. In fact, it results in a war declaration message even when you are already at war! I'm in the camp that this event should always trigger war anyway. The whole purpose of these events is to shake things up by throwing you (or an AI) an occasional curveball. (November 4th, 2015, 01:46)RefSteel Wrote: - In the base game, an AI with 4 colony ships will not initiate any colony missions (if I'm remembering kyrub's analysis correctly). If this happens with no colships already en route (or if they are prevented from colonizing their targets but not destroyed) the AI will be unable to peacefully expand again until it loses a colship in battle, scraps its colship design (for a newer one) or colonizes a planet accidentally (i.e. by sending a fleet that happens to include a colship to a world where, upon the arrival of the fleet, no colony is present and the environment is suitable to its technology. Sounds like a code bug in the original game. The AI in Java MOO builds all of its own ships (no freebies) and colonizes aggressively. (November 4th, 2015, 04:15)RefSteel Wrote: - "Swing Votes": The more I think about this, the more I like your solution. The one caveat is that random early wins or losses (due either to sheer luck or random/periodic/permanent AI alliances) are the least fun part of the game, so if those could be mitigated in some way (regardless of player vote) that would be neat. In Java MOO, the council only forms after one race has contacted all others. I expect that this may push back the starting time. (November 4th, 2015, 04:15)RefSteel Wrote: - Canceling Retreats: Will players be allowed to redirect retreating ships to planets other than the one from which they just retreated? Or are they considered "already in transit" so they can't be redirected at all? (The latter seems cleaner, but the former will be less tedious in some late-game situations and more tense/dangerous/exciting when the AI makes use of it, as I presume you would "teach" it to do.) Retreating fleets are allowed to redirect to any system except the system they are leaving. Which means if you retreat a stack but win the battle, you still have to retreat (no protecting your unarmed colony ships from stray missiles by retreating) (November 4th, 2015, 04:15)RefSteel Wrote: - Dodging missiles: Forcing missiles to move last would modify the dynamics of combat significantly. As I demonstrated in OSG-26, you don't need to use the "Wait" button to dodge slow missiles with fast ships - you just outrun the things! - I want to correct how I described this fix. Since the ship combat isn't done yet, that was the "plan". But I have since recalled that in my original iteration of Java MOO that I solved this problem by having missiles move when their target moves. Since missiles more directly towards their target, they will catch you if they are faster. (November 4th, 2015, 04:15)RefSteel Wrote: - Instant Fleet Construction: I actually love the way the base game does this, as it rewards planning ahead and makes intuitive sense.. It's also not a really huge advantage compared to your proposal as I understand it. I assume by "moved to the colony reserve" you mean it's added to the colony (at 1:1) as though it had been "transferred" there from the treasury on the Planets screen. The problem is, this means instead of pre-building a placeholder ship for a different, newer fleet, players will (still do that, but with slightly slower effect, but also...) prebild a placeholder spaceship for terraforming, factory construction, and planetary shields! Let me expound on this. As you build ships, each turn a "Ship BC" bucket is filled with that turn's production until the ship is built. If you change designs, all of that BC is moved to a "Ship Reserve BC" bucket (1:1 ratio). Each turn thereafter, any new BC dedicated to building ships is matched by funds from the "Ship Reserve BC" bucket, effectively allowing you to double your ship production. If there is no "Ship Reserve BC", then "Colony Reserve BC" can be used instead (which is filled from the Empire reserve). The "Ship Reserve BC" cannot be used for non-ship construction like factories, bases, etc. (November 4th, 2015, 04:15)RefSteel Wrote: - UR Reserves: Your solution significantly changes the value of the planetary reserve and especially of "special" worlds. It definitely reduces micromanagement however, and the special worlds are significant enough even without reserve spending that ... I think I like this. Wait, does this mean Poor and UP worlds don't apply their penalties to reserve spending either? ... Actually, I think I like that even more. The bonus or penalty from special worlds only gets applied once, when BC is sent to the reserve. Reserve funneled back to the planet has no penalty or bonus. This will help poor and ultra-poor planets get up to speed faster while preventing the ultra-rich exploit.
My reply to Thrawn2:
(November 4th, 2015, 06:20)thrawn2 Wrote: BUG: Invading Spored Planets It doesn't handle that particular case now, but I should be able to do it pretty easily. (November 4th, 2015, 06:20)thrawn2 Wrote: BUG: Infinitely recharging specials Keep in mind that I am not inheriting many of the bugs in the original game since the Java MOO code was written from scratch. (November 4th, 2015, 06:20)thrawn2 Wrote: CHEAT: Galactic council swing vote Voting against an AI will have negative consequences, especially if you were a swing vote. Voting for an AI will not have positive consequences unless they are elected and, in that case, the game is over anyway. Voting in order of population gives the great possible influence to otherwise insignificant empires. Blind voting would take that away. (November 4th, 2015, 06:20)thrawn2 Wrote: CHEAT: Empty threats That evaluation is what I specifically hope to improve. (November 4th, 2015, 06:20)thrawn2 Wrote: I suggest that peace treaties are enforced by the game. This means that fleets will not engage as if there is an alliance, the bombardment option will not be available, and if there are incoming troops to a planet they will get disbanded on arrival rather than starting to attack the planet. The players should be able to violate a peace treaty in the way that they can break an alliance (but it shouldn't require contact with the diplomat in case he is unavailable) and this will be remembered as oath breaking with the appropriate penalties. You can't bomb without breaking a peace treaty. Fleets will engage and will break the peace treaty if they engage. You will still have the option, however, of breaking the treaty and becoming an oath-breaker. (November 4th, 2015, 06:20)thrawn2 Wrote: CHEAT: Canceling retreats A retreat is a retreat. If you choose to retreat, you must go to a non-hostile planet (no "retreating" to the next enemy target!). This makes the decision to retreat a real decision and now some fluid game mechanic that can be exploited. (November 4th, 2015, 06:20)thrawn2 Wrote: CHEAT: Dodging missiles with the 'wait' button That's the intended Java MOO behavior -- missiles moving when their target moves. I was incorrect in my earlier description. (November 4th, 2015, 06:20)thrawn2 Wrote: Exploit: Instant fleet construction This was a considered option and rejected because it would encourage players to tentatively build large ships instead of sending to reserve. The former allows you to build a ship and then change your mind with no penalty. As such, there would be no reason to specifically earmark BC to the Empire Reserve. The Java MOO solution requires this BC to be used only for ship construction on that colony, unlike general purpose reserve BC. (November 4th, 2015, 06:20)thrawn2 Wrote: Also, there is one problem with it. If I start working on a huge ship expecting 2-3 techs to hit in the meantime, I redesign the ship slightly when they are done. For example something like a new battle computer can easily be fit at the end of the ship construction, so it is a valid tactic. With the change the ship will have be built to specs even if they are from 20 years ago with no chance for last minute upgrades. Who says that new computers can be easily integrated into old designs? I think that is an unwarranted assumption. The new technologies also create miniaturization which can have ripple effects throughout the entire ship design ("oh look, I can squeeze in 25 ion cannons now instead of 23"). (November 4th, 2015, 06:20)thrawn2 Wrote: An alternative is to allow 'editing' a design of which there are no active ships yet - the editing can allow addition of new components at no costs, and the removal of existing components at a proportionate cost (for example 50% of the ship is constructed at a shipyard. a component that costs 10% of the ship's total cost is removed. this will leave the shipyard at 45% completion, and 2.5% will be added to the reserve). It’s workable if not perfect but it’s still a significant change from the original game. The ability to edit ship designs on the fly removes one of the most underrated strategic considerations in MOO1 that exists in no other space 4X games... making the decision on when to commit to building a new ship design and not looking back. There's just no way I can remove that from the game. (November 4th, 2015, 06:20)thrawn2 Wrote: OTHER NOTES: There is no need for me to make Java MOO moddable since it will be open-sourced upon completion. (November 4th, 2015, 06:20)thrawn2 Wrote: Rounding! It impacts the game a lot and it shouldn't make any difference. If you make the game work with decimals or hundredths of a BC/damage point/etc in the background I believe it will improve the game greatly. Accumulated things like population, factories, shield levels and missile bases are retained as 64-bit doubles. That's about 20 digits of precision :P (November 4th, 2015, 11:15)thrawn2 Wrote: In bombing and retreating fleets I agree that the player indeed has control. But transports that are on the way at least need addressing - maybe they can get erased the moment a treaty is signed. In Java MOO, transports currently disband when they land on a friendly alien colony. (November 4th, 2015, 11:15)thrawn2 Wrote: The main problem with the peace treaty is that the AI never breaks it whereas the player can - so it provides a convenient one sided immunity. The AI is also keen to sign a new threaty even if the player has violated a previous one, providing the one sided immunity again. In the very least the AI shouldn't offer any BC or tech for a peace treaty when dealing with a known violator. The hope is that the AI will break treaties when it is to his advantage (after considering oath-breaker). (November 4th, 2015, 06:20)thrawn2 Wrote: Exploit: Instant fleet construction This was a considered option and rejected because it would encourage players to tentatively build large ships instead of sending to reserve. The former allows you to build a ship and then change your mind with no penalty. As such, there would be no reason to specifically earmark BC to the Empire Reserve. The Java MOO solution requires this BC to be used only for ship construction on that colony, unlike general purpose reserve BC. (November 4th, 2015, 06:20)thrawn2 Wrote: Without something like this, huge ship lose the ability to get respeced while under construction which I think is one of their important functions. I wouldn't really start one a huge ship that takes 20 years to complete if I can't use technology that I expect to obtain in the meantime or have to start over even at double rate. I respectfully disagree. At some point, a player should have to commit and say, "ok, this is my next Huge ship design" even though you KNOW that by the time the ship is built, there will be new technological breakthroughs. This is exactly the kind of difficult strategic decision that makes MOO1 a great game. "Should I start now, or should I wait 5 more turns?" Allowing you to bypass that decision, even for large ships, takes that away. Quote:Exploit: Instant fleet construction The advantage of the current way ship production works under MoO (not penalizing accumulated BCs when changing ship production) is that the player never has to fiddle with the ship production slider on a turn-by-turn bases to make sure that JUST ENOUGH BCs are going into ship production to not cause any overflow, which might then be wasted if the player decides to change production to a different ship type next turn. When producing small ships, the overflow is negligible, but when producing large or huge ships, the overflow can be quite substantial. If you are going to penalize accumulated/overflow ship production in case of ship production changes, there would really need to be some interface button to help the player quickly round off the ship production slider to the next highest whole integer ship. That might be a way forward if we wanted to penalize this "wasted" accumulation/overflow of ship production by sending it to the general reserve at the standard 50% penalty. RayF's proposal is another way of keeping the beauty of not having to worry about rounding while at the same time not allowing insta-fighter-swarms-o'-death. The only thing I'd worry about with his proposal is that having to take funds from a seperate ship reserve at each planet in addition to the common planetary reserve might mean more micromanagement for the player. I do agree with RayF that it is an acceptable trade-off to have the problem of huge ships being slightly out-of-date from the moment they roll off the production line. Huge ships are already seriously OP. Consider how a huge ship fights at maximum effectiveness right up until the very moment that it drops below 1 hp. Consider how an equivalent swarm of fighters with an equivalent total hp have their effectiveness drop off exponentially in a typical battle long before they get to 1 total hp left between them. Consider all of the anti-small ship counter-measures that exist (pulsars, ion stream projectors, black hole generators, scatterpacks, tachyon beams, etc.) What counter-measures are there for huge ships? The death ray? And then when you throw auto repair and some of the other specials that huge ships can make particularly good use of, huge ships just become OP. One huge ship, if it can survive the initial battle with a consolidated AI fleet (if the AI exists in such an organized manner in the first place) can completely dominate the steady trickle of reinforcements that an AI will try to send at it for 50 years afterwards.
Colony with base 100 BC production and 30% ship spending. I think the examples below should be accurate.
In all cases, Empire Reserve does not get the additional planet bonuses, and the Colony Ship Reserve will match the colony ship spending after planet bonuses Normal planet, no reserve 100 BC * 30% = 30BC Normal planet, 500BC reserve 100 BC * 30% = 30BC Add 100BC reserve * 30% = +30BC = 60 BC Normal planet, 500BC ship reserve 100 BC * 30% = 30BC Add 30BC ship reserve = 60BC Normal planet, 500 BC reserve, 500 BC ship reserve 100 BC * 30% = 30 BC Add 30BC ship reserve = 60BC Add 100BC reserve * 30% = +30BC = 90BC Ultra-rich planet, no reserve 100 BC * 30% = 30BC 30BC * 3 UR bonus = 90BC Ultra-rich planet, 500 BC reserve 100 BC * 30% = 30 BC 30BC * 3 UR bonus = 90BC Add 100 BC reserve * 30% = +30 BC = 120BC Ultra-rich planet, 500 BC ship reserve 100 BC * 30% = 30 BC 30BC * 3 UI bonus = 90BC Add 90BC ship reserve = 180BC Ultra-rich planet, 500 BC reserve, 500 BC ship reserve 100 BC * 30% = 30 BC 30BC * 3 UI bonus = 90BC Add 90BC ship reserve = 180BC Add 100BC reserve * 30% = +30BC = 210BC |