Here's how play design works:
Each offensive play has 3 OL, 1 WR, and a QB. The other 3 players are chosen from the following:
1 extra OL
1 or 2 RB
That gives you the offensive set.
The offensive formations are pretty open right now, but need to have a QB and the 3 OL in normal positions. I generally have all RB in the backfield and all WR near the line, but that's not hard-coded. The 4th OL is usually off to the right of the other linemen, but that's not really a rule. I also usually line up OL1 at LT because DL1 is opposite him. I've found that switching OL1 to the right usually ends up badly for the QB.
Available player assignments:
pretty simple assignment. The player AI handles all the logic.
Blocker determines the best defender to block and executes. The decision is made based on a "inside-out" strategy. The blockers nearest the point of attack take the best defender (based on block angle and distance) and then the next closest blocker picks a defender, and so on until all run blockers have an assignment. Double-teams are determined by the AI. No additional assignment is necessary for run blocking.
Basically a run block that has a route. The blocker will execute the route, and then will become a run blocker when he gets to the end.
It's a little like a lead block. The difference is at the end of the route. A screen blocker will stop and wait for the pass to be thrown before turning into a run blocker. This allows you to set up blocking formations for your screen passes. That's the only difference, though.
The guy running the ball. He will follow his route until he gets to the point of attack. (the spot where the running assignment ends) Once he hits the point of attack, his AI takes over and he becomes an "open field runner". I've had success creating "read" runs by placing the point of attack 4 yards behind the LOS, and letting the runner find the hole. The downside of that kind of play is that he may not find a hole, and will lose a ton of yards. Kind of the Barry Sanders strategy. Read runs are cool if you have a high-skill RB and a great OL. For normal RBs and normal OL, it's usually better to get to the LOS as quickly as possible and find holes on the 2nd level.
Player runs a route with up to 4 nodes. A node is essentially a corner, or a defined point on the route. Nodes are where the player changes directions, pauses, or stops. The player doesn't do anything while he's running between nodes, other than try to avoid running into other players. When the ball is thrown, the route is thrown out the window and the receiver tries to adjust to the ball.
The QB on passing plays.
Within those, there are a few additional options:
How long the QB waits before starting to read receivers. I use this to let receivers get into the routes before looking to pass. I generally set this to 0.75s on regular pass plays.
The number of reads the QB will do. (1 to 4) Right now I cycle through the reads from 1 to 4, and then restart at 1. High skilled QBs will read at a faster rate than low skilled QBs. That also allows them to go through the cycle multiple times in the same time a bad QB would get through once. Knowing that your QB will/won't get a second or third read cycle has made for interesting play design options. It's been fun designing plays for average QBs to get through all the reads once, but also adding in a little something extra for the great QBs that get a second/third cycle. It also means there are times you'll only want to have 2 reads, because you'll want most QBs to go through the cycle more than once. I've also have played around with 1-read plays. They work if you really want to lock onto a WR and wait for him to get open.
Progression number (0-4):
Which read the receiver is. If a receiver is set to progression number = 0, it means he's a decoy.
For all players with routes:
: You can put a delay into any route, at any node. If you put a delay in before the 1st node, the player pauses before making his first move. If you put a delay later in the route, the player will pause when he hits that node, and then start running again when the delay is up. You also need to specify the amount of time to delay. I use this to have WRs pause before going into routes (so another WR can clear the space) or to have RBs pause before starting a run (to allow blocking to develop).