Blocker + Defender
Blocker and Defender will be engaged in a strategy called Team Defense. This will also be utilized in offensive
plays as the ball moves upfield. Since the goal is so wide, the defender
and the blocker will work in tandem to cut down all angles while staying
out of each others way, and being fully independent. First, the blocker
prefers to be on the same side of the field as the ball. This gives him a
more optimal position if the ball suddenly moves toward our goal. The
blocker will thus work on defending the chunk of goal on the same side of
the field as the ball, while the defender picks up the remainder. The
algorithm works as follows:
Split the goal in half (or in some other non 50:50 cut as defined in a
parameter file if so desired) and consider the chunk of goal on the same
side (widthwise) of the field as the ball. Determine the most optimal
position to place a robot in the middle sector, death zone (see square
blocker is in in figure) such that a robot placed here will cut down as
best as possible this section of goal. If unable to block entire section
of goal, split open space 50:50 to decrease allowed error in shots allowed
to score. Consider this point to be the blocker
point.(Note: this is not necessarily where the blocker will be!)
The defender will calculate this artificial point and assume the blocker is
really there. The defender will then consider the larger portion of
uncovered goal and will attempt to cover it, running the cut down skill
and limited himself to be in the defense zone.
Next, the blocker will look at the portion of the goal the defender is
CURRENTLY (based on vision data) covering. The blocker will in turn run
cut-down defense on the remaining portion, and limit himself to be in the
death zone. As the defender moves into position, the blocker will need to
cover less and less goal, and the two will converge into a sharing
position.
Notes:
- If the defender does not exist or is not found, it is assumed he is
covering none of the goal.
- If the blocker does not exist or is not found, the defender will run
cut-down defense on the entire goal mouth, limiting himself again to be in
the defense zone.
Blocker: TandemBlockerSkill Defender: TandemDefenderSkill
|
Special Op Defender:
The special op will try to cover 1-2 opponents, but not the
opponent who actually has the ball. First, construct an array of opponent
locations. Then remove any opponent who has possession of the ball, who's
x-coordinate is greater than the balls x-coordinate plus a grace distance,
or is on the opposite half of the field than the ball (widthwise). Order
the opponents based on increasing x-coordinate, such that the first
opponent is closest to our our goal line (small x-coordinate). Mark this
first opponent as Op1. Of the remaining opponents, pick the one closest to
the ball and mark him as Op2. See figure for an example.
Draw a vector through the center of Op1 and the ball. Consider the area on
the goal that Op2 has a good open shot on if he had the ball suddenly, and
draw a vector through the midpoint of this open area and Op2. See figure
for these vectors.
Send the special op defender to the intersection of these vectors. The
special op. defender will effectively be playing pass-block on op1, while
playing shot-block on op2. Set his angle to look directly at the ball in
case the ball does actually come to him.
If Op1 exists but no Op2 exists, screen Op1 as close as possible to him,
while looking at the ball. This both acts as a pass-block, but also
removed Op1 from the play since he will be cut off.
If neither Op1 nor Op2 exist, go to a default position on the opposite
side of the field (widthwise) than the ball. Go in the middle of the sweet sector,
defense zone. Split angle between there and the ball and there and the center of the opponent goal.
This keeps the special op defender out the way,
while allowing him to quickly move forward and assist the aggressor once
we obtain possession of the ball, and makes it impossible for the opponents to score off the special op with a bounce shot into our goal.
If Op2 does not have an open shot, assume Op2 does not exist.
If Op1 and Op2 exist, but Op1 is closer to the ball than Op2 (purely the
difference of the y-coordinates), then just do shot-block on Op1.
If op1 does not have a lane between him and the ball, no need to do pass block on him, so just do shot-block on Op2.
Special Op Defender: LooseDSpecialOpSkill
|