OUROBOROS/4.0 Spoilers/クライアントライブラリ

 クライアントライブラリ

  • クライアントライブラリはV4コアシステムを実現するJavascriptベースの共通機能クラス群の総称である。
  • Ouroboros4に特化していない汎用共通ライブラリLibC(LibCommon?)と、Ouroboros4に特化したLibXライブラリに分類されている。その他戦闘処理が独立したライブラリになっている(JS-XX)。
  • LibX内のクラスにはLibC内のクラスのスーパークラスが含まれる。

LibCライブラリ

  • 汎用共通クラスを提供するライブラリ。クライアント画面を統合管理する高機能なmainクラス(libmain)を中心に、高機能Queueクラスやシグナルなどの多くの基本機能クラスを含む。

libmainクラス

  • libmainクラスは、クライアント画面を統合的に定義、構成、表示、管理するための中心的クラスである。多用なコンポーネントとインターフェースを提供するが、その根幹は以下の2つの構成要素である。
    • content管理
      • 1つのcontentは1つのスクリーン(画面)に対応する。複数のcontentを登録した場合には、(オプションで表示可能な)ラジオボタンにより、それらcontentを切り替えることができる。contentには後述のpegeを表示することができる。1つのcontentには、pageを定義するXMLドキュメントを提供するサーバのアドレスや、表示領域として利用できるHTML5要素(DIVやCANVAS)などを関連付けできる。
      • 1つのcontentは1つのデフォルトサーバを持ち、専用サーバ指定のないpage(後述)を定義するXMLの取得先として使われる。このデフォルトサーバは、pageにOW(Over Write)属性を指定するとともに専用サーバを設定することで、当該専用サーバに上書きすることができる。これにより、エントリポイントとなるキーpageにOW属性を設定するだけで、全てのpageのサーバ定義を行なうことなく、専用サーバ指定のないpageを異なるサーバに分散して配置することなどが可能となっている。(※これだけでは、当該専用サーバ指定のないpageからゲーム再開する場合に、デフォルトサーバが特定できない問題があるため、クライアントライブラリはOW中は、OW開始のエントリポイントとなったpage名をサーバに通知する機構なども持つ。)また、OWの開始前後をまたぐタイミングやOW中であっても、再ログインや、異なるpageの一時的な割り込みなどを無制限に行うことができる。
  • page管理
    • pageはcontent上に表示することができる1つの表示内容のことでありXMLドキュメントにより定義される。そして、複数のpage間をハイパーリンクにより接続することができ、1つのcontent上でそれら複数のpage間を移動することができる。各content上で平行して独立にpageを遷移させることもでき、たとえば、あるcontentを表示中に背後の別のcontentを再生したり、page遷移させることなどができる。
    • pageは異なる呼び出し元から同じpageを呼び出せるように、pageスタックを持つ。具体的には共通ページへ入る場合には親pageをスタックイン(_q=in)し、当該共通ページから出る場合には親pageをスタックアウト(_q=out)できる。さらに、スタックイン/スタックアウト中であっても、再ログインや、異なるpageの一時的な割り込みなどを無制限に行うことができる。
    • スタックインしたpageへの再ログインを不可能とするために、カメレオンpageを戻り先pageとして設定できる。カメレオンpageは実体を持たない抽象pageであり、カメレオンpageへの遷移が発生すると、スタックアウトにより得られたpageに自動的に差し替えてpage遷移する。これにより、再ログインが不可能なpageを複数の呼び出し元pageから共有することが可能となっている。
  • libmainのその他の主要機能
    • システムの初期化・コンフィギュレーション
    • アカウント管理
    • サブモジュール管理(register_object/get_object)
    • ポップアップ(iframe)管理
    • 表示領域のリサイズ対応(レスポンシブデザイン対応)
    • 背景画像管理
    • 各種HTMLコンポーネントの表示/非表示状態管理
    • 処理負荷モニタ/管理
    • デバッガ―とトレース
    • ネットワーク入出力管理
    • XMLデータ管理
    • 外部class連携: Console(汎用コンソール(ブルースクリーン))
    • 外部class連携: Alarm(外部ハンドラ)
    • 外部class連携: MsgQueue?(外部ハンドラ)
    • 外部class連携: Signal
    • 外部class連携: TimelineEvent?
    • 外部class連携: Stack
    • 外部class連携: AlertWindow?
    • 外部class連携: ConfirmWindow?
    • 外部class連携: TriButtonWindow?
    • 外部class連携: FloatingWindow?
    • 外部class連携: MouseEvent?

libmain以外のクラス

  • LibCのlibmain以外の主要機能
    • libmainの外部クラス群
    • Annealing(焼きなまし法クラス)※JS-XXライブラリが利用
    • AutoZoom?(自動ズームカメラワーククラス)※JS-XXライブラリが利用
    • Bargraphクラス
    • Buttonクラス
    • IRCsocketクラス
    • ListForm?クラス
    • ListForm?コンテナ基本クラス
    • mathライブラリ
    • MovieClip? Queueクラス(Flash MovieClip? QueueのJS版)
    • MXmenuクラス
    • NetIOクラス

LibXライブラリ

  • LibXには、Ouroboros4に特化したJavascriptクラス群が含まれる。その中心はlibmainのスーパークラスのlibOuroboros4である。
  • LibXの主要機能
    • libmainやIRCライブラリのスーパークラス(LibCのO4向けカスタマイズ)
    • ログイン/ローディング関連描画
    • ヘルプ画面描画
    • アイテム欄描画
    • 戦略描画
    • マップ描画
    • ダンジョン描画
    • エンディング描画
    • 汎用リスト描画
    • JSON管理
    • Sound管理

libOuroboros4クラス

  • libOuroboros4クラスはlibmainクラスのスーパクラスであり、contentやpage管理といった基本機能を提供する。さらに、コンパクトステータスウィンドウやEvent、Message、IRCなどのOuroboros4を構成する各種コンポーネントを統合的に管理する。
  • libOuroboros4クラスにおける主要なlibmainクラス拡張
    • 拡張ローディング画面
    • 各種postイニシャライズ処理
    • 背景画像管理
    • 管理権限連動パーミッション拡張
    • AlarmおよびMsgQueue?を用いた電報およびイベント機能とIRC連携
    • EaselJSのMouseOver?処理拡張(コンテンツの表示状態や処理負荷に応じたサンプリングレートの自動調整)
    • コンパクトステータスウィンドウ機能

JS-XXライブラリ

  • 戦闘処理はひとまとめの独立したライブラリになっており、これをJS-XXライブラリと呼ぶ。この名称は、Flash版戦闘とHTML5版戦闘を区別する意図で付けられたコードネームが由来である。XXにはプレイヤーバージョンが入り、最初のhtml5ベース戦闘再生プログラムであるJS-23、JS-23の上位互換であるJS-24などがある。JS-XXライブラリはLibC上で動作する。
  • JS-24の構成
    • メインクラス
    • Attack処理
    • Bullet(弾類)処理
    • Changing(変身)処理
    • Move処理
    • Search処理
    • Flag管理
    • 浮遊オブジェクト(紐付きラベル等)管理
    • フレームレートコントローラ
    • 画像クリップ管理
    • 当たり判定管理
    • 共通ライブラリ
    • 位置管理(外周基準点など)
    • ログ管理
    • オブジェクト管理
    • XML管理
    • 統計情報管理
    • ステータスウィンドウ管理
    • Unit管理
    • 物理エンジン
    • 物理エンジン描画