2013年05月13日

自分の能力以上のものが発揮できている(ような気になる)瞬間は、快感。

 最初に「この操作が気持ちイイ」とか「この瞬間が気持ちイイ」っていうのありきで、そっから逆算して、そういう操作を体験させる為のゲーム
っていうのがカジュアルゲームには多いと思う。

 その操作や瞬間の気持ちよさってのが、そのゲームの面白さそのもの、中毒性っていう事だよね。
じゃあ、どんな操作や瞬間が快感なんだろう。
って事はなるべく常々考えるよーにしてる。
(iPhoneアプリを作り始めた時からだけど。)

 で、今自分が作ってるアプリは「避けるゲーム」なわけだけど、
同じ「避けるゲーム」はどんなのがあるんだろうって探して見つけたのが
PONOSさんのMr.Oops!!っていうゲーム。
https://itunes.apple.com/jp/app/mr.oops!!/id473898041?mt=8

 このゲームをしてて、一つ分かった。
「自分の能力以上のものが発揮できている(ような気になる)瞬間は、快感。」
って事。

 このMr.Oops!!ってゲーム、簡単に言えば飛んでくる大砲やらを避けるゲームなんだけど、
飛んでくる前に、矢印で予め飛んでくる場所が示される。
で、それを見て自機を動かして避けるんだけど、
普通に次々と飛んでくれば、人間の動体視力じゃー避けられないような大砲の雨あられも、予め飛んでくる場所が示されるから先を読んでなんとか避けれる。
その瞬間が、「こんなやべー大砲の雨をすいすい避けてるぞ、俺すげー!」って快感になるのだ。

 これ、他にも何かに使えそうな気がする。
ラベル:考察
posted by ryo4071 at 23:29| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2013年04月24日

[cocos2d]iPhone5の解像度に対応

 5月から、iPhone5の解像度に最適化していないアプリはリジェクトされるという話。
Retinaディスプレイの解像度に対応していればOKだと思ってたけど、どうやらアスペクト比も対応しないといけないらしい。

 という事で、対応する事に。

 Xcodeでアスペクト比をiPhone5に対応するには、640×1136pxのスプラッシュ画像を登録すれば、自動的にその解像度でアプリが走るらしい。すげー。
スプラッシュ画像ってのはアプリ起動時のロード画面で表示される画像。
Default-586h@2x.pngの名前で画像をプロジェクトに入れると勝手にスプラッシュ画像として登録される。

 とりあえず、640×1136pxで起動してみた結果。
oldTitle0424.png

oldHighScore0424.png

 まあ、分かってた事だけどこの様にいろいろおかしくなる。
面倒だけど一つ一つ直していく事に。

1.背景画像のサイズ
背景画像のサイズを320×960で用意したので、当然足りない部分が黒帯に。
320×1136に画像を作り直す。

2.ボタンやスプライトの座標修正
cocos2dの座標のY軸は、画面下が0なので、画面下にアンカーを持つイメージで座標を設定してれば問題ないけど、画面上部にアンカーを持たせたい場合、「winSize.height - 50」みたいに設定しないとずれる。


結果。
newTitle0424.png

newHighScore0424.png

 なんとか見れるようになった。
解像度の差分が176px、これが意外とというか、やっぱり結構でかい。
ただの余白的にすると結構違和感があるので、地味に苦労した。
 その辺のバランス調整の中で広告を画面上部から画面下部に変えた。


 最初から1136で作っとけばよかった。
posted by ryo4071 at 00:33| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2013年04月19日

[cocos2d]広告(NendSDK)導入

 広告を導入しました。
どれにしたらいいのか分からなかったので、AppBankを使う事に。

タイトル画面20130419.PNG
しかし広告を導入するだけでこれほど苦労するとは・・・。


■詰まり1:まず表示の仕方がわからん!
 マニュアルを見ると、UIViewにaddSubviewして表示させてるんだけど、
フレームワークcocos2dでどうすればaddSubview出来るのかわからんくて、詰まった。
いろいろ調べて、現在のCCLayerじゃなくて、CCDirectorに対してaddSubviewすればいいらしい。
[[[CCDirector sharedDirector] openGLView] addSubview:soubiScrollView];
これで出来るらしい。

 ところが、openGLViewで警告が出た。
基本英語でエラー出るからぱっと見でわからんから苦労する。
どうやらcocos2dのバージョンがあがって、削除された(される予定?)仕様らしい。

[[[CCDirector sharedDirector] view] addSubview:self.nadView];
にして、解決。


■詰まり2:消しかたがわからん
 [[CCDirector sharedDirector] view]に対してViewを追加すると、現時点の画面じゃなくてアプリケーション全体に対して影響を与えるので、別シーンに遷移しても広告が出っぱなし。
 ゲーム画面は広告を出さないつもりなので、ゲームシーンに入ったら広告は消したいんだけど、消しかたがマニュアルに書いてない・・・
 「Hidden」とかいうプロパティをみっけたのでYESを入れてみたけど、非表示にならない。
 仕方ないので、View自体をremoveFromSuperviewで[[CCDirector sharedDirector] view]から消すようにしたけど、正しい方法なのかわからない。
まあ今のところちゃんと動いてるし大丈夫かな・・・

■詰まり3:落ちる
 60秒で広告をリロードして更新するんだけど、その時に落ちる。
原因が全然わからんかったので、半ばお手上げ状態だったけど、マニュアルをよく見てみたら気になる事が。
「dealloc 時には、必ず delegate プロパティに nil をセットしてからリリースを行うようにしてください。」
書いてある通りにdeallocを継承して
- (void) dealloc {
    [self.nadView setDelegate:nil]; // delegate に nil をセット
    [self.nadView release];
    self.nadView = nil;
    [super dealloc];
}
こうしたら、ようやく直った。

 やっぱりマニュアルはちゃんと読まなきゃダメだね。
ちなみにreleace処理の前に、[super dealloc]を持ってきても落ちる。
そこでもプチ詰まりした。


 そんな感じで、とりあえず現時点ではちゃんと動くようになった。

 今日は広告表示だけで終わってしまった。
今週の土日こそはちょっと頑張って作ろう。
posted by ryo4071 at 02:13| Comment(1) | 日記 | このブログの読者になる | 更新情報をチェックする