오늘자 과제
오늘은 내일배움캠프 선배기수가 제작하고 스팀에 업로드한 AVaout 게임을 팀 단위로 플레이하면서 이를 분석하였다. 아래는 팀 분석에서 내가 작성한 파트로 유니티 엔진에서 게임 개발하던 경험을 되짚어 보면서 AVaout에 대한 전체적인 구현 순서를 예상하며 제작해봤다.
2️⃣ 구현 순서 재설계
구현 설계
AVaout의 게임 진행
플레이어 최대 4명이 행성을 탐사하는 4인 협동 퍼즐 게임이다. 플레이어는 열차에서 시작해서 열차의 연료가 바닥나기 전까지 맵에 존재하는 3개의 탐사지점을 돌아 다음 스테이지로 가야한다. 총 3개의 스테이지를 클리어하면 게임의 엔딩을 볼 수 있다.
성장 요소
플레이어가 스테이지를 클리어 하면 모은 연료에 따라 플레이어 전체의 체력, 스태미나, 속도를 올려주는 아이템이나 체력 회복 또는 부활 아이템을 구매할 수 있다.
탐사 요소
플레이어는 스테이지를 클리어하기 위해 스테이지에 준비된 퍼즐을 협동을 통해 풀어야 한다. 퍼즐을 풀어내 특정한 탐사지점에 총 3번 도달하면 스테이지를 클리어한다. 퍼즐은 다음과 같은 것이 있다.
- 퍼즐: 발판 밟기, 횃불 순서대로 켜기, 소코반(푸시푸시) 협동, 대포로 장애물 부수기
- 숏컷 뚫기
구현 설계(프로토타이핑)



- 구현에 앞서 데이터를 정의한다.
- 플레이어: 체력, 스테미너, 속도, IsDead(부활 아이템이나 스테이지 체크용), 크기가 4인 아이템 배열 데이터를 가짐
- 아이템: 아이템 타입과 밸류를 가진다. 아이템 타입은 위 이미지 메모처럼 5가지가 존재한다. 가지수가 적고 구현이 단순히 플레이어 데이터만 영향을 끼치므로 if로 단순 구현할 것 같다.(KISS 원칙)
- 게임맵 데이터: 게임에 사실상 공통 재화이자 시간 제한 역할을 하는 연료와 크기가 4인 플레이어 배열, 탐사지점 열람수(다음 스테이지 넘어가기용), 현제 스테이지(레벨 로드용) 데이터를 가짐
- 레벨 목록: 멀티 플레이를 위한 로비, 연료를 사용한 아이템 상점, 스테이지 3개의 레벨로 구성한다.
- 게임맵 오브젝트: 플레이어의 상호작용 조작과 연관된 핵심된 6가지의 맵 오브젝트 클래스를 정의한다.
- 연료 탱크: ItemType == Fuel인 아이템을 조건으로 연료 탱크 게이지를 채운다.
- 업그레이드 머신: Fuel과 Revive가 아닌 아이템을 사용하여 Player 데이터를 변경한다(종속성)
- ExploreBook: 플레이어가 인게임에서 열람하는 탐사지점 체크용 아이템이다. 동시에 스토리 스크립트도 가진다.
- Button: 플레이어가 계속 눌러야 하는 것과 On/Off로 끌 수있는 것 메카닉을 기준으로 분류했다.
- 플레이어 조작을 구현한다.
- 점프와 파쿠르: 스태미너 소모, 거리에 따라 넘어가는 파쿠르 실행
- 달리기: 지속적인 스태미너 소모, 이동속도 증가
- 방향키 조타
- 적대적 몬스터 구현
- ai가 단순해서 단순상태머신으로 구현(dot product로 적 발견 판정 및 공격 시 콜리전 체크)
- 맵 오브젝트 구현
- 레벨 디자인
- 기획을 참고해서 앞서 개발한 구현 요소를 맵에 적재적소로 배치한다.