万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

AssetStore 50%OFF

2012/6/23(土)まで
http://unity3d.com/unity/asset-store/

Unity serverメモ

❏NetworkView
NetworkViewがアタッチ(Component->Miscellaneous->NetworkView)されていたらtransform情報(position, rotation, scale)を観測する
→自動に送ってくれる
※サーバからクライアントへ送信。クライアントは送信してない。受信しかできない。

❏State synchronization” オプション
・ “Reliable compressed”をセット
 サーバでオブジェクトが15秒秒ストップしてたら、なにもデータ送らない。したら、同期データを送る。

・“Unreliable”をセット
 信頼できないが同期にかかわらずデータ送る。

・“Off”をセット
 同期をストップする。同期のデータを送らない。

RPCにはnetworkviewは必須!だが、“state synchronization” と “observed” のオプションは使用しない。

❏OnSerializeNetworkViewメソッド
MonoBehaviorのメソッドである。
networkviewをアタッチされているものでのチェックで

❏OnFailedToConnect、OnDisconnectedFromServer、OnPlayerDisconnected
MonoBehaviorのメソッドである

❏RPC

networkView.RPC("SetPosition", RPCMode.Others, transform.position);.

バッファ追加のRPCはユーザ生成に向いてる。

・種類

RPCMode.Server
RPCMode.Others
RPCMode.OthersBuffered
RPCMode.All
RPCMode.AllBuffered

cocos2d-xのBox2Dメモ

b2MouseJoint
マウスのジョイント
Jointで繋げられる


Aiming Study 4 Unity勉強会

URL:http://www.zusaar.com/event/275053
「オンラインゲームでAssetBundleを使う事例紹介」
株式会社Aiming リードエンジニア 細田幸治 @ppcende
細田MMORPGのサーバ書いたりしてる
AssetBundle 運用事例

■特徴
・概要
外部素材フォーマット
GameObject、Material、Prefabも入る
サーバなどに置いてアプリで読み込んで使う
AssetBundleの作成はProだけ

アップデート時のコンテンツ追加に便利
注意点がある
ポイントを抑える

・メリット
1.アプリケーションサイズを小さく出来る
2.Apple審査をしなくてもコンテンツを追加できる
3.キャッシュが効く
4.アプリ本体とAssetBundleとかでワークフロー(プロジェクトが分けられる)
キャラの使い回しとか

・デメリット
デメリットが多い
1.他の素材方式よりもメモリを消費する
AssetBundleクラス自体がアセットを内包した状態でメモリに載る
MaterialなどをLoadするとメモリに載る

2.非同期読み込みになるので”待ち”の実装が必須
Resources.Load・・・待ち時間なし
待時間のために複雑になるよ

3.津新状況によっては読み込み内
電車などで通信できないとできない

4.プラットフォーム間で互換がない
Androidスタンドアローン〜〜で別ファイルフォーマット
ビルド時にプラットフォームを指定して書きだす必要がある
Editorではどのフォーマットでも読み込める
※Editorならどのフォーマットも読み込める

5.バージョンを指定しても更新されない時がある
ブラウザyサーバのキャッシュに載るため、更新したくても上手く反映されない場合がある

6.スクリプトはAssetBudleに入れられない 大きな問題
キャラのAIとかできない。unreferenceになる
スクリプトでAddComponentで行う
iPhoneではコードの動的生成はNG

7.Unityがバージョンアップすると読み込めなくなる(3.5.1から下位互換された)

■Lord of Knights
・何のために使ったか?
追加コンテンツ(カードイラストなど)
アドバンスポップアップ素材
アプリサイズ削減(BGM,背景画像、カード枠、容量が大きい素材たち)

AppleStoreの3G回線でのダウンロードサイズ制限が30MB

・どう実装するか?
 メモリ管理
 最初は1つのAssetBundleに複数素材を入れていたが、ばらばらに分けて読み込み時のメモリを削減
 メモリが少ないデバイス(iPhone touchなど)の場合は使用メモリが120MB以上になったらシーン切替時に
AsssetBundleを一旦Unloadするようにした
※メモリが256MBなので。

”待ち”の扱い
動的に使う素材はインジケーターでアピール
素材に使う素材はフェードアウト中に先読み

キャッシュ
昔はUnityniキャッシュはない?
Aimingでは独自キャッシュ時の仕組みを実装していた
(LoadFromCacheOrDownload)
http://unity3d.com/support/documentation/ScriptReference/WWW.LoadFromCacheOrDownload

バージョン、プラっとf−無、言語の切り分け

運用ワークフロー

質疑応答
Q.ネットワークゲームのサーバは?

A.PHP

Q.
A.iPhoneはリフレクションが使えない
Androidアプリでは後でサーバからソースを読み込んでコンパイルできる、

Q.複数の言語 UIの素材とかは?
A.まだこれから→ビルドの時に読み込んで出す

「ShadowGunのサンプルから学ぶモバイル最適化」
株式会社Aiming リードエンジニア 牧野克俊

Virtual Gloss Per Vertex Additive
床とかに使ってる。よく使ってる。

フラグメントシェーダ

lowp, mediump,highp
→ハードウェアによってどの制度が使われるか違ってくる

Sphare Ambient Occlusion
→影

「Unityのエディター拡張で効率よくゲームつくろう!
実例紹介&ワークフローへの組み込み指針」
石川将光氏 @lucifuges

Editor拡張
・インスペクタ

・独自ウィンドウの作成
ScriptableWizard
EditorWindowを継承もOK

・アセットインポーターの拡張

・各種ビューの拡張

validateionのボタンとかは?
Excelの読み込みとか

Q.FBXとかでReadOnly属性を外すのはできるの?
A.Animationをコピーする。
AnimationPosProcessar

Q.曲線を書く命令は充実?
A.充実している。線は外部DLLを使っている

Q.開いていないシーンをなめること。
A.みられないかも??yamlで保存するとテキストでパースすればいいのでは?

http://unity3d.com/support/documentation/ScriptReference/EditorGUILayout.html