islador
Gallente Frontier Explorer's League
|
Posted - 2011.07.27 16:29:00 -
[1]
I also immediately ran across the "pre-calculated warp speed" optimization. I'm an amateur coder and skilled FC, so the first thing that popped into my head is "Yeah, every 5 minutes it doesn't matter, but when I'm pinging a 25 man bomber team or a 15 man ceptor/dictor gang around in a system with 1050 people, I don't wanna wait 300ms for it to kick in."
The specific fix that kicked into my head was that warp speed can be a calculated variable offloaded to the character node or whichever one you're using for misc crap these days. Essentially what I would do is have each fleet, wing and squad have a master warp value. This value is re-checked each time someone reships or a new person joins the squad/wing/fleet. Because this forms a bottom up system, you would only need to calc out the values of each squad, from that point on, determining the slowest speed in each wing/fleet is just a matter of comparing the master values. Since warp values are pre-calculated by whatever handles the application of skills + rigs to the ship, you would run a comparison across the squad. Each time an individual joins a squad (and thus the fleet) the process would need to compare the squad value against the new pilots ship, if he's slower, the squad value is equal to it. Unfortunately because you have to recalculate this value each time someone reships/joins the fleet you have a massive amount of processing during mass fleet forming and reships. For this reason you'd want a grace period of a couple seconds immediately after a fleet advert is made, say 2 seconds to throw out an arbitrary value.
During the first 2 seconds when a fleet link is posted you'll see 50 to 250 pilots join up, this will give your calculation a base value based on the ships currently flown. Most fleets form up in station, system lag shouldn't be too high during the forming stages, even with pilots constantly reshipping and moving around squads to setup the fleet hierarchy. This also doesn't handle podding well, as we wouldn't want fleet warp set to 0 when someone takes the capsule express.
The next hurdle is how this calculation would impede on fleets during combat. As pilots are reduced to pods and eventually their clone bay each reship would result in a recalculation of fleet warp speed. I don't know enough about how the podding process works, but in order to preserve game mechanics, anyone not in a ship (pods are ships) would need to have their value removed from the equation without having themselves removed from the fleet, so as far as fleet-warp is concerned, they are a null value if they aren't in a ship.
Pods are a little harder to handle as they are produced mid-combat and not calculating at each reshipping would alter game mechanics. For this reason, 3000 characters into this post, I've been forced to accept that the concept of trading a value calculated on the fly for a pre-calced master value sounds nice, but isn't feasible in EVE based on my knowledge. I say this because the performance bottleneck we're trying to avoid is the 300ms while initiating a fleet warp. The system I've described would negate that right up until someone is killed as that would force a reship and thus a recalculation, so now we're adding a couple milliseconds to the fight in exactly where we don't want it -> Right in the thick of combat. There is also the potential with this system for someone to sit in station in their carrier while being in an interceptor squad, thus slowing down the squad warp speed and perhaps the wing as well.
CCP Veritas is better equipped to determine whether a milisecond or so everytime someone is podded is a performance gain or not, and I hope he takes the time to check that at some point, but from my perspective, it isn't worth exploring.
|