2012年04月11日

アプリ開発日記 cocoa2d 2.0.0rc インストール

※これは cocos2d 2.0 rc版 のインストール手順を記述している記事です。

稚拙アプリ LifeGameHD speeder の作成には、OpenGL ESに直アクセスするコードを使用していたために、かなりの時間を費やしました。そこで次回以降作成するアプリは cocos2d という 2Dゲーム作成に特化したゲームエンジンを使おうと思います。詳しく説明するまでもなく、開発者の間ではとてもメジャーなフレームワークです。

まずcocos2dをダウンロードします。

この記事を作成する時点で、安定バージョンとして1.0.1が、不安定バージョンに1.1と2.0があります。本来なら安定バージョンを利用するところですが、2.0はrc版(リリース候補版)で、またiPad3のretinaディスプレイ※に対応しているようなので、こちらをインストールしてみます。OpenGL ES1.0をサポートしていないのは気をつけなければならない点です。OpenGL ES2.0に対応していないデバイスでは動かない事を意味します。

※そもそもretinaディスプレイを必要とするような、すばらしいアプリを作れるかは謎

1.前提
Mac OS X 10.7.3
Xcode 4.3.2
※この記事を作成する時点で最新バージョン

2.適当な場所に cocos2d-iphone-2.0-rc0a.tar.gz をダウンロード後、ダブルクリックして展開します。

3.ターミナルを開き、展開したフォルダまで移動して下さい。

4.以下のコマンドを叩きます。なんのエラーも表示されず、何回か done! と表示されれば成功しています。

./install-templates.sh -u

5.Xcodeを起動し、新規プロジェクト作成でcocos2dのテンプレートが表示されます。

スクリーンショット 2012-04-11 12.23.34.png

プロジェクト名に"HelloWorld"と記述し、cocos2dのテンプレートで作成したプロジェクトをそのままコンパイルすると、エラー0 ワーニング 0 でした。しかしアプリ起動後にcocos2dのログでワーニング表示が出ます。

2012-04-11 12:29:17.080 HelloWorld[4547:1be03] cocos2d: **** WARNING **** CC_ENABLE_GL_STATE_CACHE is disabled. To improve performance, enable it by editing ccConfig.h

素直に指示に従って、ccConfig.h ファイル の CC_ENABLE_GL_STATE_CACHE を 0 から 1 に変更でワーニグは消えました。

#ifndef CC_ENABLE_GL_STATE_CACHE
#define CC_ENABLE_GL_STATE_CACHE 1
#endif

アプリを起動すると、初めから Archievements や Leaderboard などが実装されています。
初回起動時に横持ち状態になります。上下反対にするとスムーズに画面が回転します。

スクリーンショット 2012-04-11 12.36.49.png

とりあえず縦持ちに変更します。

AppDelegate.m の以下部分を変更しました。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
//return UIInterfaceOrientationIsLandscape(interfaceOrientation);
return UIInterfaceOrientationIsPortrait(interfaceOrientation);
}

あとはタップしても何も反応しないので、とりあえずタップに反応させてみます。

HelloWorldLayer.m ファイルの [self addChild: label]; 行あたりの下に以下を追加します。

label.tag = 123; // ラベルにタグで目印を付けた
self.isTouchEnabled = YES; // タッチを有効にした

同じく HelloWorldLayer.m ファイルに以下を追加します。

// ネットでcocos2dのタップについて調べたら、[[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES]; を追加してねとあったが、実際に記述したら非推奨 'sharedDispatcher' is deprecated のワーニングが出た。多分 cocos2d 2.0 で変更になった部分だと思います。
// CCLayer.h のファイルに、タップを有効にするには registerWithTouchDispatcher を上書きしてねと書いてあったので以下のように記述しました。
-(void) registerWithTouchDispatcher
{
CCDirector *director = [CCDirector sharedDirector];
[[director touchDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES];
}

// タップしたタイミングで、タグで目印をつけたラベルを取得して色や傾きや角度の値を変更
-(BOOL) ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event
{
CCNode *node = [self getChildByTag:123];
NSAssert([node isKindOfClass:[CCLabelTTF class]], @"なんか違う");

CCLabelTTF *label = (CCLabelTTF*)node;
label.color = ccc3(255 * CCRANDOM_0_1(), 255 * CCRANDOM_0_1(), 255 * CCRANDOM_0_1());
label.skewX = CCRANDOM_0_1() * 90.0f;
label.rotation = CCRANDOM_0_1() * 360.0f;

return YES;
}

タップするたびに文字の色と傾きと角度が変わります。

スクリーンショット 2012-04-11 21.56.50.png

インストールからここまで、約10分位でした。
cocos2dを使わずOpenGL ES2.0を直に使用して同じ事を行う場合、10時間かかる自信があります。

posted by uka at 22:06 | Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする
2012年11月13日

new app on iOS6

------------------------------------ iOS5 ------------------------------------

iOSシミュレータのスクリーンショット 2012.11.13 20.46.08.png

( ゚д゚) 'Д)'Д))

↓↓↓↓↓ 90° rotate ↓↓↓↓↓

iOSシミュレータのスクリーンショット 2012.11.13 20.46.46.png

( ゚д゚) 'Д)'Д))

------------------------------------ iOS6 ------------------------------------

iOSシミュレータのスクリーンショット 2012.11.13 20.46.08.png

( ゚д゚) 'Д)'Д))

↓↓↓↓↓ 90° rotate ↓↓↓↓↓

iOSシミュレータのスクリーンショット 2012.11.13 20.47.56.png

  。   
   。  。 。 。 ゚
  。  。゚。゜。 ゚。 。
 /  // / /
( Д ) Д)Д))

-------------------------------- one month later --------------------------------



( ゚д゚) 'Д)'Д))
posted by uka at 21:01 | Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする
2013年02月18日

SimCity 第2回ベータ

### これはSimCityの単なるプレイ記事です。販売アプリとは関係ありません ###

2/16 23:00 〜 2/17 23:00 の24時間限定でSimCityの第2回クローズドベータがありました。

試しに住居区/商業区/工業区をあまり離さずに隣接させて設置した場合、自分の数回プレイした中では人口が一番増えたのでなんでだろう?と考えています。

普通は公害でてる地域に住みたがる人は少ないですよね。

クローズドベータは1プレイが1時間限定のため初期段階の低密度/低所得者層が中心でした。初期段階の低密度の場合だけ自宅と勤務先の通勤距離が短くなる利便性から一時的に人口が増えるのかしら?それとも公害が分散されて汚染濃度が低くなるからかしら? 意表を突いて単なるバグかしら?もしかして低所得者層は公害に耐性が有るのかしら?

こういうふうにあれこれ悩んで試行錯誤するのは楽しいですね。

無題2.png

無題5.png無題6.png無題7.png無題8.png無題11.png無題12.png無題13.png無題14.png無題15.png無題16.png無題17.png無題18.png無題19.png無題21.png
posted by uka at 00:58 | Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする