放送部 AoE 課金システム

これは画期的な、前例の無い AoE 課金システムの詳細である。
私が部長をしていた頃の高槻高等学校 放送部(もう4年前か)は、すべての部室内のPCに Age of Empires というゲームがインストールされており、放送部員および放送部員以外の人が、休み時間や放課後および授業中などに、Age of Empires (正確には RoR) をやっていたものである。



まあ、AoE 好きの彼等は 本当に必要なときには仕事もちゃんとやってくれる ので、特に問題は無かったが、放送部の部費のうち、大半がコンピュータの部品を買ったり LAN ケーブルを買ったりするために消費されていたため、
「人によってコンピュータを利用している時間が異なるのに、全員部費が同額なのは不公平だ。ついでに、部員以外でもずっと放送室でコンピュータを使っている人からも部費をとって、クラブの収入とするべきだ。」
という厳しい意見が多数出ました。


そこでよく検討したところ、確かに適当なプログラムを組めば、全員の PC へのログオン時間が記録できるが、それでは頑張って仕事をしている人の部費が高額になってしまい、やはり不平等であるということになった。


そこで私が考案した手法は、放送室内の PC を利用したユーザーについて、各ユーザーごとに Age of Empires を起動していた時間を計算し、1ヶ月に AoE をしていた時間に比例して部費の負担額を配分する というものである。


そのため、まず下記のようなシステムを組んだ。これはクライアント PC (普通の Windows XP) 上にインストールされている Age of Empires の実行可能ファイル (確か Empiresx.exe というファイルだったと思う) のファイル名を Baka.bin というファイル名にして、次に Empiresx.exe というファイル名の AoE 課金クライアントソフトを AoE のインストールディレクトリに入れておく。これで準備完了。



AoE 課金クライアントソフト (ブートストラッパ) と AoE 課金サーバーソフト (リレーショナルデータベース、ただしその頃は SQL に関する知識は無かったので、自作) との間を TCP/IP で接続するようになっている。また AoE を起動するたびに、現在ログオンしているユーザーとは関係無く、再度ユーザー名とパスワードを入力させることによってユーザー認証を行う。
AoE 課金クライアントソフト (ブートストラッパ) は、ユーザー認証が完了すると、AoE 課金サーバーに対して、AoE 課金時間が開始されたことを通知して、同じディレクトリにある Baka.bin (本来の Empiresx.exe) を起動する。この際、CreateProcess() API を使用するので、.bin などといった、通常 Windows では EXE ファイルとして扱われない拡張子の実行可能ファイルも実行できる。
この仕掛けは巧妙で、多少コンピュータに知識があるユーザーでも、C:\Program Files\Microsoft Games\Age of Empires\Baka.bin を AoE 課金クライアント以外の方法で手動起動させる方法は発見できなかったらしく、断念していた。


なお、AoE 課金クライアントソフト (ブートストラッパ) は、子プロセスとして AoE が起動している間は、子プロセスの動作を確認しつつ、一定時間おきに AoE 課金サーバーに対して定期的に「まだ AoE が起動している」旨の通信を行う仕組みになっていたので、たとえ AoE で遊び終わったあと、悪知恵のあるユーザーが、PC を LAN ケーブルごと抜いて、自己の AoE 時間を証拠隠滅しようとしても、できないようになっていた。


また、AoE 課金サーバーの動作を妨害しようとする奴がいると (サーバーの LAN を抜いたりする)、AoE 課金クライアントソフト (ブートストラッパ) は下記のようなメッセージを表示するので、AoE はできない。



このシステムを半日でプログラミングし、完成した。そこで、導入する前に、下記のような貼紙を放送室で行った。



このシステムの導入については、AoE のヘビーユーザー (放送室に来て AoE を一日中やっているようなやつ) から猛反対があったが、結局、月のはじめに事前に金額を設定して、その金額 (部費) を全員から AoE の起動時間に比例して徴収するので、たとえどれだけ長い間 AoE をやっていたとしても、最大は事前の金額しか負担額は発生しないので、安心である(?)という理屈で説得して、実際にシステムを導入した。


月末(31日など)には、その月に各ユーザーの AoE 時間を集計して、あたかも携帯電話の通話料明細書のようにAoE 時間明細書」を自動印刷して、同時に事前設定されていた部費の合計目標額(月合計5000円くらい)を各ユーザーの AoE 時間で比例配分した金額も印刷されるようにしておいた。

そのサンプルが下記である。




上記のシステムは非常にうまく動作し、1日中 AoE ばっかりやっている部員の部費は、600 円くらいになった。またあまり AoE をやっていない部品の部費は、10 円などという小額になった。これで、放送部内で部費が平等に(?)徴収されるようになったのである。


問題は、上記のような変なシステムを作っていたのは、高校3年生の夏だったこと。ついでに、AoE をやっていた大半の人も、高校3年生でした。 ですが、なぜか当時 AoE をやっていた人達の大半は志望大学に合格し、AoE をやっていなかった人が落ちる、という結果になった記憶がある。