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

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

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

ガチャUIを新たに開発開始

ユーザーからオーダーもあったので、ガチャを改めて開発開始
上の禿げ頭から出てくるのは、ノリで作ったけどボツ案wで、下のブタ貯金箱で完成目指す予定です。

f:id:hisashi_vc:20140509162323j:plain

f:id:hisashi_vc:20140509162332j:plain

https://itunes.apple.com/jp/app/kong-feibushimamurakun/id825465264
https://play.google.com/store/apps/details?id=air.retroweb.flappysimamura.production

iPhoneアプリの審査スピードが速くなる裏ワザ

審査速度が速くなる裏ワザが判明しましたが、こういうのは知ってる人は知ってて、かつ人に話すわけにもいかないので、ネット上にも流れないのでしょう・・w
存在するという情報は共有できるのでメモ。

https://itunes.apple.com/jp/app/kong-feibushimamurakun/id825465264
https://play.google.com/store/apps/details?id=air.retroweb.flappysimamura.production

毎日自動でPHPプログラムにPHPプログラムを書かせるようにしました。

PHP連想配列変数くらい、PHPに毎日自動で更新してもらうことにしましたw
デイリー過去ログランキングのリンクと、1位の名前の配列更新。

画面キャプチャと、役に立つか謎なプログラムはこんな感じです。includeするphpを自動で更新してます。自動イベント運用も夢じゃない!
f:id:hisashi_vc:20140508005035j:plain

include_once "rankerInfo.php";

$mod = filemtime("rankerInfo.php");
//print "最終更新日:".date("Y/m/d H:i",$mod);

$isYesterdayUpdate = date("d") != date("d", $mod);

//PHPファイルを更新する。
if($isYesterdayUpdate){
	function get_filename_arr($dir, $ext0){//$match) {
	    $filename_arr = array();
	    $dh = opendir($dir);
	    while(($filename = readdir($dh)) !== false) {
			$ext = substr($filename, strrpos($filename, '.') + 1);
	        if($ext === $ext0){
	            $filename_arr[] = $filename;
	        }
	    }
	    return $filename_arr;
	}

	$logNames = get_filename_arr(".", "log");

	$todayStr = date('y')."d".date('z').".log";
	$thisWeekStr = date('y')."x".date('W').".log";

	$dailyArrayStr = "";//14d122.log
	$weeklyArrayStr = "";//14x18.log

	for($i=0; $i < count($logNames); $i++){
		$fileName = $logNames[$i];
		if($todayStr !== $fileName && strpos($fileName, "d")){
			//ファイル名先頭から名前取得?
			//echo $fileName."@日間<br>";
			//ロード
			$fp = fopen($fileName, 'r');
			if ($fp){
			    if (flock($fp, LOCK_SH)){
					$rank1Name = fgets($fp);
					$rank1Name = substr($rank1Name, 0, strpos($rank1Name, "\t"));
			        flock($fp, LOCK_UN);
			    }else{
			        //print('ファイルロックに失敗しました');
			    }
			}
			fclose($fp);
			$dailyArrayStr = "'".str_replace(".log", "", $fileName)."'=>'".$rank1Name."',\n".$dailyArrayStr;

		}else if($thisWeekStr !== $fileName && strpos($fileName, "x")){
			//ファイル名先頭から名前取得?
			//echo $fileName."@週間<br>";
			//ロード
			$fp = fopen($fileName, 'r');
			if ($fp){
			    if (flock($fp, LOCK_SH)){
					$rank1Name = fgets($fp);
					$rank1Name = substr($rank1Name, 0, strpos($rank1Name, "\t"));
			        flock($fp, LOCK_UN);
			    }else{
			        //print('ファイルロックに失敗しました');
			    }
			}
			fclose($fp);
			$weeklyArrayStr = "'".str_replace(".log", "", $fileName)."'=>'".$rank1Name."',\n".$weeklyArrayStr;
		}
	}


	$phpTxt = "<?php\n".
		"\$dailyRank1Array = array(\n".
		$dailyArrayStr.//"	'14d125'=>'あんっー',\n".
		");\n".
		"\$weeklyRank1Array = array(\n".
		$weeklyArrayStr.//"	'14x18'=>'(ま゜ー゜さ)ノ'\n".
		");\n".
	"?>";

	//phpでまるごと保存
	file_put_contents("rankerInfo.php", $phpTxt);
}

https://play.google.com/store/apps/details?id=air.retroweb.flappysimamura.production&0508

なぜかイベントが発生しない、サーバーエラーやnull系エラーはどうすれば良いか。

あたりまえかもしれませんが、下記で揉み消せましたw
拾えないネットワークエラーや、テスト時で埋め込みフォント(などのクラス)が存在しないエラーなどを静かにさせました。

try{
	//ここにエラー起きそうな処理を書く。
}catch(e:Object){
	trace("●エラー!e="+e);
}

https://play.google.com/store/apps/details?id=air.retroweb.flappysimamura.production&0507n6

報酬配布機能を強化

魔法石以外にも、コインやアイテムを配布できるようにしました。
https://play.google.com/store/apps/details?id=air.retroweb.flappysimamura.production&0507n5
f:id:hisashi_vc:20140507143853j:plain

カジュアルゲームでイベントを実現

初のイベントを開催しました。ウィークリーでイベント終了までのカウントダウンも実装。
無事終了し、成績上位者に報酬と賞状を配布しました(賞状はテスト用のデータのものです)
https://play.google.com/store/apps/details?id=air.retroweb.flappysimamura.production&0507n4
f:id:hisashi_vc:20140507143736j:plainf:id:hisashi_vc:20140507143743j:plain

自動アップデート機能を搭載

限界ギリギリまで、サーバー側で随時更新できるようにしました。
アプリ自体のファイル、ローカルファイル、キャッシュファイル、サーバー側ファイルで場合分けしてやり取り。

iPhoneは審査通るかな~

https://play.google.com/store/apps/details?id=air.retroweb.flappysimamura.production&0507n3

サーバー側のセキュリティ強化

そろそろユーザーデータが蓄積されてきたので、サーバー側のセキュリティを強化しました。
PHPのファイル数、そろそろ2ケタの大台に乗るかなw

https://play.google.com/store/apps/details?id=air.retroweb.flappysimamura.production&0507n2

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

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

新着情報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