Learning from knowledgeable fans

The Master of Orion fan community at RealmsBeyond.net is a wonderful resource for my Java MOO development. There are a devoted group of fans who still play the original Master of Orion (it is the best of the series, after all).

But since Java  MOO  is intended to be a strict feature clone of MOO1, all of the gameplay and testing that they have done for MOO1 directly applies to Java MOO! They have compiled detailed lists of bugs, cheats and exploits in the original game for players to avoid (or use in desperate situations).

This gives me a ready-made list of some esoteric things to make sure are working before releasing Java MOO into the wild.

Below is my working list, much of it cribbed from the RealmsBeyond forums. The red text describes my planned solution for the particular issue.

My nomenclature:
BUG – behavior in the original game that is clearly not within the original developer intent.
CHEAT – features that the player can use that the AI cannot or will not use, creating an imbalanced playing field.
EXPLOIT – behaviors that the AI is not smart enough to deal with, but that the player easily ignores when the AI does it.

BUG: Stargate Redirect
Sending a fleet through a stargate and then redirecting it to an enemy planet will allow the fleet to arrive instantly at the enemy planet.
Java MOO: Redirecting a fleet will always calculate the proper flight time.

BUG: Invading Spored Planets
When a planet has been spored out the factories are left intact. Once such a green spud has been recolonized, anyone can invade it and lift away the new owners tech, proportional to the factory count, irregardless of the fact that the planet only has 2 pop and you didn’t have to fight *anything* to make the invasion happen and nor did the new owner (necessarily) invest anything into it…
Java MOO: Original ownership of factories are tracked until converted, so recaptures of colonies will not grant techs according to factory ownership rather than colony

BUG: Bioweapons  During Combat:
When a world is spored out *during combat* rather than from the main screen the colony will die post-battle and you (the player) will escape diplomatic ramifications, both from using spores and destroying the world. Should an AI be defeated by these means the game will report that they commited autogenocide and again you escape the diplomatic ramifications of genocide.
Java MOO: Use of bioweapons during ship combat will trigger all appropriate diplomatic penalties

BUG: Infinitely Recharging Specials:
Special equipment like Warp Dissipators, Ion Stream Projectors, and Automated Repair recharge themselves every time the ship has an opportunity to move in the official release of the game. By using the “Wait” button, you can hit enemy ships an infinite number of times with special weapons, repair any and all damage to your ship, or both.
Java MOO: Used specials will not recharge and automated repair specials will only activate at the end of the combat turn

CHEAT: Galactic Council Swing Vote
While the AI votes in order of population, players always get to vote last, allowing them an opportunity to tactically use their vote with little risk.
Java MOO: All empires, including the player, will cast their votes in order of population, greatest to least.

CHEAT: Empty Threats
The player has the option to threaten the AI with attack. This has the effect of causing any fleets currently inbound to player worlds to instantly retreat, and sometimes results in the gift of an obsolete tech. This tactic is usually used when the AI has a fleet inbound to a world that the player cannot adequately defend. Some feel that this tactic is exploitive as the AI often backs down from such threats, even if they have a clear power and/or military advantage. Also can be used to brow-beat a cowardly AI with repeated use for multiple techs without much penalty.
Java MOO: The force of any empire’s threat is valued by the power differential of military fleets. Weak fleets = ignored threats. In addition, repeated threats lose power.

CHEAT: Canceling Retreats
Whenever the AI retreats from a planet, the fleet is always re-directed to its closest owned planet. The player, however, has the option to re-direct the fleet anywhere on the map, including staying in the system. This can give a huge advantage to missile/bomber ships, allowing them to wittle down fleets and bases with very little loss that they would not otherwise be able to defeat.
Java MOO: Retreating ships can no longer be redirected back to the system.

CHEAT: Hyperspace Communications
This technology allows the players to redirect fleets while in transit. The AI, however, does not use this capability even though it will research or trade for the technology.
Java MOO: The AI will use Hyperspace Communications to redirect fleets as needed.

CHEAT: Dodging missiles with the ‘Wait’ Button
Some people feel that the use of the wait button in and of itself falls into the exploit category because the AI does not have this capability. This allows, among other things, for fast bombers to out-run slow missiles, “training” the AI to attack decoy ships, etc.
Java MOO: All missiles move at the end of each round.

EXPLOIT: Guarding uncolonized planets with scouts
It is possible to prevent the AI from  scouting planets by ‘guarding’ them with unarmed scout ships. This greatly slows down the early AI expansion.
Java MOO: Ship combat will not trigger if there are no armed ships in a system, so scout ships cannot prevent other scout ships from  arriving in a system.

EXPLOIT: Instant fleet construction
It is possible to queue up production in a large ship, and then switch to a new design of smaller ships and immediately build an entire fleet of ships in a single turn.
Java MOO: Switching ship construction moves all accumulated production to the colony reserve, which can only be used to speed production (up to double) on subsequent colony projects.

EXPLOIT: Funneling reserve through ultra-rich planets
Because ultra-rich planets triple production, players can funnel reserve from UR planets (at 150%) and then back into the same planets to greatly increase production.
Java MOO: Reserve funds sent to planets will not gain any further planetary bonuses or penalties.

EXPLOIT: “Spectator Wars”:
It is not difficult to convince an AI to declare war on another, sometimes even an ally, allowing you to starts without getting involved yourself.
Java MOO: Asking an AI to declare war will, if accepted, cause the player to declare war automatically .

EXPLOIT: Bribing:
The AI in Moo can be pursuaded to do just about anything with enough bribes of BC or outdated tech. Can be considered an exploit if used to excess.
Java MOO: The value of BC bribes is proportional to the bribed empire’s economy, and will scale proportionally to the square root (i.e. 4xbribe = 2xeffective). In addition, only one bribe per turn is allowed.

EXPLOIT: Trading Worthless Techs:
The AI will place irrationally high values on some techs that it cannot use, or are out-dated. The best example is the Silicoids, who will trade dearly for Soil and Advanced Soil Enrichment, but can never use it. Similarly, everybody else will trade high for Soil even if they already have Advanced Soil.
Java MOO: the AI will not value obsolete or unuseable techs. Others are valued based on marginal improvement (i.e  Terraforming +80 will be more valuable if the AI has only +20 instead of, say, +60).

EXPLOIT: “The Yo-Yo Trick”:
The AI is hard coded to try and avoid any missile on the tactical screen it can outrun, even if the damage taken from a hit would be minimal. This allows the player to “pin” enemy ships in the back rows of the tactical grid by firing slow missiles at ships as they approach, wait for them to retreat out of range, and repeat as they close again. In the mean time, the fleet is taking damage from planetary missile bases, since those rounds do not have a maximum range. This often results in the player being able to defeat a clearly superior attack fleet with an obsolete missile boat stack and a few missile bases.
Java MOO: AI will properly assess threat of various enemy stacks and will act accordingly.

EXPLOIT: Baiting:
The AI will try to attack any ship it feels it can beat on the tactical sceen, even if that will result in significant damage/desctruction of the attacking fleet with respect to the value of the target. Probably the best example is using unarmed scout ships over planets with missile bases to destroy enemy ships.
Java MOO: AI will properly assess threat of various enemy stacks and will act accordingly.


Artwork: Inferno Planets

Below is the current working background for Inferno planets. These are modeled after Venus, with dense atmospheres and ground temperatures reaching 864 degrees Fahrenheit, almost hot enough to melt Lead!