みんなと過ごすクリスマス Photon v1.50 #アセットアドカレ

 

この記事は Unity Assets Advent Calendar 2014 25日目の記事になります。

諸説ありますが、24日のクリスマスイブは彼女と2人きり。25日のクリスマスは家族やみんなと過ごすものだそうなので、Advent Calendar25日目の最終日はみんなと過ごすための世界を創造します。

スクリーンショット_123114_080721_AM

Photon Unity Networking Free by Exit Games http://u3d.as/2ey
バージョン: 1.50.1 (Dec 18, 2014)サイズ: 35.5 MB
パブリッシャーサイト

Facebook コミュニティ
Photon Cloudユーザー助け合い所

確認環境

Unity 5.0p18

Photonとは

Unityでお手軽にオンライン機能を使うことができる、GMOクラウドが展開するSaasサービスの一つ。

オンラインゲームのサーバー部分を一挙に担ってくれる。
サーバーの保守運用、構築も不要という夢のようなサービス。

但しデータの永続化についてはなし。リアルタイム同期のみ。
データを保持したい場合は別途用意する必要がある。

様々なサービスでも利用されており運用実績は結構ある。
リアルタイム性を重視するFPSにも活用されている。
https://www.exitgames.com/ja/PUN/Showcase

20CCUまでは無料(CCUはPhoton独自の単位で同時接続ユーザー1人=1CCU)

他の料金プランはこちら
https://www.exitgames.com/ja/Realtime/Pricing

使用するためには無料のPhoton開発者登録とアプリケーションの登録を行い、発行されるアプリケーションID(AppID)を入手。アセットストアで配布されているPhotonのアセットをImport。初期設定にAppIDを入力するだけでOK

またAssetStoreで販売中のPhoton PUN+では100CCU、100人同時接続のオンラインゲームも作れる。

スクリーンショット_123114_075414_AM

Photon PUN+ by Exit Games http://u3d.as/5Ap
バージョン: 1.50.1 (Dec 18, 2014)サイズ: 36.3 MB
パブリッシャーサイト

※普段は$95

(しかしPhoton Realtime、Photon Turnbased、Photon PUNの違いはいったい・・?

また、Unityでネットワークモノといえば標準機能のUnity NetworkやNGUI作者さんのTNetBoltなどなど(割と強引なくくりだけど)いろいろありますが、サーバーを自分で用意しなければいけなかったり敷居が高い。

後はだいぶ先の話で気にする必要がない気がしないでもないが、Unity5で提供される機能の一つにUNETというPhotonとそっくりの機能がある。
(Uniteでは通訳なしの英語のセッションを聞いていたが、ちょこちょこ聞こえてくるヤバそうな話に眠気が吹っ飛びますた。)

Photon情報収集(2014/12/31現在)

リファレンス

(英)Importしたアセットの中に含まれる「PhotonNetwork-Documentation.pdf」 Photon Unity Networking v1.50

(日)【公開】Photon Unity Networking 資料(日本語版)|ニュース|Photon Realtime 日本スペシャルサイト Photon Unity Networking v1.21
http://photoncloud.jp/info/detail.php?no=1389939840

情報

(日)Photon Unity Networking Intro | Exit Games
http://doc.exitgames.com/ja/pun/current/getting-started/pun-intro

まだ一部翻訳が追い付いていないので基本英語のページ推奨。
例えば下の2つのチュートリアルは英語のページのみ

(英)Mecanim Demo | Exit Games
http://doc.exitgames.com/en/pun/current/tutorials/mecanim-demo
(英)RPG Movement Demo | Exit Games
http://doc.exitgames.com/en/pun/current/tutorials/rpg-movement

ただ、公式Blogにてこの2つのチュートリアルで使用しているコンポーネントの使い方についての説明あり。

(日)Photon Unity Networking (PUN)のバージョンが1.50になりました
http://blog.photoncloud.jp/pun-ver1-5/

(英)Photon Unity Networking | Unity Community
http://forum.unity3d.com/threads/photon-unity-networking.101734/
Exit Gamesの英語サイトとこちらでバージョン変更点の確認ができる。

 

(日)Photon Official Blog
http://blog.photoncloud.jp/

(日)Photon 日本運営事務局 – YouTube(2014/12/31現在すべてv1.28)
https://www.youtube.com/user/photonjapanchannel

v1.50の最新情報はインポートしたアセットに同封されるPDF、次に英語公式、フォーラムあたりがよさそうです。

Photonでオンラインの何かを作ろう

100人のハコを用意しても哀しみしか生まれないので、20人のハコを用意します。こちらは無料です。

一応補足しておくとEUの方が今でもたまに遊びにきてくれてます。
開発者冥利に尽きます。。!!

スクリーンショット_123114_012420_PM

 大分脇道にそれましたが、最初の一歩目はこちらの記事がよさそうです。

PUNを使ってネットワーク同期を行う -Vol.1- http://blog.photoncloud.jp/getting-started-pun-01/ 

ざっくり記事中の流れを説明すると

  1. Photon鯖との通信関係を良しなにしてくれるPhotonManager.csを作成してシーン中の空のゲームオブジェクトにアタッチ。Object Nameに”Cube”と入力。

  2. プレイヤー用のCubeオブジェクトにPhotonView.csアタッチ。ObservedComponentsにCubeオブジェクト自身のTransformコンポーネントをドラッグして設定。設定後にProjectsビューでResourcesフォルダを作ってヒエラルキービューからドラッグしてPrefab化。

これでSHIROBAKOオンラインが完成。

スクリーンショット_123114_070343_PM

相手の動きがカクカクする

カクカクを改善するためには移動の補完・推測をやってくれるPhoton Transform ViewをPhoton Viewと合わせて使用します。

RPG Movement Demo | Exit Games
http://doc.exitgames.com/en/pun/current/tutorials/rpg-movement

Photon Unity Networking (PUN)のバージョンが1.50になりました | Photon Official Blog
http://blog.photoncloud.jp/pun-ver1-5/

キャラクターのモデルデータを使う

ポイントはMecanim Animation。
アニメーション同期についてはPhotonのアセットに同封されているデモシーンが参考になります。

DemoRPGMovement-Scene
・アニメーションはRPGMovement.csスクリプトで同期
・キャラクターの移動もRPGMovement.cs内で。あまりイケてない設計

DemoMecanim-Scene
・アニメーションはv1.50から追加されたPhotonAnimatorView.csを使用してAnimationControllerのレイヤー指定で同期
・キャラクターの移動はIdleRunJump.cs内で。自プレイヤーと他プレイヤーを識別するためにPhotonView.isMineの判定がある程度。(その依存関係を避けたい場合は、自機と他機を別のPrefabに分けるアプローチもあり)

また、Legacy Animationの同期についてはこちらの方の記事が参考になります。

『Photon CloudでUnityちゃんを動かそう』
http://amba.to/1pdpTct

無題クリップ_123114_081358_PM