Main Page:
http://www.khoromag.org/ Download:
http://www.khoromag.org/taldren/scripts/coop-ace-3.0.1.exe Mirror:
http://klingon.stasis.ca/sources_and_utils/coop-ace-3.0.1.exe GenesisIn the beginning, there were fights. Two sided, three way, sometimes up to 6. And for a time, it was good. Then came a time where all wanted to play together, and so they all 6 tried to all join the A-Team. While all were instantly proclaimed winners by Starfleet Command, they however felt like losers in MPlayer.
Along came a coder, with a great big compiler, who learnt of the desire of six.
He collected ideas, from those gaming peers, and thought up a reasonable fix.
And thus Roger Bacon, with his new creation, dubbed forth the Coop-Ace.
Allowed any player, to team up together, and blast the AI into space.
Good things bring in cash
Taldren sprouts from coders work
E A War is born
With the arrival of Starfleet Command: Volume II, many new and different goodies were introduced. Unfortunately, this included a different mission building pack incompatible with the olden work. Many missed the joint mayhem that the Coop-Ace brought them when they signed up with their favorite Empire at War. This included what would become to Coop-Ace it's new King, yet somehow the 3rd. James King III, also known to the ladies as the Latex Lord "MagnumMan", took on the mantle of recreating the work of Roger while we assume Roger concentrated on bringing home the bacon.
With the inheritance of Coop-Ace, and the creation of Sector Assault, MagnumMan grew from being a respected player to also an accomplished contributor to the community. Versions and revisions of Coop-Ace were released, each better than the last. A large jump was made for the criminal element known as the Orion Pirates once the Cartels settled in.
And then, for a time, all was silent. MagnumMan had teamed up with a Dutch nicknamed Khoros to form KhoroMag, and step up for maintenance of Empires At War itself. Empires At War grew on, whereas Coop-Ace stood still. Problems started to surface before fans of Coop-Ace who were pushing the limits of their skills, yet no time was available for the King to look upon the subject. Thus the King MagnumMan decided upon to release the bindings of his work, and to invite any and all to take on the mantle freely and without constraints.
For a time, no one stirred, then FireSoul became curious enough to see what could be done. With counsel from MagnumMan, and input from Strafer, problems that had lingered became explained and eliminated. Attempts were made to make Coop-Ace as current to EAW as it was to OP, with growing pains being replied. A request was made to XenoCorp to help nail down any problems, and replies were brought in by the numbers. Many numbers. Numerous numbers, all greater than the last. For now work was steamrolling at such a rate that version numbers would often never cross the public eye.
So many numbers it even got 762 confused. --FireSoulMagnumMan, in the only show of ownership he didn't mind maintaining, would finalise the release by packaging the results, and releasing to the public as done in the past.
Strafer would contribute in more than advice when it came to give Coop-Ace's customizer a facelift. Having ideas as to how to increase the ability of Coop-Ace to surprise, yet restrain from creating unlikely battles, more tools were granted for the host with the most resources to set up a game for a match. Also, since EAW could not keep track of time, a setting was added to allow such a choice.
And now for a time, it's as good as it gets Ideas are now shelved, till functions can set drone loadouts or totals of BPV costs and captures won't mean your marines will be lost.
-- Strafer, mused and amused
--------------------------------------------------------
--------------------------------------------------------
--------------------------------------------------------
Technical Details and Explanation of the CoopAce script-------------------------------------------------------
The coopace script is, in my humble opinion, the most advanced script for SFC:EAW and SFC:OP. It is quite challenging to play against, and will make any player sweat for a bit if he or she understand how the script works.
.. in other words, if you understand how it thinks, it can be used to play better online games.
1- The BPV for the AI, and the Multiplier Ratio:
------------------------------------------------
The BPV offered to each player is NOT used by the script. It is the basic BPV of the chosen ships which will be used to calculate the BPV of the AI.
For example:
If the Multiplayer is set to 1.8, and the base BPV is 300 per player, the AI does not get 540 BPV to choose ships from. The player could very well choose a 200BPV ship, with certain extra components added (drones, shuttles, etc) raising it to 220BPV.
The AI will then have 200 * 1.8 BPV. (360 BPV)
2- The BPV of extra components for the AI:
------------------------------------------
The items a player chooses will augment the BPV available for extra items on the AI ships. Items used in the extra BPV calculations are Marines, Transporter Bombs/Mines and Spare Parts.
For example:
The player has purchased a Lyran ship for 200BPV. He also purchased 20 BPV of extra t-bombs and spare parts. The AI will then have 20 * 1.8 BPV for extra items. (36 BPV)
3- AI ship selection, Parsing:
------------------------------
Images:
SFC:EAW Customizer:
SFC:OP Customizer:
The customizer gives hosts a chance of selecting which races are available for selection, and if they're going to be mixed or of a single race.
Note:
"Random" means a single random race among the selected races.
"Selected" means a mix of the selected races.
Then, the customizer allows a narrowed selection of hull types to be available to the AI. Also, a percentage has been made available to manipulate the distribution of the hull types within the generated fleet.
This isn't simple to explain, so bear with me:
The script is set to load the shiplist directly from the shiplist.txt and ftrlist.txt files. It then parses the ships according to their hull types. If the race of the ship being loaded is not of one of the chosen races, it will not be parsed for AI selection.
The parsing is also era-complient:
SFC:OP provides an API function which detects the current era. SFC:EAW required a different era-selection method, so it was added directly to the customizer. Era-complience can be put as simply as the following sentence: "Select all ships that are in SERVICE during the era chosen".
In the above images, you'll notice that the EAW Customizer has a section just for selecting the ERA.
So.. for example:
Ship F-CA+ is being parsed for selection.
- The era chosen is Late Era. Parsing continues with success.
- The Federation is a selected race. Parsing continues.
- The ship is a "Heavy Cruiser" and that hull type is available for the selection. Parsing continues.
- The ship is added to a smaller in-script shiplist just for the "Heavy Cruisers".
Note: In SFC:OP, fighters and PFs are parsed too. The appropriate era and race fighters can be made available on an AI ship. This makes the AI a difficult foe.
Note: In SFC:OP, Advanced era is the most difficult era to deal with, especially when dealing with "ships in service" phylosophy. So I did a small adaptation in case it is chosen:
- if 100% of the players are using xships, then 100% of the AI will also have xships.
- if 2 out of 3 players selected NON-xships in Advanced Era, then there's a 2/3 chance that the enemy selected will be a mix between NON-xships and xships.
4- The game begins:
-------------------
"The players have all chosen their ships. The game has actually begun, but it seems like everything is paused. What's happening?"
The AI ships are selected once the game begins. There is no AI team in gameplay yet. Technically, the game itself hasn't started yet as the host is still crunching away. Individual players, however, may be able to move and select "Red Alert"... .. and target each other. They may even see each other as enemy ships for a short period of time.
5- The AI ships are selected:
-----------------------------
Selection is done in a ever constricting loop. Each pass of this loop covers a potential selection of a ship for the enemy team. Here's how it works:
a- the player total BPV for ship selection is calculated here.
b- The loop begins. It ALWAYS begins with the largest hull type, battleships.
c- is the current hulltype turned on? If yes, continue. If no, select the next hulltype and go to step c. If no hulltypes are available, start game without enemy. The next hulltype after "Frigate" is "BattleShip": it loops around.
d- The hulltypes are: BattleShip, Carrier, Dreadnought, Heavy BattleCruisers, New Heavy Cruisers, Heavy Cruisers, Light Cruisers, War Destroyers, Destroyers and Frigates.
e- A random number between 1 and 100 is selected. It is compared with the "Odd" selected in the customizer. If the number chosen is smaller than the random number, a ship MAY be selected. Continue. Otherwise, go to step c,
next hulltype.
f- A ship is chosen, randomly, from within a small shiplist created for this hulltype during parsing. If a ship is indeed chosen, it is compared with the BPV available. If there's enough BPV for the ship, the BPV available is reduced by the BPV ammount of the ship and the ship will be created. Go to step c. If the ship costs too much, it is REMOVED from the small shiplist to prevent future selection. Go to step c.
The above continues until there is 0 BPV left for the AI, or not enough BPV to select anymore ships (most common). Leftover BPV will be used for extra item selection for the enemy ships.
There is room for 4 teams of 8 ships for the AI. The CoopAce script will not create more than 32 enemy AI ships.
6- The AI ships are equipped:
-----------------------------
The game starts.. but at about a second or 2 into the game, the AI ships are updated. The BPV for the AI's extra equipment can only be calculated once the game has started. The player's loadouts are compared to the stock version of their ships. Namely, Marines, TBombs and Repair Parts are tallied.
All AI ships are created outside of sensor range to give the game enough time to equip them fully before engaging the player ships in combat.
NOTE: No BPV is calculated for player fighters or drone load-outs. Why?
1- There is no function to find out the players' fighter loadouts. The AI will get era-complient fighters anyways (in OP only)
2- There is no working function to set the drones of the AI either. They get free era-based drones automatically anyways.
Anyways, the extra equipment BPV is calculated and the leftover BPV from ship selection is added to it. Then, 1 by 1, items are selected and randomly spread among the AI until there isn't enough BPV to distribute it. Like I said above, the AI ships get contemporary drone loadouts... and fighters. Trust me, Hornet-IIIs are impressive foes.
7- During the Battle:
---------------------
Here's a few things you should know:
1- enemy ships can be captured, but they will Self-Destruct. I have never been able to maintain a stable captured AI ship. It's just simpler for it to be destroyed if captured.
2- host drops will NOT force people to end the game. Traditionally, a host drop will cause all AI to go "zombie". A solution was found and applied, and although much parsing may be needed by the new host, the game will continue. In SFC:OP, the Carriers are stripped of fighters if the host changes. A new host selection caused a spontaeneous fighter regeneration within carriers. Not good.
3- the number of enemy units ay well go over 32 if carriers are involved. If this happens, some ships or fighters may seem to be "parked" in the distance. ...they will activate once enough enemies are killed.
8- Conclusion:
--------------
The coopace script is complex and complete. At this time, there are no plans for improvements, especially since there is very little room for it. Random terrain generation is doable, but not enough to affect the gameplay at tihs time. The only thing which would make me review and improve the coopace is an API update.
For example:
- a working mSetDrones
- creation of a mGetFighters
- creation of a mGetShuttles
- working capture code.
Enjoy the CoopAce, even if you are alone. If you're at a LAN Party, then it becomes a must-have. Good Luck, Have Fun and Good Hunting.
-- Luc
FireSoul
Edit: formatting.
Edit2: Added a proper sig for Strafer
Edit3: URLs for downloads. (oops? Thanks Mags.)
Edit4: Formatting, again, for the Haiku and poem.
Edit5: Comment on 762.