インターネットをご覧の皆さん こんばんは。
いままでアルファ?ベータ?版だった SpatialOS ですが、先日 "SpatialOS GDK for Unity" としてローンチされたようです。( for Unreal はまだアルファの模様 SpatialOS GDK for Unrealも公開されました )
SpatialOS GDK for Unity launch: build multiplayer games faster
https://improbable.io/games/blog/spatialos-gdk-for-unity-launch
SpatialOS を採用したゲーム開発に関してもいくつかトピックスがありましたので、今後さらに開発は進んでいくのではないかと思います。
- Midwinter Entertainment announces funding and technology partnership with Improbable and unveils flagship title, Scavengers
- NetEase Games reveals new details for Nostos VR including SpatialOS integration
- Former BioWare General Manager Aaryn Flynn Joins Improbable as General Manager, North America
今回は新しくなった SpatialOS GDK for Unity の公式ドキュメント Get started を試してみたので、かいつまんで書いてみようと思います。
試した時点の環境は
- SpatialOS 14.0-b6143-48ac8-WORKER-SNAPSHOT
- Windows10
- Unity2018.2.8f1
- .NET Core SDK 2.1.403
です。
0. ユーザ登録
まずはユーザ登録を行います。今のところは無料で試せるようです。
https://improbable.io/get-spatialos
1. 環境構築
SpatialOS GDK for Unity が対応しているバージョンの開発環境をインストールします。
2018/10/20 時点では以下のバージョンが必要なようです。公式ドキュメントから各種リンクが張られています。
https://docs.improbable.io/unity/alpha/content/get-started/set-up#set-up-your-machine
- Unity 2018.2.8
- Linux Build Support (server-workers で必要)
- Mac Build Support (作成したゲームをMacユーザに配布したいときは必要)
-
※はじめは Unity2018.2.13f1 で試そうとしたのですが、モジュールの参照が外れたりエラーが出たので素直に Unity2018.2.8f1 をインストールしました。
※追記:2018/11/24時点ではバージョンUnity2018.2.14になっていました。都度上がりそうなので公式ドキュメントをチェックしてください。 - .NET Core SDK (x64) 2.1.3xx or 2.1.4xx
- SpatialOS Installer
- コードエディタ
- Visual Studio 2017 or Rider がおすすめらしい。
- Visual Studio を使用する際は、Visual Studio Installer から ".NET Core cross-platform development" と "Game development with Unity" を追加。
2. サンプルゲームの準備
-
SpatialOS GDK for Unity ではサンプルとして FPS Starter Project が提供されています。
FPS Starter Project は GitHub で提供されていますので、Clone してきます。
https://github.com/spatialos/gdk-for-unity-fps-starter-project -
clone したリポジトリのルートから以下のコマンドを実行します。
powershell scripts/powershell/setup.ps1
このコマンドで、GDK for Unity が所定の場所に clone されます。 -
Unity のバグがあるらしい ( https://docs.improbable.io/unity/alpha/content/get-started/open-project ) ので対処を行います。
※使用する Unity やサンプルコードのバージョンが上がれば解決しているかもしれません。
- Shader の Reimport:Project パネルから Assets/Fps/Art/Materials/Source_Shaders を選択し、右クリックメニューから Reimport を行います。
- Navmesh を Rebake:Assets/Fps/Scenes/SimulatedPlayerCoordinator シーンを開き、Hierarchy から FPS-Start_Large を選択して Enable にします。
Windows > AI > Navigation で Navigation パネルを開き、Bake タブから Bake を行います。
Assets > Fps > Scenes > FPS-SimulatedPlayerCoordinator 内の Navmesh のアイコンが正常に表示されれば Bake 成功です。FPS-Start_Large を Disable に戻しておきます。
3. サンプルゲームのビルド > アップロード > 起動
https://docs.improbable.io/unity/alpha/content/get-started/build-workers
https://docs.improbable.io/unity/alpha/content/get-started/upload-launch
-
worker のビルドを行います。(worker はSpatialOSの処理単位です。)
Unity エディタの Jobs メニュー から Enable Burst Compilation が無効になっているのを確認した後、 SpatialOS メニューから Build for cloud > All workers でビルドを行います。
ビルドが成功すると、コンソールに "Completed build for Cloud target" というメッセージが出力され、gdk-for-unity-fps-starter-project/build/assembly 以下に worker の zip が生成されます。 -
サンプルゲームをデプロイするにはプロジェクト名が必要です。
登録したアカウントでログインを行いconsoleを表示すると、
「beta_ほげ_ふが_数値」という名前のプロジェクトが用意されているはずです。 -
設定ファイル gdk-for-unity-fps-starter-project/spatialos.json の "name" を自分のプロジェクト名に変更します。
{
"name": "beta_ほげ_ふが_数値", <- この部分を変更
"project_version": "0.0.1",
"sdk_version": "14.0-b6143-48ac8-WORKER-SNAPSHOT",
"dependencies": [
{"name": "standard_library", "version": "14.0-b6143-48ac8-WORKER-SNAPSHOT"}
]
}
-
コマンドプロンプト or Powershell で gdk-for-unity-fps-starter-project/ に移動し、以下のコマンドを実行してアップロードを行います。
アセンブリ名は自由につけることができるようです。ここでは fps-assembly にしています。
spatial cloud upload fps-assembly
-
続いて以下のコマンドを実行して起動を行います。
コマンドでは、アセンブリ名 / 設定 / デプロイ名を指定します。
アセンブリ名はアップロード時に指定したものです。
デプロイ名は自由につけることができるようです。ここでは shootyshooty にしています。デプロイ名は SpatialOS web Console に表示されます。
spatial cloud launch --snapshot=snapshots/default.snapshot fps-assembly cloud_launch_large.json shootyshooty
4. サンプルゲームで遊ぶ
-
console から、デプロイしたゲームを選択し、 Overview 画面を表示します。
Overview画面左端のLAUNCHボタンを押すと、ゲームを起動するリンクが表示されるので、そのリンクからゲームを起動できます。 -
マルチプレイを行いたい場合は、Overview 画面左端の SHARE ボタンを押すと、共有するための URL が発行されますので、その URL 経由でゲームが起動できます。
-
サンプルゲームでは、WORKER FLAGS 画面から fps_simulated_players_per_coordinator パラメータを変更することで、敵AIを生成することもできるようです。
console の Inspector 画面では、ゲーム内の状況も見れます。
おわりに
SpatialOS の CLI ツール等がインストーラから入れられるようになったりと、以前より手軽に導入できた印象です。
最新の環境が必要になった分、特に Unity の新しい機能に対応しているようなのは、開発のしやすさやパフォーマンスに恩恵があるかもしれません。
(ECS とかも使ってたりする模様 https://improbable.io/games/blog/unity-gdk-our-first-steps)
FPSサンプルゲームは、バトルロイヤル系のゲームの参考になりそうな感じだなと思いました。
以上 おつきあいいただきありがとうございました。