Unitynetwork

9,066 views

Published on

Unity p2p game presentation

Published in: Business
0 Comments
10 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
9,066
On SlideShare
0
From Embeds
0
Number of Embeds
2,892
Actions
Shares
0
Downloads
38
Comments
0
Likes
10
Embeds 0
No embeds

No notes for slide

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

×