AIRアプリの起動を200%高速にする方法
先に結果の秒数はこんな感じです。
①GalaxyS3の場合…7秒3 → 3秒8=192%高速化(ちなみに空アプリは3秒7) ②IS03の場合…17秒3 → 8秒1=214%高速化(ちなみに空アプリは5秒7)
そしてそのアプリのAndroid版。(いつものしまむらくん。数日中に起動高速化版(Ver1.4.3)が、反映されるはず。。)
https://play.google.com/store/apps/details?id=air.retroweb.flappysimamura.production
iOS版も審査通る気がするけど、確認中(なのでまだ未反映)
https://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=825465264
で、やったことは単純で、.swcでnewしてたAsset一式を、.swfにしてAIR for Android設定の含めるファイル内にいれて、バイナリロードからのnewにしただけ。引数のurlは、.swfのファイル名だけで読めるので楽ちん。これでアプリ起動が遅いAIRアプリが、200%高速に。
function LoadByte(url:String, callBack:Function):void { var urlLoader:URLLoader = new URLLoader(); var req:URLRequest = new URLRequest(url); urlLoader.dataFormat = URLLoaderDataFormat.BINARY; urlLoader.addEventListener(Event.COMPLETE, onCompleteUrlLoader); urlLoader.load(req); urlLoader.addEventListener(IOErrorEvent.IO_ERROR, function(e):void{ trace("265_IOエラーです。"+url); trace("e.text = " + e.text); }); function onCompleteUrlLoader():void { var ba:ByteArray = urlLoader.data; var lc:LoaderContext = new LoaderContext(); //if(Com.IsAir()) lc.allowLoadBytesCodeExecution = true; var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteLoader); loader.loadBytes(ba, lc); function onCompleteLoader():void { var apd:ApplicationDomain = loader.contentLoaderInfo.applicationDomain; callBack(apd); } } }
ロードしたswfから、リンケージしたクラスを抽出するときは、下記メソッド。
function getClass(d:ApplicationDomain, s:String):Class{ return d.getDefinition(s) as Class; }
ane競合時の謎エラー対策
自作aneを作って、AdobeのGameCenterのaneと合わせて使ったら、下記エラー;
ArgumentError: Error #3500: The extension context does not have a method with the name getAuthenticated. at flash.external::ExtensionContext/_call() at flash.external::ExtensionContext/call() at com.adobe.ane.gameCenter::GameCenterController/get authenticated() at Test3$/initGameCenter()[C:\Users\hisashi_vc\Adobe Flash Builder 4.7\Test3\src\Test3.as:41] at Test3()[C:\Users\hisashi_vc\Adobe Flash Builder 4.7\Test3\src\Test3.as:24] [SWF] com.starbrain.devpush.HelloWorld3 - 2,995 バイト (圧縮後) [SWF] Test3.swf - 2,321 バイト (圧縮後)
原因に心当たりなく謎。ネットではリリースビルドにすればError #3500消えるという情報を見かけましたが、どうもいろいろやってもダメぽ。最終的にextention.xml内の下記記述回りを一通りユニークな名前にしたら、なおりました。
<initializer>ExtInitializer</initializer> <finalizer>ExtFinalizer</finalizer>
↓
<initializer>ExtInitializerHisa</initializer> <finalizer>ExtFinalizerHisa</finalizer>
ネイティブ側言語の記述も合わせて修正して、メソッド名や参照名全部ユニークにして、aneを再生成したらなおりました。
ゲーム中にセリフを表示
これでその気になれば、カジュアルゲームでもストーリーつくれるようになりましたw
図鑑にキャラ表示
ちょい図鑑ができてきました。
図鑑に登録したキャラを、マテリア穴っぽいのに登録して、ゲーム中に特殊効果とかやってみたいな~。
Androidゲームアプリ申請から1か月経過
現在iPhone版との合計で400DL超えたくらいなので、iPhone版公開日からの1か月でカウントすると、500ダウンロードくらいの検証結果かな~。ノープロモ&ほぼオーガニック流入(自然流入)のみ&デザインとモチーフの引きほぼ無しのサンプル。来月か再来月くらいに1000ダウンロード到達できれば嬉しい。
今後の妄想
・Amazonのアプリストア進出
・pixivのアプリストア進出
・即売会に進出
・コミケに進出
・カジュアルゲーム・フレームワークの完成
・カジュアルゲーム・マネタイズシステムの完成
・Googleから初の売り上げ振り込み。
・モチーフ変えて3ゲームくらいリリース。
・年内に合計1万ダウンロード突破