ScratchPad & JarInflater & HTTP通信
今日もi アプリだよ。
ドラクエやFFが アプリサイズ100K&データサイズ500Kになってたのにヒントを得て、
アプリと画像等素材データの分離配布モデルを実装してみた。
・アプリのjarファイルにはプログラムとタイトル画像・タイトルBGMなどのみを入れる
・ゲームスタートでその他もろもろの音楽と画像をダウンロード
・ダウンロードしたデータ(画像等をかためたJAR)はScratchPadに保存
・ゲーム内ではScratchPad上から画像・音楽を読み出して使用
・次回起動時にはすでに落としてあるjarの内容を用いる。
と、だいたいこんな感じのモデルで実装してみた。
まずは素材一式をjarでかためてみた。
3~400Kバイトになったので、そいつをサーバにアップロードして
エミュレータで実験。
すると、ログに150k 以上のデータはhttpで落とせないですという旨のメッセージが・・
むぅ。。 そうきたか。。
しかたがないので、画像やら何やら種類別にわけてjar化してみた。
ドコモの仕様書に、ScratchPadは16個までもてますみたいなことが書いてあったので、
はじめは別々のScratchPad番号に種類別のファイルを先頭から書き出してみたが、
なんだかうまくいかない。。
しょうがないので、すべてのファイルを0番のSP上に先頭から順に
ならべて記憶させるようにした。
すると、アラマア!
うまく保存できたですよ。
そこまでで昨日は力尽きて眠ってしまいました。
んで、今日、会社の帰りのグリーン車の中で、
くちくちいじったところ、期待通りの動作をしたので
家に帰って実機確認してみました。
うごいたぁぁ!
初回、通信して5つのファイルにわかれた300キロ程度
のデータをとってきます。
しかし、 おせぇぇ!
エミュレータだと1秒もかからず、全ファイル落としてくるのに、
実機でやると1分近く通信しやがってくれました。
教訓: はじめに全部落としてくるのはダメぽい
⇒だからファイルをわけるにしても、
種類別じゃなくて、シーン別というか
ゲームの進行度合いに応じたJARパッケージング
せんとだめぽ
⇒進行度合いに応じたパッケージングって
ゲームが出来上がってからなら簡単だけど、
開発中に試行錯誤的にシーンの順番を入れ替えたりする
ことができなくなっちゃう。
(ツールが必要かなぁ・・)
ちなみに、成果物は⇒ http://akio.shimono.net/2006/iappli/0622/ (FOMA SH901iSのみ確認済)
あと、発見したこと。
一旦古いバージョンでJarをおとしてきてSPに書き込むと、
その後ソフトバージョンアップしても、SPはクリアされない。
(本来のSPの使い方を考えれば当たり前だけど・・)
だから、ちゃんとしたリリースの際は、
素材データもバージョン情報を持つ必要があって、
バージョニング機構は自分で実装せねばならないね。
Jarファイルにいっこテキストファイルを入れてもいいだろうけど、
マニフェストファイルをちゃんとつかえばいいかな?
あ、それと、昨日実家で2年前ぐらいにかった
504i/FOMA対応 iアプリゲームプログラミング(DoJa 2.0対応!)
なんて本を発掘したよ。
アプリサイズは10kとか30Kとか、
涙ちょちょぎれるようなことがホントに書いてあった・・
すごい・・
んで、本をよんだら、キーイベントの拾い方、
変な自己流でやってたことに気づきました。
やっぱり本は大事だねぇ
それと、あとなんだ、
終了ボタンをおしたときに
「終了しますか? はい/いいえ」
ダイアログが出るようにしたよ。
次の目標は・・と、
これが一番大事だね。
次々と簡単に実現可能そうでかつ、
大きな目標に着実に近づく目標をたてること。
こいつができさえすれば、あとは情熱だけで前にすすめる。
んーと。
・シーンの切替
・グラフィックに対するエフェクト(フェードイン・フェードアウト)
・ウィンドウの実装
・非圧縮フィールドマップデータの上を
てくてく歩く主人公&フィールドスクロールの表現
そのへんかなぁ。
いや、ちょっと欲張りすぎた。
まずは、タイトル画面をだして、
ボタンを押すと今のアプリに遷移、
右ソフトキーは、アプリ終了に飛ばずに
タイトル画面に飛ぶようにする。
・・ そんなとこかな。(以上明日の目標)
そんつぎに、そのシーンのトランジションに
フェードイン・フェードアウトを入れる。(あさって)
さて、 夜も更けたし、ねるとしよう。
おやすみなさーい(^~^)
・・ てか、なんか、すぐできそうな気がしたので、
明日の目標ってとこまでは達成してしまった。 (0622 ver0.5)
但し、以下課題があることに気づいた
-シーンを以下のように親子ネスト構造とすることで、
普通のRPGは表現できそうな気がするのでそれをイメージした
クラスをつくってみたが、
-タイトル
-マップ
-戦闘
今の実装だと、資源もちっぱなし。 メモリがたらなくなるかも・・
ネストしたシーンクラス自体は軽い実装にして、
そこで使う画像やら音楽はonEnter()でロードしてonExit()で開放するようにしよう。。
⇒明日の課題
こんどこそおやすみ~
« i アプリ すこしだけわかってきたっぽ | トップページ | マップを歩くひと »
「JAVA」カテゴリの記事
- ScratchPad & JarInflater & HTTP通信(2006.06.22)
- i アプリ すこしだけわかってきたっぽ(2006.06.21)
- iアプリ Audioのループ再生(2006.06.20)
- アプリケーションに誤りがあります(2006.06.19)
- iAppli初挑戦!(2006.06.18)
コメント