モノビットエンジン と aws と...
TRANSCRIPT
モノビットエンジン と AWS と クラウドパッケージで最強のリアルタイム・マルチプレイ環境を構築&運用
第1回 Gaming Tech Night
株式会社モノビット代表取締役 本城 嘉太郎
2016/7/7
1
・株式会社モノビット
2005年よりネットワークゲームの開発と運営を行っているゲーム会社です。
2013年よりミドルウェア事業を開始。『モノビットエンジン』のブランドで
リアルタイム通信エンジンの販売も行っています。
・講演者紹介
■モノビット社&講演者紹介
1978年神戸生まれ。ゲーマーだった19歳の時、世界初の本格MMORPG「ウルティマオンライン」に出会って廃人化…しつつも強い衝撃を受け、将来ネットワークゲームを作ることを決
意。サーバエンジニア、大手コンシューマゲーム開発会社のプログラマを経て、2005年にモノビットを創業。
コンシューマゲームの受託開発を行いつつ、まだ日本でネットワークゲームを作る文化がなかった頃からネットワークゲーム開発の研究開発に着手。その成果を元に、2013年からモノビットリアルタイム通信エンジンの販売を開始。また、CEDECでは2010年から5年連続で講演を行っており、そのうち2つの講演がトップクラスの聴講者評価を頂き、CEDEC AWARDの選考委員も務める。
<もくじ>
1,モノビットエンジンとは?
2,リアルタイム通信サーバはOSSで作れるんじゃないの?
3,クラウドサービスあるの?
4,結論
2
■目次
■モノビットエンジンとは
モノビット社が提供するネットワークミドルウェア製品群です。
<モノビットエンジン製品ラインナップ>
1.Monobit Unity Networking
→ クライアントプログラムのみで簡単にマルチプレイが
実装出来る通信ミドルウェア。
Unity専用。
クライアント間通信専用。
2.リアルタイム通信エンジン
→ 本格的オンラインゲームを作成できる通信ミドルウェア。
Unity、Cocos2dx、UnrealEngine対応
サーバにコードも書ける
【モノビットエンジン)採用実績】
採用製品 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日
採用製品 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日
【モノビットエンジン)採用実績】
6
今回は主力製品である、MonobitUnityNetworking(略してMUN)をご紹介します。
MUNは、マルチプレイの実装に特化したUnity専用のAssetです。
<特徴>1,純国産(日本製)の通信エンジン2,主にクライアント同士の通信をリレーする商品3,Linuxサーバで動作する(オンプレミス環境にも提供可能)4,無料のテスト環境がついてくる5,サーバにコードを記述することはできない6,基盤が実績ある「モノビットリアルタイム通信エンジン」
■1.2 Monobit Unity Networkingのご紹介
7
・マッチングやルーム開設機能を搭載→ランダムマッチング機能やカスタムマッチングが実現可能
※サーバを介して、各クライアントをマッチングできます。
※各種マッチングが簡単に実装できます。
MUN
クライアント A
※サーバにめんどうなロジックを記述する必要はありません。
ルーム
サーバ
ロビー
ルーム開設
MUN
クライアントC
参加
MUN
クライアント B
参加
MUN
クライアントN
参加
■MUNの特徴
■1.2 Monobit Unity Networking(MUN)
ルーム
ロビー
サーバ
※サーバにめんどうなロジックを記述する必要はありません。
8
・クライアント間の情報共有機能を搭載→マルチキャスト、ユニキャストが簡単実装。
※サーバを介して、各クライアント同士で、リアルタイムに情報の共有が可能です。
※マルチキャスト、ユニキャストなどが簡単に実装できます。
MUN
クライアント A
MUN
クライアント B
MUN
クライアントC
MUN
クライアントN
データ共有
■MUNの特徴
■1.2 Monobit Unity Networking(MUN)
9
・RPCRPCとは「モノビットリアルタイム通信エンジン」でも実装されていた仕組みで、「Remote Procedure Call
(リモートプロシージャコール)」の略で、簡単に説明すると、ネットワーク上にある、別の端末のメソッドを呼び出す仕組みのことです。
「モノビットリアルタイム通信エンジン」では主に、クライアントとサーバ間で用いられておりましたが、MUNではクライアント間のやり取りで使用されます。使い心地についてはUnity標準のRPCに近いです。
■MUNの特徴
■1.2 Monobit Unity Networking(MUN)
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)
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)
・MUNの実例
Mecanim GDC2013 Sample Projectを、MUNを使ってマルチプレイゲーム化してみました!
12
■MUNの特徴
■1.2 Monobit Unity Networking(MUN)
・こちらが映像です
13
■1.2 Monobit Unity Networking(MUN)
・MUNの実例かかった時間は
1日程度。公式サイトで手順を完全解説しています。
http://www.monobitengine.com/doc/mun/
こちらを参考にする事で既存ゲームのオンラインゲーム化のイメージが掴めると思います。
14
■MUNの特徴
■1.2 Monobit Unity Networking(MUN)
・ドキュメントも充実!!※技術情報を公開中http://www.monobitengine.com/doc/mun/
15
■MUNの特徴
■1.2 Monobit Unity Networking(MUN)
・ドキュメントも充実!!※APIリファレンスも同梱(Doxygen出力)http://www.monobitengine.com/doc/doxygen/monobitunitynetworking/html/index.html
16
■MUNの特徴
■1.2 Monobit Unity Networking(MUN)
17
7月1日に V1.2 がリリースされました
<機能追加>
・ルームカスタムパラメータ機能・クエリーロビー機能・プレイヤー検索機能
<新機能を使用した各種サンプルの追加>・KeyValueMatching - クエリー範囲検索マッチメイキングサンプル・NumericMatching - 値比較マッチメイキングサンプル・RoomFilter - ルームカスタムパラメータ一致検索マッチメイキングサンプル・SearchPlayer - プレイヤー検索マッチメイキングサンプル
■1.2 Monobit Unity Networking(MUN)
2,リアルタイム通信サーバはOSSで作れるんじゃないの?
18
→C++で作ってみる?→node.jsで作ってみる?
<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
< C++でリアルタイム通信処理を作成する場合>
・パケット関連の定義どのようにパケットを取り扱うかを選定する。構造体等のデータ型をやりとりするだけなら簡単ではあるが、定義を変更するたびにソースファイルを書き換える手間が発生。→一つの手法として、ソケット通信で送り合うデータは全て文字列型とし、文字列の中身はJSON形式等にすれば管理も比較的容易。
・サーバサイド今回はクライアントサイドに焦点を当てた話なので、詳細は割愛するが、多くの場合、Linuxサーバで運用するケースが殆ど。Linux側のコーディング、C++で作成する場合はBSDソケットに準拠したプログラミングが必要になる。プロセス間通信の考え方やディスクリプタの扱い等Linuxでは気を付けないといけない事が一杯。その他リアルタイム通信サーバの冗長化も意識し、運用を考慮したサーバ設計が必要になる。→ここばかりは学習コストがかかってしまうのは仕方がない…。
■2.1 自社でリアルタイム通信処理を作成する場合
12
< C++でリアルタイム通信処理を作成する場合>
• そもそも超大変。
• 社内にネットワークとC++言語とLiunxOSに精通したエンジニアが必要。
• メンテナンスコストも考慮したら、商用サービスを利用する方がコスパが良い。
21
22
じゃあnode.jsで作ってみる?
< Node.jsでリアルタイム通信処理を作成する場合>
■Node.jsとは2009年にリリースされた、リアルタイムなWebアプリを作成出来るオープンソースプロダクト。
PHPやRubyではポーリングを利用して疑似的なリアルタイム通信処理を実現していたが、Node.jsはHTTPのリクエスト単位ではなく、TCPのソケットをそのまま使えるので、本格的なリアルタイム通信を実現できる。
JavaScriptでのプログラミングに慣れている、Web寄りのサーバエンジニアのあれば取っ付き安い。UnityからはSocket.ioのアセットがあるのでクライアント側の実装も容易。
■2.1 自社でリアルタイム通信処理を作成する場合
14
■リアルタイム通信処理を自作するデメリット
・サーバの冗長化構成はどうする?・トラブった場合の復旧方法は?
→全て自分で設計する必要がある。
・大規模負荷試験を全部自分で設計しないといけない。→自作エンジンなので、誰かにサポートを
頼ることができない。
・ネットに情報はあるものの、それなりにスキルの高いエンジニアが自分で学習して工数をかけてメンテナンスする必要がある。→優秀なエンジニアを、エンジン開発に貼り付けなければならない。
また、そのエンジニアが退職してしまったり、バスに轢かれたら、メンテナンス不可能に。
■2.1 自社でリアルタイム通信処理を作成する場合
16
<結論>通信エンジンを自作するなら、気合いを入れてやろう!
1,スクラッチでリアルタイム通信処理を作成するのは非常にハードルが高い。2,Node.jsも手軽だが社内に専門家がいない場合は結構なコストにもなってしまう。3,案件が増えても、すべて担当エンジニアが社内サポートしなければならない。
→それでもやりたい人、会社にはおすすめ。技術的には楽しいw
それって大変じゃない??と思った方には、商用エンジンの利用をお勧めします。
わかりやすいSDK、サーバを立てなくても試せるテストクラウド、無料のサーバ構築サービス、24時間365日の死活監視、日本語のドキュメント、手厚いサポート…
いろんなものが手に入ります。
■2.1 自社でリアルタイム通信処理を作成する場合
26
リアルタイム通信サーバのクラウド構築サービスのご紹介
27
・モノビットエンジンが動作する本番サーバ群を無料で構築
・Webサイトで申し込むだけ
・24時間365日の有人サーバ死活監視付き。(24時間365日、サーバエンジニアと電話、chatworkが繋がります)
・AWSやIDCFなど、すべてのクラウドサービスとオンプレ環境に対応
モノビットエンジンのクラウドサービスのご紹介
■モノビットエンジン クラウドパッケージ
http://cloud.monobitengine.com/
28
・いえいえ、けっこう安価だったりします。
<ライセンス料>・開発期間中はライセンス費用無料・リリース後も1サーバ3.3万円/月のみ
<24時間356日有人監視の費用>・1サーバ2.5万円の固定価格・さらに、本番サーバ構築を無料で実施
でも、高いんじゃないの??
■モノビットエンジン クラウドパッケージ
http://cloud.monobitengine.com/
29
Webの料金シミュレーターで簡単見積もりできますhttp://cloud.monobitengine.com/price/index.html→同時接続1万の場合の月額費用お見積もりは?
■モノビットエンジン クラウドパッケージ
30
Webの料金シミュレーターで簡単見積もりできますhttp://cloud.monobitengine.com/price/index.html→同時接続1万+24時間365日の監視サービス付きの場合のお見積もりは?
■モノビットエンジン クラウドパッケージ
31
サポートはどうなの??
32
■ゲームサーバ開発サポートサービス
モノビット社は、実はミドルウェアだけの会社ではありません。社内に開発スタジオを持っており、80名以上の開発者が在席。10年以上にわたって、さまざまなネットワークゲームを開発してきた実績を持っています。
そんな開発チームが、ミドルウェアより一つ上のレイヤーにあたる、ゲームサーバの開発そのものをサポートするサービスも行っています。
というのをやっています!
33
■ゲームサーバ開発サポートサービス
1, 2,
3, 4,
5, 6,
34
・日本最高峰のネットワークゲーム技術者による開発サポートコミュニティエンジン創業者であり、国民的大作MMORPGのサーバ開発も担当した中嶋謙互氏が、モノビットエンジンの開発に直接関わっています。また、エンジン採用案件にも、中嶋CTOが直接設計やコンサルティングを行います。
96年、世界初のJavaアプレットを用いたMMORPGを制作し、98年にはその続編LifestormシリースをWindowsで発売、ヒット。2001年にはオンラインゲーム用ミトルウェアVCEを開発し、独自に開発した『gumonji』を含めて約50社で利用され、日本のオンラインゲームの黎明期を創出。その後、国民的人気シリースのMMORPGをは しめ、様々なネットワークゲームの
開発に従事。また、シンラ・テクノロジー社ではクラウトゲーミングプラットフォームの開発にアーキテクトとして参加。著書に「オンラインゲームを支える技術 -壮大なプレイ空間の舞台裏」(技術評論社)、CEDECなと講演実績多数。
中嶋謙互 最高技術責任者(CTO)
■ゲームサーバ開発サポートサービス
35
結論!
36
自社でエンジンを作ってOSSを組み合わせて、独自のリアルタイムサーバを構築したり、24時間体制で運営する手間がかけられない場合は、モノビットエンジン+クラウドパッケージで高品質のリアルタイム通信環境を安価で導入できます。最強ポイント1,導入のしやすさが最強2,コスパの良さが最強3,サポートが最強
まずは、モノビットエンジンのHPからMonobitUnityNetworkingをダウンロードして、あなたのUnityに組み込んでみて下さい!→http://www.monobitengine.com/mun/
■結論!
ご静聴ありがとうございました!・お気軽にお問合せください