4장 스포츠 시뮬레이션 - 단순 축구

Preview:

DESCRIPTION

 

Citation preview

4 장 스포츠 시뮬레이션 - 단순축구

박상혁

게임환경• 경기장 1 : SoccerPitch• 골대 2 : Goal• 축구공 1 : SoccerBall• 팀 2 : SoccerTeam• 필드선수 8 : FieldPlayer• 골키퍼 2 : GoalKeeper

축구장

축구공

SoccerTeam

최상 지원 지점 계산• 팀이 공을 제어하고 있을 때 , " 좋은 위치 " 로다른 선수를 보내거나 패스를 하려고 할 때

" 좋은 위치 " 를 결정하는 방법• 상대편 경기장 쪽의 샘플링된 위치 지정

최상 지원 지점 계산

SoccerTeam State

PrepareForKick-Off

AttackingDefending

양 팀 선수가 모두제 위치에 있을 때

팀이 공을 제어할 때

팀이 공을 제어하지 않을 때

골이 들어갈 때

FieldPlayer• 공격수 or 수비수

– 실제로는 최상지원지점 계산에서만 쓰인다– 공격수만 최상지원지점 이용가능함

• ' 도착하기 ', ' 찾기 ', ' 추적하기 ' 등의 조종행동을 하며경기장을 돌아다닌다

FieldPlayer StateGlobalPlayer-

State

Wait

SupportAttacker

ReturnToHomeRe-gion

ChaseBall

Dribble

KickBall

ReceiveBall

Msg_SupportAttackerMsg_GoHomeMsg_ReceiveBallMsg_PassToMeMsg_Wait

공이 찰 수 있는 범위에 있을 때 공에 가장 가까이 있지 않을 때

공에 가장 가까이 &&받는 선수가 지정되지 않고 &&골키퍼가 공을 가지고 있지 않음공에 충분히 가까이 감 ||팀이 공을 제어하지 않음

킥을 시도할 수 없을 때

슛 , 패스를 하고난 뒤

슛 , 패스를 할 수 없을 때 공을 찬 뒤 팀이 제어를 잃음

ChaseBall

ReturnToHomeRe-gion

Chase-Ball

KickBall

공이 찰 수 있는 범위에 있을 때

공에 가장 가까이 있지 않을 때

Wait

Wait

Chase-Ball

공에 가장 가까이 &&받는 선수가 지정되지 않고 &&골키퍼가 공을 가지고 있지 않음

KickBall

ChaseBall

KickBall킥을 시도할 수없을 때

KickBall

슛 , 패스를 하고난 뒤

Wait Dribble

KickBall 슛 , 패스를 할 수 없을 때

GoalKeeper• 골키퍼는 필드선수와는 다른 종류의 기술 사용

– 필드 선수와는 다른 별도의 클래스– 움직임 패턴도 다르다– 필드 선수와 상태 집합이 다름

GoalKeeper StateGlobalKeeper-

State

InterceptBall

PutBallBackIn-Play

ReturnHome

TendGoal

Msg_GoHomeMsg_ReceiveBall

공이 한도 내로 들어오면정해진 거리 내로 들어오면

골에서 멀고위협이 없을 때 홈에 가깝거나상대편이 공을 가지면

패스를 한 뒤골에서 멀고공에서 가장 가깝지 않을때

공을 가로챈 뒤

TendGoal

InterceptBall

PutBallBackIn-Play

Return-Home

Tend-Goal

공이 한도 내로 들어오면

정해진 거리 내로 들어오면 골에서 멀고위협이 없을 때

주요 메소드• SoccerTeam::isPassSafeFromAllOpponent

– 위치 A 에서 B 까지의 패스가 공의 궤적 어딘가에서상대편 선수에게 가로채기 당할 수 있는가 .

주요 메소드• SoccerTeam::CanShoot

추정 및 가정하기• 1. 완벽하게 만든 후 바보스럽게 행동하기

– ex) CanShoot 에서 무작위 목표 설정

• 2. 가정과 추정을 통해 오류가 생길 수 있게 하기– 가로채기 영역을 원으로 설정

• 불확실성을 만들기– 알고리즘이 쉽고 CPU 를 많이 소모하지 않으면 1 번 .– 그렇지 않으면 2 번을 통해 복잡도를 줄인다 .

Recommended