スポンサーサイト

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

久しぶりにアプリ作成しました

久しぶりにアプリ作りました


カブトムシ大戦争
gplay1024.png


今回はタワーディフェンス系のゲームです。

次はBox2dを使ってなんか作ってみようかなー
スポンサーサイト

Android で3Dゲームアプリを作ろうかな

Androidのゲームアプリをコツコツ作っています。

今まで2Dゲームのみ作っていたのだが、3Dゲームを作ってみたいと思い
気になっていたUnityを勉強することにした

そこでみんな気にするのが
・3D開発は難しいのではないか?
・自分に開発できるのか?
だと思う。
実際に自分はそう思っていた。

そこでまず自分で開発できるレベルのものなのか調べる必要がある。もちろん最初は参考書を買ってどんなものか見るのだが、その参考書も高くて大きい。もし買っても使わなくなったらもったいないし。

そこでおすすめなのがこれ。








付属のDVDにインストール、サンプルが入っている。
Unityの詳細な説明書ではなく、あくまでもUnityとはどんなことができるのかを説明している。

サンプルを利用して数十分でユニティちゃんを動かすことができた。
非常におもしろい!!Unityってすごい!!

自分みたいに3Dって!?
って思っている人にとってはとてもいい本!
これでUnityに慣れてから、本格的な参考書を買って勉強していこうと思う。

初めて3Dゲームを作ろうと思っている人にお勧めの1冊です。

また、スマホでのゲーム開発では、今後はUnityがもっと主流になってくるんだろうなぁーと思っている。




**********************************************

以下、今まで使っていたゲームエンジンについて

**********************************************


Androidのゲームを作るのに初めに決めなければいけないことがある。
それは「なんのゲームエンジンを使うのか!?」ということ。

ゲームエンジン?
と思うかもしれないが、ようはどんなソフトで作るかだと思ってもらえればよい。

候補としては
・Unity
・AndEngine
・cocos

いろいろあります。

それぞれメリット、デメリットがあり何を使えばいいのかは、自分の作りたいものによると思うが
とりあえず、自分が使っていたものを紹介する。

■enchant.js











これはWebで必須のJavascriptで作成されたゲームエンジン。
趣味、仕事柄Webは常に使っていたため、慣れ親しんだJavascriptでゲームが作れるのは非常に魅力的だった。
開発も簡単ですぐにでもゲームが作れた。
このenchant.jsを利用してAndroidのゲームアプリを数本リリースしている。
ゲームはJavascriptで作りこむため、基本的にHTMLベースのゲームとなる。
AndroidにはWebViewを利用し、作ったHTMLゲームを表示してAndroidのゲームアプリとしてリリースした。

・メリット
javascript、HTMLで開発できるため、OSに依存しない(Android、IOS、Windows)
WebViewの機能でローカルへのアクセスも可(SQLiteなど)

・デメリット
ブラウザベースのため、パフォーマンスが普通のアプリよりも悪い

enchant.jsじゃなく違う技術を使ってみようと思ったきっかけが「デメリット」である。
顕著だったのが、Kindleで確認した時で、見てられないほどコマ落ちしてしまった。
Kindleのブラウザに搭載されているScriptエンジンがダメだったのかと思われる。

それでもenchant.jsは非常にいいゲームエンジンであることには変わりない。
ゲームアプリを初めて作ろうとしている人におすすめである。

■AndEngine











今、利用しているゲームエンジン
Javaでの開発のため、通常のAndroidアプリの開発と同じように開発ができる。

・メリット
そこそこ高速に動作する
Javaでの開発のため開発が簡単

・デメリット
3Dゲームは作れない

ここ数年はずっとAndEngineで開発していたのだが、
あまりこれを使っている人は少ないのかな?
Web上でもあまりAndEngineを使っている記事を見ない。
ただ2Dゲームを作るのはとても簡単。

2DゲームだけならこのAndEngineがおすすめ。

突撃!カブトムシ・クワガタの戦い

昔作成したゲームアプリのベースを作り変えて、新しくゲームを作り直した。




突撃!カブトムシ・クワガタの戦い

DocomoのDock to playという非常におせっかいなアプリ

最近DocomoがiPhoneを売り出しました。
前まではDocomoとAppleとで協議がまとまらずに・・・なんて話しがありましたが、なんとかお互い納得出来たのでしょう。
いろいろ意見はあると思うのですが、私はDocomoのコダワリに非常に好感を持っています。

話しが変わりますが、表題についてです。

今市場に出ている様々なスマホには、それ独自の機能というのが少なからず各端末に存在します。
嫁が購入したスマホにもそんな機能があります。その中の「Dock to play」と言う機能があるのですが、これが非常に厄介、かつ邪魔なアプリなのです。

「Dock to play」の機能というのが、充電中などにいろんな情報を発信するよ、という機能らしいのですが、困ったのがディスプレイの照明が消えないということです。

嫁が寝るときにスマホを充電すると、電源ボタンでスリープモードにしているにも関わらず、勝手にアプリが起動して、Docomoのいろんな情報を表示します。
それだけならまだいいのですが、この表示がずーーーーーーーーと消えずに、ずっと画面が光っている状態に鳴ってしまうのです。

もちろん設定で、起動時間を指定できるのだが、1分に設定してもずっと付きっぱなし。
厄介なのが、この設定画面には「起動しない」の設定がない。
また、この機能がデフォルトで有効になっているということ。

嫁が寝てから、なんかずーと明るいなと思っていると、端末がずーーーーーと光っている、なんてことが何回もある。


一番許せないのが、画面を消灯してもすぐ勝手に画面のスリープが解除されること。
それと時間設定がちゃんと機能しないこと。
同じシステム屋として、バグだしてんじゃねーよと殴りたくなる。

でいろいろこの糞アプリを起動させない方法を探してみた
http://bbs.kakaku.com/bbs/J0000005350/SortID=15726360/

画面って一番電力を消費するんだよ。
充電中に勝手に画面がずっと光ってるから、嫁の携帯は充電に時間がかかるんだよ。
それに画面をずっとつけっぱにすると、すごい熱をもつんだね。
これはバッテリーにも影響だすし。
ほんとこのアプリは
「スマホを壊す役割」を持っているアプリと断言できる。
糞アプリと言い切れるよ。

Android 作成したAPKファイルで自クラスがNoClassDefFoundError


         ,. -‐'''''""¨¨¨ヽ
         (.___,,,... -ァァフ|          あ…ありのまま 今 起こった事を話すぜ!
          |i i|    }! }} //|
         |l、{   j} /,,ィ//|     『おれは生成したAPKファイルを端末でテストしようとしたら
        i|:!ヾ、_ノ/ u {:}//ヘ      自分のクラスがないってエラーがでる』
        |リ u' }  ,ノ _,!V,ハ |
       /´fト、_{ル{,ィ'eラ , タ人        な… 何を言ってるのか わからねーと思うが
     /'   ヾ|宀| {´,)⌒`/ |<ヽトiゝ        おれも何をされたのかわからなかった…
    ,゙  / )ヽ iLレ  u' | | ヾlトハ〉
     |/_/  ハ !ニ⊇ '/:}  V:::::ヽ        頭がどうにかなりそうだった…
    // 二二二7'T'' /u' __ /:::::::/`ヽ
   /'´r -―一ァ‐゙T´ '"´ /::::/-‐  \    催眠術だとか超スピードだとか
   / //   广¨´  /'   /:::::/´ ̄`ヽ ⌒ヽ    そんなチャチなもんじゃあ 断じてねえ
  ノ ' /  ノ:::::`ー-、___/::::://       ヽ  }
_/`丶 /:::::::::::::::::::::::::: ̄`ー-{:::...       イ  もっと恐ろしいものの片鱗を味わったぜ



ってポルナレル状態になってしまったのだが・・・


作成したアプリをリリースするためにEclipseからAPKファイルをエクスポートし、
端末へ手動インストール、またはDevelopコンソールからのベータ版としてインストールしてテストしようと思ったのだが、まず最初にActivityの実行中にエラーが発生して異常終了する。

エラーは「NoClassDefFoundError

AndroidでNoClassDefFoundErrorをググるとよく出てくるのが
「外部JAR」が取り込まれていないという問題。
これについては、プロジェクトのプロパティから対象のJarにエクスポートでチェックすれば解決できるのだが、私の問題はこれではなかった。

外部Jarではなく自分で作成したクラスがNoClassDefFoundErrorとなっているのだ。

ちなみにプロジェクト構成は
・プロジェクト
 →src
  →hoge.hoge
   →log.class
 →Android4.1

ここでいう共通ログクラスとして作成したlogクラスがNoClassDefFoundErrorになってしまっている。


でさらに困ってしまったのが
1.Eclipseから直接デバッグ実行したときにはエラーが発生しない
2.エクスポートしたAPKファイルをインストールするとエラーが発生する

という本当に不思議な状態になってしまった。

つまりはAPKを作成する際に、必要なクラスがすべて含まれていないみたいなのだ。

ちなみに環境としては
OS Win7
Eclipse4.2
ADT 22
Java 1.6
プロジェクトの対象SDKは4.1

最初はADTがおかしいのかもと思い、再インストール、Eclipse再インストールなどいろいろやったが改善されず。

それに何回もAPKファイルを作成してわかったことなのだが、その都度APKファイルの容量が異なるのだ。
100k程度の差が現れる。
たぶん必要なclassファイルが含まれていないからなのだろう。

これには困った・・・ デバッグ実行では問題なく動作するのだから・・・



■ファイル共有ソフト(DropBox、SkyDrive、GoogleDrive、しゅがーしんく(だっけ?))を利用する場合はご注意を

なぜここに行きついたのかよくわからなかったが、原因はこのファイル共有ソフトだった。

数か月前から複数の端末(家や会社など)でソースファイル(workspace自体)を共有したいと思い、紆余曲折があってSkyDriveで開発関連のソースやアプリケーションなど共有することにした。
使い方としては、ローカルのEclipseからSkyDriveにあるプロジェクトを参照して開発する形となっている。


原因はというと、たぶんAPKに必要なclassファイルをこの共有ソフト側が掴んでしまったことで、Eclipse側(ADT側)でAPKファイルを作成するときに使用できなかったのだと思う。
※エクスポートするタイミングでコンパイルが(たぶん)走るため、classが更新されて、それをファイル共有ソフトが検知してサーバへアップするために掴んでると思われる。たぶん。


そのため、一旦SkyDriveを終了させてからAPKのエクスポートをしたところ、やっと正しくAPKを作成することができた。
※SkyDriveは設定で「複数のファイルを纏めてアップ・・・」の設定があるのだが、これをチェックしている、理由はわからんが何かファイルにやっているのだろうか。SkyDriveを終了させてもAPKが正しく作成されない場合がある。

私のようにソースファイルをSkyDriveで共有する場合には
1.設定「複数のファイルを纏めてアップ・・・」のチェックを外す
2.APKファイルを作成するときには、SkyDriveを終了させる
3.それでもダメな場合はPCの再起動後、APKを作成
おすすめアプリ
カテゴリ
最新記事
リンク
アクセスカウンター
アクセス解析
imobile
i-mobile
i-mobile
i-mobile
i-mobile
i-mobile
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

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