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

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

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

パワプロを抜いて、アプリランキング1位になりました

あわわわわ…。

無限ドブさらいのような一人アプリ開発者が一瞬掴んだ幸運か、それとも破滅の罠か。。

作ったアプリ
放置系モナー釣り - Google Play の Android アプリ

ひとまずAdobe AIR for Androidに感謝するばかりですが、まだ急上昇ランキングなので、次なるランキング制覇に向けて頑張ろう~。

f:id:hisashi_vc:20150618150828p:plain

作ったアプリ、急上昇ランキング4位 キタ――(゚∀゚)―― !!

RPGカテゴリにつづいて、スポーツカテゴリでも急上昇4位を体験することに恵まれました('A`*)カミサマッテイルンダナア

アプリのリンク
放置系モナー釣り - Google Play の Android アプリ

ちょっとこのゲーム、ユーザー負荷が高くて反省点まみれですが、またがんばるんや~~

ランキングの記念キャプチャ。目指せパワプロ

f:id:hisashi_vc:20150617232720p:plain

自作アプリ『放置系モナー釣り』 初動アクセスを公開

伸びは良いように見えますが、果たして。。
海外のレビューではタイ人にタイ語で「キター!」とか言われました。
アップした後に何度も修正対応に追われてますw

f:id:hisashi_vc:20150617180520p:plain

ゲームはこちら
放置系モナー釣り - Google Play の Android アプリ


しかし前作のTapRPGより、釣りゲーの方がエンタメ性と収益性低そうでまずいな。。
TapRPGにダンジョン追加したい。その後、東方アプリに挑戦したいなあ。


ラブライブ劇場版見ました。ミューズの壮絶な解散でショック死しそうですが、がんばりますw

ことりちゃんが見た目も声もフィギュアの出来も良すぎて復活してきた
figma ラブライブ! 南ことり ノンスケール ABS&PVC製 塗装済み可動フィギュア

ホノカチャンと、ことりちゃんと、ぱなよのCVは犯罪的に中毒性ありますね。他のキャラも良いけど。

てかこの人気絶頂状態で、マジで解散するのか~~~~

購入したパンフ

f:id:hisashi_vc:20150617181157j:plain

放置系モナー釣り iPhone版リリース&説明UIなど追加

iPhone版も作りました。今月中には公開されるかな~。
Amazon版もだしたけど、修正したから再申請しなくては。。

f:id:hisashi_vc:20150616142109p:plain


ついでに操作説明UIを冒頭に追加しました。
&操作など改善しました。

f:id:hisashi_vc:20150616142516p:plain

ショックを受けながら、それをニトロにして進むんやで~~。
にこにーとかよちんで脳内であいだばさみになりながら頑張るんやで~~。



放置系モナー釣り - Google Play の Android アプリ

【悲報】つくった釣りゲー、基本的な操作方法すらわからないと言われる

リリースするも、同志からの第一声に崩れ落ちる。
画像つきチュートリアルをつけてから吊るかな。。

ラブライブのかよちんに癒してもらおう。ダレカタスケテー


放置系モナー釣り - Google Play の Android アプリ

放置系モナー釣り 完成&Android版申請しました。

先週前半に完成させる予定が土曜日になり、土曜に完成させる予定が日曜になり、日曜に完成させる予定が、月曜の午後になってしまった。。

f:id:hisashi_vc:20150615160155p:plain

今日中には公開される予定です。。

放置系モナー釣り Android版


火だるまになりながら、バランス調整、UI調整、課金テストしましたw
いや~、汎用関数はCommonライブラリに統合しておかないと、毎回つくる必要がでてきてヤバいですね。次回からは楽になるはず。。そもそも今回は出だしの企画が紆余曲折してめちゃくちゃだった。。次回にフィードバックしようw

とにもかくにもこのアプリは反省点まみれで、前作のモナータップRPGは超えなさそうだから、また頑張ろう~(その前に過去の修正とか、やることあるけど。。w)

1点だけ個人的進展?をあげるとするならば、ゲージとボタンを融合させたところ(ショップやクエスト内ボタン)は、今後も使って行こうと考えてます。進展が一目瞭然になるのでw

とりあえずいつものビタミン剤飲んで、一旦回復しようw
Amazon.co.jp: ネイチャーメイド マルチビタミン&ミネラル 200粒: ヘルス&ビューティー


f:id:hisashi_vc:20150615160549p:plain

釣りモナー そろそろ完成2 ボス戦追加など。。

完成やー!と思ったら、あまりにつまらなさすぎなうえに、ゲームとして破たんしてたので、BOSS戦など追加してます。。自分で作ると勉強になるなあ。前頭葉に忍耐力もつきますw 過去アプリの修正や中国進出も進めたいのに時間がなひ。。!

動いて飯を買うのもめんどいので、エビオス錠でおぎなってますw

www.amazon.co.jp


f:id:hisashi_vc:20150614125619p:plain


作ったゲームの定期リンク。ダンジョン追加したい。。

放置系モナータップRPG - Google Play の Android アプリ

iTunes の App Store で配信中の iPhone、iPod touch、iPad 用 放置系モナータップRPG

釣りモナー そろそろ完成 グローバル対応など。

クエスト・ショップ・チュートリアルをひたすら英語化。ひ~っ、1日が暮れていく~っ。もっと英語勉強しておくんだった。。やること多すぎるから、土日もがんばらねば・・w

学生時代に意識高い系のふりして、TOEICとかやっておくんだった。。

Amazon.co.jp: TOEIC


▼自転車の鍵買いました。ダイヤル式なので、鍵を毎回ポケットの中から探す苦行から解放されますw
60センチと長すぎないのもグッド。重くないし、使いやすい長さ。

Amazon.co.jp | DOPPELGANGER(ドッペルギャンガー) ダイヤルコンボワイヤーロック DKL101-BK ブラック 【パスワード自由設定型】 ダイヤル式コンパクトワイヤー錠 全長650mm 断面径12mm 自転車・バイク盗難防止用 | スポーツ&アウトドア 通販


▼今日はユーザーからの要望に答えて作業したら、感謝の返信が来て感動しました。ありがたや。


▼評価が300件到達したらしい、あわわわわ。運ばかりですが、もっと頑張らねば。
f:id:hisashi_vc:20150613012604p:plain

到達したゲームの定期リンク

放置系モナータップRPG - Google Play の Android アプリ

iTunes の App Store で配信中の iPhone、iPod touch、iPad 用 放置系モナータップRPG



▼最近はラブライブの声優動画ばかり見ながら作業してます。明日はいよいよ映画公開ですね。前売り券あるけど、絶対込んでるので、少し落ち着いてから行こうかな~。

▼英語対応した画面を1枚公開~
f:id:hisashi_vc:20150613012221p:plain

1か月でアプリダウンロード数表記が、1万になりました。

Android単体で、5000~1万DL表記に切り替わりました。1日数DLの3年越しとかではなく、1か月で到達したのでありがたいです。しかし次は閑話休題的な謎アプリなので、落差でショック死しないようにせねばw 自己満謎アプリなのに日数かかってしまい、なおショック死の模様ですが、日々がんばります。

f:id:hisashi_vc:20150612102555p:plain


達成したゲームアプリ

放置系モナータップRPG - Google Play の Android アプリ

iTunes の App Store で配信中の iPhone、iPod touch、iPad 用 放置系モナータップRPG


そういえば高いノーパソ買ったのに、HD容量がやたら低いのがバレるとショック死しそうなので、64GBのSDメモリーカードをアキバのヨドバシで買ってドーピングしたんですが、Amazonみたら同じ値段で128GBが変えるのに気づき、ショック死乱舞の毎日ですw てか128GBのメモリーカードが普通の値段(数千円)で売ってるのか。。昔を考えると凄過ぎる。

www.amazon.co.jp

自転車を買いました&欲しいスーパー自転車アイテム

引き出物の自転車(無料)がバグってきたので、クロスバイク買いました。

2万円台中盤で、12キロ代で、サスペンション付きで、秋葉で乗ってても恥ずかしくない黒ベース+レッドピンク。前の半端な折り畳み自転車より断然速くなりました。軽いので漕ぎ出しも良好。

これでミニマライズ(なるべく金使わない)ライフがはかどります。デスクワークばかりなので、運動自体ありがたいです。何より自転車漕いだ日は、よく眠れるようになりましたw

Amazon.co.jp | DREADNOUGHT(ドレッドノート)DN8001 (ブラック×オレンジ) サスペンション&シマノ7段変速 700C軽量アルミフレーム クロスバイク自転車 コイルロック+LEDライト付き | スポーツ&アウトドア 通販


自転車に乗り出したら、欲しいグッズが山盛りなことに気づいたので紹介。

▼これはなんと100g以下のサドルです!フルカーボンで3000円とか安すぎる。カーボンなんて、F1マシンと戦闘機のイメージしかなかった。しかも高弾性と、神仕様。アプリ当たったら欲しい。。

Amazon.co.jp | 超軽量 98g 高弾性 フル カーボン シート サドル レール ロングベースサドル ロードレース | スポーツ&アウトドア 通販


▼これは椅子自体をサスペンション化する夢サドル棒です。アルミ合金製なので軽いのも魅力。切れ痔や前立腺肥大も怖くないw

Amazon.co.jp | DOPPELGANGER(ドッペルギャンガー) ハイブリッドサスペンションシートポスト DSP095-BK ブラック φ27.2×350mm プリロード調整 アルミ合金製 | スポーツ&アウトドア 通販


▼これは軽くて回転力もあるアルミペダル。超足回りなので、効果も期待できます。足回り重要性の例えで凄くわかりやすかったのが、1キロの靴が100グラムになったら、超足早くなるという説明。 1000円代なので買い易いのも魅力。

Amazon.co.jp | MKS(三ヶ島) アイシーライト [IC-LITE] ペダル ブラック | スポーツ&アウトドア 通販


高価な自転車はさすがに買いづらいですが、パーツ別なら超高価級のアイテムでも買い易いですね。まるでRPGの装備品みたいな感じ。アプリが当たったら買おうw




最近つくったゲームアプリ

放置系モナータップRPG - Google Play の Android アプリ

iTunes の App Store で配信中の iPhone、iPod touch、iPad 用 放置系モナータップRPG

アプリ開発で、ユーザーからデータ復旧を求められた場合 サンプルソース

アプリを開発していると、課金や障害や端末事情で、ユーザーからデータ復旧を求められる場合があります。データが破損した場合も。

ソシャゲならサーバーデータ変更して終了かもしれませんが、普通のアプリはユーザーの端末内にセーブデータなどを保存しているので、ますますどうしようもない感じがします。

その状況を打破すべく、フロントエンド(ActionScript)と、サーバーサイド(PHP)のサンプルプログラム&キャプチャを公開しましたのでどうぞ~。データファイルはuid(ユーザーごとに割り振るユニークID)と同じファイル名を、PHPと同じ階層においておけばOK。add:が先頭についてるデータはインクリメントの指定です。復旧が済めば自動でリネームされる(データファイル名がend~となる)ので、進行状況も一目瞭然。変数や関数は名前からなんとなく判断してくださいw 一応グローバル対応もしてます。 loadTxtはAPIにPOSTでアクセスしてるだけで、showDialogは英語のままですw 最後に再起動させてるのは、その方がデータ的に安全だからです。

これでほぼすべてのデータがどうにかなるので、課金処理エラーにも辟易しなくて済みます。

・・・しまった!こんなのばかり作ってしまって、肝心のゲームが足踏み状態にw

そういえば今日未明に、iOS9やらAppleの新しげな取り組みが発表されまくってましたね。AppleWatch入手できたらアプリ作ってみたいなあと思ってたら、もう本が発売されてるw

www.amazon.co.jp



▼データファイル サンプル UTF-8で保存する

add:mahouseki=100
userLv=99

▼フロントエンド サンプルコード

Btn(m.BtnRepair, onRepair);

function onRepair():void{

	//ローダー表示
	showLoader();
	
	var loaderTimer:Object = {};
	
	T(loaderTimer, { d:8, st:function():void{
		endLoader();
		showDialogNetworkError();
	}});
	
	//ここでAPI(repair.php)にアクセス
	
	var url:String = _DOMAIN+"api/repair/repair.php";
	
	loadTxt(url, onLoad, onError, { 
		uid : _uid
	});
	
	function onLoad(s:String):void{ trace("L45 onLoad s = " + s);
		RT(loaderTimer);
		endLoader();
		
		var s2:String = RemBlank(s);
		
		if(!s2 || s2.length <= 2){
			
			showDialog1(_isEnglish ? "No recovery data for now." : "現在復旧データはありません。");
			
		}else{
			
			showDialog2( _isEnglish ? "Do you want to recover the data?" : "データを復旧しますか?", onRecovery);
			
			function onRecovery():void{

				//リカバリー処理					
				var lineArray:Array = s.split(_LINE);
				for(var i:uint=0; i<lineArray.length; i++){

					var s3:String = lineArray[i];
				
					if(RemBlank(s3)){
						
						var key:String = s3.split("=")[0];
						var value:Object = s3.substr(key.length+1);
						
						if(key.substr(0, 4) == "add:"){
							//インクリメントの処理
							key = key.substr(4);//4);
							addLocal(key, value);								
						}else{
							saveLocal(key, value);								
						}
					}
				}
				
				flushLocal();
				
				showDialog1( _isEnglish ? 
					"Done!\nApp is automatically terminated.\nPlease restart app.\nSorry to trouble you." : 
					"データを復旧しました!\nアプリを自動的に終了します。\nお手数ですがアプリを再起動してください。", onReboot, onReboot);
				
				//データ終了通知の送信
				loadTxt(url, function():void{}, null, { 
					uid : _uid, 
					isEnd:true
				});
				
				function onReboot():void{
					NativeApplication.nativeApplication.exit();
				}
			}
		}
	}
	
	function onError():void{ trace("L49 onError");
		RT(loaderTimer);
		endLoader();
		showDialogNetworkError();
	}
}

▼サーバーサイド repair.php サンプルコード

<?php
mb_internal_encoding('UTF-8');
$ua = $_SERVER['HTTP_USER_AGENT']; 

//if(!strstr($ua, 'AdobeAIR') && !strstr($ua, 'Shockwave Flash')){ return; }
//if(isset($_POST["devType"])){

//復旧用データとなるテキストをロードして表示する。
if(isset($_POST["uid"])){
	
	//レストアファイル存在チェック
	if(!file_exists($_POST["uid"])){

		//存在しなければ、何も返さない
	}else{
		//存在していればロード
		echo file_get_contents($_POST["uid"]);
		
		if(isset($_POST["isEnd"]) && $_POST["isEnd"]==true){ //復旧完了時の処理
			//ファイル名変更 end.~
			rename($_POST["uid"], "end".$_POST["uid"]);
		}
	}
}

?>

▼画面キャプチャ
f:id:hisashi_vc:20150609203856p:plain



最近つくったゲームアプリ

放置系モナータップRPG - Google Play の Android アプリ

iTunes の App Store で配信中の iPhone、iPod touch、iPad 用 放置系モナータップRPG

釣りゲーのアイコンを作成しました。

本当はモナーが釣られる側なんですが、まあいいかw
これを釣竿と言い張る勇気が欲しい。

f:id:hisashi_vc:20150609154018p:plain


毎回やっつけなので、そろそろアイコン作成の勉強もせねば~

www.amazon.co.jp



最近つくったゲームアプリ

放置系モナータップRPG - Google Play の Android アプリ

iTunes の App Store で配信中の iPhone、iPod touch、iPad 用 放置系モナータップRPG

成功する人と、しない人の違い

まだまだ成功までの道のりは長いですが、今まで色んな人や会社を見てきて、「成功する人としない人」の違いは、これしかないなあと思いました。


『確立の高いこと』を『やり続けている』


逆にしない人は、確立の低いことをやっているか、すぐやめてしまうかのどちらか(自分の反省も踏まえつつ・・w)。『やり続ける』が前提のロジックなので、目先の結果に一喜一憂してしまう波も、少しは減らせます。

というわけで、現在の手持ちカードで、なるべく確立の高い成果物を、出し続けようと思います~。
松下幸之助でも読んで、さらに確立を高めよう。

道をひらく



今日のアプリ開発は、ショップやクエストUIと、そのロジックを地道に作成。作業中にウケそうなゲームアプリを思いついたけど、まずは着手中のアプリを世に出して、ショックを受けてからw


f:id:hisashi_vc:20150608190712p:plain


ご利益ねらい自作アプリリンク

放置系モナータップRPG - Google Play の Android アプリ

iTunes の App Store で配信中の iPhone、iPod touch、iPad 用 放置系モナータップRPG

個人アプリでMAU1万5千人到達しました

いわゆる月間アクティブユニークユーザー数です。
また日々こつこつ積み重ねよう~。

f:id:hisashi_vc:20150608003800p:plain

ユーザー数に貢献したゲームアプリ

全然関係ないけど、なでなで萌えスマフォアプリゲームCMの2人目が可愛い過ぎる('A`*)ナデナーデーナーデー♪

作ったゲームをプレイしあうことで、初めて気づいた落とし穴 ~オリジナルゲームを作るべきか~

友人のゲームが完成しそうなので、テストプレイさせてもらいました。

そして、「ここ強すぎてすぐ死ぬ~」とか、「攻撃タイミングがわからない」とか、普通のプレイ感想を述べました。

ところが友人は、「え、なんでそこでそう動くの?」「マジで、その動作伝わらないの?!」「あ~、そう動いちゃうのか~~」と、相当意外そうでした。

プレイヤーである自分としては、誰もが言いそうな、素直な第一感想を述べたまでだったので、作り手サイドの反応が謎だったんですが、今度は立場を逆にして、自分の作りかけアプリをいじってもらったところ。。

ええええー!

なぜそんな操作をするんだ!、なぜそこでそうしないんだ!!

・・・そうです、立場が逆転した途端、自分も同じ反応をしてしまったのです。自分の脳内では、ユーザーは当然こう操作するだろう、これは見ればわかるだろう、というのが、まったく通用しなかったのです。ちなみにシンプルなカジュアルゲームでした。自分の親の世代が謎操作するというのならまだしも、自分とおなじ世代の、ゲームやアプリを少なからず体験しているプレイヤーが想定外の操作をしたので、自分の未熟さを痛感しましたw とくにオリジナルルールのゲームだったので、なおさらです。

思い出されたのが、ニコニコ動画と角川の会長の、川上量生が新しく出した本「コンテンツの秘密 ぼくがジブリで考えたこと」の記者会見か何かで、「コンテンツはもうだいぶ前からネタが出尽くされていて、特にゲーム何かほとんど出尽くされてます」とか、SEGAの仕事やってたくらいの説得力で述べてたので、ゲームのルールはゼロから考えようとせず、既存ジャンルの進化前提で考えた方が、ユーザーに混乱を招かずよさそうですね。。

www.amazon.co.jp