ビッグなニュースです。

前に書いた記事で、「Fall Guysみたいなゲーム作るならとりあえず今はMLAPI使っとけば良さそう」と結論付けた、そのMLAPIが、なんとUnityの公式ネットワークソリューションに採用された事が本日発表されました!

Accelerating Unity’s new GameObjects multiplayer networking framework

要するに、MLAPIはUnityに買収されたという事でしょう。

前回の記事で、「Unity NetCodeはDOTSだけじゃなくGameObjectにも対応するらしい?」と書きましたが、あれは正確にはこの事だったようです。

つまり、DOTS向けにはUnity NetCode、従来のGameObject向けにはMLAPIを使ってね。という二段構えの構成です。

この事は結構前から噂になってたらしく、私も数日前にはすでに情報をキャッチしていました。(たまたま見かけたフォーラムで書いてた)

噂というかそもそもMLAPIの作者がディスコード内で普通に言ってたみたいだから全然秘密とかでは無かったようです。

私はこの情報を知った時、まんまとUnityに嵌められた!と思いました。

私の前回の記事は、Unityのブログ記事の内容を鵜呑みにして書いてしまいました。Unityが一番推薦してるMLAPIを実際自分も採用する事にしましたし。

自分のゲームに適したネットコードを選ぼう

それは、Unityのブログが利害関係の無い他社のネットワークソリューションを公平に比較した記事だと思っていたからです。

しかし、時系列としては、7月時点でMLAPI作者はUnityに雇用されており、Unityブログ記事が出たのが9月ですから、Unityは完全に利害関係の真っ只中にいた事になります。自社の製品になったMLAPIにユーザーを誘導するために、PhotonCloudやMirrorをサゲて、MLAPIを不自然にアゲた提灯ブログを書いた。そういう絵図に違いないだろと思ってしまいますね。

とは言え、冷静に考えてみれば、UnityがわざわざMLAPIを買収するのは、MLAPIが”非常に優れているから”である事は間違いないでしょうし、多少嵌められたとはいえ、今MLAPIを使うという選択は正しかったことが裏付けられたとも言えるでしょう。

それで、ユーザーにとって何が嬉しいの?

ユーザーにとってはMLAPIが公式採用された事にはメリットしかありません

これまでMLAPIはほぼ一人で開発されてたようですが、当然メンバーは増えて開発は加速しますし、サポートも段違いに厚くなるでしょう。

イマイチ足りてなかったドキュメントサンプルも充実するでしょう。

今までは個人のOSSプロジェクトだったので、いつサポート終了してもおかしくありませんでしたが、Unity公式になれば、今後何年も安心して使用する事が出来ます。

一番喜ばしい事は、昨日まではUnityのネットワークソリューションは完全に宙に浮いた状態で、Unityユーザーは何を使えばいいのかサーパリわからなくて混乱状態だった(だから前回みたいな記事も書くハメになった)のが、たった一晩で埋められて解決した事です。

これからは、とりあえずMLAPI使っとけばOK。という事になりました。今までが異常だっただけですが、とにかく安心です。

引っかかる点もあるが

そもそもUnity NetCodeがなんでDOTSしか対応してねえんだよ!という疑問はユーザーの間で湧いていたわけですが、Unityは「DOTSが最高にすげえから。Unityの未来はコレ一択だから!」みたいな説明をしていました。

それが何で急にGameObject用のMLAPIを買収してサポートする事にしたわけ?

もしかするとUnityはDOTSに対してちょっと日和り始めてる気持ちがあるのかもしれませんね。そんな憶測をしてしまう理由は、DOTSがいつまで経ってもマトモにゲーム作れるレベルの機能が揃わないからです。もしかすると、Unity社内でもDOTSで書ける人が少なくて、手が足りないのかもしれませんね。

フォーラムでは、「UnityはIPOが終わったから今まで株価を吊り上げるために色々と話を盛ってたのを、修正し始めるかもしれない。DOTSもじきに撤回されるかも」なんて言ってる人もいました。まあそれは冗談でしょうが。

↑これは英語のUnityブログ記事にGoogle翻訳をかけただけなので、正確なニュアンスではないかもしれませんが、かなりUnity NetCodeについてトーンダウンしてる感じがお分かりいただけるでしょうか。

元々は

「DOTS最高!だからNetCodeもDOTS専用だぞ!Unityの未来に付いてこい!付いてこれないヤツはUNetに置いてけぼりやぞ!」

ぐらいのイケイケなトーンだったのが、

「従来のGameObjectでMLAPIが使えるよ。どうしても好みの問題とか、よっぽどパフォーマンス厨な人はまあUnity NetCodeを使う事も可能っちゃ可能だよ」

くらいまでトーンが落ちてる気がしますねえ。これは…

あと、MLAPIの発表記事について、昨日の深夜時点ではリポジトリのライセンスが「MITからApatch2.0に移行する」と書かれていましたが、今記事を見ると「MITのままです」って書き換えられていました。

Unity、そういうのこっそり書き換えるなよ。

今すぐMLAPIに飛びついていいの?

今すぐ使うネットワークソリューションを決めないといけない!という人は、とりあえず今のMLAPI使ってみていいんじゃないでしょうか。

ただし、Unityの記事によると、MLAPIは今のままだと都合の悪い箇所がいくつかあるので、今後数カ月かけて大改造が行われるという事が書かれています。

Unityブログに書かれてた今後の改造ポイント
1.トランスポート層にUnityご自慢の新しいTransportパッケージ(パフォーマンスが優れてる)が使えるようにする
2.RPCの改善
3.スナップショット生成機能(サーバー側で毎フレームゲーム全体の状態のスナップショットを生成、保持する事でデルタ圧縮やクライアントの未来予測機能が実装しやすくなる)
4.ネットワーク関連性モデル(よく分からんが、クライアントからはコントローラ入力だけを送信すれば済むようにするという意味っぽい)

つまり、破壊的変更が入るという事です。バージョンアップで互換性が失われ、メソッドやら使い方やらが変わってしまうかもしれません。

ですので待てるなら数カ月待ってから使い始める方が安牌かもしれませんね。その頃にはドキュメントやらも整備されてるでしょう。