Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Unitynetwork

9,343 views

Published on

Unity p2p game presentation

Published in: Business
  • Be the first to comment

Unitynetwork

  1. 1. Unity 3D for Network game@shinriyo
  2. 2. Android版もあります自己紹介!  杉田臣輔(すぎたしんすけ)!  株式会社ワンオブゼムで勤務!  エンジニアとしてUnity使ってますNinja Mkdirhttps://bitbucket.org/shinriyo/ninja-mkdir/downloadsZomBeat つみんビ∼
  3. 3. Unity3Dとは?!  ゲームエンジン! iOSやAndroid用のゲームに使用可能!  モデリングツールではない!  3Dのゲームが得意(2Dは苦手だけど出来ないことも ない)!  ゲーム制作の民主化
  4. 4. 使用できる言語 !  C#・・・Javaっぽい言語(文字比較に=使える、親クラスのメソッ ドにvirtualを書くのが手間) !  Boo・・・Pythonっぽい言語(メソッドにself不要) ! UnityScript・・・JavaScriptっぽい言語(JavaScriptの殻を かぶったC#、むしろActionScript3.0っぽい)http://www.amazon.co.jp/gp/product/1849690405?tag=noctushinrsdi-22
  5. 5. ネットワークゲームの種類!  物理構造 C/S型・・・サーバーとクライアントにそれぞれ特化 P2P・・・ネットワーク上で対等な関係にある端末間を相互に直接接続し、データを送受信する通信方式。論理的な構造 MO(Mulltiplay Online)・・・2∼100人程度の同時プレイ MMO(Massively Mulltiplay Online)・・・数百、数千以上の同時プレイ 2x2=4通りあるが、MMOかつP2Pは実際にはない ※Massively・・・ 【副詞】 どっしりと; 大規模に
  6. 6. 準備!  特にアセットストアでダウンロードする有料のアセ ット(Plug-in)は別途はいりません。!  C#の基本的な文法!  ProじゃなくてもOK!  Unityの基礎知識!  2.6以前のUnityはダメ!  ※OnSerializeNetworkViewメソッドにバグがあるため
  7. 7. 今回作るのは!  おしくらまんじゅう式なP2P対戦ゲーム ※MMO的なことを期待していた方はすみません ※死亡処理などの  作りこみは割愛します(Bitbacketに載せてます)□Networking Example(MMO的なサンプル) http://unity3d.com/support/resources/example-projects/networking-example
  8. 8. MonoBehavior!  基本的にベースとなるクラス!  継承するだけでUnityの基礎的なメソッドが使える
  9. 9. ネットワーク状態! Network.peerTypeで接続状態を判断NetworkPeerType の列挙型で比較する。! NetworkPeerType!  Disconnected・・・切断中!  Connecting・・・接続中(Connectedじゃない)!  ※Server(サーバとして)、Client(クライアントとして)もある。
  10. 10. サーバの作成!  サーバ側の処理! Network.InitializeServer(接続数, ポート番号);!  ※引数は両方intです。!  ※ 127.0.0.1(ループバックアドレス)
  11. 11. サーバへの接続!  クライアント側の処理! Network.Connect(IPアドレス, ポート番号);!  ※ポート番号の引数はintです。!  ちなみに切断はNetwork.Disconnect(タイムアウトの ミリ秒)
  12. 12. サーバ側! OnServerInitialized()メソッド ・・・サーバ自体が作成された時に実行される! OnPlayerDisconnected() ・・・クライアントのプレーヤが切断した時に実行される
  13. 13. クライアント側! OnConnectedToServer() サーバに接続した時に実行される! OnDisconnectedFromServer() サーバから切断した時に実行される
  14. 14. プレイヤーの生成!  Network.Instantiate() ※ staticメソッド 今回は、Spawn(生成)をするメソッドを作り、そ の中に記載します。 ※C#はUnityScriptのように暗黙のキャストが弱いの で注意
  15. 15. RPC(RemoteProcedureCall)!  リモートのサーバで実行しているプログラムをクラ イアント側から呼び出せる。
  16. 16. Network View!  RPCに必要。!  transform情報(position, rotation, scale)を観測 してくれる。!  Component=>Miscellaneous=>NetworkView でプ レーヤにアタッチする! isMine変数でオブジェクトによって制御される、 ネットワークビューかを判断できる ※豆知識・・Miscellaneous(mìsəәléɪniəәs)は分類が難しい時によく使われる。 メソレイニアスのように発音。よく、 misc などと略される。
  17. 17. NetworkViewのメソッド! OnSerializeNetworkView()メソッド ネットワークビューで監視しているスクリプトの変数の同期をとるために使用 第1引数:BitStream・・・isReadingとisWritingが取れる。Serializeは参照を引数に取る 第2引数:NetWorkMessageInfo・・・誰からかとか、時間などの情報が取れる(今回使わない)
  18. 18. BitStream•  isWriting・・ステータスの送信       isWritingでなければ受信している•  シリアライズはbool、char、short、int、float、 Quotanion、Vector、NetworkPlayer、NetworkVieID型 のみサポート。
  19. 19. プレイヤーの処理実装!  方向キーの垂直、平面の移動 Input.GetAxis(“Horizontal”)・・並行のキー取得 Input.GetAxis(”Virtucal“) ・・垂直のキー取得 Time.deltaTime・・前のフレームが呼び出されたときの、経過時間を示す(Readonly)
  20. 20. まとめ•  アセットを買わずにUnityの基本のメソッドだけで P2Pゲームはできる•  MMO的なものを作成するにはMasterServerを使いま す•  Bitbacketにアップしています https://bitbucket.org/shinriyo/p2pnetgame/downloads

×