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

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

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

モナー叩き完成しつつ、次なるゲーム開発段階へ

キャラが自由に動くモナー叩き完成→
ガチャ押しでクリア出来ちゃうことが判明→
爆弾も同時に出す→
やはり爆弾避ける以外ガチャ押し→
番号をふり、順番にモナーを押させる→
キャラの位置が複雑&動いててちょっと大変過ぎる→
タッチ・ザ・ナンバーゲームみたく並べてみる?←イマココ

そういえば昔務めてた会社が上場するらしいですね。ストックオプション(株券)持ってれば、今頃億万長者ですが、手元には薄給オブ・ザ・イヤーのトロフィーしかありませんw

f:id:hisashi_vc:20141121084021j:plain
f:id:hisashi_vc:20141121084100j:plain
f:id:hisashi_vc:20141121084120j:plain
f:id:hisashi_vc:20141121084132j:plain

AIR for iOSが開発不能になる、initial content not found の対応方法

新しいアプリを作るため、.flaファイルをコピーしてリネームして、元のswfを消して作業を始めたら、パブリッシュ時に必ず下記エラーで何もできなくなりました。何処を修正しても無駄w

ムービープレビューが終了しました。initial content not found

最終的に、新規flaを作って、そこにライブラリ内全コピーしたら治りました。謎過ぎエラー

AIR for iOSで、本番環境にてas3crypto.swcのBase64がバグった

タイトルの現象ですが、やはりデプロイタイプをApple App Storeにすると発生する謎バグでした。as3crypto.swcを使わず、.asファイルに下記のBase64を直書きしたらなおりました。謎だけど、対策としては、コンパイラのせいで何か起きた場合は、swcではなくソースで直接書くとなおる場合があるのかも。

Base64.as - as3crypto - Cryptography library for ActionScript 3, including partial TLS 1.0 support - Google Project Hosting

AIR for iOSで、本番リリース後のみに発生した恐怖の謎エラー原因

AdobeAIRアプリiPhone版で、リリース後のみバグる恐怖の謎error原因がわかりました。なお本番用APIがらみとかではないです。

原因はデプロイタイプにありました。テスト系のデプロイタイプ(アドホック含む)ではバグらないのに、最終的な書き出しモードであるApple App Storeだとバグる場合が! なぜか後でnewしたMovieClipがnullになる場合がありました。

distributionのプロビジョニングファイルを使った、本番用の最終書き出しは、公開するまで実機チェックできないので、この謎現象を知らないとヤバいですね~

f:id:hisashi_vc:20141117131234j:plain

iPhoneアプリ審査が速くなるかもしれない裏ワザ?

複数のアプリを申請したら、どうやら早く審査が始まったアプリ(新規申請ではなくリジェクト再申請)と同時に、普通は時間のかかる新規申請アプリの審査も開始されました。これを利用すれば、審査がはかどるかも。

そして新規の方が先に審査終わってリジェクトされたw

新アプリ「空から女の子が!」をAndroid公開申請しました

今日中には公開されるかな~
今回はゲームアプリ開発(企画&デザイン&開発)に、実働1週間(7日)くらいかかりました。

https://play.google.com/store/apps/details?id=air.retroweb.skygirl

iPhone版の申請もせねば。
デザインだけガワ変え展開とかもしたいなあ。
あ~日曜がおわる~~
しかし次なるやるべきことをやらねば~~


ストア用にこしらえた説明画像たち

f:id:hisashi_vc:20141109155336p:plain
f:id:hisashi_vc:20141109155343p:plain
f:id:hisashi_vc:20141109155351p:plain
f:id:hisashi_vc:20141109155406p:plain
f:id:hisashi_vc:20141109155417p:plain
f:id:hisashi_vc:20141109155424p:plain

最近作ったゲーム→空から女の子が!

AIR for AndroidでAdobeの仕様超え巨大アイコン対応&ネット情報で間違っていたこと

これだけです。

1.xmlで144と192pxのアイコンを追記
2.xmlを読み取り専用にする
3.アプリの書き出し。


これでFlashProffesionalでは書き出し設定のない144サイズのアイコンのみならず、Adobeの仕様範囲外サイズアイコンの192pxつまりxxxhdpiサイズもapk内に書き出されました。

またネット上の情報として間違っていたのは、アイコン画像を「含めるファイル」に設定するという点。コンフリクトエラーでapkすら書き出されなくなり悩みましたが、含めずに上記だけで解決

f:id:hisashi_vc:20141109142628j:plain

なお含めた場合は「使用方法エラーです (引数が間違っています)。」「~have conflicting package paths~」みたいなエラーが出ます。

Flash ProfessionalでAIR for Androidの限界を超える方法(例えばiconなど)

Flash ProffesionalでのAndroidスマフォアプリゲーム開発は迅速で良いですが、アイコン制限が96pxというのがタマに傷。これでは新しい携帯では、アイコンサイズが小さく汚くなってしまいます。そこでその限界を超える方法を考えました。

1.apkを解凍&編集&再圧縮できるソフトでapkを解凍
APK-Muliti tool
APK-Multi-Tool Windows Version 1.0.11
→右上の広告カウントダウンが終了したら、SKIP ADでDL開始
→なおApkManagerは古いソフトなので注意。APK-Muliti toolを使う。

2.
APK Multi Toolを使うためにイチからセットアップしてみた(その3) | rhasm.net/blog
↑とかをみて、apkを解凍し、編集できる状態にする。

3.APK-Multi-Tool→projects→(あなたの.apkファイル名のフォルダ)→res→drawable-xxhdpi
icon.pngのアイコンサイズを、144x144のもので上書き

4.再びAPK-Muliti toolに戻り、apkを再圧縮して完成!


これなら未来に出てくる、より新しいアイコンサイズへの対応や、apkいじらないとどうしようもないけどAdobeが未対応な部分も、色々とどうにかできそうですね。

f:id:hisashi_vc:20141108192907j:plain

アプリ開発で、ツイートなどの完了通知が取れないときの裏ワザ

結果画面のシェア後に、リワード報酬を上げようとしたら、なぜかtweet完了通知が取れずに断念!…かと思いきや、キャンセル通知だけは取得できたので、ツイートが開かれてかつ、キャンセルされなかった場合に報酬をあげるようにしたら、完了通知と同じ挙動になりました。

f:id:hisashi_vc:20141106133816j:plain

iPhone開発のローカル通知で通知ウィンドウ(文章)が出ないバグ原因と、その解消法

どうやらローカル通知のメッセージに、半角記号があると通知音とバイブは動くけど、肝心のメッセージが表示されないようですね。。半角の%でそうなりました。全角の%だと動きました。他の半角文字も同じように気を付けた方がよいかも。

初のレベニューシェアゲーム完成&新ゲーム開発開始

タイトルな感じですが、また新ゲームアプリの開発を開始しました。前作(っていってもまだ出てないけど)と同じくネタ系ミニゲームですが、今回はデザイナーも自前。週末に京都(20年ぶり)と大阪(初体験)に行くので、それまでに完成させたいw

f:id:hisashi_vc:20141029141502j:plain

無駄にデータのコピペ

		public static const _charaDatas:Array = [
			//P1
			{name:"青い少女", frame:1, score:100, rare:1, limit:1, damage:-1}, //青い少女
			{name:"赤い少女", frame:6, score:100, rare:1, limit:2, damage:-1}, //赤い少女
			{name:"緑の少女", frame:4, score:100, rare:1, limit:2, damage:-1}, //緑の少女
			
			{name:"黄色い少女", frame:2, score:100, rare:1, limit:2, damage:-1}, //黄色い少女
			{name:"白い少女", frame:7, score:100, rare:1, limit:2, damage:-1}, //白い少女
			{name:"黒の少女", frame:10, score:100, rare:1, limit:2, damage:-1}, //黒の少女
			
			//P2
			{name:"ピンクの少女", frame:3, score:100, rare:1, limit:2, damage:-1}, //ピンクの少女
			{name:"紫の少女", frame:9, score:100, rare:1, limit:2, damage:-1}, //紫の少女
			{name:"銀の少女", frame:11, score:200, rare:2, limit:10, damage:-3}, //銀の少女
			
			{name:"金の少女", frame:12, score:300, rare:2, limit:10, damage:-3}, //金の少女
			{name:"虹の少女", frame:8, score:500, rare:3, limit:20, damage:-3}, //虹の少女
			{name:"ズボンの少女", frame:15, score:500, rare:3, limit:30, damage:-5}, //ズボンの少女
			
			//P3
			{name:"野生の少女", frame:13, score:500, rare:3, limit:30, damage:-5}, //野生の少女
			{name:"魔女の少女", frame:14, score:500, rare:3, limit:30, damage:-5}, //魔女の少女
			{name:"おばさんの若い頃", frame:16, score:500, rare:3, limit:30, damage:-5}, //おばさんの若い頃。
		
			{name:"姫", frame:18, score:1000, rare:4, limit:50, damage:-10}, //姫(クラリスかクシャナ
			{name:"センターアイドル", frame:17, score:1000, rare:4, limit:50, damage:-10}, //センターアイドル
			{name:"翼人の少女", frame:19, score:10000, rare:5, limit:100, damage:-50}, //翼人の少女
			
			//P4
			{name:"たくましいおばさん", isEnemy:true, frame:20, score:0, rare:1, limit:3, damage:30}, //たくましいおばさん
			{name:"ロボットソルジャー", isEnemy:true, frame:21, score:0, rare:1, limit:3, damage:33}, //ロボットソルジャー
			{name:"ロボットソルジャー(太古)", isEnemy:true, frame:22, score:0, rare:1, limit:3, damage:33}, //ロボットソルジャー(太古)
		
			{name:"青二才", isEnemy:true, frame:23, score:0, rare:2, limit:10, damage:24}, //青二才
			{name:"葬式帰り", isEnemy:true, frame:24, score:0, rare:2, limit:10, damage:24}, //葬式帰り
			{name:"将軍", isEnemy:true, frame:25, score:0, rare:2, limit:10, damage:24}, //将軍
			
			//P5
			{name:"石版", isEnemy:true, frame:26, score:0, rare:3, limit:20, damage:45}, //石版
			{name:"ブタ", isEnemy:true, frame:28, score:0, rare:3, limit:20, damage:45}, //ストーカー or ブタ
			{name:"ウニ", isEnemy:true, frame:31, score:0, rare:3, limit:20, damage:45}, //やばそうなマリモ
		
			{name:"王なる蟲", isEnemy:true, frame:27, score:0, rare:4, limit:50, damage:80}, //王なる蟲
			{name:"巨神マン", isEnemy:true, frame:29, score:0, rare:4, limit:50, damage:99}, //巨神マン
			{name:"空飛ぶ島", isEnemy:true, frame:30, score:0, rare:5, limit:100, damage:100}, //空にある島
			
		];

ゲームアプリの実装完了!(実働3日)

週末から開発開始した、ネタ系ミニゲームアプリの実装が完了しました。
あとはデザイナーさんに見て頂いて、絵があがってきてら素材差し替えや調整。次はイベントの原稿を書き始めなければ。

週末は生まれて初めて競馬場に行きました。府中にある東京競馬場。想像の5倍くらいデカかった。客は丹下団平みたいな人ばかりかと思いきや、そんなこともなくw
凄い熱気の中、研ぎ澄まされた馬が滑走していくのは、見ていて感動しますね。
馬券買うのも生まれてはじめて&初勝利。もっと賭けておけばよかったw
大きな賞のときには、また行きそう。

f:id:hisashi_vc:20141027193407j:plain

新アプリゲームの開発を開始して、1日で70%くらい作成

次は1発ネタ系カジュアルゲームです。今回はデザイナーの方について頂いているので、とりあえずこっちで作れるところは全部作って見てもらう予定です。そんでデザイン素材もらったら差し替え。以前作ったランキングシステムもこの機会にライブラリ化。ランキングのスコアの感じはこんな感じです。

f:id:hisashi_vc:20141024182117j:plain

iPhone6対応itunes connect用のサムネイル生成PhotoShop batを公開

サムネイル生成が毎回めんどくさすぎるので、自分用に作成したものです。

http://hisapo.sakura.ne.jp/dl/iPhone_thumbnail_PhotoShop_bat.atn

こんなに必要

iPad 1024x768
iPhone4S 960x640 3.5インチ
iPhone5 1136x640 4インチ
iPhone6 1334x750 4.7インチ
iPhone6 plus 1242 x 2208 5.5インチ

1枚の画像から全サイズ生成されます。 

f:id:hisashi_vc:20141023003001j:plain