hyoromoのブログ

最近はVRSNS向けに作ったものについて書いています

Cocos2d-xの環境構築


Cocos2d-x 3.0 αが先日リリースされたようですが、今回は安定版の2.1.4を使っていきます。ちなみにXcodeEclipseはインストール済みを想定して書いてますのであしからず。

実施環境

  • Mac OSX 10.8.4
  • Cocos2d-x 2.1.4
  • Android NDK 8e
  • Eqlipse 4.2.2
  • Xcode 4.6.3

今回の目標

開発環境を整えて初期プロジェクトをiOS/Android端末へデプロイする。要はこの記事のトップに貼ってある画像の画面を起動させる事が目標です。

Android NDK のセットアップ

Android DeveloperサイトのNDKページからダウンロードしてきます。ただし、Cocos2d-x 2.1.4バージョンだと NDK r9 を使うとエラーになる為、今回はr8e を使用しました。
ダウンロード出来たらファイルを解凍して適当なディレクトリに配置してください。Android SDKディレクトリと同じ階層に置いておくと分かりやすいと思います。

Eclipse上の環境設定

Eclipseを起動してメニュー上から「Eqlipse >環境設定」を選びます。「Android > NDK」にある「NDKLocation」項目へ「/(Android NDKを配置したディレクトリ)/android-ndk-r8e」を設定します。
同じように環境設定から「C/C++ > Build > Environment」で「Add」ボタンを押下し、「Name」項目に「NDK_ROOT」、「Value」項目に「/(Android NDKを配置したディレクトリ)/android-ndk-r8e」を設定します。

Cocos2d-x のセットアップ

Cocos2d-xのwikiからダウンロードしてきます。Cocos2d-x/Cocos2d-HTML5/Cocos2d-XNAとありますが、Cocos2d-xをダウンロードしてください。
ダウンロード出来たらファイルを解凍して適当なディレクトリに配置してください。なお、Cocos2d-x 内にプロジェクトが生成されたり、tool類があるので分かりやすい場所に置いたほうがいいです。

Android SDK/NDKインストール ディレクトリを設定

cocos2d-x-2.1.4/create-android-project.sh ファイルの最初にある二行を以下のように置き換えます。

NDK_ROOT_LOCAL="/(Android NDKを配置したディレクトリ)/android-ndk-r8e"
ANDROID_SDK_ROOT_LOCAL="/(Android SDKを配置したディレクトリ)/android-sdk"

cocos2d-x-2.1.4/template/android/build_native.sh ファイルの二行目に以下の一文を挿入します。

NDK_ROOT="/(Android NDKを配置したディレクトリ)/android-ndk-r8e"
Cocos2d-xのAndroid向けライブラリ libcocos2dx を追加

Eclipseを起動してメニュー上から「File > Import」を選びます。「Android > Existing Android Code Into Workspace」を選択し、「Import Projects」画面のRoot ディレクトリ項目に「/(cocos2d-xを配置したディレクトリ)/cocos2d-x-2.1.4/cocos2dx/platform/android/java」を指定して「Finish」ボタンを押下します。

プロジェクトを新規作成

ターミナル上から以下のように create_project.py を実行する事でプロジェクトを新規作成できます。以下の例ではプロジェクト名「Cocos2dJsHoge」で、パッケージ名「jp.hoge.cocos2djshoge」で、開発言語「JavaScript」を指定して作成しています。

$ cd cocos2d-x-2.1.4/tools/project-creator
$ ./create_project.py -project Cocos2dJsHoge -package jp.hoge.cocos2djshoge -language javascript
proj.ios		: Done!
proj.android		: Done!
proj.win32		: Done!
New project has been created in this path: /(cocos2d-xを配置したディレクトリ)/cocos2d-x-2.1.4/projects/Cocos2dJsHoge
Have Fun!

create_project.py のオプションは以下のようになっています。

オプション名 意味 具体的な指定名 備考
project プロジェクト名
package パッケージ名 .は2つ以上付けないとエラーになります
language 開発言語 cpp
lua
javascript

実行後のログにエラーが表記されていない事を確認し、問題が無ければ cocos2d-x-2.1.4/projects 以下に作成されたプロジェクトを使用します*1

端末へデプロイ

iOS

以下を実行してXcodeを起動させます。Cocos2dJsHoge にあたる箇所は自身が作成したプロジェクト名に読み替えてください。
/(cocos2d-xを配置したディレクトリ)/cocos2d-x-2.1.4/projects/(プロジェクト名)/proj.ios/(プロジェクト名).xcodeproj

Xcode上のShemeが「cocos2dx」になっている場合は「プロジェクト名」に切り替えてから「Run」してください。これで問題なく起動するはずです。

Android

Eclipseを起動してメニュー上から「File > Import」を選びます。「Android > Existing Android Code Into Workspace」を選択し、「Import Projects」画面のRoot ディレクトリ項目に「/(cocos2d-xを配置したディレクトリ)/cocos2d-x-2.1.4/cocos2dx/projects/(プロジェクト名)/proj.android」を指定して「Finish」ボタンを押下します。
プロジェクトを右クリックして、「Run As > Android Application」を選択すれば端末へデプロイされます。
もしプロジェクト内でエラーが発生している場合、「Android NDK のセットアップ」と「Cocos2d-x のセットアップ」を見直してみてください。

まとめ

Cocos2d-x/Android NDK/Xcodeとバージョン依存が激しそうですね。次回はIDEについて書く予定。

*1:途中でエラーが発生してもプロジェクト作成はされます。ですが、後々どこかしらで問題が発生するので利用するのはやめた方が良いです。

iOS向けに「タスクを倒せ」アプリをリリースしました


タスク管理×ゲーム的なノリのアプリです。タスク消化する時にストレス解消も兼ねたい人は以下バナーからDLしてみてください。

主な機能

タスク消化に掛かる時間(0:01〜23:59)に応じてタスクと言う名のモンスターが生成され、タスクの進捗はモンスターを殴ってHPを減らすことで管理します。
まぁ一発ネタ以上でも以下でもないアプリとなってます。

一方的に感謝したい対象

余談

今回利用させてもらったモンスターの一部に露出度の高いのも居たのですが、特に引っかかることもなく審査に通りました。人外ならどんな格好でもOKなのかもしれませんね(そこまでテストしてないだけかもしれませんが...)。

古いProGuard設定に縛られしプロジェクトがADT22系にアップデートした時に発生かもしれないエラーの解決法

最近のイケてるプロジェクトは発生してないようですが、プロジェクトによっては以下の様なエラーが発生するかもしれません。

Proguard returned with error code 1. See console
MangaPageActivity: can't find referenced method 'android.view.Window getWindow()' in class jp.xx.xxxx.HogeActivity
(中略)
Warning: there were 39 unresolved references to program class members.
          Your input classes appear to be inconsistent.
          You may need to recompile them and try again.
          Alternatively, you may have to specify the option 
          '-dontskipnonpubliclibraryclassmembers'.

生きるのが辛くなってきますね。
これは android-support-v4.jar ライブラリをProGuardが見つけられなかった事が原因。解決するには proguard-project.txt なりの難読化定義が書かれてあるファイルの末尾に以下の一文を追加すればOK。

-libraryjars libs/android-support-v4.jar

相対パスなので、もし対象プロジェクトの android-support-v4.jar が存在するパスが違っている場合は適切なパスに置き換えてください。

「モコちゃん」というAndroidアプリをWindowsストアアプリへを移植


昔にAndroidでリリースしたモコちゃんを、Windows8/RT向けに移植してWindowsストアへ公開しました。
モコちゃん
1日体験利用可能な有料(160円)アプリです。

アプリ内容

このアプリは前にブログで書いたように「教育」をターゲットにしたアプリです。画面上に記号を書いたら対応表に従って、モコちゃんが返事をしてくれる事による子供の情操教育アプリ...のハズです。

Androidアプリとの違い

モコちゃんの音声を全て作り直し&対話数を増やしました。
技術的な話では、AndroidアプリだとGestureOverlayView APIを利用して好きなストローク(記号)を登録して使用していましたが、Windowsストアにはそんな便利なAPIは無いので手書き認識APIであるInkManager.GetRecognizersで代用しました。好きなストロークを扱うことは出来ませんが、アルファベットなどの認識は可能なのでそういった場合に使うと良いのではないでしょうか*1

こんな人にもオススメ

  • 疲れた人
  • 現実逃避したい人
  • 鬱な人

小ネタ

このアプリで2回ほどrejectされたのですが、その内の一つが「要件 6.5」を満たしておらず詳細情報が書かれたPDFには「Provided App "Description" not localized」と書かれていました。詳細内容を確認しても特に問題が見当たらなかったので、「審査担当者へのコメント」にrejectされた詳細理由の提示を求める英文を追加し、再申請したら何故か審査に通過しました。それが担当者のさじ加減の差異か、最初の担当者による確認ミスなのか、審査基準を妥協してくれたのか...はよく分かりません。ココらへんフィードバックが貰えないと次に生かせないし、モヤモヤして嫌ですね。
この件は似たケースで同じような事をして審査通過した人も居て、稀に発生するようです。人による審査だから仕方ないのでしょうね。

*1:言語指定出来ないため、日本語を認識する事は出来ません

ロック画面へ綺麗に画像を設定するWindowsストアアプリ「ロック画面トリミンガ―」をリリース

Windowsストアアプリとして「ロック画面トリミンガ―」を先日リリースしました。120円で、30日までは無料で利用体験可能…になってるハズです。
ロック画面トリミンガ―
今回は本日アップデートしたver1.1.0時点のアプリについて紹介します。

アプリの機能説明


Windows8/RTには壁紙として画像設定可能な場所が2箇所あります。1つは従来通りの(仮想)デスクトップ、もう1つはロック画面です。本アプリはロック画面の方へ画像を設定するアシストを行うアプリとなっています。
アシスト内容は任意画像へ対し、端末に適した比率で画像をトリミングしてロック画面へ設定します。

本アプリを利用するメリット

画面比率

画面比率に合わない画像だと変に拡大表示されたりと、意図しない表示になります。綺麗に表示されるよう画面比率に合った画像を探す労力を使います。
例えば画面比率が16:9に対し、以下の様な(THE IDOLM@STER DVD 第三巻のジャケ絵)画像を設定しようものなら画像加工しなければ納得できる形で設定されません。

本アプリを使えば以下のように微細な調整を行い、自分の満足出来るフレームワークでロック画面に画像をはめ込む事ができます。

ピクチャーパスワード

Windows8/RTでの特徴としてピクチャーパスワードがあります。画像に対し、3つのジェスチャを組み合わせる端末ロック解除方法です。本アプリを使えば想いのままにトリミングできるので適切にトリミングし、頬を三回とも下から上へジェスチャさせるよう登録しておけば、ロック解除時に条件反射でprprして気づかぬうちにロック解除されロック解除への煩わしさが解消されます*1

今後の更新予定

余白を黒固定にしてますが、画像に近色を指定したり、ColorPickerによる色指定ができるようにはしようと思ってます。

開発経緯

本当は約1年前に開発してて先行リリースを狙ってたのですが途中で飽きてしまい。アプリ選手権のに参加する為に開発者アカウントを取得したついでにアプリ内容を調整してリリースしました。ストアで検索したけど意外とこういったアプリないようなのであんま需要ない方面なのしれませんね。

*1:ただし他人にロック解除されやすくなります

今出しょう子アプリ「マカンコウサッポウ」をリリースしたよ


Windowsストアアプリとして、@IT主催イベント「エイっと作ろう! Windows ストアアプリ選手権」向けに「マカンコウサッポウ」アプリをリリースしました。
マカンコウサッポウ

アプリ説明

このアプリは今出しょう子というキャラクタがマカンコウサッポウするアプリです。

作成動機

イベントページに画像と音声リソースが提供されており、その中に「まかんこうさっぽう.psd」と「マカンコウサッポウ!.mp3」ファイルがあったので誰かが作らないといたたまれないのでは…という思いで作りました。

今後の更新予定

特になし

Windowsストアアプリについて


前回の内容がFirefoxOSについてだったので、今回は今更だけどWindowsストアアプリについて書きます。書いた後に読み返したら割りとオナヌーな内容でした、近々一級オナヌストを名乗れそう。。。でもいつもそんな内容だけら構わないよね。

Windowsストアとは?

そもそも「Windowsストアとは何ぞ?」と言う人もいるかもしれません。このストアは先に書いたようにWindows8/RT上で動作するアプリを扱うマーケットです。Windows8の場合はデスクトップがあるのでマーケットを介さず従来通りexeファイルを実行可能ですが、WindowsRTは従来のexeファイルは実行出来ず*1、必ずWindowsストア上にあるアプリをダウンロードして利用する事になります。
Windows8/RT上に「ストア」と言う表記でアプリが存在し、そこからアプリを閲覧可能ですが、Webサイトとしても存在するのでアプリのリンク先さえ知っていればWindows8/RTを持ってない人でも閲覧可能です。もしリンク先が分からないけど名前もしくは詳細内容が分かる場合、以下のようなGoogle先生のひと働きで見つけるくらいしかないようです。
https://www.google.com/search?as_sitesearch=apps.microsoft.com%2Fwindows

開発者登録の費用は?

個人なら年間4,900円、法人なら9,800円。

アプリ開発環境は?

OS:Windows8。ProじゃなくてHomeでもOK。
IDEVisual Studio 2012
私はW700Dで開発してますが、今のところ重たく感じたことがありません。そこらのタブレットでもWindow8さえ積んでれば余裕で開発出来そうです。

アプリ開発言語は?

DirectX11.1*2も利用可能で、その場合はC++で利用する事になります。あと一応XNA*3も利用可能らしいですが、今後消えゆくと思われるので移植以外では検討外にした方が無難なようです。

マネタイズ方法は?

有料アプリに期間制限や機能制限を掛ける方法がベターなように思えます、ここらへんWindows Phoneを踏み台にしていった感じですよね。他にはアプリ内課金や広告があります。

期間制限

「1日」「7日」「15日」「30日」の中から設定でき、ユーザが無料DLして有効期間中は無料で利用し続けられ、期間が過ぎるとアプリを購入しなければ利用不可になる機能です。よくシェアウェアであるアレですね、この機能はアプリ内に実装する必要がなくWIndowsストアへアプリ申請時に項目設定するだけで実施可能です。

機能制限

無料でDL出来るけど一部機能はアプリ購入しなければ利用出来ない機能です。拡張機能に対して制限を掛けるとよさそうです。この機能はアプリ内への実装が少し必要で、もちろんWindowsストア申請時も機能制限している事を申請する必要があります。

アプリ内課金

有効期間あり(日にち指定可能)orなしの課金アイテムを販売可能です。アプリ内とWIndowsストアアプリ申請時に色々する事があり、「期間制限」と「機能制限」に比べて導入コストがそれなりに掛かります。1アイテムをアプリ内課金で購入させたいなら「機能制限」で行ったほうが手間が掛かりません。

広告

スマホアプリではお馴染みの広告もあります。と言ってもスマホアプリで提供しているアドネットワークサービスのほとんどはWIndowsストアに対応しておらず、利用するなら「マイクロソフト アドバタイジング」一択になりそうです。それでもあまり広告は表示されないらしいですが…

Windowsストアのアプリ状況は?

一部大手企業が開発したアプリはいくつかあります。例えば「Amazon」「クックパッド」「Note Anytime」「日本経済新聞」などです。企業が出しているとしても、他プラットフォームより力が入ってない場合もあり、様子見で先行リリースしてみた感があるアプリもあります。
Windows Phoneアプリ開発されていた方々がWindowsストアアプリへ移植されていたりもします。そもそもWindows Phoneアプリ開発者が希少種である為、開発者数自体はそこまで居ないようにみえます。
Android/IOSからのベタ移植で、横向きの画面に対して何故か携帯サイズの小窓にアプリ内容が表示されてる。
あとは「エイっと作ろう!Windowsストアアプリ選手権」イベントのような企画で小さなアプリをリリースしている方も中にはおられるでしょう。
と、だいたいこんな感じな印象です。なんとなく中規模クラスのアプリが少なかったり、該当アプリはあるけど使い勝手が良くないとかそんな雰囲気が漂ってます。

Windowsストアでリリースするのに適してそうなアプリは?

教育、特に子供向けが一番適しているように思います。
なぜ教育かと言うと、Windows8/RTは子供用にローカルアカウントを作成してファミリーセーフティでOSによる利用制限が手軽に掛けられ、親が子にタブレットを渡しやすく、端末の大きさも小さな子どもが利用しやすい大きさです。iPad(iOS)の場合はアカウント管理出来ないので親が子へそのまま端末を渡すのに躊躇いがあるし、Androidタブレットの場合はアカウント管理出来るけど細かな制限をしたいならサードパーティアプリを駆使する必要が出て難易度が高いです。
そういう理由でリリースすればそれなりにアプリDLが伸びそうなのは、親と子供が端末共有した時に分かりやすくターゲットを絞れる教育(子供対象)かなぁと。

まとめ

「幼女向けアプリつくろうぜ!」
おしまい

*1:一部例外あり

*2:ゲーム開発に特化したAPI

*3:DirectXのラッパーライブラリ