내일배움캠프 사전캠프 4일차 - 내가 좋아하는 게임 상호작용 분석하기
오버워치 겐지의 행동원리를 분석해보다. 행동원리를 언리얼 시스템과 엮어서 분석해보았다.
팀 단위로 의논해보는 것은 오랜만이라 쉽지 않았지만 공동된 주제를 정하고 나니 이후에는 각자 필요한 부분을 채워 분석을 마무리 할 수 있었다.
가이드 1 : 오버워치
가이드 2 : 아래 “게임 분석 템플릿”을 블로그에 붙여 넣고 게임의 상징적인 시스템이나 특징 분석하기
가이드 3 : 조사한 정보 팀원과 함께 공유하기
가이드 4: 작성한 블로그는 TIL 제출하기
게임 분석 템플릿
-
선택한 게임의 이름은 무엇인가요?
- 오버워치
-
선택한 게임의 장르는 무엇인가요?
- 1인칭 히어로 슈팅 게임
-
선택한 게임의 어떤 시스템에 집중하셨나요?
- 겐지를 기준으로 한 캐릭터의 State에 따른 Behavior 동작원리 분석
-
해당 시스템이 동작하는 구조의 시작부터 과정을 자세하게 분석, 나열해봅시다.
- 겐지의 현재 행동의 정의(Idle, Move, Skill 등)
- 현재 행동에서의 액션 버튼 입력에 따른 행동전환
- 다음 행동로 넘어갔을 때의 발생하는 사건(Event)
- 해당 행동에서 자연적으로 다음 행동으로 넘어가는 기준
겐지를 Pawn으로 칭하고, 몇가지 행동을 예시로 들어보자.
- 더블 점프
겐지가 가만히 있는 상태를 Idle이라고 하자.
- Idle 상태에서 플레이어가 ‘점프’키를 누른다.
- PlayerController는 ‘점프’를 수신.
- 자신이 연결된 Pawn에 ‘점프’행동을 하라고 지시.
- Pawn은 ‘점프’를 한다. (이 때 Pawn은 Idle에서 벗어난 Jump상태가 된다)
- Jump중에 한번 더 점프를 할 수 있으며, 점프횟수를 체크해주는 변수를 가지게 된다. 점프횟수가 일정 횟수 이상이면 ‘Jump’행동을 차단한다.
- Pawn이 지면에 착지하면 점프횟수 변수는 초기화되고 행동은 Idle (움직이고 있다면 Move)로 돌아간다.
- 튕겨내기
-
겐지(Pawn)가 튕겨내기를 사용했을 때 적의 공격이 반사 가능한 투사체 Actor 인가? (Actor Type 이 투사체 Actor 인가?)
-
Actor Type이 투사체 Actor가 아닌 경우 False (빔, 근접공격 Actor는 예외 처리하여 튕겨내지 못하게 함)
-
True인 경우 비주얼과 사운드 피드백 이후 투사체 Actor 소유권 변환 및 발사 백터 재계산
-
벽타기
- Player가 PlayerController로 Pawn(겐지)에 collision 기능이 켜져 있는 벽에 이동
- 벽을 정면으로 바라본 상태에서 전진 키(W)와 점프 키(Space)를 동시에 누르기
- Player가 W와 Space키를 입력
- PlayerController가 입력값을 수신
- PlayerController가 Pawn(Item겐지)에게 명령
- Pawn(겐지)가 또다른 Pawn(Item벽,AI)에 충돌
- Pawn(겐지)가 W와 Space키가 눌린 상태로 또다른 Pawn(벽)에 충돌 중 이라면 벽타기
- 이외의 상황 벽타기 중단
-
용검(궁극기)
Pawn이 PlayerController로부터 ‘궁극기사용’ 키를 수신 받으면 아래의 시퀀스를 실행한다.
- 용검을 뽑는 모션과 용검에 사용되는 사운드를 재생.
- 용검을 뽑는 동안 Pawn의 상태는 ‘SuperSkillReady=true’로 정의되며 , true일 동안에는 Move와 Jump외에 그 어떤 플레이어의 행동을 직접 피드백 할 수 없게 된다.
- 용검을 뽑았다면 ‘SuperSkillReady = false’가 되며, 그와 동시에 ‘SuperSkillTime = 10.0F’로 정의되어 매 Tick마다 일정 수치 감소를 받게 된다. 10.0F는 용검 발동시간 10초로 본다.
- SuperSkillTime > 0.0F일때 Pawn의 일부 능력은 용검에 의해 모션이 변경되거나 효과가 강화될 수 있다.
- SuperSkillTime ≤ 0.0F이 되면 용검을 집어넣는 모션과 사운드가 출력되고 ‘SuperSkillEnd=true’ 상태가 되어 2번과 같이 행동피드백이 불가능해진다.
- 용검을 집어넣으면 ‘SuperSkillEnd=false’가 되고 이후 행동은 일반행동으로 돌아간다.
-
질풍참
- Pawn이 어떤 상태에 있든 최우선으로 실행 가능
- 질풍참 실행하게 되는 순간 기존 수행 중이던 애니메이션과 로직 프레임은 강제 종료
- 겐지의 가속도를 무시하고 즉시 전방 15m 지점까지 이동 완료시 Move상태
- 실행 중 지형 충돌시 즉시 종료 후 idle 상태
- 실행 중 외부 개입(ex. 스턴, 수면)시 외부 개입 상태로 변경( ex. 수면으로 종료되면 수면 상태)
- 질풍참으로 적 처치시 쿨타임 초기화
-
직접 분석해본 내용 중 가장 핵심이 되는 구성 요소는 무엇이라 생각하나요?
- Actor가 되는 Pawn
- Pawn을 제어하는 PlayerController
- PlayerController를 제어하는 Player
- PlayerController가 Pawn에 명령한 로직을 수행하는 Client
- 명령의 참, 거짓을 판단 결정 하는 Blueprint
- Client의 정보를 수신 후 다시 Client에 발신하는 Server
댓글
댓글 쓰기