Authors:
- Kevin Lyons
- Will Bickford
Just throwing a few thoughts out there:
- PvE combat
People tend to like PvE combat, maybe inclusion of alien races or space banditos, something to that effect. Just a thought.
Chris and I discussed combat to some extent over IM the other night. We thought that artificial intelligence should play a vital role in getting players to work together to achieve goals (mutual preservation and the like). I'm a big fan of PvE content. Chris suggested that we give ourselves an interface to control these "computer-controlled" enemies, taking the A out of AI. :)
Perhaps as you become more "powerful", you attract more attention from these hostile NPCs, creating more challanges to staying higher in the rankings. Would need to be well balanced though.
/signed
Example:
Space Banditos
- attack top 100-200 (random) ranked players above level X
- mid-level tech, not a high threat but can wear down defenses
- attack top 3-5 most lightly defended outposts determined at random
Alien-Human-Hybrid Raiders of Doom
- attack top 10 (random) ranked players above level X
- high tech, high threat
- attack highly defended outposts determined at random
Combat is resolved identically to player vs. player combat.
May cause high system load depending on implementation, perhaps cron based hourly/nightly sweep that calculates and attacks?
Combat and trade calculations will certainly be a difficult part of the implementation, and I'm hoping our resident database gurus will have some insight into that.... *ducks*
One thing that I'm sure of is an hourly task which calculates results in that fashion has the potential to either bog down severely on the hour tick, or cause exceptionally annoying delays in game actions. If players realize (and they most certainly will) that certain things, like resource production, happen at a deterministic time they will game that to their advantage in the world, which will only exacerbate the problem of peaky loads around these times. I've given some thought to this in terms of combat iterations. I propose that long term actions like this be represented as a timestamped value and rate, and that the UI interpret these in order to give the illusion of continuous updates. Then, on the server side all we need to store is the start of a given rate trend and the current value at that time. Then, when the value is needed the new current value can be calculated based on the amount of time spent at that rate.
I've given some thought to this angle as well. I was thinking more along the lines of epic battle where the NPC is so powerful that it virtually requires the cooperation of hundreds of players in order to win. The rewards would have to outweigh the cost of coordinating so many players though.
Which brings up a good point: what are the "rewards" at this point? Do you have a sense of what the players primary motiviation will be?
Rewards within the game come in the form of resources and rankings. There is no points system exactly - other than ranking of technology, ships, planets, resources, victories, discoveries, etc. The points are all relative though - the idea is to get players to compete. Points don't award any benefits. The primary benefit of combat is to control resources.
One thing that could help system load as we scale is determining which calculations need to be done at various time intervals. Really though, my guess is that we'll be primarily bandwidth-limited. I've been known to be wrong though I suppose.
I wouldn't count bandwidth as too much of a limitation at this point. A lot would depend on what the networking (send/recv) capabilities in Flash are, such as can it open socket connections to non-standard ports, etc, but it's fairly simple to keep the data transfer low.
I don't think that Flash has the ability to open any network connections except to the origin server. So all data transfers have to take place between the client and our server. The reason I'm concerned about bandwidth is because it directly affects the cost of a given player base. We also want to enable more direct control of battles - every feature eats up a little more. I need to sit down and see what 750MB per player per month would give us.
- PvP Combat
We're looking to provide more depth to combat than just playing a numbers game. In addition to fleet gains and losses I think we need to provide techs for improved effectiveness, retreat, formation, etc. Another issue to be worked out is the average length of a fight. In games like Astro Empires, the battle takes place instantly rather than taking X units of time.
Sounds like you want to have a higher level of complexity to the combat system then just "click and attack", though I'd suggest you allow a variant of that to keep the more casual gamers happy. Maybe have an "auto-battle" system (Admiral's Mode) and a manual battle system (Captain's Mode) to address different play styles. Maybe not, just a thought.
I think that the automatic battle mode should require a low-level tech. I like the idea of the different battle modes; not everyone wants the details.
If we configured the game to allow attacks to take hours or even days, it would give players a chance to "get in on the action" before it's over. It would also make it more difficult to just stack the odds in your favor - take the example of a mothership for example:
- A mothership has 2 billion shield points.
- Enemy ships can deplete 100 shield points per second per ship.
- There are 500,000 enemy ships.
- Thus, it would take 40 seconds for an encounter like this to play out.
It would take 40 seconds of server time for this to play out - need to take into account lag and/or dropped connections, etc. To head this route, might want to allow battles to be drawn out a little longer to account for issues with latency.
As a side note - might want to try and keep the numeric values a little lower. You may run into MAX_ overflow issues depending on the language used. In that example, 3 motherships would cause an integer wrap in most languages unless you were very specific and very careful. Just a thought.
If you're thinking more epic battles, how about something along these lines (again, just a thought):
Start with the assumption that combat takes "rounds". A round being an arbitrary length of time that accounts for giving anyone who wants the chance to act to act (say somewhere between 20 seconds and 1 minute).
Now assume that you've got two unit types, motherships and fighters. They play out like so:
- A mothership has the following stats:
- 10,000 to 20,000 shield points depending on tech
- 10,000 "hull" points that're lost after shields are gone
- Base escort of 500 fighters, upgradable to 2,000 depending on resources
- Base damage of 1000 - 2000 points (shield first, then hull) to a given fleet, with tech upgrades allowing for more. Value is randomly determined
- A fighter has the following stats:
- 10 to 15 shield points depending on tech
- 10 "hull" points lost after shields are gone
- Base damage of .25 - .50 points (shield first, then hull) to a given
- fleet. Value is randomly determined.
Combat begins between the Xarqoun and Urton fleets, mortal enemies to the end. The Urton launch an attack against the Xarquon with a fleet of 10,000 fighters. The Xarqoun have a mothership that's had shields and damage upgraded by tech, but still has the base 500 fighter escort.
The numbers aren't important here, it's the process, so ignore the math. ;) Trying to get a description of the steps combat might take and what all will need to be accounted for.
Round 1 ------- Arbitarary initiative is taken, defenders go first. The mighty Xarquon fleet mothership lets loose a powerful blast from their giant mechanolaser, hitting the attacking fleet for 1500 points.
The enemy fleet is reduced in number by 75 ships!
The Xarquon fleet fighters then attack, firing a massive volly and doing 125 points. Another 6 ships are lost, 1 is damaged.
The Urton fire back, 2500 points of damage to the escorts, wiping out 125 total ships. The Xarqoun escort fleet is down 1/4...
The Xarqoun fleet sends out a distress call, asking for aid from anyone close...
Round 2 ------- Arbitrary initiative is taken, attackers go first. The Urton let lose another blast, again 2500 damage and 125 ships down.
The Xarqoun fleet mothership fires again, 2,000 points to the Xarqoun fleet and 100 ships down.
....
Round 5 ------- The Xarqoun mothership is defenseless, shields are half gone and the fleet is fading fast. Suddenly, from a nearby portal appears a second mothership with a full complement of 1,000 extra fighters. Guild allies have come to save the day!
The Urton, however, are not impressed and send half their remaining fleet off to fight this new incursion...
That type of scenario looks great to me. I think that battles should take a non-zero amount of time so you can have them play out in ways you might not have anticipated. Take, for instance, the first guild to reach portal tech:
The Waspachens have worked long and hard to meet the requirements for adding portal generators to their ships. They've been bullied and beaten by a number of guilds up until this point, but now they're ready to exact their revenge...
The Norils are overly-confident. They've chased a large contingent of Waspachen transport ships far from home. The Norils know that the Waspachens have been moving a lot of uranium around lately, but they're not exactly sure why ... only that their clients pay well for the substance.
The Waspachens have managed to trick the Norils into leaving their main planets relatively un-protected. The Norils have never been conquered and the closest enemy ships are 20 days from their homeworld. Thus, guild commanders aren't worried about sending their heavy fleet after the extremely valuable Waspachen shipment.
Just as the Norils are about to overtake the shipment, however, all hell breaks loose. It starts with a massive energy signature on the Noril scanners just 5 km from their homeworld. Nothing that big could have made it through their defenses un-touched!
....
Five hours later, the Waspachens have obliterated the Noril homeworld and taken control of every major shipping route. The un-expected attack stuns the other races and forces the trade federation to intervene...
If you look at the techs page, you'll see that we're planning on providing portal technology. So within a warning system in place, you might be able to respond to an attack on your mothership before it "splodes". That reminds me - I need to talk about e-mail, chat, and in-game notification messages...
As another note, what about off-line combat? If someone gets attacked while not actively playing, there should be a method in place to handle battles w/o player intervention. Which also ties into the messaging, etc...notifications of being attacked when off-line, that sort of junk.
That might nicely dove-tail into support for an "auto-attack" mode as well as a manual attack mode. Basically, you can assign your fleets to attack and let the server work it out while you log off, as well as have the server resolve conflicts for you when you're off-line and attacked.
