내일배움캠프 사전캠프 4일차 - 내가 좋아하는 게임 상호작용 분석하기

오버워치 겐지의 행동원리를 분석해보다. 행동원리를 언리얼 시스템과 엮어서 분석해보았다.

팀 단위로 의논해보는 것은 오랜만이라 쉽지 않았지만 공동된 주제를 정하고 나니 이후에는 각자 필요한 부분을 채워 분석을 마무리 할 수 있었다.

가이드 1 : 오버워치

가이드 2 : 아래 “게임 분석 템플릿”을 블로그에 붙여 넣고 게임의 상징적인 시스템이나 특징 분석하기

가이드 3 : 조사한 정보 팀원과 함께 공유하기

가이드 4: 작성한 블로그는 TIL 제출하기

게임 분석 템플릿

  1. 선택한 게임의 이름은 무엇인가요?

    • 오버워치
  2. 선택한 게임의 장르는 무엇인가요?

    • 1인칭 히어로 슈팅 게임
  3. 선택한 게임의 어떤 시스템에 집중하셨나요?

    • 겐지를 기준으로 한 캐릭터의 State에 따른 Behavior 동작원리 분석
  4. 해당 시스템이 동작하는 구조의 시작부터 과정을 자세하게 분석, 나열해봅시다.

    • 겐지의 현재 행동의 정의(Idle, Move, Skill 등)
    • 현재 행동에서의 액션 버튼 입력에 따른 행동전환
    • 다음 행동로 넘어갔을 때의 발생하는 사건(Event)
    • 해당 행동에서 자연적으로 다음 행동으로 넘어가는 기준

    겐지를 Pawn으로 칭하고, 몇가지 행동을 예시로 들어보자.

    • 더블 점프

    겐지가 가만히 있는 상태를 Idle이라고 하자.

    1. Idle 상태에서 플레이어가 ‘점프’키를 누른다.
    2. PlayerController는 ‘점프’를 수신.
    3. 자신이 연결된 Pawn에 ‘점프’행동을 하라고 지시.
    4. Pawn은 ‘점프’를 한다. (이 때 Pawn은 Idle에서 벗어난 Jump상태가 된다)
    5. Jump중에 한번 더 점프를 할 수 있으며, 점프횟수를 체크해주는 변수를 가지게 된다. 점프횟수가 일정 횟수 이상이면 ‘Jump’행동을 차단한다.
    6. Pawn이 지면에 착지하면 점프횟수 변수는 초기화되고 행동은 Idle (움직이고 있다면 Move)로 돌아간다.
    • 튕겨내기
    1. 겐지(Pawn)가 튕겨내기를 사용했을 때 적의 공격이 반사 가능한 투사체 Actor 인가? (Actor Type 이 투사체 Actor 인가?)

    2. Actor Type이 투사체 Actor가 아닌 경우 False (빔, 근접공격 Actor는 예외 처리하여 튕겨내지 못하게 함)

    3. True인 경우 비주얼과 사운드 피드백 이후 투사체 Actor 소유권 변환 및 발사 백터 재계산

    • 벽타기

      1. Player가 PlayerController로 Pawn(겐지)에 collision 기능이 켜져 있는 벽에 이동
      2. 벽을 정면으로 바라본 상태에서 전진 키(W)와 점프 키(Space)를 동시에 누르기
        1. Player가 W와 Space키를 입력
        2. PlayerController가 입력값을 수신
        3. PlayerController가 Pawn(Item겐지)에게 명령
        4. Pawn(겐지)가 또다른 Pawn(Item벽,AI)에 충돌
        5. Pawn(겐지)가 W와 Space키가 눌린 상태로 또다른 Pawn(벽)에 충돌 중 이라면 벽타기
        6. 이외의 상황 벽타기 중단
    • 용검(궁극기)

      Pawn이 PlayerController로부터 ‘궁극기사용’ 키를 수신 받으면 아래의 시퀀스를 실행한다.

      1. 용검을 뽑는 모션과 용검에 사용되는 사운드를 재생.
      2. 용검을 뽑는 동안 Pawn의 상태는 ‘SuperSkillReady=true’로 정의되며 , true일 동안에는 Move와 Jump외에 그 어떤 플레이어의 행동을 직접 피드백 할 수 없게 된다.
      3. 용검을 뽑았다면 ‘SuperSkillReady = false’가 되며, 그와 동시에 ‘SuperSkillTime = 10.0F’로 정의되어 매 Tick마다 일정 수치 감소를 받게 된다. 10.0F는 용검 발동시간 10초로 본다.
      4. SuperSkillTime > 0.0F일때 Pawn의 일부 능력은 용검에 의해 모션이 변경되거나 효과가 강화될 수 있다.
      5. SuperSkillTime ≤ 0.0F이 되면 용검을 집어넣는 모션과 사운드가 출력되고 ‘SuperSkillEnd=true’ 상태가 되어 2번과 같이 행동피드백이 불가능해진다.
      6. 용검을 집어넣으면 ‘SuperSkillEnd=false’가 되고 이후 행동은 일반행동으로 돌아간다.
    • 질풍참

      1. Pawn이 어떤 상태에 있든 최우선으로 실행 가능
      2. 질풍참 실행하게 되는 순간 기존 수행 중이던 애니메이션과 로직 프레임은 강제 종료
      3. 겐지의 가속도를 무시하고 즉시 전방 15m 지점까지 이동 완료시 Move상태
      4. 실행 중 지형 충돌시 즉시 종료 후 idle 상태
      5. 실행 중 외부 개입(ex. 스턴, 수면)시 외부 개입 상태로 변경( ex. 수면으로 종료되면 수면 상태)
      • 질풍참으로 적 처치시 쿨타임 초기화
  5. 직접 분석해본 내용 중 가장 핵심이 되는 구성 요소는 무엇이라 생각하나요?

    • Actor가 되는 Pawn
    • Pawn을 제어하는 PlayerController
    • PlayerController를 제어하는 Player
    • PlayerController가 Pawn에 명령한 로직을 수행하는 Client
    • 명령의 참, 거짓을 판단 결정 하는 Blueprint
    • Client의 정보를 수신 후 다시 Client에 발신하는 Server

댓글

이 블로그의 인기 게시물

내일배움캠프 사전캠프 - 사전캠프설 연휴 커피 파밍 이벤트 작품 [ EXTREMITY ]

내일배움캠프 29일차 - 커리어데이 2일차 : 클라이언트 프로그래머로서 포트폴리오, 입사준비팁