RetroWeb ~iPhoneとAndroidでハイブリッドゲームアプリ開発~

AIR for iOS+AndroidでSmartPhone Game ハイブリッドアプリ開発

最近作ったアプリ
100億本の抜け毛 100億匹のモナー DQ3闘技場アプリ モナーペット(進化)

殿堂ランキング(日々の過去ログ)を搭載

ひさびさの更新ですんません。日々少しづつアップデートしてますー。
これで日々のランキング上位者の名前が消えずに、永久の歴史に残るようになりましたw
https://play.google.com/store/apps/details?id=air.retroweb.flappysimamura.production&0507
f:id:hisashi_vc:20140507142542j:plain

iPhoneアプリに「テスト」の文字があるとリジェクト

リジェクトされました。日本語でもしかり。以下Appleからの全文

――――――――――――――――――――――――――――――
Resolution Center
Binary Rejected

Reasons

2.9: Apps that are “beta”, “demo”, “trial”, or “test” versions will be rejected
2.9

We found that your app appears to be a pre-release, test, or trial version with a very limited feature set. Apps that are in beta form, or that are for demonstration or trial purposes only, are not appropriate for the App Store and are not in compliance with the App Store Review Guidelines.

It would be appropriate to complete, remove, or fully configure any partially implemented features and/or to remove any references to "demo", "trial", "beta", or "test" in your application description and release notes, and from within the app.

If you are interested in conducting a beta trial for your app, Ad Hoc distribution is available to broaden your test user base. Information on Ad Hoc distribution is available in the iOS Developer Program User Guide.

新着情報UIの仕上げ

サーバーから賞状送れるようにして、スクロール化で大量の新着情報も閲覧可能にして、タップも調整して、スクロールバーつけて、デバッグUIも更新してと、地味にコツコツ開発。新着バナーにも来週前半には対応したいな~。あと魔法石以外にも、コインやアイテムまで配布可能にしたい。そしてAppleどころか、Googleまでさっぱり更新してくれないこの頃w
ユーザーから装備を任意で変えたいとのメールフォームが来たので、これもその次あたりで対応せねば。
f:id:hisashi_vc:20140428021805j:plain

イベント用の表彰状を作成

賞状までもらえたらかなり嬉しいし、ツイートもしやすいかなと思い、ひとまずデザインpsd作成。その後Flash化してロジック組んで表示。あとXMLのフォーマット作って、サーバーサイドも対応せねば。
f:id:hisashi_vc:20140426130527j:plain

AIRカジュアルゲームアプリで、イベント機能を実現

新着情報から、特定ユーザーに対して報酬があげられるようになりました。イコール、イベントが打てるようになりました。今月のランキング上位者に魔法石とか。

f:id:hisashi_vc:20140425153111j:plain

新着情報UIと、運営からの報酬機能を作成

またしてもGoogleAndroid版が謎に更新されないさなか(3時間で反映されなかったら、永遠に反映されないのがほぼ確定っぽいけど、24時間以上たたないとGoogleのおしりを叩けない)、新着情報UIと、運営からの報酬(感謝やお詫びの魔法石とか)機能を7割くらい実装しました。新着情報は、以前WebViewで作ったんですが、重かった&見栄えショボかったので、新たに作成。
f:id:hisashi_vc:20140424155130j:plain

アイテムのバリエーション追加

アイテムの違いがテクスチャ(模様)の変化しかなかったので、形の違う帽子を追加し始めました。アイテム作るの結構たのしいかも。
f:id:hisashi_vc:20140423184312j:plain

AIRアプリの起動を200%高速にする方法

先に結果の秒数はこんな感じです。

①GalaxyS3の場合…7338=192%高速化(ちなみに空アプリは37)
②IS03の場合…17381=214%高速化(ちなみに空アプリは57)

そしてそのアプリの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;
}

近況4月中旬

リア充イベントにもたまには出ねばと、10年ぶりくらいに花見。やはりいたたまれなくなり、ショックを受けてかえってくるw嘘です最高です!
f:id:hisashi_vc:20140423020917j:plain

何気に行ってなかったスカイタワーにいき、神コスプレレベルのウェイトレスがいる、世界中のビールが飲める店体験
f:id:hisashi_vc:20140423020936j:plain

ゲーセンの頭D、聖地・神奈川編完結。しかし次ステージのオーラ出過ぎな、藤原拓海の86に瞬殺されるw
f:id:hisashi_vc:20140423021041j:plain

ハッピービスコの裏面が生きる力を与えてくれます
f:id:hisashi_vc:20140423021032j:plain

秋葉の穴場。牛肉の刺身カツ?が1200円で食える店。ねぎしのインターバルに。
f:id:hisashi_vc:20140423021055j:plain

声優グランプリ。みもりんずば抜けてる
f:id:hisashi_vc:20140423021105j:plain

声グラ内の、神がかってる同志すみぺ(上坂すみれ)のページ。今週のアニゲラ・ディドゥーンにも出るのか。チェックせねば。
f:id:hisashi_vc:20140423021117j:plain

アプリにご要望フォームを実装

GameFeatの広告を実装したiPhone版を審査に出しつつ、Android版にご要望フォームを実装しました。WebViewだと融通聞かなかったりするので、UIごと作成。ご要望をサーバーに保存しつつ、自分の携帯にもメールが来ます。ついでに微妙な気がしたゲーム内セリフウィンドウをいったん隠すw。 機能山盛りで、アプリの起動に時間かかるようになってきた気がするので、そろそろなんとかせねば~。
f:id:hisashi_vc:20140423013037j:plain

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を再生成したらなおりました。

本日DL数4桁突破

友達口コミすらなしのオーガニックリ流入(自然増)のみだと、更新しながら2ヶ月くらいで到達するようです。AndroidiPhone両方リリースしてれば。時事ネタや高アクティベーションモチーフなら桁変わるかも。どんどんノウハウ蓄積しよう。
他の表示回数(起動回数、プレイ回数)はこんな感じです
f:id:hisashi_vc:20140420130649p:plain

AIRアプリで、ハイブリットGameFeat広告を実現

iOSも外部ライブラリ連携を調査し。まだオフィシャルにも出てないane完成w 今回の実装で、AndroidiOSも、AIRアプリ内で、事実上あらゆるネイティブライブラリを使えるようになりました。アイコン広告にも対応したら、本番ゲームアプリにも実装せねば~。
f:id:hisashi_vc:20140420002250j:plain

 デバッグツールとクエストの強化

仕事しつつ、デバッグツール強化。これで大きなバグは、すぐ感知できるようになりました。
新規クエストも追加。クエストって、ユーザー満足度+開発側満足度(収益やバイラルや継続率強化)の総和を計算して設計するものなのかと気づく。
あと管理画面見てると、バグがわかってよいですねw
f:id:hisashi_vc:20140417171256j:plain