AIRカジュアルゲームアプリで、イベント機能を実現
新着情報から、特定ユーザーに対して報酬があげられるようになりました。イコール、イベントが打てるようになりました。今月のランキング上位者に魔法石とか。
アイテムのバリエーション追加
アイテムの違いがテクスチャ(模様)の変化しかなかったので、形の違う帽子を追加し始めました。アイテム作るの結構たのしいかも。
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
クエストデータバグ発生
管理画面見てたら、アプリ内DBのクエストデータ配列が再現なくデカくなってるw やばい直さなねば;;
ワクチン仕込んだアプリをアップしよう。
Google Play内もアナリティクスに挑戦
GooglePlayのストア内アナリティクスこそ必要&可能と気づき、実装してみました。1週間後くらいには、検証可能なデータが集まってるはず。