カードヒーロー Online Ver.2 設計基本方針

カードヒーロー Online Ver.0.x〜1.x (以下CHO1)は
「カードヒーローのオンラインリアルタイム対戦を確立した」
という意味ではすでに効果が出ている。

しかし、目指すところはGBそのままにできるだけ近づけることである。
それを考えると現在の CHO1 の基本設計では対応不可能なところが多数出てきた。

そこで、その失敗を元に カードヒーロー Online Ver.2 (以下CHO2) を作成する予定である。
完成時期は受験が間に挟まるため2004年夏を目標としたい。

CHO2 は以下の設計理念を基に作成する。
・CHO1 で出た不都合は完全につぶす。
・CHO1 の経験を元に、使いまわせる部分を使いまわしてできるだけダウン・トップの開発モデルで作る
・サーバーはサーバーとしての機能しか持たない
 (サーバーのプログラムとクライアントのプログラムを分け、サーバーもクライアントとして接続)
・問題の多かった通信プロトコルの刷新
・引き継ぐ関数群のチューンアップ
・Technology Terminal Script for Application (TTSA) の実装

具体的には
・見た目かっこよく
 メッセージ色分けなど
・内部処理の徹底的な分散化
 ・通信プロトコルの刷新
  不安定なバトル開始処理を特に重点的に書き換え。
 ・クラス化
  ・フィールド描画モジュール Yummy
   (フィールドの描画・イベント処理)
  ・ルール管理モジュール Wilder
   (ルールデータの読み書き)
  ・通信データパーサ? Polygoma
   (受信データ処理)
  ・マクロ処理モジュール Nazoemon
   (TTSA 関連処理を取り仕切る)
  ・カードリスト管理モジュール BeyonD-A
   (データベース読み書き・リスト作成・カード検索・他)
  ・デッキ管理モジュール Gunter-A
   (デッキ読み書き・ルールチェック・送信データ作成&復元・他)
  ・バトルオペレーションモジュール Ponker-A
   (フィールドデータ管理&処理・ルールチェック・他)
・CHO1 で実装しきれなかった事項
 ・ぎんじ/ハッピーの処理
 ・クライアントvsクライアントの対戦
 ・クライアントでの状況保存
 ・対戦ログ自動出力
・TTSA の実装
 ・カードによる特殊操作や定型処理などが日本語プログラムで可能に
・各種データベース刷新
 ・カードデータベースの形式変更
  (TTSA 実装により、かなり大掛かりになる予感)

※ルールチェックの項がそれぞれ BeyonD-A と Gunter-A にわかれているのは
 それぞれデッキのチェックとバトル中の特殊ルールに分散しているため。
 内部でそれぞれ Wilder のインスタンスを作成して処理。
※状況保存だが、CHO1.0 では再開に必要なデータがクライアントに行かないこともあり、
 クライアントでの状況保存はできなかった。

(余談
 ここで、C# を覚えれば、速度アップ・効率化・プログラムの可視性や拡張性
 などでもよいのだが、その修得に伴って完成が遅れるのは目に見えている。
 また、.NET Framework の対応しない 9x 系を完全に切り捨てることになる。
 よって、これまでどおりの VisualBasic 6 での開発とする。
 
 また、モジュールにはそれぞれカードヒーローのモンスターの名前を
 つけることにしている。適当に選んでいる。
 CHO1から引き続きあるモジュールには「-A」がついているが、
 これは H-II SRB(固体ロケットブースター) に対する H-IIA SRB-A(改良型固体ロケットブースター) のように「改良版」を意味するものである。

 TTSねお の不安定さも少し気になるが、それはゆうとさんが完成までに何とかしてくれるだろう、ということで(^^;
)

また、ユーザーにとって大きな変更になる点がふたつほど。

TTSA などの実装により「フィールドの操作をすべて行動中の対戦者にさせる」ことである。
これは、マクロなどの処理のための排他措置である。(排他:簡単に言うと、独り占めすること)
TTSA を使わず、プログラム本体で全カードの操作を実装するにしても安全のためこれは譲れないだろう。

また、TTSA を使うことによりユーザーは TTSねお のインストールを強制されること。
(TTScript.dll の System フォルダへのコピー及び、RegisterServer だけですむ)
これは、インストーラなどで対応する予定。

データベース刷新だが、せっかくピーターさんにがんばってもらったのに形式を変えるのは気兼ねするところではある。
しかし、そうしないとやっぱきついので。この変更により、イベントハンドラの設定などが行えるようになる。