2013年7月28日日曜日

【cocos2d】 習得メモ その1

ここ最近cocos2dに挑戦しておりまして、その際に気になったところなどを残しとこうかと思います

■cocos2d本
私が持っている本は1系をベースに解説されていますが、実装は2系でやっています。
そのため、内容が合わずそのまま使えないため読み替えが必要です。これから2系でやる方は、1系の本買わないように注意ですね。

ただ、設計思想とかTipsとかは参考になる箇所も多いかもしれません。
2系の本で「その思想も間違ってた!」なんて言われると困りますが・・・。

ちなみに本はコレです。新しい版は2系の記載になってるのかな??


■キャラクタのクラスはCCSpriteを継承しない方針で
ネット上のサンプルコードは、ほんとんどCCSpriteを継承して動かしたいキャラなどのスプライトつくってますが、Cocos2d本によると、継承はよくなくてコンポジションで作るべきとあります。理由はキャラとスプライトの関係は「IS-A」じゃなくて「HAS-A」だからです。まぁ確かにそうです。

小さいプログラム(カジュアルアプリとか?)では問題にならないかと思いますが、大きなアプリになってくると、コンポジションにしとけばよかったーなんて場面もありそうなんで、継承しない作り方で慣れていこうと思います。

大きなアプリを作る日がくるのかは置いといて( ´Д`;)

■タッチを検出しない
今作っているアプリでは、CCSpriteを持たせたキャラクタのクラスに、タッチのイベントなどをつらつらと書いています。
でキャラクタをいくつか生成して、CCSpriteをCCLayerに追加しています。そんななか、最後に作ったキャラクタのクラスしかタッチに反応しない事象が発生しました。原因はTouchDispatcherにデリゲートを設定するときの引数が良くなかったようです。

[[[CCDirector sharedDirector] touchDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES];

swallowsTouches:YES → swallowsTouches:NO

YESだと最後に追加したクラスのデリゲートしか呼んでくれなくなるようで。

■実機でデバック
うちの場合iPhoneシュミレータで動かすと、MacのCPU使用率が高くなるため、部屋の温度が急上昇するは、Mac上のほかのアプリは重たくなるわで良い事無いので、実機で動かすようにしています。

以上です。まだまだわからない事だらけです( ´Д`;)


2013年7月27日土曜日

【開発日記】オセロアプリのリジェクト理由

どーもこんにちは。
突然ですが開発日記というものを、これから書いてみようと思います。

先日「Oseguchi」というアプリをリリースしました。
このアプリは5月に申請したのですが、リジェクトにリジェクトが続きリリースが7月になってしましました。
せっかくなので、理由と経緯を残してみる事にします。

まずReject理由は以下のみでした。

8.5  の Use of protected 3rd party material (trademarks, copyrights, trade secrets, otherwise proprietary content) requires a documented rights check which must be provided upon request
サードパーティの権利素材(商標、著作権、企業秘密、それ以外の場合は独自のコンテンツ)の使用は、要求に応じて提供されなければならない文書化権のチェックを必要とする
※原文がもう無いので以下から引用
http://wiki.livedoor.jp/iphonedev/d/App%20Store%A4%CE%BF%B3%BA%BA%B4%F0%BD%E0

Reversiという商標は、ドイツのRavensburgerという会社がもっているらしく、
iOSのオセロアプリでは結構メジャーなリジェクト理由のようです。

で具体的な理由を時系列順に並べますと、
○前提
英語アプリ名「~Reversi」
日本語アプリ名「~リバーシ」

1.英語アプリ名に「Reversi」を含むからダメ。→アプリ名を「〜Reverse」に変更
2.日本語アプリ名に「リバーシ」を含むからダメ。→日本語アプリ名も「~Reverse」に変更
3.アプリ名が「Reversi」に似ているからダメ。

2のリジェクト時に、3も含まれていたので、
一度に教えてほしかったのですが、どうも教えてくれないらしいです。

あと、2のリジェクト理由は個別に問い合わせて教えてくれました。
2のReject時の文面が1と同じだったので・・・。

レビューする人の立場では、違反箇所が1つ見つかった時点でRejectする方が、複数アプリに対するレビュー効率は良さそうですけど、1アプリの開発者としては、一度にそのアプリに含まれるReject内容を教えてもらった方が、効率は良いだけどなーと思いましたが、まぁしょうがない。

オセロも商標関連でダメという情報があったので、
もう画像キャプチャみたらどんなアプリかわかるでしょってことで、
Oseguchiという名前にしました。

ご存知かとは思いますが・・・。
オセロ(おせろ)
オセ口(おせぐち)

オセ口(おせぐち)で申請して、リジェクトされたら、
オセロとオセ口の違いを説明するのもアレなんでやめときました(笑

教訓としては、
・事前にアプリ名に問題がないかググっておく。商標とか、リジェクト理由にないかとか。
・理由がよくわからん場合は問い合わせみる。リジェクト文はテンプレのようなので、細かいところが不明かも。
 なお当方英検4級ですが、なんとか英語で伝わりました( ´Д`;)

あとコードの中でアプリ名を使ってたりする箇所があって、気持ち悪いので名前をチョイチョイと変更していたら、
http://www.ogaworldexplosion.com/category/19376555-1.html
のような事態になったりして、ふんだりけったりでした( ´Д`;)

もしオセロ関連のアプリを申請する際には参考になればと。

あと「Oseguchi」よかったらどうぞ〜。
icon170x170-6.png
Available_on_the_App_Store_Badge_US-UK_135x40.png

2013年7月21日日曜日

あたらしいアプリをリリースしました 鎌倉クイズ300

「鎌倉クイズ300」というアプリをリリースしました。
日本史の歴史における鎌倉の時代のクイズが4択形式で出題されます。

特徴としては鎌倉時代だけで300問という多くの問題数です。
鎌倉時代だけで300問は他のアプリではみかけないと思います。
問題は1〜3のレベル別と年号のみに対応しており、初心者から上級者まで楽しめる内容となっています。

また歴代執権の北条氏を覚えるためのミニゲームも用意しています。
きっと16代北条氏を暗記できるはず!

よろしくお願いします!
Available_on_the_App_Store_Badge_US-UK_135x40.png

画面イメージです
iOSシミュレータのスクリーンショット 2013.07.13 4.15.01.pngiOSシミュレータのスクリーンショット 2013.07.13 4.15.04.png
iOSシミュレータのスクリーンショット 2013.07.13 4.15.07.pngiOSシミュレータのスクリーンショット 2013.07.13 4.15.18.png



2013年7月19日金曜日

新しいアプリをリリースしました 交通量調査

本日2つ目のお知らせです。「交通量調査」という無料ゲームをリリースしました。
アプリの内容は、道行く「車」「自転車」「人」を数えてポイントを競います。
レベルが1〜9まであり、お好きなレベルで交通量を調査することができます。

交通量調査が好きでたまらない人には、もうたまらないアプリだとおもいます。
あと、見て押す系のゲーム(音ゲーとか)に自信があるかたは、ぜひレベル9まで試していただきたい!

よろしくお願いします!
Available_on_the_App_Store_Badge_US-UK_135x40.png

画面イメージです。
Screenshot 2013.06.30 15.33.08.pngScreenshot 2013.06.30 15.33.36.png
Screenshot 2013.06.30 15.34.01.pngScreenshot 2013.06.30 15.33.19.png


新しいアプリをリリースしました Oseguchi

「Oseguchi」という無料ゲームをリリースしました。世に言うオセロゲームです。

アプリの特徴としてコンピュータがイカサマしてくる「Fake」モードがあり、コンピュータがユーザの駒の色を変えてきます。
イカサマだけあって勝つのは結構難しいと思います。

もちろん通常のオセロもできます。独自アルゴリズムですが、あんまり強くないような気が・・・( ´Д`;)

余談ですが「Oseguchi」というアプリ名には紆余曲折ありまして、その辺の話は別途。

よかったらよろしくお願いします!

Available_on_the_App_Store_Badge_US-UK_135x40.png

画面イメージです。
mzl.ljxcacid.320x480-75.jpgmzl.kvzhvzpk.320x480-75.jpg
mzl.xzpioxky.320x480-75.jpgmzl.ootgdftb.320x480-75.jpg




2013年7月2日火曜日

iOS Archive時のwarningエラーでハマりました。

先日、申請作業をしていたところ原因不明なエラーがでて半日くらいハマりました。
変なハマり方をしたので残しておきます。
Xcode:4.6.3

■エラータイミング
[Product] → [Archive]の結果、3つのwarningメッセージがでます。
※たしかOrgnaizerのValidateでもひっかかりました。このままでは申請できない( ´Д`;)

■ warningメッセージ
・メッセージ1
iPhone/iPod Touch: application executable is missing a required architecture.  At least one of the following architecture(s) must be present: armv7 (-19033)

・メッセージ2
Application failed codesign verification.  The signature was invalid, contains disallowed entitlements, or it was not signed with an iPhone Distribution Certificate. (-19011)

・メッセージ3
Unable to extract entitlements from application: (null) (-19045)

1.2.3を個別に調べるといろんなページに解決方法がでてくるのですが、
どれを適用してもなおらないんですこれが。

・メッセージ1の解決方法
Architecturesに追記
http://d.hatena.ne.jp/paraches/20111029

・メッセージ2の解決方法
Long Pathはだめ
http://d.hatena.ne.jp/unk_pizza/20121031/p1

ICloud関連
http://d.hatena.ne.jp/ar_tama/20121122/1353554314

証明書の話
http://jolene.hateblo.jp/entry/2013/05/22/174021

・メッセージ3の解決方法
info.plistの話
http://suisuisuicom.sblo.jp/category/1699797-1.html

おそらく上記のページの内容で解決されている方がほとんどのようですが、
自分の場合どれを参考にしてもエラーが消えない。ぁぁ( ´Д`;)

で数時間試行錯誤していたところ、前回申請時にはエラーがでなかった
ということに気がつきました。
で前回申請時の状態のプロジェクトから変更した点を確認していくと・・・。

■解決方法
[TARGETS] の[Build Settings]
[Packaging]  [Product Name] の値が原因でした。

[Product Name]がどこの値と一致していればいいのかわかっていないのですが、
値をプロジェクト名(TARGETS名かも)と合わせるとエラーが出なくなりました。


そもそも・・・
なんでその値を変えたかといいますと、
アプリ名を変更しなくてはいけない関係で、いろいろとプロジェクト内のアプリ名に関わる名称を変更したところ、値の不整合が起きていたようです。
(この値って変えることあるんでしょうか?自分はほかのアプリで変えた事ありません。)

プロジェクト名称等の変更は極力避けた方が良さそうです。