https://www.shinra.com/jp/event/
※メモが正確ではない可能性があります。ご了承ください
CCDK v0.1
- 講演者
- Kengo Nakajimaさん
CCDKとは
- Community Cloud Development kit
- クラウドゲームを開発するためのソフトウェア・キット
- 今回は小規模チーム向けの紹介
- 早く作って早く試すインディーゲームなど
- 安く・早く・安心して、フィードバックを得られます
- CCDKでそれをどのように可能にするのかの講演です
安く・早く・安心して
- 安く
- 無償ツールのみでOK
- 早く
- ゲームエンジン、ネットコードの劇的簡素化
- DirectXに対応していればなんでも使える
- ネットワークゲームを作るコストが劇的に簡素化される
- ゲームエンジン、ネットコードの劇的簡素化
- 安心して
- データを配布しない
- 確実にサービスが停止できる
- 確実にバージョン管理できる
- サーバーですべてのゲームが動くので
お客様に届けるものはビデオだけ - 開発途中のデータの配信の心配がない
- フィードバック
- shinra://リンク
- 例えばメールにシンラのURLを書いて送るだけで
シンラのソフトウェアがインストールされていれば
相手がそのゲームを遊ぶことができる
- 例えばメールにシンラのURLを書いて送るだけで
- シンラパックアーカイブ
- 今日デモを紹介予定
- プレイ動画
- サーバーサイドでプレイ動画の自動録画もできる
- デフォルトで利用できる?
- デバッグ再生
- ユーザーはビューアを持っていれば遊べる
- ゲームのインストール不要
- shinra://リンク
入手方法
- GitHubでリポジトリを公開予定
- https://github.com/SinraTech/CCDK
- 自由にCloneやForkができます
- 現在は日本でのみ利用可能になる予定
できること、できないこと
- v0.1でできること
- ゲーム制作とテストプレイ
- 1:1とN:N
- 後述します
- Shinraパッケージの作成とストリーミング確認
- ゲーム制作とテストプレイ
- v0.1でできないこと
- シンラ・システムのデータセンターを使うこと
- 商用のデータセンターは使えません
- シンラ・システムのデータセンターを使うこと
1:1、1:N、N:N
- 1:1 (Stand-alone model)
- 今までのようなDirectXで動いている1人用のゲームを
1人のお客様に対して1つ用意するモデル - シングルプレイのゲーム
- 今までのようなDirectXで動いている1人用のゲームを
- 1:N (MC model)
- ゲームのインスタンス1つに対して複数のお客様がアクセスする
- 複数回レンダリングすることで、
1つのゲームを共有しながら別の視点で遊べる - 例えばFPSなど、3通りにレンダリングして映像を配信する
- 単純計算でメモリ使用量が3分の1になる
- N:N (Virtual MMO model)
- すべてがサーバーで動いている
- ゲームのインスタンス複数個に対して複数のお客様がアクセスする
- ゲームの状態を共有している
Minimal Cloud Set(MCS)
- CCDKはこれにドキュメントやサンプルコードを付加したもの
- シンラ・システムの最小のエミュレータ
エミュレーション
- リモート・レンダリングを行わない
- GPUを用いたエンコーディングを行わない
MCSでの通信
- Game server
- D3D11.dll
- Video port ← TCP ← Shinra Client
- Game port ← TCP ← Shinra Client
- D3D11.dll
- TCPのソケットが接続できる環境であればどこでもテストできる
構成要素(ソースコード)
- 1:1 ゲームのスケルトンプログラム
- N:N ゲームのスケルトンプログラム
- バックエンドサーバー
- ソースコードで提供
- VCE
- 通信用のミドルウェア
構成要素(バイナリ)
- MCS
- エミュレータDLL群
- ビデオストリームのビューワ
- シンラ・パック・ツール
ドキュメント
- 日本語
- 英語
セットアップ手順
- gitリポジトリをclone
- PythonとRubyをインストールする
- Visual Studioでビルドして動作確認
- D3D11.DLLをエミュレータDLLに差し替えてビデオストリームを確認
- SDS上でShinraPackの動作確認
質疑応答
- 1:1とN:Nの動的切り替えは可能か?
- 考えていきたい
- 1:1のモデルにおけるインスタンス間の通信は可能か?
- バックエンドを経由しなくても問題ない
- シンラ専用の機能ではなく一般的なコードで実現できる
- CCDKは通信周りの制限は特にない?
- CCDKにはバックエンドのソースコードが入っているが使わなくてもいい
- 独自のサーバー技術を使ってもいい
- CCDKの開発マシンは今のところWindows?
- そうです
- 描画部分にOpenGLではなくDirectXを選んだ理由やメリットはあるか?
- 小規模、大規模の開発を考えた時に一番ベストなのがDirectXだった
- PCで動くゲームエンジン(UEやUnity)のゲームをストリーミングすることは可能か?
- 技術的に可能な部分とビジネス的に可能な部分に分かれる
- DirectX11のAPIで成り立っている場合はシステムに載せられる
- ストリームを提供している会社が許可するかどうかはわからない
実演
- 詳しくはシンラ・テクノロジーのブログで紹介されている
- GitHub for Windowsがオススメ
- クローンしたらCCDK.slnを立ち上げるだけ
- プロジェクトが4つ入っている
- バックエンド
- N:N
- 1:1
- VCM
- おもむろにクリーンしてからビルドする
- (DirectXToolキットを使用している)
- プロジェクトが4つ入っている
- 1:1の実演
- コーディングしたところは30行くらい
- スプライトフォントの読み込みと表示
- .wavの再生
- コーディングしたところは30行くらい
- N:Nの実演
- サーバーとの通信サンプル
- バックエンドのプロジェクトを同時に立ち上げることで動作確認可能
- バックエンドの実演
- TCPのポートの表示など
- これを立ち上げた状態でN:Nのプロジェクトを実行する
- 100フレームごとに1つずつPingの値が増えていく
- Shinra Development Station
- シンラのプロジェクトファイルをデプロイするためのパッケージを操作するツール?
- v0.1ではパッケージ作成とストリーミングの確認ができる
- サーバー上で動いているものをコントロールできるようになる予定
- 同じゲームでも複数のオプションで動作を切り替えられる
- ShinraClient
- ビューア
- ネットワークの遅延を発生させるテストツールも提供している
質疑応答
- CCDKで1:Nは作れる?
- 今は作れないが、今後作れるようになる予定
技術サポートチーム
- CCDK-jp@shinra.com
- Kengo Nakajimaさんが日本担当
その他の情報交換
- Facebookグループ
- Shinra-Community-CDK
ロードマップ
- 2015/5/15: GitHubのリポジトリをオープン
- 2015/6: 1:Nの初期サポート
- 2015/7: シンラテクノロジーのデータセンターが利用可能に
- アップロードして動作確認が可能になる
商品化への3段階
- 独自環境での開発
- 一次審査
- Shinra Virtual Cloud
- かなり性能のいいGPUを積んだインターネットに接続したマシン
- SDSを使って送信してインターネット経由でテストプレイできる
- クラッシュしたときの自動ダンプも可能
- 二次審査
- Shinraのサーバーに過剰な負荷をかけないかどうかの確認
- ゲームとしても問題ないものかどうかの確認
- 商用サービス
1:Nに向けて
- 現在開発中の1:N APIについて、
- ファビアン・ニノルズがこの後に紹介します
質疑応答
- 審査期間の長さは?
- まだ具体的なところは言えないが、できるだけ短くする予定
- 一次審査の期間は比較的短くするつもり
- 一次審査に時間がかかるとテストプレイが簡単にできなくなってしまうため
- Shinra Virtual Cloudの利用は無料とのことだが最大人数の制限は?
- 特に制限はないがマシンが処理できる範囲で
- 商用の時のサーバはシンラが用意する?
- そうです
- シンラのデータセンターの中に設置したゲームサーバーから外部接続は可能か?
- 可能です
- 商用サービスに入る際の料金体系は決まっている?
- 今はお客さんと開発の方々との間でどういうビジネスモデルにするか検討中
- クライアントのプラットフォームは?
- 今はPCのみ
- 徐々に広げていく予定だが、スマートフォンは今のところは想定していない
- 据え置きがメインになる
- 商用サービスの中でどのくらいのCPU、GPUのリソースを使って良いのか決まりはあるか?
- 今は特に決まりはない
- 明らかにコストが成り立たないものは無理
- サーバーの設定を変えれば特性が変えられるので ゲーム内容のためならサーバーの構成を変えてしまえという考え方
- そのため、工夫がいろいろできてかえって分かりづらいかもしれない
- AWSのように、開発者、運用者が商用サービスで使っているノードへアクセスできるか?
- フルアクセスできない?アクセス制限がある?
- 特殊なバックエンドを使う場合はゲームごとに考えなければいけない
- そうではない場合はシンラに任せることになる
- クラッシュダンプは提供する
- どうしてもアクセスが必要であれば開発チームと相談
- 例えばセーブデータが不具合で壊れてしまった時に復旧可能か?
- MCSにファイルフックの機能がある