DeepOneKim.github.io

게임프로젝트2 개발 작업 내용

돌아가기

목차

개발 일정

캐릭터 기술표

Mighter Fighters 캐릭터 기술표.xlsx 액셀파일 다운로드

캐릭터 구현 시 참고 및 게임 밸런스 조정을 위해 적용할 내용을 정리한 캐릭터 기술표입니다.
게임이 완성된 후에 이 자료를 토대로 프레임 데이터와 기술의 특성을 숙지한다면 대전에서 더 쉽게 이길 수 있을 겁니다.

1주차 작업 요구사항 & 결과

-1주차 요구사항:
작업명 : 캐릭터의 무브셋 정리
게임 프로젝트2 기간동안에는 캐릭터와 배경, 소리 등을 웹 소스를 이용해 제작. 이후 졸업 작품으로 개발 시에는 미흡한 부분 보완, 미완성된 부분 추가, 개선하면 좋은 점(UI 디자인, 게임 디자인 구성 등)수정 및 각 캐릭터, 배경 등 소스를 오리지널 소스로 교체하는 작업 개시
설명 : 가장 중요한 부분은 전투다. 따라서 항상 캐릭터 구현과 캐릭터의 무브(행동, 기술) 구현을 최우선으로 한다. 각 캐릭터의 무브 리스트를 데이터화 하여 정리하고 이를 함수로 만들어 캐릭터 기술의 속도, 데미지, 효과 등을 적용하게 한다(밸런스 변경 시 수치만 고칠 수 있도록 하는 것이 목표). 아마 가장 오래 걸리고 가장 어려울 것으로 예상. 1주차부터 바로 시작
각 캐릭터 무브셋은 기술표를 만들어서 공개, 게임 속에서 볼 수 있게 함(기술 데이터를 보고 공부한다면 더 승리하기 좋을 것) 아직 각 캐릭터당 프레임과 데미지를 넣지 못했으므로 캐릭터 구현 작업 동안 진행하는 것으로 한다. 엑셀로 정리해가면서 제작.
작업내용: 캐릭터들의 스프라이트 소스를 이용해 각 무브셋에 필요한 프레임 별로 분류하여 나누고, 애니메이션으로 묶어 지정해주기 (추가적으로 가장 기본적인 Neutral 모션 구현)

1주차 작업 내용 보기 (펼치기/접기)
1-2주차 작업 사항중 가장 첫번째로 한 것은 4명의 캐릭터들 고유의 모션 스프라이트 자료를 받아서 이들을 각각 모션별 하나의 애니메이션으로 만들기 위해 정리하는 것이였다. 외부 사이트에서 받은 스프라이트 자료들을 내가 원하는 무브셋에 맞게 정리하여 자연스럽게 보이도록 프레임을 삭제하거나 추가해주며 맞춰줬다.
(예. 스콜피온의 스프라이트 자료) 캐릭터별 모션은 각 14개 항목씩으로, 각각 Being Hit(피격시), Blocking(가드), Walk(걷기), Stand Punch(펀치), Stand Kick(킥), Stand Special(스페셜), Duck(앉기), Duck Punch(앉아 펀치), Duck Kick(앉아 킥), Duck Special(앉아 스페셜), Falling(패배시 쓰러지는 모션), Win Pose(승리 포즈), Timeout Lose(타임아웃 패배시 모션)이 있다.
캐릭터가 4명이므로 총 56개의 모션이 있는 것이다.
이렇게 정리한 각각의 캐릭터 스프라이트 들을 모션별로 분류해 유니티 에셋에 넣고 분류해 주었다. 그 후에는 작 모션별로 애니메이션을 만들어 캐릭터들에게 나누어 줬다.
테스트를 위해 만든 테스트 씬에 지형 역할을 대신할 Floor 오브젝트와 각 구현할 캐릭터들을 놓고 중력을 적용하여 넣었다.

그 다음 캐릭터들의 가장 기본적인 애니메이션인 Neutral(아무 행동도 안한 자세) 애니메이션을 넣기 위해 애니메이터에서 지정해 주었다.

이제 기본적인 화면에서 게임을 실행하면 4명의 캐릭터들이 모두 Neutral 애니메이션을 재생한다.

2주차 작업 요구사항 & 결과

-2주차 요구사항:
작업명: 캐릭터 기술, 행동 구현
작업내용: 정리된 애니메이션 파일들을 세부적으로 검토해 자연스럽게 만들어주기, 파이터 오브젝트(프리팹) 생성, 기본적인 맵 디자인 구상

1주차 작업 내용은 캐릭터들의 모션을 만들어 각각 지정해주고 가장 기본적인 모션인 Neutral 모션을 구현하는 것이었다. 이번 주차에 개발할 내용은 각 캐릭터들의 애니메이션이 자연스럽게 취하게 해주는 것이다. 추가적으로 캐릭터들이 서로 충돌시 뚫고 지나가지 않으며 또한 카메라 스크린 밖으로 넘어가지 않게 하도록 콜라이더를 배치해 준다.

2주차 작업 내용 보기 (펼치기/접기)
1주차에 정리한 수많은 스프라이트와 애니메이션을 실제로 적용하고 후에 캐릭터 선택 등으로 지정될 1p, 2p의 캐릭터 오브젝트를 만들기 위해서 prefab을 생성했다. 이렇게 생성한 prefab에 1주차 때 적용했었던 중력, 충돌, 판정 등의 컴포넌트를 관리하기 용이하게 세분화하여 나눴다.

저번주에는 캐릭터의 스프라이트 정리 및 애니메이션 지정만 해주었는데, 이는 하나하나 재생해 보면 실제로는 굉장히 부자연스럽거나 어색하게 보였다. 앉은 자세 공격을 할때는 이미지 파일의 크기 차이로 캐릭터가 위아래로 출렁거렸고, 일부 액션들의 속도가 너무 빠르거나 느렸다. 그래서 각 무브셋에 해당하는 스프라이트를 삭제하거나 수정하고, 애니메이션 탭을 이용해 프레임 속도와 프레임 당 이미지 position을 지정해 주는 작업을 했다.


상대 캐릭터와 충돌시 이동이 제한되도록 지정해줄 몸 판정(MovementCollider)이다. 이는 양 캐릭터가 스크린 밖으로 벗어나는 것도 막아줄수 있다 (카메라 화면 너머에 보이지 않는 Collider(투명 벽)도 만들었다).

피격 판정 박스이다. Top, Bottom으로 각 상반신과 하반신으로 나누었는데, 그 이유는 앉은 자세의 상단 공격 회피를 구현하기 위해서이다. 전신 무적 판정의 기술 사용시 모든 피격 판정 박스가 사라진다.

같은 방법으로 다른 캐릭터들의 모션도 구현했다. 위의 경우 처럼 프리팹을 생성하여 각각 캐릭터들에게 지정된 애니메이션을 수정했다.

3주차 작업 요구사항 & 결과

-3주차 요구사항:
작업명: 캐릭터 기술, 행동 구현 및 캐릭터간 상호작용 (1)
조작: a, s, d(←,↓,→), j, k, l(P, K, S) 연습장 더미의 경우 ←, ↓, →, numpad4, numpad5, numpad6(P, K, S)
작업내용 : 캐릭터 조작으로 움직이게 하기, C# 스크립트 작성(키 입력 받기, 캐릭터 좌우 이동 속도 지정, 입력 받은 키에 할당하는 애니메이션 재생), 투명 벽

3주차 작업 내용 보기 (펼치기/접기) 2주차 작업을 통해 모든 캐릭터의 모션을 구현했다. C# 스크립트를 작성해서 기존에 만든 프리팹에 컴포넌트로 지정해주어 해당 모션들을 재생 할 수 있게하고, 직접 이동시킴으로써 각 캐릭터간 충돌 상황과 맵 이탈 방지를 체크할 것이다.

4주차 작업 요구사항 & 결과

-4주차 요구사항:
작업명: 캐릭터 기술, 행동 구현 및 캐릭터간 상호작용 (2)
작업내용 : 캐릭터의 판정 박스를 설정해주고 이를 통한 가드와 피격 시 경직 등의 상황을 구현한다. 스페셜 기술도 구현한다. (투사체, 무적) 아무런 행동을 하지 않을 시(Neutral) 자동 가드(피격 박스 대신 가드 판정의 박스가 캐릭터를 덮음), 공격을 받을 수 있는 행동 시(이동, 앉기, 공격, 스페셜) 피격 가능. 투사체가 있는 스페셜 기술 구현과 이로 인한 상호작용 구현 (애니메이션 재생하면서 판정박스를 생성하는 투사체, 투사체간 충돌 시 소멸) 가장 먼저 투사체 기술들을 구현 하고, 파이터 오브젝트 프리팹에 생성한 콜라이더들이 위의 상황에 맞물리게 작용할 수 있도록 스크립트를 작성한다.

4주차 작업 내용 보기 (펼치기/접기) 3주차에서는 캐릭터들의 기본적인 이동과 일부 공격을 구현해 줬다(서서 공격). 이번 주차에는 투사체를 발사하는 스페셜 기술, 앉은 자세 기술들과 스페셜 공격시 취하는 모션과 무적 판정 등을 넣어줄 것이다.

5주차 작업 요구사항 & 결과

-5주차 요구사항:
작업명: 대전 룰 구현 (1)
작업내용 : canvas를 이용해 양 캐릭터의 체력과 게이지 UI를 만든다. 라운드 승수도 표시하며 게임 종료 선언(승패 판정) 구현. 마지막에 공격한 캐릭터가 누군지도 표시. 캐릭터를 계속 조작해 보며 의도한 대로 대전 룰 적용이 되었는지 지속적으로 확인해야 함. 로컬 대전 모드(승패 가르기)와 Practice모드(무한 체력, 타이머)에 대한 세팅도 구현해놓는다.

5주차 작업 내용 보기 (펼치기/접기)

6주차 작업 요구사항 & 결과

-6주차 요구사항:
작업명: 대전 룰 구현 (2), 씬 전환과 사운드
작업내용 : 저번 주차에 미완성한 대전 룰 구현과 모드 세팅 구현을 완성 시킨다. 그 다음 메뉴화면, 캐릭터/배경화면 선택 화면을 만들고 연결 시켜준다. 화면 전환이 잘 되는지 확인한다. 최종적으로 모든 구현이 완성되면 사운드 삽입 작업을 시작한다. UI 상호작용, 배경음, 캐릭터 사운드를 지정해 삽입한다.

6주차 작업 내용 보기 (펼치기/접기)