2015年6月27日

JavaScriptでスマホゲームアプリを作る - Unity編

前回のCocos2d-JS編からだいぶ間が空いてしまいましたが、今回はUnity編です。

Unityのバージョンも5になって、新しいGUI機能が追加されていたりして2dゲームの作成もかなりやり易くなっている様です。

今回Unity5を使って出来たものはこんな感じです。



https://github.com/mikehibm/15puzzle-unity


● 新GUI(uGUI)の使い勝手


定番のNGUIを使った事が無いので比較できないのですが、uGUIは特に問題無く使えそうです。
気になるマルチ解像度への対応も簡単。どんな画面サイズでもボタンを常に右上に置きたい、という場合でもアンカーのプロパティ設定だけで行けるので気に入りました。今回のアプリではタイトル画面のメニュー、ゲーム画面のホームボタンとリスタートボタンをuGUIで作成しています。



● Tweenライブラリが色々あって迷う


パズルのピースを移動する時などにアニメーションをするためのTweenライブラリですが、いろいろと選択肢があるので結構迷います。

今回は LeanTween というのを使ってみました。他に iTween, Hotween なども良さそうでした。

LeanTweenは単体のアニメーションを実行するだけなら使い易いのですが、複数のアニメーションを組み合わせて順次実行し、それをさらにループさせたいという様な場合にコールバックを多段に繋がないと行けなくなるのでちょっと面倒です。


● UnityのJavaScriptは普通のJavaScriptではない


これは一番困った点かも知れません。UnityのJavaScriptは、C#にJavaScriptの皮を被せた様な妙な言語でした。。。

Unity の JavaScript でよくわからないことメモ

こんなヘンテコな言語に慣れるぐらいならいっそC#で開発した方が良いと思います。次にUnityで作る時は迷わずC#ですね。


● Cocos2d-JSと比較した感想


GameObjectとComponentの関係、GameObjectにスクリプトを貼り付けて行くやり方を分かった瞬間に、「Unityええやん!」と思ってしまいました。

Coco2d-JSと比べても、もしかするとUnityの方が生産性が高いかも。。。
今まで1年以上もCocos2d-x/JSで開発して来た私ですが、「もっと早くUnity始めてれば良かった」という気もちょっとして来ました。

次はUnity/C#でもうちょっと複雑なものを作って見ようかなと思います。






以上!

2015年4月11日

ブラウザさえあればASP.NETアプリの開発が出来る時代に既になっていたという話

『Visual Studio Online Monaco』の開発環境が素晴らしい。


まずは、Azure Web Siteの管理画面でVisual Studio Onlineを有効にする。


「Edit in Visual Studio Online」というメニューが有効になるのでそれをクリック。



1. ブラウザ内でソースコードの編集が出来る。



サクサク動くし、もちろんコード補完もバッチリ。




2. ブラウザ内でコンソールを開いて各種コマンドが使える。

gitコマンドで色々出来る。node が入っているので npm も使えるし gulp や bower も使える。まだそんなに使い込んでないですが、とりあえず色々出来そうな予感。




3. gitの差分はGUIで見やすく表示してくれる。



4. コンソール内で「msbuild」と打ち込めばクラウド上でソリューションをビルドしてくれる。



5. 一つのWebサイト内に複数のアプリケーションを配置出来る。

メインのサイトと管理用サイトを分けたり、WebAPIだけ別アプリケーションにしたり出来る。



6. DB接続文字列やアプリケーション設定はAzureの管理画面から上書き出来る。

ソース上のWeb.configファイルにはとりあえず仮の値を入れておいて、別途Azure Web Siteの管理画面から設定すれば実行時にはそちらの値で上書きされる。これは便利。


正直、特に4番のビルドについては「Visual Studio Online (MonacoではないTFSのオンライン版)」のCI機能を使わないと出来ないとさっきまで誤解していました。

この動画を見て初めて知りました。

Getting started with ASP.NET | Visual Studio Online "Monaco" | Channel 9

ブラウザ内のコンソールで「msbuild」と打てばクラウド上でビルドが出来るなんて!
衝撃でした。笑)

ソリューション内に複数のアプリケーションがある場合はAzure Web Siteの管理画面で仮想アプリケーションとしてそれぞれのフォルダを指定してやるだけでOK。

ローカル環境にVisual Studioを入れなくてもブラウザだけでここまで出来るんなら、もうPC無しでいいんじゃない? という気がしてくる。

Visual Studio Online Monaco、すごい!





* 4/16/2015 追記:

もう少し「Monaco」を使ってみて気付いた点です。

- コード補完はまあまあだけどやっぱりローカルのVisual Studioの方が快適。

- Monacoではソリューションファイル(*.sln)やプロジェクトファイル(*.csproj)の作成・変更が難しい。

例えばC#のソースファイルを新規作成してプロジェクトに追加したいと思っても、ローカルのVisual Studioの様に右クリックして「プロジェクトに含める」を選ぶ様な事は出来ません。プロジェクトファイルを手動で編集すればなんとかならない事はないですがかなり面倒です。

この辺りが今後改善されればさらに便利になりそうですね。
(と言っても次期のASP.NETではプロジェクトファイル自体が必要無くなるらしいので、別に気にしなくてもいいのかも。)








 .



2015年3月12日

iOS用AdMobの最新版は初代iPad非対応に

公開しているiOSアプリを更新したら、初代iPad(iOS 5.1.1)でテストした時だけエラーで落ちる様になってしまって焦りました。

エラーログを見るとどうやらAdMobに原因がありそうなのでGoogleのページを見た所、やっぱりAdMobの最新版(7.0.0)からはiOS 5がサポート対象外になっていました。

リリースノートを確認していなかったのがダメでした。反省。

AdMob 7.0.0からはiOS5がサポート対象外に。
https://developers.google.com/mobile-ads-sdk/docs/admob/ios/rel-notes

-ObjCリンカフラグが不要になった事やアプリに追加するファイルが一個だけになったのは嬉しい点ですが、iOS 5非対応化はちょっと悲しいです。


初代iPadは我が家では子供達がまだまだ使っているのでぜひ対応したかったのですが、Appleのページを見るとiOS 6を含めてもシェアはもはや3%以下との事。

iOS6以下の割合は3%
https://developer.apple.com/support/appstore/


AdMobのバージョンをひとつ前の6.12.2にしておくという手もあるのですが、ここはきっぱりとあきらめて自分のアプリの方もiOS 5は非対応とする事にしました。

そろそろ子供用のiPadも買い換えるかな。。。