Search Unity

マルチプレイヤーネットワーク機能の高レベルAPIがオープンソースに

, 11月 19, 2015

結局何がオープンソースになったの?

Unityのマルチプレイヤー機能は低レベルAPIと高レベルAPIの2つのレイヤーに分かれています。低レベルAPIはトランスポートレイヤーで、おおむねNetworkTransportクラスにまとめられています。この部分はUnityエンジンの一部としてC++で書かれていて、その主目的はソケットアクセスの上に薄いレイヤーを作って提供し、パフォーマンスを最適化することでした。そしてこの上にC#で書かれた高レベルAPI(HLAPI)が存在し、この部分は拡張モジュールDLLとして存在しています。今回オープンソースになったのはこの拡張DLLの部分で、ユーザーは自由に変更・拡張して、Unityについてくるモジュールをリプレースすることができます。コードはMIT/X11ライセンスの元にリリースされていますので、利用者は特に制約を受けることなく利用でき、変更に対するコントリビューションの義務なども負いません。

2段階の抽象化

マニュアル には高レベルAPIで何ができるのかを理解するのによいオーバービューがあります。拡張DLLの中には多くのクラスがあり、大きくさらに2つのレイヤーに分けられます。NetworkClientとNetworkServerクラスを利用すれば接続を自分で管理することが出来ますし、NetworkManagerやNetworkLobbyManagerを使えば、さらに高レベルな機能を利用できます。これらのマネージャーをゲームオブジェクトに追加して、さらにビルトインのHUDコンポーネントも併用すれば、すぐにネットワーク接続を実現することが出来ます。さらに、マネージャーを拡張して振る舞いをカスタマイズすることも可能です。マネージャーはクライアント/サーバー型で、サーバー側の情報を信頼するサーバー権威型(server authoritative)としてデザインされています(加えて、クライアントの情報を信頼するよう例外的に設定するオプションもいくつかあります)。もし自分で高レベルAPIを実装したいと思う時は、これらのマネージャークラスのコードがトランスポート層の機能をどう使えば良いかの良い資料になるはずです。もし何も変えるつもりがなくても、公開されたコードを読んで高レベルAPIの機能群がどのように動作するのかを学ぶというのは常にオススメします。

ソースを改変する時のいくつかの注意事項

ソースには3つのVisual Studioプロジェクトファイルがついてきます。一つはランタイム(runtime)、そしてエディター(editor)、最後にエディター=ランタイム(editor-runtime)です。最後のエディター=ランタイムとは、エディターのPlayモード時に利用されるものです。マルチプレイヤー機能のアップデートメソッドはエンジンから直接呼ばれるため、NetworkIdentity.UNetUpdate() 関数が必要になります。これがないと実行時になにも起こりません。 また、マルチプレイヤーの機能はエディターがユーザーのコードをコンパイルする時にコード生成の処理を行っています。このコードジェネレーターはUNetWeaver といって、この部分についても今後オープンソース化することを検討しています。UNetWeaverはNetworkBehaviours をパースしてシリアライズのためのコードを生成し、Command/ClientRPC ハンドラーを作り、テーブルをルックアップし…といったことを行います。このため、SyncVarやCommandなどといったネットワーク関連のアトリビュートの名前を変更すると動作しなくなってしまいますので、この部分は変更しないようにしましょう。

オープンソースのレポジトリはBitBucketのこちらにありますBitbucket

22 コメント

コメントの配信登録

コメント受付を終了しました。

  1. Good news. Thanks))

  2. this is incredible Thanks

  3. will you keep this up to date? Can I actually use this code instead of the one shipped with Unity?

    1. you may use these html tags and attributes.[

      1. Sorry, I am not sure what you mean

  4. great!
    can i using it on Unity v4.6?

  5. Andrea Cammarata

    11月 23, 2015 11:23 am

    This is a great news guys, thanks for it!
    Any plans to open source the NetworkMatch class too?
    I totally understand that it contains some core code related to Unity Multiplayer Services, but the community may help here sending pull requests, or create custom Match Maker servers that better fit more complex specific needs.
    Anyhow, great work!

    1. Hi, I googled benengir camera classes Billings, MT and your previous class showed up. So I am emailing to inquire about if you might have another class coming up or if you are up for some private hire/tutoring!??!I’m desperate! I think I love photography, but as soon as I try and take a photo I get incredibly discouraged and walk away pouting. I don’t want to be the girl that forever uses her fancy DSLR camera in auto mode. I’d love any help!Thanks so much. Happy Holidays!-Sarah Barkie

  6. How about server side code?

  7. Thanks for sharing this awesome piece of news!

  8. Y u no Github ?

    1. Because Mercurial

  9. Breno Azevedo

    11月 19, 2015 8:15 pm

    Now with the help of the community I expect the HLAPI to be as effective and stable as the LLAPI – and leave you guys more time to work on the much-expected server features. Well played, Unity!

  10. Robert Cummings

    11月 19, 2015 6:58 pm

    Great work guys!

  11. Error 500
    239806891ff2442ea9cb1eff1f08f844

    1. It seems to be working now.

      1. Wonderful exaopnatiln of facts available here.

    2. Most powerful&cost efcfvtiee SEO service in world get up to 100K backlinks now!Get incredible web traffic using amazing xrumer blast available. We can post your custom post up to 100K forums around the web, get insane amount of backlinks and incredible web traffic in shortest time. Most affordable and most powerful service for web traffic and backlinks in the world!!!!Your post will be published up to 100000 forums worldwide your website will get insatnt traffic and massive increase in seo rankings just after few days or weeks. Order now:

    3. Steve HutchensMay 18, 2012We’re seriously cosnrdeiing ordering a 2013 Unity U24IB after extensively shopped the Sprinter-based B+/C-Class alternatives. My wife and I both prefer the new graphics as they seem to flow better with the lines of the Sprinter and point forward. With regard to the current graphics, the two upper stripes seem to be out of place though otherwise they are nice. The current colours (blue, silver, and tan) are good. Among them, the subtle contrast between the white and silver seems most tasteful. Perhaps a lighter blue and a more golden tan would achieve the same subtle contrast when used with the white. I’ve seen some nice light tan/gold/cream colours on new luxury cars that would contrast tastefully with white. The purpose of graphics is to make what is essentially a big box look attractive and, especially in a B+/C-Class, they seem to work best when fully integrated with the lines of the cab and point forward.

    4. Thank you, I’ve recently been shiecrang for information about this subject for a long time and yours is the best I have came upon till now. But, what in regards to the bottom line? Are you positive concerning the source?|What i don’t realize is actually how you are now not really a lot more smartly-favored than you may be right now. You are so intelligent.

    5. errand carinsurance less than