Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

4,773 views

Published on

AWS様の主催するゲーム勉強会「第1回 Gaming Tech Night」にて、「モノビットエンジン と aws クラウドパッケージで 最強のリアルタイム・マルチプレイ環境を構築&運用」というセッションを行いました。

Published in: Engineering
  • Be the first to comment

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

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

×