[CEDEC 2018]リリースサイクルが抜本的に変更。「開発計画に役立つUnityロードマップ」聴講レポート
2018年8月22日〜24日,パシフィコ横浜で開催中のゲーム開発者向けカンファレンス「CEDEC 2018」だが,その初日「開発計画に役に立つUnityロードマップ」と題された講演が行われた。ユニティ・テクノロジーズ・ジャパンの日本担当ディレクター大前広樹氏が,Unity 2017で変更されたリリースサイクルや,Unityの新たなネットワークゲーム向け機能,そしてUnity 2018以降の機能を解説した。
Unity 2017以前のUnity5.xでは,正式版のリリースから1年間のサポート期間を設けるというサイクルでバージョンアップを行ってきた。このサイクルには利点もあったが,デベロッパから見ると,開発期間とサポート期間がマッチしていない場合があった。
ゲームの開発期間は長くなりがちなので,リリースの頃には使用しているバージョンのサポートが終わっているという問題だ。スライドを見ても分かるように,Unity側にしてもサポート対象が増える期間があり,サポートのためのリソースがバージョンの数だけ分散していたという。
そこで,デベロッパから要望された機能の追加・強化をコンスタントに行いつつ,安定して1つのバージョンで長く開発でき,あわせて長期間のサポートを可能にするため,Unity 2017.4から新しいリリースサイクルを採用した。
新たなサイクルでは,Unityを構成する要素を,「Tech Release&Beta」「Long Term Supported」(以下LTS),そして「Packages」に分け,異なるタイミングでリリース・サポートする。それぞれの要素を個別に見ていこう。
Tech Releaseは,春,夏,秋の年3回リリースし,次のバージョンのβ版も可能な限り速やかに公開する。その後,最新版のみにパッチを提供することで,デベロッパは常に最新の機能を盛り込んだUnityに切り替えて使うことができる。
LTSは,Tech Releaseにすべてのパッチを当てた最終版で,それを24か月サポートすることで,デベロッパは,特定のバージョンを安心して使用し続けられると大前氏は言う。
「Tech Releaseの最後から始めると,つごう2年半くらい安定したバージョンで開発できます。次のバージョンとは1年以上オーバーラップしているので,開発期間が3年,4年となったときにも,1年かけて次に乗り換えるといったことが計画できます。Tech Releaseとして1年間に3回のアップデートが行われ,最終的にフィックスしたものが,2年間サポートされる。このリリースサイクルを知っておくと,どのバージョンを使って開発していけばいいかということの見通しがよくなります。今日,お伝えする一番大事な情報がこれです」(大前氏)
つまり,最新機能をTech Releaseで追いかけ,LTSがリリースされたタイミングで,新しいバージョンへ移行すればいいといった具合だ。
最後にPackagesだが,これはUnity 2018.1で追加されたPackage Manegerを使って,Unityのバージョンとは独立して新機能の提供や更新が行えるというもの。にプロジェクトごとに機能を取捨選択でき,バイナリのサイズを小さくしたいとか,間違ってデザイナーなどが使わないようにしておきたいといった場合,不必要な機能をオフにできる。
Packegeは,Unityのバージョンとは異なる独自のバージョンを持っており,特定のバージョンのUnityに対して,まだ検証やテストが済んでいないため使用に適さないPreviewか,テスト検証の終わったVerifiedの,いずれかの状態になっている。それぞれのPackegeごとにバージョンを選べるので,あるバージョンで問題が起きたとき,ロールバックすることも可能だ。
Packegeは,おおむねPreviewで公開され,テストと検証を行って問題がなければVerifiedとしてリリースされるという。上記のように,例えばUnity 2018.3でVerifiedとしてリリースされていても,2019.1ではPreviewになってしまうこともある。
「新しいUnityが出たとき,Packege ManegerでPreviewかVerifiedか確認できますので,Packegeがそういうサイクルで提供されることを理解して,開発に活かしてください。また,また,将来的には,アセットストアから提供されるものやユーザーが制作したPackegeなど,同じシステムでいろいろなものが動けばいいと思っています」と大前氏は語った。
続いて,UNETに代わる次の世代,Unityが具体的にどのような方針でネットワークゲームへ対応していくのかが紹介された。UnityがUNETの提供を通して学んだのは,ネットワークゲームを作るために必要なのは汎用的なネットワークAPIを提供することではなく,ゲームタイプにあったテンプレートを用意すべきだということだ。
理由としては,それぞれのゲームによって必要なネットワークアーキテクチャが異なることが挙げられた。FPSならクライアントサーバーモデルになるし,リアルタイムストラテジーはDeterministic Simulationで全体の同期をとっていく。また,対戦格闘ゲームではGGPOがスタンダードだ。
今後,こうしたゲームのタイプにフォーカスしたテンプレートを投入することで,ネットワークゲームへの対応を継続していく。
また,サーバーとその運用を実現するためには,ゲームサーバーのホスティング会社であるmultiplayがUnityに参加し,ネットワークゲームの実現に必要なサポートを行っていく。Unityが最大限のパフォーマンスを出せるように最適化を行うことはもちろん,2019年には個人で使えるホスティングサーバを提供するようだ。
さらにネットワークゲームのクライアントで使う技術を,Google Cloud Platformと組んで提供するという。まずは,マッチメイク用のシステムをオープンソースで提供し,その後,それらを使ったサービスをUnityのダッシュボードから使えるようにする予定だ。
講演の最後に,最新のUnity 2018へ導入される新機能と,Unity 2019に予定されている数々の機能が紹介された。IL2CPPバックエンドでC#のデバッグが可能になるデバッガや,AR機能の強化,新しいPrefabエディタにノードベースのVFXエディタまで,とにかく新規機能,機能強化がてんこ盛りだ。
Unity5.xから2017,そして2018へと,Unityはどんどん進化してきたが,最新のUnity 2019では,新しいネットワークゲームへの対応も含め,さらなる進化を見せてくれるようだ。
Unityのバージョンを選択するために知っておきたいアップデートサイクル
ゲームの開発期間は長くなりがちなので,リリースの頃には使用しているバージョンのサポートが終わっているという問題だ。スライドを見ても分かるように,Unity側にしてもサポート対象が増える期間があり,サポートのためのリソースがバージョンの数だけ分散していたという。
そこで,デベロッパから要望された機能の追加・強化をコンスタントに行いつつ,安定して1つのバージョンで長く開発でき,あわせて長期間のサポートを可能にするため,Unity 2017.4から新しいリリースサイクルを採用した。
新たなサイクルでは,Unityを構成する要素を,「Tech Release&Beta」「Long Term Supported」(以下LTS),そして「Packages」に分け,異なるタイミングでリリース・サポートする。それぞれの要素を個別に見ていこう。
Tech Releaseは,春,夏,秋の年3回リリースし,次のバージョンのβ版も可能な限り速やかに公開する。その後,最新版のみにパッチを提供することで,デベロッパは常に最新の機能を盛り込んだUnityに切り替えて使うことができる。
LTSは,Tech Releaseにすべてのパッチを当てた最終版で,それを24か月サポートすることで,デベロッパは,特定のバージョンを安心して使用し続けられると大前氏は言う。
「Tech Releaseの最後から始めると,つごう2年半くらい安定したバージョンで開発できます。次のバージョンとは1年以上オーバーラップしているので,開発期間が3年,4年となったときにも,1年かけて次に乗り換えるといったことが計画できます。Tech Releaseとして1年間に3回のアップデートが行われ,最終的にフィックスしたものが,2年間サポートされる。このリリースサイクルを知っておくと,どのバージョンを使って開発していけばいいかということの見通しがよくなります。今日,お伝えする一番大事な情報がこれです」(大前氏)
つまり,最新機能をTech Releaseで追いかけ,LTSがリリースされたタイミングで,新しいバージョンへ移行すればいいといった具合だ。
最後にPackagesだが,これはUnity 2018.1で追加されたPackage Manegerを使って,Unityのバージョンとは独立して新機能の提供や更新が行えるというもの。にプロジェクトごとに機能を取捨選択でき,バイナリのサイズを小さくしたいとか,間違ってデザイナーなどが使わないようにしておきたいといった場合,不必要な機能をオフにできる。
Packegeは,おおむねPreviewで公開され,テストと検証を行って問題がなければVerifiedとしてリリースされるという。上記のように,例えばUnity 2018.3でVerifiedとしてリリースされていても,2019.1ではPreviewになってしまうこともある。
「新しいUnityが出たとき,Packege ManegerでPreviewかVerifiedか確認できますので,Packegeがそういうサイクルで提供されることを理解して,開発に活かしてください。また,また,将来的には,アセットストアから提供されるものやユーザーが制作したPackegeなど,同じシステムでいろいろなものが動けばいいと思っています」と大前氏は語った。
Unityの新しいネットワークゲームサポート方針
理由としては,それぞれのゲームによって必要なネットワークアーキテクチャが異なることが挙げられた。FPSならクライアントサーバーモデルになるし,リアルタイムストラテジーはDeterministic Simulationで全体の同期をとっていく。また,対戦格闘ゲームではGGPOがスタンダードだ。
今後,こうしたゲームのタイプにフォーカスしたテンプレートを投入することで,ネットワークゲームへの対応を継続していく。
また,サーバーとその運用を実現するためには,ゲームサーバーのホスティング会社であるmultiplayがUnityに参加し,ネットワークゲームの実現に必要なサポートを行っていく。Unityが最大限のパフォーマンスを出せるように最適化を行うことはもちろん,2019年には個人で使えるホスティングサーバを提供するようだ。
さらにネットワークゲームのクライアントで使う技術を,Google Cloud Platformと組んで提供するという。まずは,マッチメイク用のシステムをオープンソースで提供し,その後,それらを使ったサービスをUnityのダッシュボードから使えるようにする予定だ。
Unity 2018の最新機能と今後
講演の最後に,最新のUnity 2018へ導入される新機能と,Unity 2019に予定されている数々の機能が紹介された。IL2CPPバックエンドでC#のデバッグが可能になるデバッガや,AR機能の強化,新しいPrefabエディタにノードベースのVFXエディタまで,とにかく新規機能,機能強化がてんこ盛りだ。
Unity5.xから2017,そして2018へと,Unityはどんどん進化してきたが,最新のUnity 2019では,新しいネットワークゲームへの対応も含め,さらなる進化を見せてくれるようだ。