--------------------
◆ OD TOOL for TRPG ver 05/09/17

--------------------

OD TOOL for TRPGを1ヶ月ぶりに更新。
最新のバージョンは2005/09/17版である。

今回、以前から要望の多かったドロー・カード機能を仮実装。
機能的にもシンプルで、果たして単独で意味があるのか疑問である。
  • 使用可能なカードの種類が少ない

  • クローズドのままカードを引けない(手札を隠せない)

  • 1度に複数枚のカードを引けない

  • 1回に複数のデッキを使うシステムに対応できない

  • 手札管理機能が無い

欠点を挙げると、はっきり言ってキリがない。
明らかに無理っぽいものも含まれて入るが、とりあえずは運用テストの結果を見てからにしよう。


OD TOOLはLimeChatのプラグイン(DLL)として動作する。
ゆえに、動作はLimeChatの仕様に大きく左右されてしまう。
最優先事項はLimeChat上で動くこと。
例えスマートではない、裏技的な方法だったとしても、使うべきところには使うべきだろう。

今回最も苦労した点は変数の保持方法だろうか。
一般的に、プラグインはソフトウェアの起動後に読み込まれる。これを動的ロードと呼ぶ。
読み込まれるタイミングは、ソフト起動直後や拡張機能の初回使用時、拡張機能の使用毎など幾つかのパターンがあるが、LimeChatでは3番目の方法を取っているらしい。
拡張機能を使う時に一瞬だけ読み込まれるので、おそらくメモリ効率は良いし、ソフトウェア実行中にプラグインを更新することが出来るというメリットがある。

だが、あなたがもしプログラミングの経験があるのなら考えてみて欲しい。
要求があるたびに、LimeChatはプラグインという新しいプログラムを起動するようなものだ。

そう。
それがスタティックであれグローバルであれ、うまく変数が保持できないのである。
もしかすると上手い方法があるのかもしれないが、残念ながら自分には分からない。
このままでは、シャッフルされたカードの情報や、残り枚数などを記憶することができないのだ。
毎回新しくカードを引きなおすなら簡単だろうが、それでは余りにもマヌケすぎる。

結局、乱数のシードとドロー枚数をiniファイルに残すという方法を選択。
余りスマートな方法とは思えないのだが。


正確には、コンピュータは乱数(ランダムな数字)を弾き出すことが出来ない。
あくまでも、複雑な計算式によって(ぱっと見て)乱数っぽい値を算出しているだけである。
もちろん、どんな複雑な式であっても、計算式である以上その答え(パターン)は一緒となる。
毎回同じ乱数表を使っているようなものだ。

なので、計算式の途中に毎回変わる値を組み込むことができれば、ある程度乱数のパターンをバラつかせることができる。これを乱数の種(シード)と呼ぶ。
一般には現在時刻を用いることが多いらしい。
先の乱数表に例えるなら、複数ある表のうち「現在時刻(秒)」番を参照せよ、とでも言おうか。

この性質を逆にとると、シードの値を保持しておくことに毎回同じパターンを生成することも可能となる。

[PR]
R.F.D. | by odprfd | 2005-09-17 19:12 | TRPG支援ツール

--------------------

<< OD TOOL for TRP... | 駄目人間たすき(バトン) >>