cocos2d + AppBank広告


cocos2dで作っているアプリにAppBankの広告を載せようと思ったのだが、自力では無理なのでいつものようにgoogleで調べた。

参考になったというか、ほぼコピペで使わせてもらったのは以下のサイト。
cocos2dレイヤの上に広告を表示する – ICT Fractal 公式 blog

このサイトを参考にしつつ、広告を非表示にする際に、
[adView pause];
広告を再表示する際に、
[adView resume];
のような処理を追加した。

cocos2dを勉強しようと思って間違ってcocos2d-xの書籍を買ってしまって仕方なくcocos2d-xを勉強したのだが、その当時はgoogleで検索するとcocos2dのサンプルコードばかりが見つかるという状況だった。
そのため、せっかく書き慣れてきたobjective-cを捨て去るのもなんだし、cocos2dで行くか、とcocos2dのアプリを作り始めたのだが、あまりに開発速度が遅過ぎて、なんだか最近はcocos2d-xの検索結果の方が断然多くてcocos2dの情報を探すのに苦労するようになってきた。

全然時代の流れに着いていけてないです。
asset catalogなんてものがあることに最近気付いたくらいだし。


CCLabelTTFで使用できるフォント名


cocos2dでプログラミング中。
CCLabelTTFで指定できるフォント名の一覧を探していてこちらのページを見つけた。

[cocos2d] CCLabelTTFで利用出来るFontについて | きぶんはおっさん

どこかに一次ソースがあるんだろうけど見つけることができない。。。
macのFont Bookの中にあるフォントが全て使えるってわけでもないみたいでよくわからない。
2012年の情報のようだけど、これ以降変更はないんだろうか。

— 追記 —
どうやらここに書いてあるフォント一覧と同じらしい。
UIFont – iPhoneアプリ開発の虎の巻

上記のフォントはXcode3.2上で、familyNamesメソッドを使用して出力したフォント名を掲載しています。

と書いてあるので、CCLabelTTFではXcodeに入っている(iOSに含まれる?)フォントがそのまま使えるということでいいのかな?


google maps api for iOS と cocos2d の併用はNG?


地図情報を使ったアプリを作ろうとしていて、google maps api for iOSやらiOSのMapKitやらyahooのiOSマップSDKやらテストしてみて、結局google mapsに落ち着いてコーディングしていた矢先に再び問題に直面。

少しパーティクル的なものを使ってみたいと思い、ちょこっと勉強したcocos2dを使ってやろうと思いしばらくコーディングしていたのだが、cocos2dの枠組みでgoogle mapを表示させるとどうも挙動がおかしい。

次のようなエラーが出て、地図が正常に表示されないことがある。
初回はほぼ正常に表示されるがsceneを移動して戻ってくると地図の縦横比がおかしくなったり、まったく地図が表示されなかったりする。
使い方が間違っている可能性も多々あるが、google map単体だと出なかったエラーなので、cocos2dと併用するときに何か問題が起こっているんだと思う。


Failed to make complete framebuffer object 0x8CDD
OpenGL error 0x0501 in -[CCSprite draw] 530

cocos2d iphone – Somethings wrong with GoogleMap SDK iOS – Stack Overflow
ここにある記事には、

「Google mapsはmapを表示するのにopenGL ESを使っている。それぞれ独自のGL contextを使うので、2つのOpenGLレンダラーは一緒には使えない。特にiOSの場合、2つのGLビューを並べて使うのをほとんどサポートしていないように思える(お互いのビュー上に置くなんてとんでもない)
どう見ても、cocos2dとgoogle mapsをiOS上で一緒に使うことはできません。」

というようなことが書いてある(と思う・・・)。

やっぱりcocos2dとgoogle maps api for iOSの併用は諦めなければいけないみたい。
結構がんばってコーディングしてたんだけど、cocos2dを使わないとなるとかなり作り直さないといけないなぁ。


cocos2d ローカル変数のアンダースコアの位置


cocos2d-xを使ってゲームのアプリを作ろうとしていたのですが、ネットで検索した情報やサンプルコードがcocos2d-iPhoneのものばかりで心が折れてしまい、cocos2d-iPhoneに乗り換えてしまいました。

さて、cocos2dのサンプルコードをそのままコンパイルすると大量のエラーが出ました。
調べてみると cocos2d V2.1からローカル変数の アンダースコア’_'の位置が前に変更になっているのですね。

Objects uses the ‘_’ prefix for ivars. It is no longer used as a suffix.

cocos2d v2.1 release notes · cocos2d/cocos2d-iphone Wiki · GitHub

手作業で全て変更すると無事コンパイル成功。

renaming ivars_ to _ivars | cocos2d for iPhone
この辺を読むと、「Appleが ‘_’prefixを許可しただけでなく推奨しているから、sufixからprefixに変更しよう」みたいな話し合いがされたのかな。
英語が理解できなくてどういう方向に話が進んだのかイマイチ分からないのですが、変更するという結論になったということか。


cocos2d-x勉強中


息子からもっと面白いゲームを作ってくれと言われ cocos2d を勉強中。
cocos2d for iPhoneをダウンロードしてきてサンプルプログラムを眺めたりウェブから情報を集めたりしていたんだけど、イマイチ効率が上がらない。
phpなんかはウェブの初心者講座的なページを見ながら勉強したんだけど、これだと基本的な事柄が理解できていないことに後から気付いたりすることがある。
どうやらウェブで新しいプログラミング言語を習得するというのは私には向いていないようだ。

そこでAmazonで探して買ったのがこちらの本。
cocos2dはどんどん開発が進んでいるようで、少し古い本だと既に情報が古くなってしまっている可能性があるので、なるべく新しい本を選んだ。
この本は2013年6月に出版されたもの。

本をパラパラめくって最初に思ったのは「作者は猫好き」。
一応一通り読み終えたんだけど説明にカラー画像が多く使われていて、説明も丁寧で分かり易い反面、全体のボリュームは少な目な印象。
初心者向けにcocos2dと一緒に使用すると便利なソフトがいくつも紹介されてて(ほぼ有料ソフトなんだけど)、そこら辺の知識もなかったので助かった。
そして cocos2d for iPhone を習得するつもりだったのだが、この本はcocos2d-xについて書かれた本だった。cocos2d for iphoneとcocos2d-xが違うものだったなんて、この本が届くまで考えもしなかった。cocos2d-xはマルチプラットフォーム向けに開発している人向けでC++なのね。
でもまぁしばらくは cocos2d-x を学んでいこうと思う。
cocos2d-xでiPhoneアプリを作るものそれほど不便でもなさそうだし、いつかandroid版のゲームを作る可能性もあるかもしれないからね。

本に最初に載っているサンプルプログラムは「さめがめ」。
名前だけは聞いたことがあったけど、こんなゲームなのかぁ。
一度に多くのコマを消すと高得点。いかにコマをまとめて消すかを考えるゲームなのね。

サポートサイトに置いてあるサンプルプログラムをそのまま動かしていても、理解したつもりになっていたがまったく身に付いていないなんてことになりそうなので、今回は本を傍らに実際に手を動かして作ってみた。

そして、、、もっとつまずくかと思ったけど、本にはコードを省略せず一から十まで細かく丁寧に説明してあるのであっさり動いた。
ただこれだけだと面白くないので、少しでも息子に遊んでもらおうと、息子が大好きなマインクラフトのキャラクターを組み込んでみた。

効果音もマインクラフトから持ってきた。
羊とスケルトンが白っぽくて見辛い。
スティーブの声は昔のバージョンの「うおっ」ってやつを採用。

息子が喜んだら背景画像とか、メニューボタンとかもminecraft風にしようかと思ってたけど、あんまり食いつかないので改造はこの辺で終了。
さぁ次のサンプルアプリにとりかかるか。