Thursday, October 11, 2007

Madden: Draft A.I.

In the Madden post last night, I bitched about the draft A.I., because it sucks, and after releasing this game every year since the late seventeenth century, Tiburon should have it rock-solid by now.

Maybe, though, draft A.I. is just some really complicated thing to program, right?

Well, not so much.

Here's a very simple version of how draft A.I. could work, and it would produce entirely reasonable drafts.

The equation:
Position Need=1+(Position Modifier)-(Difference from League Average at Position)-(Age Modifier)

The explanation:

POSITION MODIFER
--a team focus gets assigned to each team--examples would be passing offense, balanced offense, run offense, and defense. One focus per team.

--based on the team focus, a value modifier is assigned to each position. Positions are valued equally before determining the modifier. As an example, in a passing offense, a value bonus would be given to the QB, WR, and LT positions, while the FB value would be reduced. Or if a team was defense focused, the LB would be given a value premium, while WR might be reduced.

DIFFERENCE FROM LEAGUE AVERAGE AT POSITION:
For the projected starter at each position, compare the player's overall rating with the league average of projected starters at that position. Calculate the difference as a percentage, so if your starting MLB has an overall rating of 72, and the league average for starters at that position is 80, that's a discrepancy of -10%. In other words, your MLB is below the league average.

Please not that you're subtracting the difference from overall need, so if a player is below the league average, that difference (which is negative) actually adds to the position need.

AGE MODIFIER
A very simple system to factor in player age would be to add 20% to a rookie's rating (to better represent his potential), then subtract 4% of that bonus every year. For example, after four years, you'd take the player's current rating and add a 4% bonus.

After year five, you'd start subtracting 3% from the overall rating for each year over five. So a nine-year starter's rating would actually be decremented by 12%. That would be capped at a 20% reduction.

Some positions, like running back, have much shorter careers, so they'd have a higher burn rate. Different rates could be calculated for each position, even.

The point of this is not to establish a player's absolute value but the need to find a replacement.
So an 80 rated QB who is 23 years old, for example, represents far less of a draft need than an 80 rated quarterback who is 35.

EQUATION OUTPUT
What you wind up with is a "need order" by position.

There's only one step remaining, and that's to consider backups. For the top ten positions of need, as an example, you'd look at the backup at those positions and see if their age-modified value is higher than the starter.

Why don't I just do that with all positions right off the bat? Because by limiting it to the top ten positions, I have to look at fewer backups--and do fewer calculations overall.

If the backup's rating, age adjusted using the age modifier, is higher than the starter's, then the backup's values are plugged into the equation for that position. That can change the need order inside the top ten.

That's it.

DRAFT PROCEDURES
Draft based on need, and when a player is drafted for a need, it gets removed from the top ten. A very simple drafting procedure would be that any of the top three current needs could be addressed with the next draft pick, based on overall player ratings.

Sure it's not comprehensive, but it would be easy to improve, and as a base, it would work. Plus, since Tiburon wrote the player progression system, they could tie in the age variables to match how the player progression system actually works (peak age, for example).

So did it take me weeks to put this together? No, it took an hour to think about it and an hour to write it up.

In other words, there are absolutely no excuses for Tiburon's draft A.I. to be so poor. None. It's just not that hard to create a reasonable system.

Site Meter