モノビットエンジン と aws と...

37
モノビットエンジン AWS クラウドパッケージで 最強のリアルタイム・マルチプレイ環境を構築&運用 1Gaming Tech Night 株式会社モノビット 代表取締役 本城 嘉太郎 2016/7/7

Upload: yoshitaro-honjo

Post on 16-Apr-2017

1.941 views

Category:

Engineering


6 download

TRANSCRIPT

Page 1: モノビットエンジン と AWS と クラウドパッケージで最強のリアルタイム・マルチプレイ環境を構築&運用

モノビットエンジン と AWS と クラウドパッケージで最強のリアルタイム・マルチプレイ環境を構築&運用

第1回 Gaming Tech Night

株式会社モノビット代表取締役 本城 嘉太郎

2016/7/7

Page 2: モノビットエンジン と AWS と クラウドパッケージで最強のリアルタイム・マルチプレイ環境を構築&運用

1

・株式会社モノビット

2005年よりネットワークゲームの開発と運営を行っているゲーム会社です。

2013年よりミドルウェア事業を開始。『モノビットエンジン』のブランドで

リアルタイム通信エンジンの販売も行っています。

・講演者紹介

■モノビット社&講演者紹介

1978年神戸生まれ。ゲーマーだった19歳の時、世界初の本格MMORPG「ウルティマオンライン」に出会って廃人化…しつつも強い衝撃を受け、将来ネットワークゲームを作ることを決

意。サーバエンジニア、大手コンシューマゲーム開発会社のプログラマを経て、2005年にモノビットを創業。

コンシューマゲームの受託開発を行いつつ、まだ日本でネットワークゲームを作る文化がなかった頃からネットワークゲーム開発の研究開発に着手。その成果を元に、2013年からモノビットリアルタイム通信エンジンの販売を開始。また、CEDECでは2010年から5年連続で講演を行っており、そのうち2つの講演がトップクラスの聴講者評価を頂き、CEDEC AWARDの選考委員も務める。

Page 3: モノビットエンジン と AWS と クラウドパッケージで最強のリアルタイム・マルチプレイ環境を構築&運用

<もくじ>

1,モノビットエンジンとは?

2,リアルタイム通信サーバはOSSで作れるんじゃないの?

3,クラウドサービスあるの?

4,結論

2

■目次

Page 4: モノビットエンジン と AWS と クラウドパッケージで最強のリアルタイム・マルチプレイ環境を構築&運用

■モノビットエンジンとは

モノビット社が提供するネットワークミドルウェア製品群です。

<モノビットエンジン製品ラインナップ>

1.Monobit Unity Networking

→ クライアントプログラムのみで簡単にマルチプレイが

実装出来る通信ミドルウェア。

Unity専用。

クライアント間通信専用。

2.リアルタイム通信エンジン

→ 本格的オンラインゲームを作成できる通信ミドルウェア。

Unity、Cocos2dx、UnrealEngine対応

サーバにコードも書ける

Page 5: モノビットエンジン と AWS と クラウドパッケージで最強のリアルタイム・マルチプレイ環境を構築&運用

【モノビットエンジン)採用実績】

採用製品 Realtime Engine, NetworkGame Frameworkプラットフォーム Windows(R)ジャンル マルチ対戦アクション販売元 株式会社スクウェア・エニックス様

LORD of VERMILION ARENA

リリース日2015年6月17日

採用製品 NetworkGame Frameworkプラットフォーム スマートフォン(iOS/Android)ジャンル 冒険者vsダンジョンRPG販売元 株式会社スクウェア・エニックス様

ランページ ランド ランカーズ

リリース日2015年7月16日

採用製品 Realtime Engineプラットフォーム スマートフォン(iOS/Android)ジャンル オンラインRPG販売元 FIELDS株式会社様

THE TOWER OF PRINCESS

リリース日2015年8月27日

採用製品 Realtime Engineプラットフォーム スマートフォン(iOS/Android)ジャンル 超能力×ミリタリーRPG販売元 株式会社スクウェア・エニックス様

ALICE ORDER

リリース日2016年1月28日

採用製品 Realtime Engineプラットフォーム スマートフォン(iOS/Android)ジャンル チーム多人数参加型パーティゲーム販売元 GameBank株式会社様

大集合!ワイワイパーティ

リリース日2016年2月15日

多人数参加型パーティゲーム

採用製品 Realtime Engineプラットフォーム スマートフォン(iOS/Android)ジャンル チームフィッシングMORPG販売元 GameBank株式会社様

みんなの釣りバカンス

リリース日2015年12月2日

Page 6: モノビットエンジン と AWS と クラウドパッケージで最強のリアルタイム・マルチプレイ環境を構築&運用

採用製品 NetworkGame Frameworkプラットフォーム スマートフォン(iOS/Android)ジャンル パチスロRPG販売元 山佐株式会社様

輪撃クエスロット

リリース日2014年12月19日

採用製品 Realtime Engine, NetworkGame Frameworkプラットフォーム スマートフォン(iOS/Android)ジャンル みんなでスゴロクRPG販売元 株式会社アプリボット様

スゴロクモンスターズ

リリース日2014年10月10日

採用製品 Realtime Engineプラットフォーム PCブラウザジャンル チーム対戦型横スクロールアクションRTS販売元 株式会社スクウェア・エニックス様

クリスタル◆コンクエスト

リリース日2012年10月18日

採用製品 NetworkGame Frameworkプラットフォーム PlayStation(R)Vitaジャンル アクション&カードバトル販売元 株式会社スパイク・チュンソフト様

せかい☆セイフク

リリース日2014年7月23日

採用製品 Realtime Engineプラットフォーム スマートフォン(iOS/Android)ジャンル リアルタイム対戦ストラテジー販売元 株式会社アソビズム様

城とドラゴン

リリース日2015年2月5日

採用製品 NetworkGame Frameworkプラットフォーム スマートフォン(iOS/Android)ジャンル 家電育成型RPG販売元 株式会社番町製作所様

家電少女

リリース日2015年4月30日

【モノビットエンジン)採用実績】

Page 7: モノビットエンジン と AWS と クラウドパッケージで最強のリアルタイム・マルチプレイ環境を構築&運用

6

今回は主力製品である、MonobitUnityNetworking(略してMUN)をご紹介します。

MUNは、マルチプレイの実装に特化したUnity専用のAssetです。

<特徴>1,純国産(日本製)の通信エンジン2,主にクライアント同士の通信をリレーする商品3,Linuxサーバで動作する(オンプレミス環境にも提供可能)4,無料のテスト環境がついてくる5,サーバにコードを記述することはできない6,基盤が実績ある「モノビットリアルタイム通信エンジン」

■1.2 Monobit Unity Networkingのご紹介

Page 8: モノビットエンジン と AWS と クラウドパッケージで最強のリアルタイム・マルチプレイ環境を構築&運用

7

・マッチングやルーム開設機能を搭載→ランダムマッチング機能やカスタムマッチングが実現可能

※サーバを介して、各クライアントをマッチングできます。

※各種マッチングが簡単に実装できます。

MUN

クライアント A

※サーバにめんどうなロジックを記述する必要はありません。

ルーム

サーバ

ロビー

ルーム開設

MUN

クライアントC

参加

MUN

クライアント B

参加

MUN

クライアントN

参加

■MUNの特徴

■1.2 Monobit Unity Networking(MUN)

Page 9: モノビットエンジン と AWS と クラウドパッケージで最強のリアルタイム・マルチプレイ環境を構築&運用

ルーム

ロビー

サーバ

※サーバにめんどうなロジックを記述する必要はありません。

8

・クライアント間の情報共有機能を搭載→マルチキャスト、ユニキャストが簡単実装。

※サーバを介して、各クライアント同士で、リアルタイムに情報の共有が可能です。

※マルチキャスト、ユニキャストなどが簡単に実装できます。

MUN

クライアント A

MUN

クライアント B

MUN

クライアントC

MUN

クライアントN

データ共有

■MUNの特徴

■1.2 Monobit Unity Networking(MUN)

Page 10: モノビットエンジン と AWS と クラウドパッケージで最強のリアルタイム・マルチプレイ環境を構築&運用

9

・RPCRPCとは「モノビットリアルタイム通信エンジン」でも実装されていた仕組みで、「Remote Procedure Call

(リモートプロシージャコール)」の略で、簡単に説明すると、ネットワーク上にある、別の端末のメソッドを呼び出す仕組みのことです。

「モノビットリアルタイム通信エンジン」では主に、クライアントとサーバ間で用いられておりましたが、MUNではクライアント間のやり取りで使用されます。使い心地についてはUnity標準のRPCに近いです。

■MUNの特徴

■1.2 Monobit Unity Networking(MUN)

Page 11: モノビットエンジン と AWS と クラウドパッケージで最強のリアルタイム・マルチプレイ環境を構築&運用

10

・RPCRPCを使用するにはいくつか条件があります。

RPCメッセージとして受信したい情報は、引数として指定する。

現在のMUNでは、以下の種類の値を引数型として指定することが出来ます。

・bool(Boolean)・byte(Byte)・char(SByte)・short(Int16)・unsingned short(UInt16)・int(Int32)・unsigned int(UInt32)・long(Int64)・unsigned long(UInt64)

その1

■MUN_RPCで扱えるデータの型

■1.2 Monobit Unity Networking(MUN)

Page 12: モノビットエンジン と AWS と クラウドパッケージで最強のリアルタイム・マルチプレイ環境を構築&運用

11

・RPCRPCを使用するにはいくつか条件があります。

RPCメッセージとして受信したい情報は、引数として指定する。

現在のMUNでは、以下の種類の値を引数型として指定することが出来ます。

・float(Single)・double(Double)・string(String)・object(Object)・Vector2, Vector3, Vector4 ・Quaternion

・上述のデータ型に基づく、任意の長さを持つ配列情報・上述のデータ型に基づく Hashtable・上述のデータ型に基づく Dictionary

その2

■MUN_RPCで扱えるデータの型

■1.2 Monobit Unity Networking(MUN)

Page 13: モノビットエンジン と AWS と クラウドパッケージで最強のリアルタイム・マルチプレイ環境を構築&運用

・MUNの実例

Mecanim GDC2013 Sample Projectを、MUNを使ってマルチプレイゲーム化してみました!

12

■MUNの特徴

■1.2 Monobit Unity Networking(MUN)

Page 14: モノビットエンジン と AWS と クラウドパッケージで最強のリアルタイム・マルチプレイ環境を構築&運用

・こちらが映像です

13

■1.2 Monobit Unity Networking(MUN)

Page 15: モノビットエンジン と AWS と クラウドパッケージで最強のリアルタイム・マルチプレイ環境を構築&運用

・MUNの実例かかった時間は

1日程度。公式サイトで手順を完全解説しています。

http://www.monobitengine.com/doc/mun/

こちらを参考にする事で既存ゲームのオンラインゲーム化のイメージが掴めると思います。

14

■MUNの特徴

■1.2 Monobit Unity Networking(MUN)

Page 16: モノビットエンジン と AWS と クラウドパッケージで最強のリアルタイム・マルチプレイ環境を構築&運用

・ドキュメントも充実!!※技術情報を公開中http://www.monobitengine.com/doc/mun/

15

■MUNの特徴

■1.2 Monobit Unity Networking(MUN)

Page 17: モノビットエンジン と AWS と クラウドパッケージで最強のリアルタイム・マルチプレイ環境を構築&運用

・ドキュメントも充実!!※APIリファレンスも同梱(Doxygen出力)http://www.monobitengine.com/doc/doxygen/monobitunitynetworking/html/index.html

16

■MUNの特徴

■1.2 Monobit Unity Networking(MUN)

Page 18: モノビットエンジン と AWS と クラウドパッケージで最強のリアルタイム・マルチプレイ環境を構築&運用

17

7月1日に V1.2 がリリースされました

<機能追加>

・ルームカスタムパラメータ機能・クエリーロビー機能・プレイヤー検索機能

<新機能を使用した各種サンプルの追加>・KeyValueMatching - クエリー範囲検索マッチメイキングサンプル・NumericMatching - 値比較マッチメイキングサンプル・RoomFilter - ルームカスタムパラメータ一致検索マッチメイキングサンプル・SearchPlayer - プレイヤー検索マッチメイキングサンプル

■1.2 Monobit Unity Networking(MUN)

Page 19: モノビットエンジン と AWS と クラウドパッケージで最強のリアルタイム・マルチプレイ環境を構築&運用

2,リアルタイム通信サーバはOSSで作れるんじゃないの?

18

→C++で作ってみる?→node.jsで作ってみる?

Page 20: モノビットエンジン と AWS と クラウドパッケージで最強のリアルタイム・マルチプレイ環境を構築&運用

<C++でリアルタイム通信処理を作成する場合>

・Socketプログラミング慣れていれば問題ないが、TCP/IPやUDPについての知識がある程度必要になるのに加え、イベント制御周りの実装が大変。→libuvやlibev等のイベント制御ライブラリを有効活用する。

※Node.jsの基盤となっているライブラリです。

・マルチプラットフォーム対応Unityはまだいいが、Cocos2d-xの場合、iOS、Androidそれぞれネイティブで、Socket通信を実装する必要がある。iOS、Android(NDKでC++)共にベースはUNIX系ではあるが、微妙にSocket関連のAPIの仕様が違う。Cocos2d-xで開発する際のメリットでもある、作業効率の観点からWindowsで開発する事も多いが、それをするためにはWinsock2対応が必要になる。→工数をかけてそれぞれのプラットフォームに対応する。

■2.1 自社でリアルタイム通信処理を作成する場合

11

Page 21: モノビットエンジン と AWS と クラウドパッケージで最強のリアルタイム・マルチプレイ環境を構築&運用

< C++でリアルタイム通信処理を作成する場合>

・パケット関連の定義どのようにパケットを取り扱うかを選定する。構造体等のデータ型をやりとりするだけなら簡単ではあるが、定義を変更するたびにソースファイルを書き換える手間が発生。→一つの手法として、ソケット通信で送り合うデータは全て文字列型とし、文字列の中身はJSON形式等にすれば管理も比較的容易。

・サーバサイド今回はクライアントサイドに焦点を当てた話なので、詳細は割愛するが、多くの場合、Linuxサーバで運用するケースが殆ど。Linux側のコーディング、C++で作成する場合はBSDソケットに準拠したプログラミングが必要になる。プロセス間通信の考え方やディスクリプタの扱い等Linuxでは気を付けないといけない事が一杯。その他リアルタイム通信サーバの冗長化も意識し、運用を考慮したサーバ設計が必要になる。→ここばかりは学習コストがかかってしまうのは仕方がない…。

■2.1 自社でリアルタイム通信処理を作成する場合

12

Page 22: モノビットエンジン と AWS と クラウドパッケージで最強のリアルタイム・マルチプレイ環境を構築&運用

< C++でリアルタイム通信処理を作成する場合>

• そもそも超大変。

• 社内にネットワークとC++言語とLiunxOSに精通したエンジニアが必要。

• メンテナンスコストも考慮したら、商用サービスを利用する方がコスパが良い。

21

Page 23: モノビットエンジン と AWS と クラウドパッケージで最強のリアルタイム・マルチプレイ環境を構築&運用

22

じゃあnode.jsで作ってみる?

Page 24: モノビットエンジン と AWS と クラウドパッケージで最強のリアルタイム・マルチプレイ環境を構築&運用

< Node.jsでリアルタイム通信処理を作成する場合>

■Node.jsとは2009年にリリースされた、リアルタイムなWebアプリを作成出来るオープンソースプロダクト。

PHPやRubyではポーリングを利用して疑似的なリアルタイム通信処理を実現していたが、Node.jsはHTTPのリクエスト単位ではなく、TCPのソケットをそのまま使えるので、本格的なリアルタイム通信を実現できる。

JavaScriptでのプログラミングに慣れている、Web寄りのサーバエンジニアのあれば取っ付き安い。UnityからはSocket.ioのアセットがあるのでクライアント側の実装も容易。

■2.1 自社でリアルタイム通信処理を作成する場合

14

Page 25: モノビットエンジン と AWS と クラウドパッケージで最強のリアルタイム・マルチプレイ環境を構築&運用

■リアルタイム通信処理を自作するデメリット

・サーバの冗長化構成はどうする?・トラブった場合の復旧方法は?

→全て自分で設計する必要がある。

・大規模負荷試験を全部自分で設計しないといけない。→自作エンジンなので、誰かにサポートを

頼ることができない。

・ネットに情報はあるものの、それなりにスキルの高いエンジニアが自分で学習して工数をかけてメンテナンスする必要がある。→優秀なエンジニアを、エンジン開発に貼り付けなければならない。

また、そのエンジニアが退職してしまったり、バスに轢かれたら、メンテナンス不可能に。

■2.1 自社でリアルタイム通信処理を作成する場合

16

Page 26: モノビットエンジン と AWS と クラウドパッケージで最強のリアルタイム・マルチプレイ環境を構築&運用

<結論>通信エンジンを自作するなら、気合いを入れてやろう!

1,スクラッチでリアルタイム通信処理を作成するのは非常にハードルが高い。2,Node.jsも手軽だが社内に専門家がいない場合は結構なコストにもなってしまう。3,案件が増えても、すべて担当エンジニアが社内サポートしなければならない。

→それでもやりたい人、会社にはおすすめ。技術的には楽しいw

それって大変じゃない??と思った方には、商用エンジンの利用をお勧めします。

わかりやすいSDK、サーバを立てなくても試せるテストクラウド、無料のサーバ構築サービス、24時間365日の死活監視、日本語のドキュメント、手厚いサポート…

いろんなものが手に入ります。

■2.1 自社でリアルタイム通信処理を作成する場合

Page 27: モノビットエンジン と AWS と クラウドパッケージで最強のリアルタイム・マルチプレイ環境を構築&運用

26

リアルタイム通信サーバのクラウド構築サービスのご紹介

Page 28: モノビットエンジン と AWS と クラウドパッケージで最強のリアルタイム・マルチプレイ環境を構築&運用

27

・モノビットエンジンが動作する本番サーバ群を無料で構築

・Webサイトで申し込むだけ

・24時間365日の有人サーバ死活監視付き。(24時間365日、サーバエンジニアと電話、chatworkが繋がります)

・AWSやIDCFなど、すべてのクラウドサービスとオンプレ環境に対応

モノビットエンジンのクラウドサービスのご紹介

■モノビットエンジン クラウドパッケージ

http://cloud.monobitengine.com/

Page 29: モノビットエンジン と AWS と クラウドパッケージで最強のリアルタイム・マルチプレイ環境を構築&運用

28

・いえいえ、けっこう安価だったりします。

<ライセンス料>・開発期間中はライセンス費用無料・リリース後も1サーバ3.3万円/月のみ

<24時間356日有人監視の費用>・1サーバ2.5万円の固定価格・さらに、本番サーバ構築を無料で実施

でも、高いんじゃないの??

■モノビットエンジン クラウドパッケージ

http://cloud.monobitengine.com/

Page 30: モノビットエンジン と AWS と クラウドパッケージで最強のリアルタイム・マルチプレイ環境を構築&運用

29

Webの料金シミュレーターで簡単見積もりできますhttp://cloud.monobitengine.com/price/index.html→同時接続1万の場合の月額費用お見積もりは?

■モノビットエンジン クラウドパッケージ

Page 31: モノビットエンジン と AWS と クラウドパッケージで最強のリアルタイム・マルチプレイ環境を構築&運用

30

Webの料金シミュレーターで簡単見積もりできますhttp://cloud.monobitengine.com/price/index.html→同時接続1万+24時間365日の監視サービス付きの場合のお見積もりは?

■モノビットエンジン クラウドパッケージ

Page 32: モノビットエンジン と AWS と クラウドパッケージで最強のリアルタイム・マルチプレイ環境を構築&運用

31

サポートはどうなの??

Page 33: モノビットエンジン と AWS と クラウドパッケージで最強のリアルタイム・マルチプレイ環境を構築&運用

32

■ゲームサーバ開発サポートサービス

モノビット社は、実はミドルウェアだけの会社ではありません。社内に開発スタジオを持っており、80名以上の開発者が在席。10年以上にわたって、さまざまなネットワークゲームを開発してきた実績を持っています。

そんな開発チームが、ミドルウェアより一つ上のレイヤーにあたる、ゲームサーバの開発そのものをサポートするサービスも行っています。

というのをやっています!

Page 34: モノビットエンジン と AWS と クラウドパッケージで最強のリアルタイム・マルチプレイ環境を構築&運用

33

■ゲームサーバ開発サポートサービス

1, 2,

3, 4,

5, 6,

Page 35: モノビットエンジン と AWS と クラウドパッケージで最強のリアルタイム・マルチプレイ環境を構築&運用

34

・日本最高峰のネットワークゲーム技術者による開発サポートコミュニティエンジン創業者であり、国民的大作MMORPGのサーバ開発も担当した中嶋謙互氏が、モノビットエンジンの開発に直接関わっています。また、エンジン採用案件にも、中嶋CTOが直接設計やコンサルティングを行います。

96年、世界初のJavaアプレットを用いたMMORPGを制作し、98年にはその続編LifestormシリースをWindowsで発売、ヒット。2001年にはオンラインゲーム用ミトルウェアVCEを開発し、独自に開発した『gumonji』を含めて約50社で利用され、日本のオンラインゲームの黎明期を創出。その後、国民的人気シリースのMMORPGをは しめ、様々なネットワークゲームの

開発に従事。また、シンラ・テクノロジー社ではクラウトゲーミングプラットフォームの開発にアーキテクトとして参加。著書に「オンラインゲームを支える技術 -壮大なプレイ空間の舞台裏」(技術評論社)、CEDECなと講演実績多数。

中嶋謙互 最高技術責任者(CTO)

■ゲームサーバ開発サポートサービス

Page 36: モノビットエンジン と AWS と クラウドパッケージで最強のリアルタイム・マルチプレイ環境を構築&運用

35

結論!

Page 37: モノビットエンジン と AWS と クラウドパッケージで最強のリアルタイム・マルチプレイ環境を構築&運用

36

自社でエンジンを作ってOSSを組み合わせて、独自のリアルタイムサーバを構築したり、24時間体制で運営する手間がかけられない場合は、モノビットエンジン+クラウドパッケージで高品質のリアルタイム通信環境を安価で導入できます。最強ポイント1,導入のしやすさが最強2,コスパの良さが最強3,サポートが最強

まずは、モノビットエンジンのHPからMonobitUnityNetworkingをダウンロードして、あなたのUnityに組み込んでみて下さい!→http://www.monobitengine.com/mun/

■結論!

ご静聴ありがとうございました!・お気軽にお問合せください

[email protected]