スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Android enchant.js 各端末でのブラウザのパフォーマンス

昨年から暇を見つけてはAndroidでゲームアプリを作っている。

学生時代から社会人になってずっとシステムを作っていたのだが、JavaやC#などをメインに使った業務システムの開発が大半であり、ゲームの作成とは無縁の技術ばかり使っていた。

スキルでいうと、サーバの構築、Webの設定からWebサイトの立ち上げまで一人で出来るくらい。

いつかはゲームアプリを作ってみたいと思っていたが、そもそも持っている技術が畑違いだと思っていたため、躊躇していたかんじ。

そこで出会ったのが「enchant.js」
これはJavaScriptを使ってゲームを作るというエンジン。

日経ソフトウェアに「30分で作るゲーム」とかそんな感じの記事が書いてあった。

作ってみると本当に簡単に作れる。
もちろん凝ったものを作るとなると作りこみが必要になってくるが、得意な技術の一つがJavaScriptだったため、
自分にとってはとてもうれしいものだった。


そこで、これを利用してAndroidでのゲームアプリが作れないか考えてみた。

・AndroidにはWebViewオブジェクトがあり、これを利用するとアプリ内でHTMLページの表示が可能となる。
 もちろんローカル(assetsフォルダも)に保存しているHTMLページの表示も可。
・WebViewにはJavaScriptとJavaを相互に通信する仕組みがある。
 簡単にJavaScriptからJavaのメソッドが利用できたり、JavaからJavaScriptを制御することも可能。

整理してみたところ
・DB処理(SQLite)やバックグランド処理、ネット通信や重い処理はJava側にて実装
・画面をHTMLとJavaScript、enchant.jsで構築
・JavaからJavaScriptへ連携するデータはJavaScriptで使いやすいJSON形式にする

上記構成で既に数本のゲームを開発してきた。
ブログの右側にあります。

もちろんプロが作ったゲームなんかには足元にも及ばない出来だが、
スマホ用の簡単なゲームアプリだし、個人開発としては十分ではないかと・・・


■enchant.js 各端末でのブラウザのパフォーマンス

前置きが長くなったが、タイトルについて

Androidのアプリ開発で一番問題になるのが「端末の互換性」
Androidはその特性上、非常に沢山の端末がリリースされており、どの端末にもいろんな癖がある。

大手の会社などでは全ての端末が準備されており、アプリ開発時は全ての端末で動作確認が行われている。


しかし、自分みたいな個人だと、どうしても全ての端末での稼動確認が出来ない。
今現在は嫁の含めて5台ほどしか無い。

こればかりはしょうがないと思い、もってる機種全てで動作確認を行うのだが、やはりレビューには「起動しない」「強制終了する」なんて投稿がある。

そこで、前回の記事にも書いたのだが、とうとうタブレット「Kindle」を購入したわけです。

そこで、Kindleにさっそく自分のアプリをインストールし、動作確認を行ったところ非常に残念な結果になってしまいました。

■ブラウザのパフォーマンスについて
現在メインで使っているのは「Garaxy S2 LTE」
OSはたしか2.3だったかな?
スペックもいいほうだと思う。

PCでもスマホでも同じなのだが、ブラウザのJavaScriptのパフォーマンスは、その端末のスペックではなく、そのブラウザが搭載しているJavaScriptエンジンのスペックが非常に大きく影響する。
(もちろんPCのスペックも影響するが・・・)

WebViewのJavaScriptエンジンはどうなるかはちょっとわからないが、
Garaxy内でWebView経由でゲームWebページを開いてみると、まー滑らかではないがそこそこenchant.jsは問題なく動いている感じ。

ちょっと前の嫁のスマホ(メディウスだったかな?)で実行すると、ちょっとカクカクが多い。
これじゃストレスだが、動かないわけではない。

それでいざKindleで試してみたら。
糞みたいにenchant.jsがカクカクカクカクしている。
もー見れたもんじゃない。
ちな15fpsくらいで、キャラが10個ほど右往左往する。

Garaxyの1000分の1くらいしかスペックないんじゃないか?ってくらい。

■まとめ

今回の結果から、enchant.jsでのゲーム開発についてはすこしリスクが大きいかなと。

簡単にゲームはつくれるのだが、端末によってゲームできない。
やはり、大勢のユーザの中にはこんな感じでゲームできない人がいたと思う。

一番ヒットしたゲームで総ダウンロード数7万Overいったが、アクティブユーザは1万弱。
アンインストールしているユーザは沢山いる。

あまり、動きが少ないゲームならenchant.jsで大丈夫だろうが、そもそも起動できないとかならちょっと使うことは今後難しいかな。

先月から、この問題を同解決しようか考えた結果、別のゲームエンジンを使うことにした。
また、ブラウザのパフォーマンスが、端末間で大きな差があるためScriptエンジン系はちょっと。

ということで今後は「AndEngine」を使っていくことにした。
ゲームアプリのロジック的な考え方はenchant.jsで身に付けたためAndEngineについても割とすんなり理解できそう。


ためしにいろいろ作ってみているのだが、すげーヌルヌル動くw
さすがネイティブ側だけあるわw
スポンサーサイト

Kindle GooglePlayストアのインストール その1「root化」

Kindle Fire HDにGooglePlayストアをインストールする方法。

まずはKindleのroot化を行います。
root化に必要な作業は以下となります。

・Android SDKのインストール
・KindleのUSBデバッグの設定

■Android SDKのインストール


本家サイトまたはここからダウンロードしてください。

exeを起動してインストールしてください。
特になにもないと思います。

■KindleのUSBデバッグの設定


まずはKindleのドライバをインストールします。

ドライバはネット上で「Kindle_Fire_HD_ADB_Drivers.zip」で検索すれば見つかると思います。
もしくはここからダウンロードしてください。

解凍するとインストーラーがありますので、それを起動、インストールします。


●KindleのUSBデバックをONにする

通知領域の「その他」→「セキュリティ」→「ADBを有効にする」の「オン」をタップ

以上です


これでKindleをPCに接続すると、ドライバーのインストールダイアログが表示されドライバーのインストールが可能となる。


■KindleのRoot化

Root_with_Restore_by_Bin4ry_v18をダウンロードします。
http://www.general-files.com/download/gs61832203hfi0/Root_with_Restore_by_Bin4ry_v18.7z.html

7z圧縮ファイルの解凍ソフトはネット上にいっぱいあるんで、適当に探してね


1.adb.exeのコピー
Root_with_Restore_by_Bin4ry_v18を解凍するとフォルダ「stuff」があります。
stuffフォルダのadb.exeではroot化が出来ないため、
そのstuffフォルダのadb.exeをAndroidSDKにあるadb.exeに置き換えます。

・AndroidSDKをインストールするとC:\にandroid-sdk-windowsが作成される
・android-sdk-windows\platforms\adb.exeをコピーする
・解凍したRoot_with_Restore_by_Bin4ry_v18のstuffフォルダに上でコピーしたadb.exeをコピペする

以上

2.RunMe.batの起動

※ここからの作業はKindleをPCに接続した状態で行います。
 もちろんUSBデバッグは有効。


1.adb.exeのコピペ出来たら一つ上のフォルダ階層に行きます。
 「RunMe.bat」があるのでそれをクリックします。

2.コマンドプロンプトが立ち上がります。Device Typeに「1」を入力し、Enterを押します。


3.しばらくすると「Running・・・」でとまります。
  このときKindle端末上で「データを復元する」画面が立ち上がるので「データを復元する」をクリックします

4.データを復元するを行うとKindleが再起動します。再起動が終了するとroot化が完了です。



以上です。
これでKindleのrootが終わりました。

root化できたので、次にGooglePlayストアのインストールを行います。


Kindle Fire HD の購入とWifi設定について

Androidのアプリ開発を行っていると、どうしても複数の端末での稼動確認が出来ずに困ってしまうことが多々ある。

我が家では、自分と嫁のを含めて現在4台のスマホがあり、毎回アプリの稼動確認を4台全てで確認しているのだが、やはり不具合の報告がよく来る。

特に多いのが「起動しない」「異常終了する」だ。

こればっかりは実機で確認するしかないのだが困ったものだ。


ということで、今後のアプリ開発にも必要になってくるという理由をつけて、タブレットの購入をすることにした。
アプリ内課金やAdmodの広告収入などで、購入金額はある。



そこで、まず候補に挙がったのが「Nexus7」だ。

スペックも良いし、なにより他のタブレットよりも安く購入できるのが良い。

早速実機をショップで確認しようといってみたのだが、そこの店員から「Kindle」をオススメされた。


店員の説明を流しながら聞いていたら
「KindleはHDMI端子が付いているので、テレビに映すことが出来ますよ~」
と一言。

このHDMI端子、自分にとっては非常に魅力的!あ


さっそく家についてからいろいろ調べてみた。


KindleはAmazonが開発したタブレットであり、GoogleのGooglePlayストアがインストールされていない
が、ネット上ではKindleにGoogle Play ストアをインストールする方法が載っている。

自分がよく利用する動画共有サイトなども、AdobeのFlashをインストールしてドルフィンブラウザをインストールすれば見れるようになるらしい。

開発時に必要なデバッグも問題なくできる。

ということで、自分が欲しいと思っている機能が搭載されており、自分がやりたいことも出来るため、Kindleを購入することにした。
ついでにAmazonにある無料の本も読めるし、Nexusよりいいんじゃね!?


■Kindle FireとKindle Fire HDについて
Kindle Paperwhiteは無視。

Kindle Fire にはHDと無印がある。
値段は無印の方が安いのだが、スペック等考慮すると
もう3,000円出してKindle Fire HDを購入したほうが絶対良い。

とりあえず今の自分のスマホの使い方などを考えた結果、16Gで十分だろうということで、
Kindle Fire HDの16G 7インチを購入することにした。



■カバーについて
立てかけて使用することもあるので、立てかけ出来るカバーを購入することにした。

びっくりしたのが純正のカバーは5,000円ほどする。他のユーザも言っているが、本体の1/3もするカバーは高すぎる。
ということでこちらのカバーを購入することにした

オートスリープも機能する。

■microHDMIについて
一番欲しかったテレビ出力用のmicroHDMIについて、いろいろ調べてみた感じ、これが一番いいと思う。


接続に遊びの部分があるため、コネクタ部分に負荷が掛かりにくく故障しにくい。


この3つをまとめて購入。全部で20,000円いかなかった。



■Wifiの設定について


注文して2日後に早速届いた。
早速Wifiの設定を開始した。


■wifiの設定が難しい

PCには詳しいほうだと思っていたため、wifiの設定も簡単に出来るだろうと思っていたのだが、これが簡単には出来なかった・・・

まずルータとの相性があるらしい。
ちなみに自宅で使っているルータはBuffaloのWHR-G300Nというルータ。

いつものようにパスワードを入力しても認証できずにIPアドレスの取得が出来ない。

本体が悪いのかな?と思い試しにスマホからテザリングで接続すると上手くwifiと接続でき、ネットにも接続できた。
ということで本体は問題ない。

ネットで調べてみると、同じようにwifi設定で躓いている人が結構いる。


■対策1「IPアドレスの取得をスタティックにする」


どうもKindleとBuffaloは相性が悪いらしい。

kindleでWifiを設定する際に、「詳細」欄があるため、それにチェックをすると、さらに下に詳細設定画面が表示される。
そこでIPアドレスの取得を「DHCP」から「スタティック」に変更する。
要は取得IPなどを全て手動で設定するのだ。
※DHCPとはアドレス取得などを自動で設定してくれる楽な機能なのだが、Kindleだとダメ・・・


IPアドレスを適当にかぶらないようにして、サブネット、ルータ、DNSを設定する。

これでwifi接続が出来るようになる!!!


らしいのだが、自分はこれだけだとダメだった・・・


■対策2「AOSSの無効」

対策1をやってすぐは一旦つながったかのように見えたのだが、すぐに切断され、その後、再度認証エラーとなりIPアドレスが取得できなくなってしまった。

ネット上にも「つながるがよく切れる」「切れたら毎回wifiの設定をしなければいけない」など、なんとも困ったことが多い。

Amazonとやり取りしている人もいるのだが、ルータの初期化、端末の再起動等いろいろ指示され、その通りにやっても上手くいかないらしい。


ルータの初期化を一瞬なやんだが、自宅にはサーバもあるし、他にも無線接続している機器などもあるため、さすがにルータの初期化は出来ない。

ルータの設定画面を眺めていたところ、ふと思ったことが「AOSSが邪魔してるんじゃないか?」と思った。


Kidleのwifi対策の一つに、KindleのMACアドレスをルータに登録する(MACアドレスでのフィルタリングが設定されている場合)というのがあった。

ためしに登録したのだが、このルータではAOSSを有効にしている場合「設定画面で設定したMACアドレスフィルタリングは無効になる」という仕様になっているのだ。
※これは画面上にそう記載されている


よく考えてみたらルータ導入当初はAOSSを使って設定していたが、今はどのPC、機器もAOSSでの接続をしているのは1台も無い。

ということで、ためしにAOSS機能を無効にしてみた。


そしたらビンゴ!!無事KindleがWifiに接続できた。その後も切れることなくWifi接続は安定している。


余談だが、実はMacBookAirも無線で接続しているのだが、ちょくちょくwifiがつながらなくなることがあり、そうなったら、wifiの無効→有効をいちいちやっていたのだが、このAOSSを無効にしたところ、MacBookAirのwifiも安定しだした。

ちなみにBuffaloのクライアントソフトをインストールしている別のWindowsPCのwifiは安定していた。


たぶんAOSSのKey更新のタイミングでなんか悪さしていたのではないかと推測。


とりあえず、無事なんとかwifi接続が完了してKindleからネットが出来るようになった。
早速無料の本を落としてみたw


他のところで見たのだが
「初心者は値段が高くても3g回線のKindleを購入したほうが良い」
とあった。

私もそう思うのだが、今回やったwifi接続については初心者だと多分出来ないと思う。
素直に3g回線付きのを購入すると設定しなくてもいいからね。

Amazonのレビューなどでも見たが、「wifi接続が出来ないから返品した」というのをちらほら見かけるような気がする。

せっかく良い商品なんだから、こんなwifi設定でユーザを離すなんてモッタイナイ。


ぜひ、AmazonさんにはこのWifi設定部分をもう少し簡単に、安定した接続を出来るように改良してほしい。

次はGooglePlayストアのインストールを行ってみる。


2013/5/7 追記

wifi設定についてだが、翌日になるとまた繋がらなくなった。
さらにいろいろネットを見てまわったら、「倍速モード」が悪さしてるんじゃないかという情報を得た。
※倍速モードとは通常20MHzの帯域の所を40MHzの帯域をしようし、通常よりも高速に通信する
という俺には理解できないモードなのだが・・・

ものはためしと先ほど40MHzから20MHzに設定を変えたところ、なんとWifiが接続された。
一度Offにして再度Onにしてもしっかりつながった。

Buffaloのルータ「WHR-G300N」で困ってる人は一度ためしてみるといいよー

またなんかあったら追記します。
おすすめアプリ
カテゴリ
最新記事
リンク
アクセスカウンター
アクセス解析
imobile
i-mobile
i-mobile
i-mobile
i-mobile
i-mobile
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
Amazon
Androidお勧め参考書
EC studio
商品
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。