* 라이센스 관련
1. 나의 앱은 소스 코드를 공개하지 않으려고 한다. 그래도 Cocos2D를 사용할 수 있는가?
-> 물론이다. Cocos2D는 MIT 라이센스로 관리되고 있다. 궁금한 점이 있다면 라이센스 관련 항목을 읽어보라.
2. 만약 누가 나의 앱을 구입했을 경우 나는 그에게 소스 코드도 제공해야 하는가?
-> 당신의 게임을 구입했다 하더라도 그 게임의 소스 코드를 제공해야 할 의무는 없다.
* 개발 관련
1. Cocos2D에서 3D 오브젝트를 사용할 수 있는가?
-> 아무 문제 없이 2D 게임에도 3D 오브젝트를 넣어서 그래픽 퀄리티를 높일 수 있다. Cocos2D의 기본 투영 행렬 구조는 3D와 같으므로 아마 변경할 필요도 없을 것이다.
2. 버그를 발견하거나 제안할 사항이 있다. 어떻게 하면 되는가?
-> 이슈 추적기를 사용하라. http://code.google.com/p/cocos2d-iphone/issues/list
또한 포럼에 있는 버그/제안사항 쪽에 글을 써도 된다. 하지만 이슈 추적기를 사용하는 것을 권장한다.
3. 엔진의 개선에 참여하고 싶다면?
-> 당신이 코드에 기여하고 싶다면 다음 단계를 따라주기 바란다.
(만약 당신이 새로운 git 또는 GitHub를 가지고 있다면 Pro Git를 읽어야 한다. 특히 Contributing to a project: Small/Large Public Project 부분을 읽어주시길) (*역주 : GIT는 분산 소스코드 관리 프로그램임)
4. 아이폰용 SDK 3.x와 4.x를 위한 게임을 개발할 수 있는가?
-> 물론이다. Cocos2D는 SDK 2.x, 3.x, 4.x를 지원한다.
5. Cocos2D를 아이폰/아이패드/맥에서 사용할 수 있는가?
-> 그렇다. Cocos2D는 모든 애플 디바이스를 잘 지원한다.
- 아이폰/아이팟 터치 1세대
- 아이폰 3G/아이팟 터치 2세대
- 아이폰 3Gs/아이팟 터치 3세대
- 아이폰 4/아이팟터치 4세대(고해상도 레티나 모드 선택 지원 가능)
- 아이패드
- Mac OSX
6. 텍스처 사이즈는 어떻게 해야 하는가?
-> 두 가지 고려해야 할 사항이 있다. 비압축 텍스처와 PVRTC 텍스처이다.
비압축 텍스처를 위해 텍스처는 3세대 디바이스에서는 2048 이하의 2제곱수를 가진 2차원 텍스처여야 하고, 그 이전 디바이스에서는 1024 이하여야 한다. 따라서 16x256은 OK. 512x512도 OK. 그러나 240x320은 2의 제곱수가 아니므로 안된다.
이 규칙에 맞지 않는 이미지도 사용은 가능하지만, 텍스처로 변환되어 저장될 때 2의 배수로 자동 저장된다는 점을 기억하라. 240x320의 이미지는 텍스처로 변환될 때 256x512로 바뀔 것이다.
아이폰 3Gs와 같은 새로운 플랫폼에서는 최대 텍스처 사이즈가 2048x2048까지 가능하다. 아이폰 3G 이하라면 1024x1024까지만 가능하다.
PVRTC 압축 텍스처는 2의 제곱수 크기로 정사각형이어야 한다. 예를 들면 4x4, 32x32, 256x256, 1024x1024와 같은 크기여야 한다. 이 포맷으로 로드된 이미지는 GPU상에서 돌아가는 포맷과 밀접하게 매칭되는 특별한 포맷이다. 따라서 2의 제곱수 크기로 정사각형이어야만 한다. 만약 PVRTC 압축 텍스처를 사용했는데 흰 그림만이 나올 경우 이러한 크기와 정사각형이 아닐 확률이 높다.
7. 스프라이트 시트는 무엇이며 왜 사용해야 하는가?
-> 스프라이트 시트는 큰 스프라이트 상에 정렬된 스프라이트들의 모음이다. 이것을 사용하면 두 가지 장점이 있는데, 첫째로 시트 상의 모든 스프라이트가 한 번의 드로우 콜로 그려질 수 있다는 것이다. 이것은 매우 효율적이다. 두번째로는 메모리의 낭비 없이 2의 제곱수 크기가 아닌 텍스처를 사용할 수 있다는 것이다. 스프라이트 시트 상에 스프라이트를 묶는 가장 좋은 실습은 스프라이트 섹션(http://www.cocos2d-iphone.org/wiki/doku.php/prog_guide:sprites)을 참고하면 더욱 자세한 정보를 얻을 수 있다.
8. 텍스처 상에 렌더링하기(렌더 투 텍스처) 기술을 사용할 수 있는가?
-> 물론이다. 프레임버퍼 오브젝트를 사용할 수 있다. 이것은 Cocos2D에서 이펙트 구현을 위해 사용되고 있다. Grabber.m 또는 RenderTexture.m 클래스를 참고하라.
9. 라이트나 연기 같은 동적 알파 효과를 사용할 수 있는가?
-> 물론이다. 프레임버퍼 오브젝트와 채널 마스킹 조합으로 오직 알파 채널 상에서 적절한 블렌딩 모드를 사용해 그릴 수 있다. 연기 효과를 위한 iSteam(다른 이미지보다 상위에 그려지는 편집 가능한 연기 레이어), 번개, 스크래치 복원 이펙트와 변경 가능한 플레이 필드. 이러한 렌더 텍스처 클래스를 보고 다음의 스레드(http://groups.google.com/group/cocos2d-iphone-discuss/brouwse_frm/thread/dab9b84cd5262d80/ed15695bb0cb3af5?lnk=gst&q=scratch+off#ed15695bb0cb3af5)를 참고하라.
10. 내 프로젝트에 사운드를 추가하는 방법은?
-> Cocos2D는 여러 가지의 오디오 프레임워크를 가지고 있다. 당신에게 필요한 것을 잘 골라서 사용하기 바란다.
SimpleAudioEngine 인터페이스는 Cocos Denshion 오디오 라이브러리의 일부로서, 대부분의 게임 어플리케이션에 사용하기에는 충분할 것이다
3D의 공간감이 느껴지는 사운드가 필요하다면 PASoundMgr 인터페이스를 사용하면 된다. PASoundMgr은 Cocos2D의 expermental/sound-engine 디렉토리에 포함되어 있다.
더 많은 고급 오디오 테크닉이 필요하거나 저수준의 OS 오디오 API에 접근하고 싶다면 CocosDenshion 오디오 라이브러리의 CDAudioManager 인터페이스가 좋은 선택이 될 것이다.
매우 간단한 오디오 기능이 필요하다면 OS 오디오 API를 직접 사용하는 것으로 충분할 수도 있다. 예를 들어 만약 사운드 하나만 플레이하고 싶다면 AVAudioPlayer API로 간단하게 SimpleAudioEngine과 CDAudioManager 인터페이스 내에서 배경음악으로 활용할 수 있을 것이다.
* 문제 해결
1. 이미지를 띄웠는데, 시뮬레이터에서 색상이 엉망으로 보인다.
-> 혹시 PowerPC 기반 맥을 사용하고 있지 않는가? 맞다면 이미 보고된 문제이다. PowerPC는 아이폰 개발에 적합한 플랫폼이 아니다.
2. 테스트는 어떻게 해볼 수 있는가?
-> 1. Cocos2D XCode 프로젝트를 연다.
2. 다음 순서로 클릭한다. XCode > View > Customize toolbar
3. Active Target, Active Executable을 드래그해서 당신의 탑 프로젝트 툴바로 옮긴다.
4. 테스트하고 싶은 뷰를 선택하고 드롭다운 메뉴에서 Build and Go를 선택한다.
3. PNG 이미지가 포토샵에서 보이는 것처럼 보이지 않는다. 어째서인가?
-> 만약 PNG 이미지가 포토샵에서처럼 깨끗하게 나오지 않는다면 우선은 32비트 픽셀 포맷을 사용하도록 하자.
[[CCDirector sharedDirector] setPixelFormat:kRGBA8]; // 기본은 RGB565
[[CCTexture2D setDefaultAlphaPixelFormat:KCCTexture2DPixelFormat_RGBA8888]; // 기본은 RGBA8888
그래도 여전히 문제가 생긴다면 다음 사항을 체크하자.
* 디바이스 상에서 이미지가 생성될 때 알파 채널이 미리 적용되었는지 여부
* 미리 적용된 알파 이미지를 정확하게 렌더링하기 위해, Cocos2D는 이 블렌딩함수를 사용한다.
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
그러나 당신이 만약 다른 블렌딩함수를 사용하고 싶다면 다음과 같이 해야 한다.
// Cocos2D v0.7x는 모든 스프라이트에 GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA를 블렌딩 함수로서 사용한다.
// 이 방법은 정확하지 않다. 그러나 만약 당신이 0.7x의 방식을 에뮬레이트하고 싶다면
[sprite setBlendFunc: (ccBlendFunc) {GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA}];
블렌딩 함수에 대한 더 많은 정보와 미리 곱해진 알파 이미지에 대해서 알고 싶다면 다음을 읽어보기 바란다.
Premultiplied images in Cocos2D (http://www.cocos2d-iphone.org/wiki/doku.php/release_notes0_8#premultiplied_images)
그리고, 이미지가 혹시 하얗게 나올 경우, 이미지가 미리 곱해진 알파를 가지고 있다면 텍스처가 변환될 때 RGB 컴포넌트가 수정될 것이다. 하지만 만약 이것을 오버라이드하고 싶다면 다음과 같이 하라.
[sprite setOpacityModifyRGB:NO];
1. 나의 앱은 소스 코드를 공개하지 않으려고 한다. 그래도 Cocos2D를 사용할 수 있는가?
-> 물론이다. Cocos2D는 MIT 라이센스로 관리되고 있다. 궁금한 점이 있다면 라이센스 관련 항목을 읽어보라.
2. 만약 누가 나의 앱을 구입했을 경우 나는 그에게 소스 코드도 제공해야 하는가?
-> 당신의 게임을 구입했다 하더라도 그 게임의 소스 코드를 제공해야 할 의무는 없다.
* 개발 관련
1. Cocos2D에서 3D 오브젝트를 사용할 수 있는가?
-> 아무 문제 없이 2D 게임에도 3D 오브젝트를 넣어서 그래픽 퀄리티를 높일 수 있다. Cocos2D의 기본 투영 행렬 구조는 3D와 같으므로 아마 변경할 필요도 없을 것이다.
2. 버그를 발견하거나 제안할 사항이 있다. 어떻게 하면 되는가?
-> 이슈 추적기를 사용하라. http://code.google.com/p/cocos2d-iphone/issues/list
또한 포럼에 있는 버그/제안사항 쪽에 글을 써도 된다. 하지만 이슈 추적기를 사용하는 것을 권장한다.
3. 엔진의 개선에 참여하고 싶다면?
-> 당신이 코드에 기여하고 싶다면 다음 단계를 따라주기 바란다.
(만약 당신이 새로운 git 또는 GitHub를 가지고 있다면 Pro Git를 읽어야 한다. 특히 Contributing to a project: Small/Large Public Project 부분을 읽어주시길) (*역주 : GIT는 분산 소스코드 관리 프로그램임)
4. 아이폰용 SDK 3.x와 4.x를 위한 게임을 개발할 수 있는가?
-> 물론이다. Cocos2D는 SDK 2.x, 3.x, 4.x를 지원한다.
5. Cocos2D를 아이폰/아이패드/맥에서 사용할 수 있는가?
-> 그렇다. Cocos2D는 모든 애플 디바이스를 잘 지원한다.
- 아이폰/아이팟 터치 1세대
- 아이폰 3G/아이팟 터치 2세대
- 아이폰 3Gs/아이팟 터치 3세대
- 아이폰 4/아이팟터치 4세대(고해상도 레티나 모드 선택 지원 가능)
- 아이패드
- Mac OSX
6. 텍스처 사이즈는 어떻게 해야 하는가?
-> 두 가지 고려해야 할 사항이 있다. 비압축 텍스처와 PVRTC 텍스처이다.
비압축 텍스처를 위해 텍스처는 3세대 디바이스에서는 2048 이하의 2제곱수를 가진 2차원 텍스처여야 하고, 그 이전 디바이스에서는 1024 이하여야 한다. 따라서 16x256은 OK. 512x512도 OK. 그러나 240x320은 2의 제곱수가 아니므로 안된다.
이 규칙에 맞지 않는 이미지도 사용은 가능하지만, 텍스처로 변환되어 저장될 때 2의 배수로 자동 저장된다는 점을 기억하라. 240x320의 이미지는 텍스처로 변환될 때 256x512로 바뀔 것이다.
아이폰 3Gs와 같은 새로운 플랫폼에서는 최대 텍스처 사이즈가 2048x2048까지 가능하다. 아이폰 3G 이하라면 1024x1024까지만 가능하다.
PVRTC 압축 텍스처는 2의 제곱수 크기로 정사각형이어야 한다. 예를 들면 4x4, 32x32, 256x256, 1024x1024와 같은 크기여야 한다. 이 포맷으로 로드된 이미지는 GPU상에서 돌아가는 포맷과 밀접하게 매칭되는 특별한 포맷이다. 따라서 2의 제곱수 크기로 정사각형이어야만 한다. 만약 PVRTC 압축 텍스처를 사용했는데 흰 그림만이 나올 경우 이러한 크기와 정사각형이 아닐 확률이 높다.
7. 스프라이트 시트는 무엇이며 왜 사용해야 하는가?
-> 스프라이트 시트는 큰 스프라이트 상에 정렬된 스프라이트들의 모음이다. 이것을 사용하면 두 가지 장점이 있는데, 첫째로 시트 상의 모든 스프라이트가 한 번의 드로우 콜로 그려질 수 있다는 것이다. 이것은 매우 효율적이다. 두번째로는 메모리의 낭비 없이 2의 제곱수 크기가 아닌 텍스처를 사용할 수 있다는 것이다. 스프라이트 시트 상에 스프라이트를 묶는 가장 좋은 실습은 스프라이트 섹션(http://www.cocos2d-iphone.org/wiki/doku.php/prog_guide:sprites)을 참고하면 더욱 자세한 정보를 얻을 수 있다.
8. 텍스처 상에 렌더링하기(렌더 투 텍스처) 기술을 사용할 수 있는가?
-> 물론이다. 프레임버퍼 오브젝트를 사용할 수 있다. 이것은 Cocos2D에서 이펙트 구현을 위해 사용되고 있다. Grabber.m 또는 RenderTexture.m 클래스를 참고하라.
9. 라이트나 연기 같은 동적 알파 효과를 사용할 수 있는가?
-> 물론이다. 프레임버퍼 오브젝트와 채널 마스킹 조합으로 오직 알파 채널 상에서 적절한 블렌딩 모드를 사용해 그릴 수 있다. 연기 효과를 위한 iSteam(다른 이미지보다 상위에 그려지는 편집 가능한 연기 레이어), 번개, 스크래치 복원 이펙트와 변경 가능한 플레이 필드. 이러한 렌더 텍스처 클래스를 보고 다음의 스레드(http://groups.google.com/group/cocos2d-iphone-discuss/brouwse_frm/thread/dab9b84cd5262d80/ed15695bb0cb3af5?lnk=gst&q=scratch+off#ed15695bb0cb3af5)를 참고하라.
10. 내 프로젝트에 사운드를 추가하는 방법은?
-> Cocos2D는 여러 가지의 오디오 프레임워크를 가지고 있다. 당신에게 필요한 것을 잘 골라서 사용하기 바란다.
SimpleAudioEngine 인터페이스는 Cocos Denshion 오디오 라이브러리의 일부로서, 대부분의 게임 어플리케이션에 사용하기에는 충분할 것이다
3D의 공간감이 느껴지는 사운드가 필요하다면 PASoundMgr 인터페이스를 사용하면 된다. PASoundMgr은 Cocos2D의 expermental/sound-engine 디렉토리에 포함되어 있다.
더 많은 고급 오디오 테크닉이 필요하거나 저수준의 OS 오디오 API에 접근하고 싶다면 CocosDenshion 오디오 라이브러리의 CDAudioManager 인터페이스가 좋은 선택이 될 것이다.
매우 간단한 오디오 기능이 필요하다면 OS 오디오 API를 직접 사용하는 것으로 충분할 수도 있다. 예를 들어 만약 사운드 하나만 플레이하고 싶다면 AVAudioPlayer API로 간단하게 SimpleAudioEngine과 CDAudioManager 인터페이스 내에서 배경음악으로 활용할 수 있을 것이다.
* 문제 해결
1. 이미지를 띄웠는데, 시뮬레이터에서 색상이 엉망으로 보인다.
-> 혹시 PowerPC 기반 맥을 사용하고 있지 않는가? 맞다면 이미 보고된 문제이다. PowerPC는 아이폰 개발에 적합한 플랫폼이 아니다.
2. 테스트는 어떻게 해볼 수 있는가?
-> 1. Cocos2D XCode 프로젝트를 연다.
2. 다음 순서로 클릭한다. XCode > View > Customize toolbar
3. Active Target, Active Executable을 드래그해서 당신의 탑 프로젝트 툴바로 옮긴다.
4. 테스트하고 싶은 뷰를 선택하고 드롭다운 메뉴에서 Build and Go를 선택한다.
3. PNG 이미지가 포토샵에서 보이는 것처럼 보이지 않는다. 어째서인가?
-> 만약 PNG 이미지가 포토샵에서처럼 깨끗하게 나오지 않는다면 우선은 32비트 픽셀 포맷을 사용하도록 하자.
[[CCDirector sharedDirector] setPixelFormat:kRGBA8]; // 기본은 RGB565
[[CCTexture2D setDefaultAlphaPixelFormat:KCCTexture2DPixelFormat_RGBA8888]; // 기본은 RGBA8888
그래도 여전히 문제가 생긴다면 다음 사항을 체크하자.
* 디바이스 상에서 이미지가 생성될 때 알파 채널이 미리 적용되었는지 여부
* 미리 적용된 알파 이미지를 정확하게 렌더링하기 위해, Cocos2D는 이 블렌딩함수를 사용한다.
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
그러나 당신이 만약 다른 블렌딩함수를 사용하고 싶다면 다음과 같이 해야 한다.
// Cocos2D v0.7x는 모든 스프라이트에 GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA를 블렌딩 함수로서 사용한다.
// 이 방법은 정확하지 않다. 그러나 만약 당신이 0.7x의 방식을 에뮬레이트하고 싶다면
[sprite setBlendFunc: (ccBlendFunc) {GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA}];
블렌딩 함수에 대한 더 많은 정보와 미리 곱해진 알파 이미지에 대해서 알고 싶다면 다음을 읽어보기 바란다.
Premultiplied images in Cocos2D (http://www.cocos2d-iphone.org/wiki/doku.php/release_notes0_8#premultiplied_images)
그리고, 이미지가 혹시 하얗게 나올 경우, 이미지가 미리 곱해진 알파를 가지고 있다면 텍스처가 변환될 때 RGB 컴포넌트가 수정될 것이다. 하지만 만약 이것을 오버라이드하고 싶다면 다음과 같이 하라.
[sprite setOpacityModifyRGB:NO];
'프로그래밍 > Cocos2D' 카테고리의 다른 글
cocos2D 레티나 지원 관련 (0) | 2012.02.05 |
---|---|
cocos2D 레티나 해상도 개발시 point 하나로 개발하기 (0) | 2012.02.05 |
Cocos2D #1 - Cocos2D 튜터리얼로 간단한 아이폰 게임 만들기 (0) | 2010.07.28 |
[MammothHunting] - Cocos2D를 사용한 아이폰 게임 개발 튜토리얼 4 (0) | 2010.07.02 |
[MammothHunting] - Cocos2D를 사용한 아이폰 게임 개발 튜토리얼 3 (0) | 2010.07.02 |