インターネットをご覧の皆さん こんばんは。
SpatialOS(https://improbable.io/games)を触ってみたところ、なかなか面白かったのでメモがてら記事を書いてみます。
SpatialOSとは?
Improbable社(https://improbable.io)が開発している、
MMOゲームの開発&実行プラットフォームです。
MMOゲームに求められる要件をシンプルに表現するなら、
- 多人数のプレーヤで同一空間を共有する
- 空間内のオブジェクトの状態を全ユーザで同期させる
といったところでしょうか。
SpatialOSはこの空間共有&状態同期を行う仕組みを提供します。
今年はGoogle Cloud NextやGDCでもセッションを行っていたので、目にされた方もいるのではないでしょうか。
Google Cloud Next '17 | Herman Narula Day 3 Keynote
Improbable @ GDC '17 | a look inside SpatialOS
SpatialOSは現在オープンβを行っており、MMOゲームを開発するためのSDKの提供や、開発したゲームをホストするサービスが試せます。
https://improbable.io/games
※追記:"SpatialOS GDK for Unity" としてローンチされたようです。
SpatialOSでできること
MMOゲームを作るのは難しそうで、まずもって作ろうという発想すらわかなかったのですが、SpatialOSを試してみてとても可能性を感じました。
面白いなと思った点を3つほど紹介してみます。
Unityでサーバサイドの実装も行える
MMOゲームだとサーバサイドを作るのに別言語とか勉強しなきゃいけないんでしょ。はい、ムリー。
ゲームを作る際にUnityを使っている方も多いと思いますが、
SpatialOSではUnityでサーバサイドの実装もできます。
C#で書けるというだけではなくUnityの機能も使えるようです。
チュートリアルで扱うプロジェクトもUnityなので、わかりやすかったです。
A tour of SpatialOS
https://docs.improbable.io/reference/11.0/getting-started/tour
ちなみに、他にもUnrealで作れたり、C++/C#/Java/JavascriptのSDKもあるようです。
※追記: UnityでMMOゲームを作成する際にやることを簡単にまとめてみました。
サーバの負荷分散を行う仕組みがある
数人規模の接続数なら何とかなりそうだけど、何十人何百人と同時接続数が増えたらさばけるわけないじゃん。はい、ムリー。
SpatialOSにはサーバの負荷分散を行う仕組みが備わっているので、ある程度なら何とかなりそうです。
複数のWorkerで空間分割を行い、処理を分担する仕組みのようです。
cross worker boundaries
https://docs.improbable.io/reference/11.0/getting-started/tour#optional-cross-worker-boundaries
※追記:ちょっと古いですが、負荷分散の様子がわかる動画がありました。
Dynamic worker allocation time lapse on SpatialOS
https://www.youtube.com/watch?v=impXy5r4a3U
SpatialOS | Distributed physics without server boundaries
https://www.youtube.com/watch?v=ysB6bi7QUbw
Web上からゲームの状態を監視できる
もし作れたとしても運用するには、ゲーム内で何が起きているか把握できなきゃいけないでしょ。はい、ムリー。
WebのConsole画面が用意されていて、Web上からゲームの状態を監視できるので便利そうだなと思いました。
プレーヤや各種オブジェクトの状態を見れる Inspector
https://docs.improbable.io/reference/11.0/getting-started/tour#the-inspector-window
サーバの状態を見れる Metrics
https://docs.improbable.io/reference/11.0/getting-started/tour#metrics
発生した各種イベントを見れる Log
https://docs.improbable.io/reference/11.0/getting-started/tour#logs
おわりに
基本的にはドキュメントが充実しているので、
概要を知りたければ A tour of SpatialOS を、
具体的な実装方法を知りたい場合は Pirates tutorial を
やってみると良いかと思います。
注意点として、まだβの段階なので最新版のSDKでないと動かない場合があります。(最初10.3を使おうとしてインストールできなかった。)
SDKやドキュメントは最新版を参照することをおすすめします。
※追記: SDKのインストール方法を簡単にまとめてみました。
※追記:"SpatialOS GDK for Unity" としてローンチされたようです。
概要を知りたければ Get started を、
具体的な実装方法を知りたい場合は Health pick-up tutorial を
やってみると良いかと思います。
GDKのインストール方法も簡単にまとめてみました。
追記終わり。
SpatialOSの今後に関しては未知数な部分も多いですし、実際にMMOゲームを作るとなれば問題も出てくるかと思います。
ただ、もしMMOゲーム開発の敷居が下がるなら、いままで見たことのないゲームが出てきそうでワクワクしますね。
以上 おつきあいいただきありがとうございました。