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管理
- 物理エンジン
- 物理エンジン描画