아이폰어플개발정보2010. 6. 24. 07:59
아이폰 개발 관련 링크


출처 : http://blog.naver.com/PostView.nhn?blogId=rioms81&logNo=60104211949
Posted by 오늘마감

댓글을 달아 주세요

아이폰뉴스2010. 6. 23. 21:09
모비언스, 아이폰용 블루투스 키보드 개발

[아이폰/아이폰키보드]

 모비언스, 아이폰용 블루투스 키보드 개발

모바일기기 문자입력기술 전문기업 모비언스(대표 안재우, www.mobience.com)가 아이폰에 사용할

수 있는 블루투스 키보드를 개발했다.

이 제품은 블루투스 인증칩을 내장해 무선

키보드 방식으로 아이폰에 문자를 입력할 수 있는 것이 특징이다.

모비언스가 개발한 문자입력 애플리케이션인

 '스몰쿼티(smallQWERTY)'를 띄워놓은 상태에서

사용 가능한 이 제품은 특히 기존 쿼티키보드와

달리 글자판이 9개로 압축돼, 1주일만 연습하면 분당

 400타까지 칠 수 있다. 이 외에도 간단한 동작을

위한 입력버튼과 마우스패드 기능을 함께

구성해 사용편의성을 더했다.

이 회사 안재우 대표는 "애플의 '웍스 위드 아이폰

(Works with iphone)' 인증절차와 함께 아이폰 컨셉트에

 맞는 디자인 변경, 마우스패드 기능 등을 강화시켜

 오는 5~6월 안에 판매에 본격적으로 나설 것"이라며

 "무엇보다 스마트폰에서만 사용하는 것이 아닌,

IPTV와 PC까지 연동시켜 사용할 수 있도록 확장성도

 높여나갈 것"이라고 밝혔다.



출처 : http://blog.naver.com/PostView.nhn?blogId=mytelelink&logNo=20104851596
Posted by 오늘마감

댓글을 달아 주세요

아이폰어플개발정보2010. 6. 21. 22:50
[MammothHunting] - Cocos2D를 사용한 아이폰 게임 개발 튜토리얼 4

출처 :http://lambert.tistory.com/294

비록 예제를 위한 게임이지만 3단계까지 진행한 상태에서는 별반 감흥이 없다. 이유는 바로 소리(배경음악, 효과음)가 없기 때문이다. 지금까지 게임 개발의 문외한 이었지만 "게임은 종합 예술"이라는 말을 자주 들었었다. 정말 그렇다. 아주 간단한 게임조차 그래픽과 사운드는 필수 요소이다.

사운드 샘플은 원문의 샘플을 그대로 사용하기로 한다. 아니면 Cocos2D에서 소개하는 게임 관련 리소스(Game Resources)를 이용해도 좋을 것 같다.

배경 음악과 효과음 추가
다음 두 개의 파일을 다운 받아 Xcode 프로젝트의 Resources 폴더에 추가한다.
우선 MammothHuntingScene.h에 다음 임포트 문을 추가한다.

#import "SimpleAudioEngine.h"


init 메소드에 다음과 같이 배경음악을 시작하는 코드를 추가하자. 마지막 부분에 추가하면 된다.

[[SimpleAudioEnginesharedEngine] playBackgroundMusic:@"background-music-aac.caf"];


그리고 ccTouchesEnded 메소드에 총알 발사 효과음을 추가한다.

[[SimpleAudioEnginesharedEngine] playEffect:@"pew-pew-lei.caf"];


빌드앤런! 이제 배경 음악과 효과음을 들을 수 있다.

게임 진행 로직 추가
다음은 간단한 게임 진행 로직을 추가할 것이다. 프로젝트에 GameOverScene 이라고 새로운 클래스를 추가하자. 그리고 다음과 같이 GameOverScene.h와 GameOverScene.m을 수정한다.

[GameOverScene.h]
@interface GameOverLayer : CCColorLayer {

CCLabel *_label;

}


@property (nonatomic, retain) CCLabel *label;


@end




@interface GameOverScene : CCScene {

GameOverLayer *_layer;

}


@property (nonatomic, retain) GameOverLayer *layer;


@end



[GameOverScene.m]
#import "GameOverScene.h"

#import "MammothHuntingScene.h"



@implementation GameOverLayer


@synthesize label = _label;



-(id) init {

if ((self=[super initWithColor:ccc4(255,255,255,255)])) {

CGSize winSize = [[CCDirectorsharedDirector] winSize];

self.label = [CCLabellabelWithString:@""fontName:@"Arial"fontSize:32];

_label.color = ccc3(0,0,0);

_label.position = ccp(winSize.width/2, winSize.height/2);

[selfaddChild:_label];

[selfrunAction:[CCSequenceactions:

[CCDelayTimeactionWithDuration:3],

[CCCallFuncactionWithTarget:selfselector:@selector(gameOverDone)],

nil]];

}

returnself;

}



- (void)gameOverDone {

[[CCDirectorsharedDirector] replaceScene:[MammothHuntingScenescene]];

}



- (void)dealloc {

[_labelrelease];

_label = nil;

[superdealloc];

}



@end



@implementation GameOverScene


@synthesize layer = _layer;



- (id)init {

if ((self = [super init])) {

self.layer = [GameOverLayernode];

[selfaddChild:_layer];

}

returnself;

}



- (void)dealloc {

[_layerrelease];

_layer = nil;

[superdealloc];

}



@end


위 소스에서 한 가지 주목할 것은 하나의 파일에 두 개의 서로 다른 객체, 즉 Layer와 Scene이 있다는 점이다. 보통 하나의 Scene은 여러 개의 Layer를 포함할 수 있다. 그러나 본 예제에서는 오직 하나의 Layer만 사용한다. 화면의 중앙에 라벨을 그리는 Layer이다.

마지막으로, 단순한 게임 진행 로직 추가를 위해, MammothHuntingScene.h에 다음의 멤버 변수를 추가하자. 

int_projectilesDestroyed;


MammothHuntingScene.m에는 다음 임포트 구문을 추가한다.

#import "GameOverScene.h"


그리고 게임의 승리 조건을 판단하기 위해 update 메소드의 targetsToDelete 루프에 다음 코드를 추가한다.

_projectilesDestroyed++;

if (_projectilesDestroyed > 30) {

GameOverScene *gameOverScene = [GameOverScenenode];

[gameOverScene.layer.label setString:@"You Win!"];

[[CCDirectorsharedDirector] replaceScene:gameOverScene];

}


다음 spriteMoveFinished 메소드의 sprite.tag == 1 조건 부분에 아래의 코드를 추가한다.

GameOverScene *gameOverScene = [GameOverScenenode];

[gameOverScene.layer.label setString:@"You Lose :["];

[[CCDirectorsharedDirector] replaceScene:gameOverScene];


드디어 아주 아주 간단한 게임 개발이 끝이 났다. 다시 빌드앤런! 추가된 게임 로직이 제대로 작동될 것이다.

MammothHunting 프로젝트 소스
MammothHunting.zip



출처 : http://blog.naver.com/PostView.nhn?blogId=cbdman&logNo=130085022641
Posted by 오늘마감

댓글을 달아 주세요

아이폰어플개발정보2010. 6. 21. 22:49
[MammothHunting] - Cocos2D를 사용한 아이폰 게임 개발 튜토리얼 1

출처 : http://lambert.tistory.com/290

Cocos2D-iPhone 엔진은 원래 Python으로 작성된 2D 기반의 게임 라이브러리 인데 이 것을 아이폰 용으로 포팅한 것이 바로 Cocos2D-iPhone이다. 아이폰 게임 개발에 관심을 갖게 된다면 가장 먼저 접합게 되는 게임 엔진일 것이다. Cocos2D는 모바일 환경에서 그래픽 출력을 위한 OpenGL ES 및 사운드 출력을 위한 OpenAL 라이브러리를 손쉽게 게임 개발에 사용할 수 있도록 래핑한 것이다. 물론 다양한 기능을 지원한다. 이에 대한 내용은 사이트에서 확인 바란다.


단 0.8.X  버전에서 0.99.0(cocos2d for iPhone v0.99.0 Release Notes) 버전으로 업그레이드 되면서 CC라는 네임스페이스를 사용하기 시작했다는 점에 주의해야 한다. 0.99.0 이전의 인터넷 자료를 참고한다면 샘플 소스에서 차이가 날 것이다.

이와 관련된 내용과 기본적인 사용법(Hello World, Hello Actions, Hello Events 등등) 등을 공부하고 나면 바로 다음 단계가 궁굼해 진다. "그럼, 어떻게 게임을 만들지?", 물론 사이트에 샘플 게임 소스가 공개되어 있긴 하지만 이제 막 게임 개발에 입문한 개발자에게는 그리 녹녹치 않다.

부분적으로 API를


출처 : http://blog.naver.com/PostView.nhn?blogId=cbdman&logNo=130085022497
Posted by 오늘마감

댓글을 달아 주세요

아이폰어플개발정보2010. 6. 21. 22:49
[MammothHunting] - Cocos2D를 사용한 아이폰 게임 개발 튜토리얼 3

출처 : http://lambert.tistory.com/293

충돌 검사
이전 포스트까지의 내용대로 개발된 게임은 아무리 총알을 발사해도 타겟을 통과할 뿐이다. 이 문제를 해결하기 위해 충돌 검사라는 것이 필요하다.

케익에 맞은 맘모스는 게임 화면에서 사라져와 한다. 물론 잘 만들어진 게임이라면 총알 맞는 효과 같은 것들이 부수적으로 필요할 것이다. 

그러나 간단한 게임 예제라는 전제로 이런 부분들은 배제하고 간단히 총알과 타겟이 만났을 경우만 처리하는 코드를 작성할 것이다. 게임 물리의 거리, 운동 등의 다양한 면을 담당하는 게임 엔진의 한 부분인 물리 엔진은 사용되지 않는다.

먼저 다음 코드를 MammothHuntingScene.h에 추가하자.

NSMutableArray *_targets;

NSMutableArray *_projectiles;


그리고 MammothHuntingScene.m의 init 메소드의 self.isTouchEnabled = YES; 아래에 다음 코드를 추가한다.

_targets = [[NSMutableArrayalloc] init];

_projectiles = [[NSMutableArrayalloc] init];


마지막으로 메모리 관리를 위해 MammothHuntingScene.m의 dealloc 메소드에 다음 코드를 추가한다.

[_targetsrelease];

_targets = nil;

[_projectilesrelease];

_projectiles = nil;


이제 addTarget 메소드르 수정할 차례이다. 위에서 선언한 _targets 배열에 새로운 target를 추가하는 것이다. 제일 아랫 부분에 다음처럼 추가하자. 새로 설정한 tag는 나중에 사용될 것이다.

target.tag = 1;

[_targets addObject:target];


그리고 ccTouchesEnded 메소드 역시 _projectiles 배열에 새로운 projectile을 추가하게 끔 다음 코드를 메소드 마지막에 추가한다. 새로 설정한 tag는 나중에 사용될 것이다.

projectile.tag = 2;

[_projectiles addObject:projectile];


마지막으로 spriteMoveFinished 메소드에 위에서 설정한 tag를 기반으로 스프라이트를 삭제하는 코드를 추가한다.

if (sprite.tag == 1) { // 타겟.

[_targets removeObject:sprite];

} else if (sprite.tag == 2) { // 총알.

[_projectiles removeObject:sprite];

}


빌드앤런 해보자. 그런데 이전과 마찬가지로 실제 사냥이 되지는 않을 것이다. 당연하다. 충돌 검사 코드가 아직 작성되지 않았다. 다음 update: 메소드를 MammothHuntingScene.m에 추가해야 한다.

- (void)update:(ccTime)dt {

NSMutableArray *projectilesToDelete = [[NSMutableArrayalloc] init];

for (CCSprite *projectile in _projectiles) {

CGRect projectileRect = CGRectMake(

  projectile.position.x - (projectile.contentSize.width/2), 

  projectile.position.y - (projectile.contentSize.height/2), 

  projectile.contentSize.width

  projectile.contentSize.height);

NSMutableArray *targetsToDelete = [[NSMutableArrayalloc] init];

for (CCSprite *target in _targets) {

CGRect targetRect = CGRectMake(

  target.position.x - (target.contentSize.width/2), 

  target.position.y - (target.contentSize.height/2), 

  target.contentSize.width

  target.contentSize.height);

if (CGRectIntersectsRect(projectileRect, targetRect)) {

[targetsToDelete addObject:target];

}

}

for (CCSprite *target in targetsToDelete) {

[_targets removeObject:target];

[self removeChild:target cleanup:YES];

}

if (targetsToDelete.count > 0) {

[projectilesToDelete addObject:projectile];

}

[targetsToDelete release];

}

for (CCSprite *projectile in projectilesToDelete) {

[_projectiles removeObject:projectile];

[self removeChild:projectile cleanup:YES];

}

[projectilesToDelete release];

}


update: 메소드는 루프를 돌면서 총알과 타겟이 교차하는 지  CGRectIntersectsRect를 통해 검사한다. 만약 교차한다면 화면과 배열에서 제거해 버린다. 
여기서 한 가지 주의할 것이 있다. 충돌 검사 루프를 하는 동안은 배열의 객체를 삭제할 수 없으므로 제거 대상을 배열에 넣었다가 삭제한다.

정말 마지막으로 다음의 코드를 init 메소드 하단에 추가하고 빌드앤런하자. 이제 맘모스를 사냥할 수 있을 것이다.

[selfschedule:@selector(update:)];


서두에 간단히 물리 엔진에 대해서 이야기 했던 것처럼, 간단한 그래픽 기반 게임 조차 어느 정도 물리 코드가 필요하다. 이 말은 충돌 검사의 다양한 방법이 있다는 것이다. 다음 기회에 Cocos2D의 물리 엔진인 Box2d와 Chipmunk를 공부할 항목에 추가해야 겠다.


출처 : http://blog.naver.com/PostView.nhn?blogId=cbdman&logNo=130085022575
Posted by 오늘마감

댓글을 달아 주세요

아이폰어플개발정보2010. 6. 20. 23:17
iPhone 개발 환경

iPhone 개발은 애플에서 제공하는 iPhone 개발환경을 이용해서 개발을 진행할 수 있다. 애플의 개발환경은 Mac OS X에서만 동작하므로 맥이 필요하다.

iPhone 개발환경을 위해서는 먼저 ADC(Apple Developer Connection)의 회원이어야 하며 iPhone Developer로 따로 가입해야 한다. 개발환경을 위한 회원가입은 무료이므로 누구나 쉽게 가입할 수 있다.

개발환경에는 아이폰 시뮬레이션 개발 환경을 제공하고 있는데 이것을 이용해서 개발은 진행할 수 있다. 하지만 실제 동작을 테스트하기 위해서는 실제 디바이스(iPhone 또는 iPod Touch)를 이용해서 진행해야 하는데 아이폰 시뮬레이션 개발환경에서는 메모리나 CPU 성능과 관련해서는 직접 테스트를 하기 힘들기 때문이다.

실제 iPhone 디바이스에 개발한 프로그램을 올려서 사용하기 위해서는 애플의 iPhone Development Program에 등록을 해야 한다.

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

99$와 299$ 두가지의 프로그램이 있는데 각각에 맞는 것을 선택해서 가입하면 된다.

프로그램에 가입하면 디바이스에 어플리케이션을 올려서 테스트할 수 있도록 CSR(Certificate Signing Request), Development certificate, Provisioning profile이 생성되게 된다.

보다 자세한 사항에 대해서는 다음에 따로 설명하겠다.



출처 : http://blog.naver.com/PostView.nhn?blogId=valentis2000&logNo=40058621016
Posted by 오늘마감

댓글을 달아 주세요