cocos2d for iPhone 강의(1) 기본 개념편 Development

그 동안 미뤄왔던 cocos2d 강의를 오늘부터 시작하겠습니다.

많은 분들이 예전에도 아이폰 프로그래밍에 관심이 많으셨지만 아이폰이 우리나라에 들어오면서

더욱 더 관심이 증폭된 게 사실입니다. 그리고 게임 개발자들에게두요...

그리고 그와 더불어 관심이 증폭된 게 완전 무료 2D 게임 엔진인 cocos2d for iPhone 또한

게임을 만들고 싶으신 개발자분들에게 인기가 많죠~ 

지금 만들고 있는 저희 게임도 이 cocos2d로 만들고 있습니다.

자 먼저 cocos2d 템플릿을 깔아야겠죠?? cocos2d 0.9버전 베타가 나오긴 했는데

정식으로 릴리즈된 0.8.2로 까는 게 버그도 없고 여러모로 좋으실겁니다~ 

물론 0.9버전이 정식으로 릴리즈 되면 그땐 0.9 버전 템플릿을 깔아도 되겠죠??

일단 cocos2d for iphone 사이트 에 가셔서 cocos2d 를 다운 받습니다.

그리고 경로를 알아내야되겠죠?? 경로를 알아낸 후 위 그림과 같이 경로로 들어갑니다.

리눅스나 유닉스를 사용해 보신 분들은 터미널에 익숙하실겁니다만 그렇지 않으신 분들은

그냥 따라서.... ㅠㅠ

어쨌든... 위와 같이 경로를 입력한 후 ls를 치면 경로 안에 있는 파일들이 쫙~ 뜹니다.

그런다음... 빨간색 밑줄 친 install_template.sh 파일이 보이시죠? 커맨드를 ./install_template.sh 입력하면 끝...

참 쉽죠?? 사실 Read me 파일 안에 보면 다 나와있습니다. 하지만 모르시는 분들을 위해 친절히.. ㅋㅋ-_-;;

자 이제 본격적으로 강의에 들어가 보도록 하겠습니다.

자.. 그럼 cocos2d란 무엇일까요?? 네 맞습니다 게임 엔진입니다

cocos2d란 이름에서 느끼셨다시피 2D게임 개발을 손쉽게 하기위해서 개발된 라이브러리입니다.

3D로 개발하시려면 Unity엔진을 추천드립니다... 단, 유료라는 ㅠㅠ 추후 Unity 엔진에 대해서도

강으를 써보도록 노력해 보겠습니다.


또한 iPhone SDK의 UIView를 기반으로 돌아갑니다. 

하나의 UIViewController에 하나의 UIView에서 돌아간다고 생각하시면 되겠습니다.

또한 OpenGL ES 를 기반으로 돌아갑니다. OpenGL View에서 돌아가기 땜에 하드웨어 가속이 필요한부분에서

하드웨어 가속을 쓰므로 성능이 좋아지죠~ 하지만 배터리는... ㄷㄷㄷㄷㄷ

이젠 cocos2d의 구조에 대해서 설명 드리겠습니다.

iPhone SDK의 NSObject와 같이 cocos2d에도 최상위 클래스가 있습니다.

이름하여 CocosNode인데요 cocos2d의 모든 클래스는 이 CocosNode를 상속받습니다.

물론 CocosNode는 NSObject를 상속방겠죠 ^^;;

그리고 디렉터 클래스, 씬, 레이어, 스프라이트 순으로 계층이 구성되어 있습니다

CocosNode는 위에서 말했다시피 NSObject와 비슷한 역할을 하는 클래스구요

Property로는 position, scale, visible등이 있습니다. 다른 property도 많지만 대표적으로 저런 것들이 있습니다

또한 자체 스케쥴을 가지고 있는데요. 게임 루프를 만들때 쓰입니다. 기본적으로 default값은 1/60 frame으로

돌아갑니다. 보통 cocos2d를 사용하지 않고 게임을 만들땐 NSTimer를 쓰죠?? 근데 NSTimer 절대 금물입니다.

pause나 resume하는 게 다 있는데 NSTimer는 이 편리한 걸 사용하질 못해요 ㅠㅠ 명심하세요~ schedule 메써드만 사용!!

디렉터 클래스에 대해서 설명드리자면

싱글턴 객체 입니다~~  [UIApplication sharedApplication] 처럼

[Director sharedDirector]로 어디서나 참조 가능하구요

게임의 모든 흐름을 담당하는 말그래도 디렉터... 감독입니다.

자 이제 Scene클래스 인데요

Scene클래스는 Director 클래스의 관리를 받습니다. 

영화에서처럼 게임에서도 여러가지 씬으로 구성되는데 그 예로 

사용자가 게임을 직접 플레이하는 GameScene, 메뉴를 구성하는 MenuScene 그외에 HelpScene, CreditScene

등이 있는데 머 개발자분들이 알아서 만드시면 됩니다.

하지만 이 Scene은 터치 이벤트를 받지를 못합니다.

그래서....

바로 이 Layer클래스를 child로 가지고 있어야 합니다.

Scene과 Layer의 거의 유일한 차이점은 이 터치 이벤트를 컨트롤 할 수 있느냐 없느냐에 달려있다고 보면되겠습니다.

그리고 씬 하나에 레이어를 여러개 가지고 있을수도 있고 레이어가 다른 레이어를 가지고 있을 수 있습니다.

한 예로 3D처럼 보이게 하기 위해 레이어의 계층을 나눠서 속도를 다르게 해주고 멀리 있는 배경은

느리게, 가까이 있는 배경은 빠르게 움직여 주면 간지나게 보이겠죠 ^^;;

자... 이제 마지막 스프라이트 입니다.

스프라이트 클래스는 게임에 등장하는 모든 오브젝트라고 보시면 됩니다.

이 스프라이트에서는 cocos2d의 장점인 Move, Jump, Rotate 등등의 많은 액션을

구동할 수 있습니다. [someSprite runAction:someAction]; 이런 식으로 말이죠~!!

그리고 스프라이트 클래스를 상속받아 Hero, Enemy, Item등등의 클래스 디자인을 할 수 있습니다.

개인적으로는 Layer클래스와 Sprite클래스를 제일 많이 상속 받아서 사용하는데

아마도 다른 cocos2d를 사용해 보신 개발자 분들도 동일하리라 생각됩니다.

간단히 cocos2d에 대해서 살펴봤습니다.

이번 강의는 그냥 cocos2d 개론이라고 봐도 무방하겠네요...

하지만 이런 개념들을 잘 알고 있어야 사용하는 데 무리가 없겠죠?^^

cocos2d의 강점중 하나가 예제 코드가 너무 잘되어 있습니다.

다운 받은 cocos2d 폴더를 열어서 프로젝트를 여시면 여러가지 예제들이 많이 나와있는데요

그 예제들을 보고 자신이 필요한 클래스나 메써드들을 보시면서 혼자서 공부하셔도 

2주안에 게임에 필요한 웬만한 것들은 마스터하실 수가 있습니다.

머 엔진 사용하는 데에는 시간이 별로 들지 않지만 게임 프로그래밍에서 노하우가 쌓이기가 쉽지 않죠~

객체지향개념이라든가 충돌테스트 알고리즘이라든가 물리법칙등을 쓰는 것들이 더 중요합니다.

다음 강의에서는 애니메이션을 어떻게 줄 것인가를 올리겠습니다. 여기까지 부족한 강의 읽어주셔서 감사합니다 ㅠㅠ

Share
이 글과 관련된 글
  1. [2012/02/01] 안드로이드 3.2 이상에서 OpenGL ES 참고사항 by 운학귀신 (130)
  2. [2010/04/09] cocos2d 프로젝트에 OpenFeint넣기 by IAMXAM (7586, 5) *4
  3. [2010/02/01] 아이폰 블록격파 게임 만들기 by 플레이폰 (5234, 1)
  4. [2010/01/20] 실전 아이폰 게임 개발 준비하기 by 플레이폰 (5567, 2)
  5. [2009/12/18] 실전 아이폰 게임 개발 준비하기 by 호랭이 (6625)
TAG

Leave Comments

2012.02
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29
RSS FEEDATOM FEED
thothPowered by TextyleSponsored by ETNEWS
T-NAVI