イベントメモこの記事は公開されてから1年以上経過しており、情報が古い可能性があります。WiiUとNintendoWebFrameworkについて正直なところ、それぞれのセッションのまとめだけ書いておわり~としたいです。なんといいますか、自分用のメモとしてもちゃんと残しておきたいのでちゃんと書いてあります。Unity4から搭載された新しいアニメーションシステム(http://docs.unity3d.com/Documentation/Manual/MecanimAnimationSystem.html)Humanoidであれば腕や足、胴体、頭などがあり、それぞれに該当するオブジェクトを設定することで、Humanoid向けに作られたアニメーションがなんでも使える。(例えば、テストはわかりやすい様な人型モデルで、本番は着ぐるみだったりヒラヒラしてるようなモデルだったり)アニメーションのステート制御ができる。このセッションは始めにちょこっとだけ説明があって、あとはデモベースで進んで行きました。プロジェクトウィンドウでアニメーションを選択すると、プレビューウインドウから動きを確認できます。そのとき、0.3秒~1秒までの間をほげほげアニメーションとしてインポートというように範囲を選ぶことができます。インポートはAnimatorウィンドウにドラッグアンドドロップでできます。デモでは既にアイドル、走るのステートが登録されていました。ここに"スライディングでフェンスの下をくぐるアクション"を追加をしていきます。1.走るアニメーション時にキー押下でスライディングフラグを立てる2.スライディングアニメーション時に特定パラメータがしきい値を超えた時にColliderを無効にする3.Animatorウィンドウにアニメーションを放り込む4.スライディングフラグがON(事前に自前のスクリプトで定義していた模様)なら遷移するように設定5.Inspectorウィンドウからブレンド具合を確認6.ブレンドに不満があったら自分で調整をする7.特定のパラメータのカーブをアニメーションに合わせて調整するという流れです。Inspectorで確認したときに、足付近にIKピボットが表示されます。これはUnityが内部で自動で計算し、アニメーションが不自然に見えないように調整してくれています。アニメーションによってはそのミスマッチが発生することがあるので、その場合はブレンド具合を調整して直します。"フェンスに手をついて飛び越えるアクション"を追加していきます。終了時間))これはドアの開け閉めや武器を取り出す時のモーションなど、なんか色々使えそうです。(武器の場合は後述するIKリグの方がよさそう)新機能として、2Dブレンドツリーがあります。これは向きと速度のブレンドをスマートに行うときなどに使えるようです。アニメーションのレイヤを追加して"ダメージを受けて倒れる"動きをつけていきます。1.Animatorウィンドウから新規アニメーションレイヤーを作成する2.Maskオプションに、足、胴体、頭のマスクを設定2.Syncオプションの有効Maskオプションは、アニメーションの適用されるオブジェクトを指定します。Syncオプションは、別のレイヤーとアニメーションの同期をすることができます。要するに別レイヤーのステートマシンをまるまるコピーされてくるような具合です。これら2つを組み合わせることで、走りながら倒れていく、というような表現が簡単にできるようです。最後にIKリグを使った武器の装備を行います。1.武器をプレイヤーオブジェクト内に内包する2.アニメーションレイヤーを増やして、IKpassをONに3.AnimatorIKメソッドを定義して、そのなかでIKのポジションを設定するなお、このデモで使用したファイル一式はアセットストアよりDLできるようです。!どれだか分らなかったので、それっぽそうな公式ファイルを列挙しました。UnityでのメモリープロファイリングPro限定の機能ですが、UnityにはCPU時間やメモリ使用を確認できるツールが付属しています。これを正しく使うことで、どんなオブジェクトまたはどんな処理に対してCPUやメモリが割かれているのか、また、メモリリークなども分かり、どこがネックなのかというのがすぐにわかります。この講演では、タイトルにあるようにメモリの使い方について焦点があてられていました。マネージドとネイティブがあります。マネージド:Mono、GCあり、アセットやゲームオブジェクト、スクリプトなどネイティブ:Unity、GCなし、メッシュだとかエンジンの中身にかかってくるあたり。マネージドはヒープ領域が使われ、いっぱいになるまでもぐもぐしていきます。いっぱいになった所でGCが走り、解放されていきます。その際、フラグメントなどが発生し、その後のパフォーマンスに影響を及ぼす可能性があります。そのためプロファイル機能で確認できる"メモリアクティビティ"を低く保つことが重要だと言っていました。メモリアクティビティを低く保つにはどうするか。メモリリークに繋がる・Resources.UnloadUnusedAssets()を使用する例えば、WWWクラスを例にあげると、これは確実にDisposeを呼ぶ必要があります。マネージド部分はシンプルですが、内部のネイティブ部分ではあれこれとしているので、インスタンスを作るとググっとメモリアクティビティが増えます。Disposeを呼ばずに、nullを代入や放っておくのもよいですが、いつ解放されるかわかりません。AssetBundleで考えてみます。GameObject化これをプロファイラで確認すると、WWWインスタンス、AssetBundleインスタンス、内部のWebStreamインスタンス、テクスチャ等データという4つのものが発生します。そのためAssetBundle.Unload(false)およびWWW.Disposeを確実に呼び出す必要があります。テクスチャ等のデータが不要になった際には、UnloadUnusedAssets()を用いて排除する必要があります。・モバイルでのメモリープロファイリングUnityエディタではモバイル端末実機におけるメモリの状態を知ることができない。Unity側ではさっくりとプロファイリングし調整、実機を使ってより詳細なプロファイリングを行なう必要があります。http://u3d.as/content/unity-technologies/astro-dude/24Y・使っていないスクリプトがメモリに影響するかスクリプトに限らず、アセットで不要なものは除くのがオススメ。したらUnity側にバグがあるかもしれないので、再現性や情報があればバグレポートを出してください。・なぜ"OnGUI"がダメかOnGUIが定義されているだけで、GUI関連の様々なクラスがロードされてメモリもぐもぐしてしまう。それも毎フレーム実行されてしまうので、メモリだけでなくCPUももぐもぐされます。仮に空っぽのOnGUIでも、ifで処理をしないようにしたOnGUIでもダメです。してもOnGUIが必要な場合はプリプロセッサを上手く使って有効/無効を切り替えてください。・2Dアートツールとして、あなたにとって最高に使いやすいツールを使ってください・メタデータを上手く使用し、Unity側であれこれ度々追記することが少なくなるようにするといいでしょう・2Dのためにぜひともエディタスクリプティングをしてみてください。iPhoneでリアルタイムマルチプレイを実現!マルチプレイには「リアルタイム」と「非同期」の2種類があります。「非同期」ソシャゲや将棋など、リアルタイム性の少ないもの。Web技術の応用でできるので、オープンソースのライブラリなども多く扱いやすい。「リアルタイム」FPSや格闘ゲーム、今ここでオンラインの人がいるんだ!というもの。TCP/UDPの様に低レイヤの話であったりNAT貫通とかとか小難しい話が出てくる。クソゲー化、波動拳が入力後1秒で出て勝てるか)オープンソースは少なく、費用がかかってしまいがち。・便利な機能がたくさんあり、未経験でもデモはすぐに出来たという特徴があるようです。(一度あれこれ調べたはずなのですが、すっかり忘れてしまってました...)モバイル端末がホストになることは帯域や安定性からして非常に難しいようです。そこでゲームサーバを外部に用意して行う方法が求められ、条件に合うのがPhotonだったようです。PhotonはUnityとほぼ同じNetwork郡の命令を持っており、また料金もさほど高くないとのこと。Photonの構成はこうなっているようです。ReliableUDP/TCPクライアント:PhotonSDKライブラリライセンス形態はこうなっています。PhotonCloud:同時接続人数や転送速度に応じて金額が変わる。