TIGERs Sumatra¶
Attackerの状態機械¶
stateDiagram-v2
Protect --> ApproachBallLine: ballMoves
Protect --> Kick : switchToKick
Dribble --> DribbleKick: switchToDribbleKick
Dribble --> Kick: switchToKick
Dribble --> Protect: FAILURE
ApproachBallLine --> Receive: SUCCESS
ApproachBallLine --> approachAndStopBall: FAILURE
ApproachBallLine --> approachAndStopBall: closeToBall
approachAndStopBall --> Protect: SUCCESS
approachAndStopBall --> Protect: FAILURE
Kick --> Receive: SUCCESS
Kick --> Protect: FAILURE / INVALID
Kick --> FreeKick: waitForKick
Kick --> FreeKick: useSingleTouch
FreeKick --> ApproachBallLine: SUCCESS
FreeKick --> Protect: FAILURE
Receive --> Protect: SUCCESS
Receive --> Protect: FAILURE
Receive --> Redirect: SwitchToRedirect
Redirect --> ApproachBallLine: SUCCESS
Redirect --> Protect: FAILURE
Redirect --> Receive: switchToReceive
DribbleKick --> Protect: dribblingKickIsBlocked
DribbleKick --> Protect: FAILUR
Keeperの状態機械¶
stateDiagram-v2
Stop --> Defend: !stoped
PreparePenalty --> Defend: !isPreparePenalty
MoveToPenaltyArea --> Defend: SUCCESS
MoveToPenaltyArea --> Defend: isKeeperWellInsidePenaltyArea
MoveToPenaltyArea --> Stop: isStopped
MoveToPenaltyArea --> PreparePenalty: isPreparePenalty
Defend --> Pass: ballCanBePassedOutOfPenaltyArea
Defend --> Rambo: canGoOut
Defend --> GetBallContact: isBallBetweenGoalyAndGoal
Defend --> MoveToPenaltyArea: isOutsidePenaltyArea
Defend --> Stop: isStopped
Defend --> PreparePenalty: isPreparePenalty
Defend --> Intercept: canInterceptSafely
Pass --> Defend: isBallMoving
Pass --> MoveInFrontOfBall: ballPlacementRequired
Pass --> Stop: isStopped
Pass --> PreparePenalty: isPreparePenalty
Intercept --> Defend: hasInterceptionFailed
Intercept --> Pass: ballPlacementRequired
Intercept --> Stop: isStopped
Intercept --> PreparePenalty: isPreparePenalty
Rambo --> Defend: isBallInPenaltyArea(0) || isGoalKick()
Rambo --> Stop: isStopped
Rambo --> PreparePenalty: isPreparePenalty
MoveInFrontOfBall --> Defend: isBallMoving
MoveInFrontOfBall --> Defend: ballPlaced
MoveInFrontOfBall --> GetBallContact: SUCCESS
MoveInFrontOfBall --> Stop: isStopped
MoveInFrontOfBall --> PreparePenalty: isPreparePenalty
GetBallContact --> MoveWithBall: SUCCESS
GetBallContact --> MoveInFrontOfBall: FAILURE
GetBallContact --> Stop: isStopped
GetBallContact --> PreparePenalty: isPreparePenalty
MoveWithBall --> Defend: SUCCESS
MoveWithBall --> MoveInFrontOfBall: FAILURE
MoveWithBall --> Stop: isStopped
MoveWithBall --> PreparePenalty: isPreparePenalty
BallPlacementの状態機械¶
stateDiagram-v2
Receive --> Prepare: SUCCESS
Receive --> StopBall: FAILURE
Prepare --> DropBall: ballIsPlaced
Prepare --> GetBallContact: success
Prepare --> Receive: ballMoving
Prepare --> Pass: ballNeedsToBePassed
Prepare --> GetBallContact: skipPrepare
StopBall --> Prepare: SUCCESS
StopBall --> Prepare: FAILURE
GetBallContact --> MoveWithBall: SUCCESS
GetBallContact --> DropBall: FAILURE
MoveWithBall --> DropBall: SUCCESS
MoveWithBall --> Receive: FAILURE
Pass --> ClearBall: FAILURE
Pass --> ClearBall: SUCCESS
Pass --> ClearBall: pass mode is NONE
DropBall --> ClearBall: FAILURE
DropBall --> ClearBall: SUCCESS
AOffensiveActionMoves¶
TDP2018に解説されている。
- ForcedPass
- DirectKick
- 敵ゴールへの直接シュート
- ClearingKick
- 味方の危ない状況からのクリア
- StandardPass
- LowChanceKick
- 敵ゴールへの直接シュート
- GoToOtherHalf
- 自陣でボールをキープしているが適切なパスターゲットがない場合
- KickInsBlue
- 敵ロボットがいない場所にボールを蹴る
- RedirectGoalShot
- RedirectPass
- Receive
ベースクラス(2018年時点でのもの)¶
※viability: 実行可能性
- isActionViable
- そのアクションが実行可能かどうかを返す
- 返り値
- TRUE
- PARTIAL
- FALSE
- activateAction
- calViabilityScore
ベースクラス(2021年時点でのもの)¶
calcAction
返り値:OffensiveAction¶
- move:EOffensiveActionMove(PROTECT_MOVE)
- FORCED_PASS
- REDIRECT_GOAL_KICK
- GOAL_KICK
- CLEARING_KICK
- STANDARD_PASS
- LOW_CHANCE_GOAL_KICK
- MOVE_BALL_TO_OPPONENT_HALF
- KICK_INS_BLAUE
- RECEIVE_BALL
- PROTECT_MOVE
- action:EOffensiveAction(PASS)
- PASS
- KICK_INS_BLAUE
- CLEARING_KICK
- GOAL_SHOT
- PROTECT
- REDIRECT
- RECEIVE
- viability:OffensiveActionViability
- TRUE
- PARTIAL
- FALSE
ベースクラス(2023年時点でのもの)¶
- type:OffensiveActionType
- PASS
- REDIRECT_KICK
- DRIBBLE_KICK
- PROTECT
- CHOP_TRICK
- Hackentrick: かかとで後方にけり、相手をかわす技
- RECEIVE
- OffensiveActionMoveの種類
- REDIRECT_GOAL_KICK
- CHOP_TRICK
- FINISHER
- GOAL_KICK
- FORCED_PASS
- CLEARING_KICK
- STANDARD_PASS
- LOW_CHANCE_GOAL_KICK
- MOVE_BALL_TO_OPPONENT_HALF
- RECEIVE_BALL
- PROTECT_MOVE
build関数はOffensiveActionTypeのラインナップをサポート
- RatedOffensiveAction
- buildProtect
- buildChopTrick
- buildPass
- buildKick
- buildRedirectKick
- buildDribbleKick
- buildReceive
ForcedPass¶
フリーキックのような、必ずパスしなければいけない状況で使われる。
FinisherActionMove¶
ドリブルしながらゴールを狙うアクション
ClearingKickActionMove¶
ボールをゴール中心から離れる方向にチップキックする
- TRUE
- ボールがゴールに近い&壁デフェンスが間に合ってない&ボールが相手に近い&自コートにボールがある&ボールが0.3m/s以下
- FALSE
- それ以外
ProtectActionMove¶
PassGenerator¶
KIckOriginという概念¶
次にボールがキックされる点。
ボールが動いていないときは、ボールの場所であり、動いているときは以下のいずれかが発生したときである。
- (相手ボールのとき)ボールをカット
- ボールをキャッチ
- ボールをリダイレクト
impact time: ボールがKickOriginに到着するまでの時間