모바일 게임 포트폴리오 - cocos2d-x를 사용한 캐주얼...

59
COCOS2D-X 를 를를를 를를를 를를 를를 이이이 [email protected] 이이이 이이 이이이이이

Upload: kyungmin-lee

Post on 16-Apr-2017

352 views

Category:

Software


0 download

TRANSCRIPT

COCOS2D-X 를 사용한 캐주얼 게임 개발

이경민[email protected]

모바일 게임 포트폴리오

프로젝트 개요

프로젝트 개요개발자 1 명 , 기획자 1 명COCOS2D-X 엔진으로캐주얼 게임 만들고 출시하기2 개월 프로젝트

프로젝트 개요

•내가 원하는 게임을 만들고 싶어서 .•게임의 기획부터 출시를 경험하기 위해서 .•COCOS2D-X 엔진을 실사용 해보려고 .

목적

프로젝트 개요

• 2 개월 안에 앱스토어에 출시한다 .•양방향 탭으로만 조작하는 간단한 게임을 만들자 .

목표

프로젝트 개요

개발 100% 전담• 클라이언트 개발 , iOS 출시 , 안드로이드 포팅과 출시

기획 50% 참여• 게임 스토리 , 게임 방식 , 스테이지 레벨링 방식

내가 맡은 역할은 ?

프로젝트 개요

•Xcode 에서 개발• Eclipse 를 통한 안드로이드 포팅• COCOS2D-X 3.10 사용

개발 환경

프로젝트 개요기간 내용 기간 내용

1 주차(6 월 3

주 )

• COCOS2D-X 스터디 5 주차(7 월 3

주 )

• 몬스터 출현 시스템• UI 수정• 스테이지 1 완료

2 주차(6 월 4

주 )

• COCOS2D-X 스터디• 기획 초안 작성• 리소스 수집

6 주차(7 월 4

주 )

• 스테이지 2, 3, 4 레벨링• 나머지 씬들 추가

3 주차(7 월 1

주 )

• 스테이지 배경• 오브젝트 조작과 패턴• 오브젝트 충돌 처리

7 주차(8 월 1

주 )

• ad-hoc 배포후 테스트 • 앱스토어 리뷰 신청• 앱스토어 출시

4 주차(7 월 2

주 )

• UI 추가• 게임 방식 변경• 변경한 방식으로 수정

8 주차(8 월 2

주 )

• V.1.0.1 업데이트• 안드로이드 포팅과 출시 • V.1.0.2 업데이트

2 개월간의 프로젝트 일정

2 주 준비 , 5 주 개발 , 1 주 포팅 및 버그 수정

프로젝트 결과

프로젝트 결과

•양방향 탭으로 조작하는 간단한 게임 !•낙하하는 몬스터를 피하면서 제거해야 한다 .

프로젝트 결과

• 2016.08.06 출시• 다운로드 156 건• 리뷰 14 건

앱스토어• 2016.08.11 출시• 다운로드 85 건• 리뷰 17 건

구글 플레이

출시 결과

프로젝트 결과

몬스터를 피하는 재미요소가 부족하다 .• 몬스터 종류를 늘리는 동안 , 패턴을 디테일하게 설정하지 못했다 .

플레이 시간이 짧다 .• 다시 플레이할 이유가 랭크 고득점 밖에 없다 .

보완할 부분

타겟 디바이스

타겟 디바이스•아이폰 5 iOS 9•갤럭시 넥서스 안드로이드 4.0 ICS

선정한 이유 ?• 보유중인 기기라 테스트하기 편해서 .• 구형 이지만 아직 사용자가 많아서 .

게임 해상도

•아이폰 5 해상도 1136 * 640

•대부분의 스마트폰 화면비율 16:9

게임 해상도기준 해상도

COCOS2D-X 의 해상도 대응 기능을 사용해서고정 비율로 화면에 맞추어 확대 또는 축소한다 .

게임 해상도다양한 해상도 대응

게임 해상도해상도 대응 결과

해상도 크기만 다르면 ?• 화면에 맞게 확대 , 축소 된다 .

화면 비율이 다르면 ?• 화면 위 , 아래에 레터박스가 보인다 .

게임 방식

게임 방식초기 기획

•등뒤를 공격받으면 죽는다 !•양방향에서 몰려오는 몬스터들과 격투 !

게임 방식

•플레이어의 격투 방식이 재미없다 .•몬스터의 출몰이 단순하다 .•보스가 등장까지 오래걸린다 .

초기 기획의 문제점

게임 방식기획 변경

낙하하는 몬스터를 피하고 레이저건으로 공격 !

초기 기획변경된 기획

게임 목표

게임 목표

•보스를 제거하고 UFO 를 되찾아라 !•더 빨리 클리어 해서 높은 랭크를 획득하자 !

게임 목표

•클리어 시간 기준으로 랭크가 결정된다 .•D 랭크부터 다음 스테이지가 열린다 .

Rank 시간 난이도 레벨SS 00’00’’ ~ 01’00’’ LV 9S 01’01’’ ~ 01’15’’ LV 8, 9A 01’16’’ ~ 01’40’’ LV 7, 8B 01’41’’ ~ 02’20’’ LV 6, 7C 02’21’’ ~ 03’00’’ LV 4, 5, 6D 03’01’’ ~03’40’’ LV 2, 3F 03’41’’~ 05’00’’ LV 1

랭크 시스템

씬 (Scene) 구성

씬 (Scene) 구성

•MainMenu 메뉴 씬•StageIntro 인트로 씬•Stage 게임이 진행되는 씬•GameOver 게임 오버 씬•Result 게임 결과 씬

5 개의 씬으로 게임 구성

씬 (Scene) 구성

MainMenu

ResultGameOver

StageIntro Stage

씬의 흐름

스테이지 씬

스테이지 씬

•게임이 진행되는 무대다 . •레이어 4 개로 구성된다 .•배경을 스크롤 해서 역동감을 준다 .

스테이지 씬

레이어 4 - 씬의 기본 레이어 , UI

레이어 1 - 배경1

레이어 2 - 배경 2

레이어 3 - 스테이지 ( 플레이어 , 몬스터 )

레이어 구성

스테이지 씬레이어 1 - 배경 1레이어 2 - 배경 2레이어 3 - 스테이지

레이어 3, 2 의 속도 비율을 1 : 0.3 으로 설정한다 .• 레이어 2 가 더 느리게 스크롤 된다 .

cocos2d::ParallaxNode 로 배경 스크롤 하기

오브젝트

오브젝트

모든 오브젝트는 스프라이트 이미지로 표현된다 .• cocos2d::sprite 를 상속 받아 사용한다 .

오브젝트를 편리하게 관리하려면 ?• 오브젝트 클래스를 추상 클래스로 설계한다 .

오브젝트 클래스 설계

오브젝트cocos2d::spri

te

CPlayer CLaser CMonster

CMon-ster01

CMon-ster02

CMon-ster03

CObject

CObject 클래스 구조

오브젝트

공장처럼 여러 타입의 객체를 빠르게 찍어낸다 .• 오브젝트를 편리하게 생성할 수 있다 .

객체 팩토리 패턴 (Object Factory Pattern)

오브젝트

오브젝트는 수시로 증가 또는 감소한다 .• Vector 로 다수의 오브젝트를 관리하자 .

CObject 클래스는 cocos2d::sprite 를 상속 받았다 .• STL Vector 보다 cocos2d::Vector 가 편리하다 .

cocos2d::Vector 컨테이너

오브젝트

바운딩 박스 : 이미지의 전체 범위• getBoundingBox() 로 얻는다 .

충돌 박스 : 충돌 처리의 기준 범위• 바운딩 박스를 작게 조절해서 사용한다 .

바운딩 박스충돌 박스

앵커 포인트

충돌 범위

오브젝트

intersectsRect() 로 대상과 충돌 검사를 하고true 리턴시 충돌 처리한다 .

충돌 박스로 충돌 처리하기

intersectsRect() ➡ true

오브젝트

몬스터와 플레이어 충돌• 플레이어 사망몬스터와 레이저 충돌• 레이저 제거 , 데미지 적용

충돌 검사 대상과 처리 방법

플레이어

플레이어

탭 방향으로 공격후 반대 방향으로 넉백된다 .

우측으로 넉백좌측 탭 !

좌측으로 발사

공격 모션

플레이어•SUMMON: 소환 모션• IDLE: 조작 대기•PROGRESS: 공격

모션•DEATH: 사망 모션

4 가지 상태로 상태머신 구성

플레이어

SUMMON

IDLE

PROGRESS

DEATH

Collision

Collision

At-tack

상태머신의 흐름

스킬 공격• 레이저가 최대로 폭발한 1 프레임 동안에만 충돌 검사한다 .

플레이어

기본 공격• 충돌시 DEATH 상태로 전이되어 충돌 검사에서 제외된다 .

레이저건 중복 충돌 막기

몬스터

몬스터•SUMMON: 소환 모션• IDLE: 공격 대기•PROGRESS: 공격 모션•GETHIT: 타격 모션•STUN: 스턴 모션•DEATH: 사망 모션

6 가지 상태로 상태머신 구성

상태머신의 흐름몬스터

SUMMON

IDLE

PROGRESS STUN

GETHIT

DEATHHP <= 0

Collision

Collision

몬스터

•Move, Jump, Fly, Dig, Burrow, Stay•몬스터는 고유의 진행패턴을 가진다 .

6 종류 진행패턴으로 몬스터 분류

몬스터

대기 , 이동을 반복한다 .

Move 패턴

IDLEIDLE PROGRESS

대기 , 점프를 반복한다 .

Jump 패턴

IDLEIDLE PROGRESS

몬스터

대기 , 비행을 반복한다 .

Fly 패턴

IDLEIDLE PROGRESS

땅속 대기 , 이동을 반복한다 .

Dig 패턴

IDLEIDLE PROGRESS

몬스터

땅속 대기 , 공격을 반복한다 .

Burrow 패턴

IDLEIDLE PROGRESS

제자리에 고정 된다 .

Stay 패턴

몬스터

소환 주기• 일정 주기 마다 소환되며 , 고난이도일수록 소환 주기가 짧다 .

획득 점수• 획득 점수로 게이지를 채우며 , 고난이도일수록 점수가 크다 .

난이도에 따라 변화하는 요소

몬스터

소환주기와 획득 점수로 난이도를 조절하므로HP, 이동 속도는 고정한다 .

변화하지 않는 요소

난이도 레벨링

난이도 레벨링

몬스터의 소환 주기• 자주 소환될수록 개체가 많아져서 피하기 어렵다 .

플레이 시간• 오래 걸릴수록 집중력이 떨어져서 조작이 어렵다 .

난이도에 영향을 주는 요소

난이도 레벨링

1. 몬스터 소환 주기 결정2. 목표 시간 결정3. 목표 시간으로 적정 점수 계산4. 점수 등록 후 테스트

난이도 레벨링 순서

난이도 레벨링

1. 소환 주기 입력 ➡ 분당 소환수2. 점수 비율 입력 ➡ 필요 점수3. 목표 시간 입력 ➡ 분당 필요 점수4. 적정 점수 = 분당 필요 점수 / 분당 소환수

적정 점수 계산

감사합니다 .