2009년 9월 16일 수요일

cocos2d 배워보기 - sprite

<< 문제있는 내용은 알려주시면 수정하도록 하겠습니다 >>

cocos2d로 게임개발을 결정한
가장큰 이유는
간단하게 sprite 가 구현되기 때문인듯 합니다.


Sprite *sprite = [[Sprite spriteWithFile:@"image.png"] retain];
sprite.position = cpv( x , y );
[self addChild: sprite];


이거보면 딱 참쉽지~용 이 생각나는데요
찬찬히 보시면

1. image 파일을 로드해서 sprite object를 생성후

2. x,y 위치에 놓고

3. addchild 만 하면 움직임이 가능한 스프라이트object가 생성됩니다
여기서 self는 scene 이나 layer 클래스가 되겠네요

(scene 에서는 touch 이벤트를 받을 수 없으므로 주로 배경을 위해 스프라이트를 생성합니다)


- 스프라이트를 생성한 모습 -

cocos2D 템플릿 설치

<< 블로그 내용은 제가 습득하면서 올리는 내용이므로 잘못된 내용이 있을 수 있습니다 발견하시면 덧글로 알려주시면 감사하겠습니다 아울러 문제되는 이미지나 내용도 알려주시면 삭제하도록 하겠습니다 >>


cocos2D는 기본적인 iPhone OS의 템플릿이 아니기때문에
xcode의 new project 에 나타나지 않습니다.

그래서 간단하게 템플릿을 추가할 수 있도록 만들어진것을
첨부하고자 하는데 구글블로그는 파일첨부가 안되나 보네요

그러므로 cocos2d-0.8.1 템플릿 링크에서 자료를 받아가셔서

/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Project Templates/
아래에 디렉토리를 만들고 첨부파일을 넣어주시면 됩니다



그러면 xcode의 new project시에 cocos2d 템플릿이 추가된것을 확인할 수 있습니다


- new project에 추가된 coco2d - 0.8.1 템플릿 -

아이폰 게임개발을 위한 cocos2D 게임엔진

그럼 게임개발을 한다고 방향을 정했다면
cocos2d에 대해 많은 얘기를 듣게 되실겁니다

cocos2D는 흔히 openGL ES의 랩핑 클래스라고 하는데요
UIKit의 view나 layer와는 다른
게임의 conti를 이어나가는 scene과 layer의 개념으로
이를 schedule하는 director까지 게임에 최적화된 엔진이 아닌가 합니다

cocos2d 의 다음사이트에서 cocos2d의 개념과 api 사용방법을
자세히 공부할 수 있습니다


- cocos2d for iPhone 사이트 -


http://www.cocos2d-iphone.org/

아이폰 개발 방향 - 무엇을 만들것인가?

Beginning iPhone dev 나 iPhone Cool Project 의 책을 보면
느낄 수 있는 것이
아이폰 어플의 개발과 게임의 개발이 상당히 다르다는 것이 아닐까 합니다

iPhone Cool Project 의 내용엔
cocoa touch의 UIKit이 어플리케이션 제작에는 상당히
유용하지만 게임개발에는 그렇지 않다고 되어있는데요

게임개발을 목표로 하시고
시작하는 분들에게는 매우 공감가는 내용이라고 생각됩니다
그래서 다음과 같은 방향을 정해봅니다

1. 무엇을 만들것인가?
일반 어플인가 게임인가로 구분할 수 있겠습니다

일반 어플이라면
cocoa touch 의 UIKit class와 어플리케이션들로 상당히 효율적으로
제작이 가능하며 Quartz2D나 Core Animation을 이용하여 간단한 그래픽구현과
openGl ES을 활용한 좀더 수준높은 그래픽도 제작이 되리라 봅니다

- 아이폰 어플리케이션 -


게임이라면 여러가지 방법이 있겠으며 그래픽과 애니메이션 구현이
가장 문제 되겠지요

일단 Quartz2D와 OpenGL ES 로 구현이 가능하지만
좀더 쉬운 게임제작은
요새 인기인 cocos2D 게임엔진이 아닐까 합니다.

하지만 cocos2D에 대한 마땅한 서적은 아직까지 보지 못했네요

아이폰 개발 지침서 - iPhone Cool Projects (게임)

Beginning iPhone Dev 가 아이폰 어플리케이션을 위한 책이라면

iPhone Cool Project 는 아이폰 게임개발을 위한 책이라고 할 수 있습니다

바로 아이폰의 게임개발 엔진인 coco2d에 대한 활용과 물리엔진인
chipmunk의 예제가 담겨져 있기 때문입니다.

자세한 설명이 있는것은 아니라 아쉽지만
게임 개발을 목표로 하는 분이라면 놓칠 수 없는 책인듯 합니다

그리고 대부분의 외국서적의 판매사이트에는 소스도 무료로 구할 수 있으니
꼭 체크해보시길...


- iPhone Cool Projects -

아이폰 개발 지침서? - Stanford iPhone application programming 강의

애플에서 엔지니어가 직접나와서 강의를 합니다
스탠포드의 Stanford iPhone application programming 강의입니다.

국내 애플코리아의 현실에 비추어볼때는 너무 부러운일인데
아이폰 관련 엔지니어의 생생한 강의와
수준높은 학생들의 질문을 동영상과 pdf 자료를 받아서 볼 수 있습니다

강의마다 과제가 주어지는데 실력이 되시면 따라해보시면 도움이 될듯합니다

젊은 엔지니어의 속사포영어가 어렵지만 학습자료도 있고
2~3개의 lesson 마다 학생들의 질문에 대한 상세한 설명도 있어서
영어 실력 향상을 위해서도 괜찮아 보입니다

국내의 전산관련 학과들도 변화에 적응해나갔으면 하는데 그냥 바램일 뿐입니다

- 스탠포드의 아이폰 어플리케이션 프로그래밍 강의 -



- 관련링크 -

http://www.stanford.edu/class/cs193p/cgi-bin/index.php

아이폰 개발 지침서 - Beginning iPhone 3 Development Exploring the iPhone SDK

iPhone 개발용 참고서적은 아쉽게도 번역본이 별로 없습니다

Cocoa programming 이라는 책이 한동안 bible로 읽혀졌었는데
iPhone보다는 mac기반의 프로그래밍이라
iPhone 개발자들의 목마름을 채워주지는 못했습니다.

최근 급하게 등장하고 있는 번역서들은 오역이 많거나
원서의 의미뜻을 제대로 전달하지 못하거나
국내서적의 경우는 외국서적의 예제를 적당히 카피하여 설명하고
있어서 안타깝습니다.

원서중에서 cocoa touch 플랫폼과 어플리케이션을
가장 잘 설명해주고 예제까지 따라해볼 수 있는 가장 좋은 책은
다음 책이 아닌가 합니다



Beginning iPhone 3 Development
(Exploring the iPhone SDKDave Mark)


iPhone 개발은 일반 어플과 게임으로 방향이 갈리겠지만
무엇을 하든 iPhone 어플리케이션을 경험해보고
애플의 개발 방향이라든가 MVC(Model-View-Controller) 의 구조를
이해할 수 있도록 상세한 설명이 있어서 추천할만 합니다.

아이폰 개발을 위한 준비 4 - 구글링 (Googling)

많은 개발자들이 아이폰 개발로 뛰어들고 있지만
그래도 생소한 아이폰 개발

일단은 IDC (http://developer.apple.com/iphone/index.action) 를
잘 활용해야 합니다 결국 답은 이곳에 있는듯 하고요

IDC 에서 애플이 방대한 자료를 오픈해놓고
어서 만들어 주세요 하고 있지만,
뭔가 시작이 어려운 저같은 분들에겐 검색(googling) 이 생명입니다.

가장 처음에 많은 질문과 어려움을 해결해준 곳은
네이버의 카페 맥부기 인듯 합니다

http://cafe.naver.com/mcbugi.cafe


- 네이버 카페 맥부기 -


이곳에서는 지역별로 활성화된 온오프라인 강좌와 Q&A 를 통해서
사막에서 오아시스를 발견하는듯한 기쁨을 느꼈는데요

특히 열린강좌같은 경우 자세한 캡쳐화면을 보면서 따라하다보면
어느새 하나의 어플이 돌아가고 있는 iPhone 시물레이터를 볼 수 있습니다



아이폰 개발을 위한 준비 3. Objective C

맥을 사고 sdk를 깔았다고 개발을 당장 시작하긴 어렵습니다

일반 개발자들이 가장 곤란해 하는 문제는
맥은 objective C를 쓰기 때문입니다.

물론 C에서 확장된 언어이고 객체지향형 언어인 C++과
유사하다고 생각 할 수 있지만
objective c 는 smaltalk가 결합된 언어로 문법에서 오는 생소함이 남다릅니다

- objc의 문법 [객체 method] 의 형태 -
[receiver message]


음 완전 새롭죠.
그래서 필수적으로 objc 에 대한 공부를 선행하기를 권합니다
물론 선행해도 약간의 개념파악만이 될것이며
개발시 틈틈히 참조해야 할걸로 믿습니다


- iPhone Dev Center 에서는
광범위하게 아이폰 개발에 대한 자료를 얻을 수 있습니다
objc 역시 여기서 얻는 자료로 공부할 수 있습니다
물론 영어구요 ㅜㅜ

http://developer.apple.com/iphone/index.action


- iPhone Dev Center 사이트 -

여기서 Learning Objective-C: A Primer 에 보시면 간단하게 objc의 문법과 개념을
설명하고 있습니다.


또한 영어 울렁증이 있는 분을 위해 인터넷에서 구할 수 있는 자료로
박종암님이 번역을 해놓으신 Objective-C 자료도 있는데 괜찮은듯 합니다.

아이폰 개발을 위한 준비 2 - xcode & sdk 설치

2 맥이 준비가 되었다면 개발툴을 설치해야지요
맥에서는 visual c가 아닌 xcode를 사용하여 흔히 들었을듯한
cocoa programming 을 합니다

iPhone 개발은 아이폰 개발용으로 cocoa touch 프레임웍을
이용하여 개발하게 됩니다

iPhone SDK를 깔기위해선 iTune이나 애플스토어에서 개발자 프로그램에
가입을 해야합니다
가입에는 비용이 들어가고 1년간 개인은 99$, 기업은 299$의 비용이 들어갑니다

http://www.apple.com/kr/developer/iphone/program/



- 개발자 프로그램 가입화면 -




가입을 마치고 sdk를 깔면 xcode 프로젝트 생성에서 iPhone 어플리케이션
생성탭과 템플릿이 생성된것이 보이게 됩니다

그럼 일단 개발을 위한 준비는 끝난것입니다 ^^


- new project 생성창에 추가된 iphone os 관련 템플릿들 -

아이폰 개발을 위한 준비 1 - MAC

1. MAC준비
인텔 pc에 osx를 까는 일명 해킨토시도 저렴한 가격에 개발툴을 구축할 수 있습니다
그러나 개발이 진행됨에 따라 결국 맥을 장만하시더군요

미니 MAC이든 맥북이든 아이폰 sdk는 잘돌아갑니다.
그만큼 OSX의 최적화가 잘되어 있습니다

하지만 개발툴인 xcode와 iphone 시물레이터 디버거, 참고용 웹페이지등을
동시에 띄우기엔 13인치의 맥북보다는 역시 iMAC의 시원한 화면을 추천합니다.



- xcode의 디버거, 프로젝트, 콘솔, iPhone 시물레이터를 동시에 띄운창입니다
여기에 자료참고를 위한 웹페이지나 pdf파일도 띄울 경우가 생기므로
약간 큰 화면이 좋습니다.