【Xcode】メモリリークを回避せよ【cocos2d-x】

なんのエラーもでない。でもアプリは落ちる。

先日リリースした、【脱出ゲーム】三毛猫ルームズは
シミュレータでは特に落ちなかった。
実機テストでも特に落ちることはなかった。

しかし、レビューで「とにかく落ちる」とコメントを頂きました。
コメントを頂いてからいろいろ試した結果、
どうやら他のアプリを立ち上げていたりすると
メモリの逼迫がアプリの落ちる原因でした。
※想定外の動作もメモリの逼迫を解消したところ治りました。

このメモリエラーは、エラーの箇所を特定するのが難しく
処理のどこがいけないのか全然わかりませんでした。

ネットでググったところ
Xcodeにそもそも備わっている
「Enable Guard Malloc」を使用してエラーを特定するのだとか
。。。知らんかった

■やり方
1.Xcodeで対象のプロジェクトを開いたら”Edit Scheme”を開く
※Xcodeのメニューから”Product” → “Scheme” → “Edit Scheme..”を選択
menu1

2.左側で”Test”を選択し、”Enable Guard Malloc”にチェックを入れ,
“Close”ボタンを押下
mike3

これだけ

あとは、シミュレータで動作確認をすれば
メモリリークを引き起こしそうな部分でエラーを出力してくれます。
実機テストでは機能しないようです。

【iPhoneアプリ】三毛猫ルームズ【脱出ゲーム】

8/11に【脱出ゲーム】三毛猫ルームズをリリースしました。
現在Android版を鋭意製作中です。
*現在バージョン1.3をリリースしております。

■iTunesのゲーム>シミュレーション>無料ランキング 129位(8/16時点)にはいりました。

iPhoroid様にとりあげていただきました。ありがとうございます。
*攻略記事ですのでネタバレを含まれております。

最も使われている無料アプリ週間ランキング50【8/10 ~ 8/16】
AppBank様の週間ランキング15位に入りました。

目を覚ましたら自分の部屋?でも何かが違う?でも、そこに隠された謎はだんだん大きくなっていくよ!「【脱出ゲーム】三毛猫ルームズ」無料♪
暗黒社様に取り上げて頂きました。

iPhone版

Android版
Google Play で手に入れよう

ゲーム説明
不思議な部屋からの脱出することがゲームの趣旨となります。
部屋に配置されているアイテムをタップで選択して、
部屋を脱出するためのヒントを探してください。

【cocos2d-x】”\n”で改行できない【Label】

DB(SQLite)からデータを変数に格納して、
Labelに文字列を表示してました。

この文字列に自分の意思で改行をいれようと、
“\n”を改行したい部分に入れてたのですがうまくいきません。

ちょっとネットを検索した結果、以下のサイトを見つけました。
plistの改行文字Add Star

上記サイトではplistからのデータとかいてあるのですが
どうやらDBから抽出した文字列もあてはまるようです。
DB上では“\n”と入力してますが、プログラム的に“”\n””と認識しているようです。

抽出した文字列を、”\\n”から”\n”へ置換する処理を追加してから
Labelに表示したらできました。
めでたしめでたし。

置換関数を作成するときに参照
文字列を置換する(2)

その他
C++ってちょっと文字列操作めんどくさい。
文字列の置換ぐらい準備しておいてほしい。

・・・文字列の置換ぐらい自分で書けってことなんでしょうけど…。

【cocos2d-x】spriteにタッチしたかを判断する【Cocos Studio2】

いつの間にか、Macに対応しているようでしたので
次回作から【Cocos Studio2】を使用します。
少しだけ触りましたが、画像の配置がとても簡単です。

cocos2d-xを使用してゲームを作成する際に
一番お世話になるであろう”タッチイベント”を
配置した画像(sprite)に対して設定する方法をメモしておきます。

Cocos Studio2で作成したcsbファイルを配置するための宣言

csb配置とタッチイベント

タッチした場所が画像に含まれているかをチェック

⬛︎ざっくり概要
 タッチ時のポジションを取得
 タッチ時に画面に追加されているcsbファイルの子ノードを読み込む
 子ノードの範囲がタッチ時のポジションと重なっていることを確認
 子ノードの名前が処理を実施したい名前であることを確認
 ほげほげ

ちなみに子ノードの名前はCocos Studio2で設定できます。
あとはTagも設定できるのでそちらも判定条件できます。

もっといい方法があったら教えてください!!!

【cocos2d-x】画面解像度とフォルダ追加の注意点

cocos2d-xはiPhoneとAndroid端末の画面サイズに
対応するようにかなり柔軟に作成されています。

さらにバージョン3.9ではAppDelegate.cppに
分岐処理がすでに記載されております。

まずはiPhoneのみ作成してますので、
一部書き換えました。

ここからが本題です。
上記コードで”Resources”配下のフォルダにアクセス出来るようになります。

が、

フォルダの追加の仕方を間違うと想定通りにファイルを選択できません。
フォルダの追加時の画面で、以下のチェックをいれてください。

スクリーンショット_H28_02_26_6_18

上記チェックをいれて追加すると、以下のように
xcode上でフォルダが青く表示されます

folders

ちなみに、”Added folders”で”Create groups”にチェックをいれしまうと
追加したフォルダにパスの設定をしなくても見てしまうため
想定通りに分岐できません。
“common”フォルダはいちいちパスを通さないように
“Create groups”にチェックして追加してます。