読者です 読者をやめる 読者になる 読者になる

コガネブログ

平日更新を目標にUnityやC#などのゲーム開発アレコレを書いていきます

【GTMF2015】「モノビットMOエンジンfor Unityのワークフロー解説」メモ

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

リアルタイム通信エンジンについて

  • モノビット・リアルタイム通信エンジン
    • モノビットリアルタイム通信エンジンとは、本格的なオンラインゲーム制作を前提に設計・開発された高機能なリアルタイム通信ミドルウェア
    • シンプルなターン制のゲームから、高速レスポンスが求められるマルチプレイのアクションゲーム、大規模なサーバシステムが必要なMMORPGまであらゆるジャンルのオンラインゲームをスムーズに開発することができる

5つの特徴

  1. 誰でも簡単にネットワークプログラミングが可能
  2. マルチプラットフォーム対応
  3. 本格的なオンラインゲームのサーバ開発が可能
  4. 再起動なしで動的なサーバ台数の増減に対応
  5. Linuxサーバで動作可能

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

  • コンソールゲーム機からゲームエンジンまで、豊富なプラットフォームに対応
  • プロトコルは、TCPUDP、Reliable UDPに対応
  • マッチングやバトルなど、さまざまなサンプルプログラムをソースコードごと提供
  • PHPRubyなどWeb系サーバとのデータ連携機能搭載
  • 過去のWeb系ゲームサーバ資産が利用可能
  • 各プラットフォームごとのSDKにより、RPC通信コードを自動生成
  • 高速RPC自動生成ツールにより通信処理を自動生成
  • 暗号化、および圧縮も自動的に実施
  • C++C#言語によるゲームサーバコードの記述が可能
  • マッチングサーバを完全に独自カスタマイズ可能

リアルタイム通信エンジンの採用実績

城とドラゴン

城とドラゴン

  • Asobism
  • ゲーム
  • 無料
スゴロクモンスターズ

スゴロクモンスターズ

  • Applibot Inc.
  • ゲーム
  • 無料

モノビットMOエンジンとは?

  • MOエンジンは、専用スクリプトで駆動するMOタイプのゲーム制作ツール
  • 物ビット独自開発のMO-Scriptを使用
  • 「命令」や「グラフィック」、「サウンド」を組み合わせることでゲームの制作を可能とする
  • MOエンジンサーバでは、MO-Scriptでプレイヤーや敵のアクション、イベント、ルールなどを設定することでゲーム全体を制御・調停することができる
  • MO-Scriptは、提供される各種GUIツールで作成・編集を行うことによって生成される
  • また、プレイヤーキャラクタのレベル、ゲーム進行など動的に変更されるデータはKVS(Key Value Store)を介してゲームに反映される
  • ツールの出力で実現できない処理は、MO-Script自体を編集することで実現可能となる

MO-Scriptとは?

  • MO-Scriptとは
    • MOエンジン用に開発された、キャラクタ制御やAI、UIの制御、アウトゲームのフロー制御などに使用できる軽量スクリプト言語
  • 特徴
    • アセンブラライクな記述のシンプルで軽い言語
    • プラットフォームに依存しない
    • プロジェクト毎に自由にコマンド追加可能
    • コルーチンとしての動作が前提となっており、時系列的な記述をそのまま縦に書くことができる
    • グルーコード実装はLuaに比べて僅かな手間で済む
    • バイナリコードはリソースとして扱えるため、プログラム実行中に修正してコンパイルしたバイナリコードのリロードが可能
    • 定型部分のマクロ化やサブルーチン化、コマンド化によりプランナ・デザイナでも容易にスクリプトを組める環境の構築が可能

モノビットMOエンジン機能概要

  • 開発環境について
    • クライアント側
      • Unity5
    • サーバ側

MOエンジンのツールについて

  • MOエンジンに同梱されているツール
    • キャラクタエディタ
    • AIエディタ
    • ステージエディタ
    • 各種マスタエディタ

MOエンジンの準備

  • セットアップ
    • スタンドアローンのゲームと同様にアセットとアニメーションの設定
      • アセット
        • プレイヤー
        • エネミー
        • 背景
      • アニメーターとアニメーターコントローラー
        • プレイヤー
        • エネミー
  • データ作成(1)
    • キャラクタエディタでキャラクタのアニメーション制御スクリプトを作成
    • AIエディタでエネミーの思考ルーチンスクリプトを作成
  • データ作成(2)
    • Unity上の背景をそのままゲームで使用
    • ステージ用プレハブデータとして保存
  • データ作成(3)
    • サーバでステージのコリジョンデータも管理
      • 背景オブジェクト
      • コリジョン用オブジェクト
      • 経路探索用プローブオブジェクト
  • データ作成(4)
    • ゲームオブジェクト出現位置の配置
      • プレイヤー/エネミー/イベントオブジェクト/静的オブジェクトの出現ポイントをマウスでマップ上に配置
    • ステージ関連データの保存
      • プレハブの保存
      • プレイヤー出現情報等の保存
      • コリジョンデータの保存
    • キャラクタなどの動的オブジェクト管理もツールで設定可能
      • 動的オブジェクト管理用マスタ作成エディタ
      • イベント管理用マスタ作成エディタ
      • プレイヤーキャラクタ管理用マスタ作成エディタ
      • バレット(弾)管理用マスタ作成エディタ
  • 作成したデータをサーバに反映
    • サーバ処理を高速化!
    • MO-Scriptをバイナリデータに変換
    • サーバプログラムのあるディレクトリ配下にファイルを置くだけ
  • ゲーム起動
    • サーバ起動
    • ゲームスタート

マッチングサーバ

  • MOエンジンのマッチングサーバは、モノビットリアルタイム通信エンジンを用いてC++で実装されており、設定された条件でプレイヤーのマッチング処理を行う
  • 例えば、レベルでのマッチング等さまざまな条件をSQLiteを用いて記述することができる

バトルインフォメーションサーバ

  • バトルサーバの管理を行うサーバ
  • バトルサーバのリストを保持し死活管理を行う
  • その他、バトルサーバにユーザーデータの受け渡しを行う
  • また、別パッケージとなっているリアルタイム通信エンジンとのネットワーク共有をも実現させる

バトルサーバ

  • バトルサーバはお客様のニーズに合わせリアルタイムに増減することが可能
  • その他、サービスを一旦停止するなどのメンテナンス・インフォメーションが不要となりサービスそのものに影響をあたえることがない

最後に