よくわからないバトルロワイアルを軽量化してみようその2


message.datを分離してみる、の巻。

1.とりあえず
本当に二次狼の書く文章が役に立つのか。バグるんじゃないのか。むしろ嘘八百言ってるんじゃないのか。
そんな疑いの心を忘れないでください。
と言うかミスがあったら教えてください。
なお、これを導入して何ヶ月か経ちますが、今のところバグ報告は入っていません。

2.じゃ、始めますか
BRIIではログデータを表示するとき、
brlog.dat(ログデータ)を読み込む→message.dat(メッセージデータ)を読み込み、これを元に翻訳→表示
と言う流れで表示しています。

メッセージデータの構成は、各行左から
#表示種類,メインコード,サブコード,内容
となっています。
今回大事なのは一番左の「表示種類」です。

ログデータは、
ゲーム画面では表示種類が「pmain,psub,petc」のメッセージデータを使って、
チャット画面では表示種類が「lmaster,lcom」のメッセージデータを使って翻訳されます。

と言うことはつまり、
チャット画面では「pmain,psub,petc」のメッセージデータを読み込む意味が無いのです。逆も然り。
そこで、message.datを2つに分離して必要なデータだけを読み込むようにします。

3.こんな実装です

まず、message.datを2つに分けます。
面倒なので、message.datから表示種類が「lmaster,lcom」の行を切り取り、massage_log.datを作成して貼り付けて保存します。
つまり、ゲーム画面用のメッセージデータが「message.dat」、チャット画面用のメッセージデータが「message_log.dat」となるわけです。

次にcgiを弄って、チャット画面でチャット画面用のメッセージデータを読み込むようにします。
1.brcommon.cgiにあるメッセージ読み込み関数、sub br_ReadMessage をコピーします。
2.brlogchat.cgiを開いてファイルの末尾に貼り付け、関数名を変えます。私は sub br_ReadMessage_log としました。
3.関数の中にある
open (ITEM,$BRDFileMesssage) || &Error_Out("システム異常",'メッセージファイルオープン異常');
 を、message_log.datを読み込むように変えます。
 brconfig.cgiに
#チャット用メッセージデータ
$BRDFileMesssagelog = $brDirData . '/' . 'message_log.dat';
 を追加して
open (ITEM,$BRDFileMesssagelog) || &Error_Out("システム異常",'ログ用メッセージファイルオープン異常');
 としてもいいし、ファイル名を直接書いてもいいでしょう。
4.最後に、brlogchat.cgiの
&br_ReadMessage;
 を
&br_ReadMessage_log;
 に変更します。


4.補足
私は、messag_log.datをさらに一般プレイヤー用と管理人用に分離しました。
が、手間がかかる上に効果が薄そうなのでここでは省きます。やっていることはほぼ同じなので、興味がある人は自力で頑張ってください。

5.で
困ったことに、私が使っているサーバーは自鯖(他人のだけど)なのでサーバーの処理がすこぶる早く、あんまりこの改造で早くなったような気がしないのですね(ぉぃ
と言うわけで、これを使ってゲームが快適になったら是非報告してください。泣いて喜びます。



2004/01/17 二次狼