開発支援

  • Amazon.co.jp
    開発支援を希望する方は、上のリンクを通してAmazonでお買い物をすると、私にいくらかの開発費が入る……はずです。
  • Amazon欲しいものリスト
    ひっそりと欲しいものリストを作ってみました。リストを眺めるのも結構楽しいですよね。

最近のトラックバック

ようやくゲットしましたよ

無料ブログはココログ

困ったときには(FAQ)

どどんとふの接続ユーザが増えると重くなる訳は?

 どどんとふを利用するには「サーバ」「インターネット回線」「利用端末(PCとかタブレット)」の3つが必要ですね。
 もちろん、サーバは有志や企業が無料公開しているものがあるので自分で用意する必要は必ずしも無いわけですが、世の中にまるっきり無いと使えないことには変わりありません。

 この中で情報がどのように流れていくかを簡単に書くと、

[端末]
 ↓
 ↓ 「サイコロを振ったよ!」
 ↓
[インターネット回線]
 ↓
 ↓ 「サイコロを振ったよ!」
 ↓
[どどんとふサーバ]

 とサーバに伝わり、返事は逆方向に

[どどんとふサーバ]
 ↓
 ↓ 「成功!」
 ↓
[インターネット回線]
 ↓
 ↓ 「成功!」
 ↓
[端末]

 と結果が帰ってきます。

 接続ユーザが増えてくるとサーバが処理しなくてはならないことが、どんどん増えてきます。
 サーバの処理能力には上限がありますので、処理する仕事が山盛りになってくるとちょっとずつ返事を遅らせて仕事のやりくりをしなくてはいけません。
 そのため、接続ユーザ数が増えるとどどんとふが重く感じられるようになってきます。

 では、サーバの処理能力が十分あれば、いくら接続してきても重くならないの?

 いえいえ、サーバの処理能力が無限大だとしても重くなってくる要素があるのです。
 カンの良い方は気が付いたと思います。
 インターネット回線ですね。

 インターネット回線も、データをやり取りする能力に上限があります。
 接続ユーザが増えると、当然やりとりするデータが増えます。
 従って、インターネット回線の能力を超えるデータをやり取りしようとすると、まるでデータが詰まりかかっているようにデータのやり取りが遅くなります。
 そのため、どどんとふが重くなったように感じるのです。

 無限の処理能力を持つサーバと無限のデータ転送能力を持ったインターネット回線を用意できれば、どんなに接続してきても重くならないどどんとふが用意できます。
 ……どう考えても、あまりにコストが高すぎますよね。

 そんな訳で、限られた能力のサーバとインターネット回線を使う以上は、能力を超えた人数で使うと重くなるのは避けられない。
 そこで、なるべく多くの人が楽しめるようにサーバの提供をしている方もユーザの方も気を付けているわけです。

B&C用に表のテキストを起こそうと思うのですが、どんな書式が良いですか?

 B&Cに表の実装をするためには、必要な表のテキスト起こしが必要です。
 私がもっていないルールの場合は、誰かが起こしてくれないと実装できません。
 さて、Twitterをはじめてから「表のテキスト起こしをやりますよ!」という申し出がちょくちょくありまして、ありがたい限りです。

 実際、表のテキスト起こしは実装の大半の時間を占める上に作業的なので、私にはかなり負担です。
 実装してほしい表のテキストを起こす作業は、実は大変効果のある援助になる訳です。

 さて、その時どんな形式で起こしたらいいのか?と聞かれまして、その場で返答したのですがこちらにもまとめておきます。

---

1.ファイル形式はベタテキスト。メモ帳やテキストエディタで読める形式ですね。

2.最初に表の名前を書いてください。
 ロールするダイスを書き添えてもらえると間違いにくいので助かります。

3.改行して、表の中身を書いていきます。

4.表の中身は「ダイス目」「スペースか半角コロン(:)」「表の内容」で書いてください。

5.表の内容が長いときには、チェックしにくくなるので適時改行をいれて構いません。
 その時には、行頭に出目をかかないでください。

6.次の表に進むときは、改行だけの行を挟んでください。

〈例〉
生まれ決定表(1d6)
1 平民
2 貴族
3 奴隷
4 奉仕種族
5 独立種族
6 怪異なる永劫の時の流れの果てには
死すら終焉を迎える何か

職業決定表
1 なんとかかんとか
(以下略)

---

 この形式で作表してあれば、自動的にPerlコードに変換するPGを書きましたので、ほぼ自動で表作成できます。

 また、私の実装の基準は以下の通りです。

 大前提としてルールブックが不要になる実装はしません
 ルールブックを持ち、ルールを十分に理解した参加者が快適にプレイするための機能を提供するにとどめます。
 したがって、

---

1.セッション中に頻繁に参照される表であること。
 めったに参照しない表なら、ルールブックをめくれば済みます。
 また、すべての表を実装するのは私の負担が重すぎます。

2.かつキャラメイクに関するものでないこと。
 キャラメイクとセッション中の表参照を両立させてしまうと、ルールブックなしのセッションが成立してしまいます。

3.キャラメイク関連だが頻繁に参照する表に組み込まれているもの。
 これは単純に「自動化」する都合で必要な場合があります。
 コマンドなしで処理だけ実装する手があります。

4.例外
 ランダムな名前作成表などは実装する場合があります。
 急に出てきたNPCの名前を決めるときなどに便利ですし、名前だけではキャラメイクは出来ませんからね。
 この辺は応相談ということになります。

---
 これらに気を付けてくださると助かります。

 また作表してもらった表をすべて実装するとは限りませんし、内容もそのまま実装するとは限りません。
 IRCで扱うには記述が長すぎたり、あまりに詳細で私には不要に感じたり、自動化する際に見栄えが揃わなかったりする場合があるので、適当にカットすることがままあるのです。
 場合によっては権利者から修正依頼が来る場合もあるかもしれません。

 大抵の実装依頼は私がプレイしていないか経験の薄いゲームが多いです。
 表の参照の仕方など、実装中に質問することが多々ありますので、できる範囲で教えてもらえると作業が進みます。

 とまぁ、こんな感じですが、判らないことがあれば質問・相談はお気軽にどうぞ。

PPMにNET-IRCモジュールがない?!

 どうもActivePerlの5.12系レポジトリにはNET-IRCが無いようです。
 5.10系のActivePerlもまだダウンロードできますので、そちらでインストールしなおしてみてください。

 どうもNET-IRCモジュールは、CPANによると非常に構造が古臭い上に誰もメンテナンスしていない状態が続いているので、今となっては使うのをオススメしかねるらしいです。
 B&Cで使うには何の問題もないんですけどね。
 PerlのIRCモジュールの主流はPoCo-RCに移っている所為もあって、Perl5.12以降のPPMではNET-IRCモジュールを闇に葬りたいのかもしれません。

 そんな訳で、当分はPerl5.10系でお使いください。

ActivePerlのインストールが判りません!

 ActivePerlのリンクの所からmsi形式のインストーラをDLしてきて、適当なフォルダに保存します。
 それをダブルクリックするとインストーラが起動します。

 詳しいインストールの解説は「activeperl」「インストール」で検索するといくらでも見つかります。
 ただし、私の公開しているツールを動かすためだけに必要ならいくつかの事を覚えているだけでインストールが簡単に出来てしまいます。

・ライセンスの確認画面で「I accept ~(同意する)」の方を選ぶ。
・あとは全てデフォルトで問題ないのでNextをどんどん押す。
Installボタンを押すとインストール開始。
Finishボタンを押したら完了。

 コマンドラインから「perl -v」とタイプしてリターンを押すと、ずらずらっとバージョン情報が表示されるはずです。

 この後にモジュールのインストールを行うと良いでしょう。
 モジュールがみつからない時は確認チャートを参考にしてください。

このダイス、出目が偏ってませんか?

 私のダイスボットで採用しているメルセンヌ・ツイスターは、非常に高度に分散した品質の高い素晴らしい疑似乱数を作ります。
 一方で私の公開しているダイスボットは、しばしば目が偏ります。
 これが矛盾しない理由をちょっと説明しようと思います。

 ***

 コンピュータは決まったことをきちんと繰り返すのが得意で、デタラメな事をやるのが苦手な堅物です。
 乱数とはデタラメな数値を作ることですから、正確な乱数を作り出すのはとても苦手なのです。
 その苦手な乱数をなんとか作り出すために、様々な人がコンピュータが得意な理路整然とした手順で乱数っぽい数値を上手く作り出す方法をひねり出しました。
 ダイスを振ったような本物の乱数じゃないので、疑似乱数といいます。

 主流のやり方は、ある数値を元にややっこしい計算をしてまるでデタラメとしか思えない数値を見つけます。次にさっき計算した数値を使って、またデタラメっぽい数値をみつけます。
 これを繰り返すことで、順番に規則正しくデタラメっぽい数値が作れます。
 規則的に作っているので、条件が同じなら同じパターンで数値が現れます。
 紙テープにあらかじめずらっとデタラメな数を書いておいて、くるりと輪に繋げて順番に使うと同じような事が出来ます。

 さて、この仕組みで肝心なのはデタラメな数字を書いた紙テープの品質です。
 仮に紙テープが10センチの長さしかなくて、1センチに一つの数値が書いてあるとします。
 1~10までの数が書いてあれば1d10の代わりに使えるのですが、この乱数発生器には重大な問題があります。
 例えば、5のあとに何の数字が入ってるかが1パターンしかありませんから、5がでたら次に何がでるかがすぐ判ってしまいます。
 もう一つの問題は、一度5が出たら次に5が出るのは常に10回後です。
 もちろん本物の乱数では、1d10を振って5が出ても次に何が出るか判りませんし、5が2回連続で出ることもあります。
 結局、この乱数発生器では今出た数値から次の数値が簡単に予測できてしまいます。

 これは極めて品質の悪い乱数と言えます。

 一方で、この簡単な乱数発生器は出目が偏りません。10回使ったらどの数字も必ず1回ずつ出ます。20回使ったら常に2回ずつ出ます。
 品質を上げるには紙テープの長さを十分長くして、同じ数字がパターン違いで何回も出るようにして次の数字を判りにくくしたり、同じ数が続くパターンも混ぜるのが有効でしょう。

 ***

 では肝心のメルセンヌ・ツイスターの話に戻りましょう。
 メルセンヌ・ツイスターの紙テープ(乱数周期)は(2^19937)-1というとんでもない長さです。
 6000ケタくらいの数なので、どんな長さか想像するのが難しいですね。
 地球の赤道が約4万kmでcmで表してもわずか10ケタ。天文単位でも14ケタ、1光年で17ケタですから、まさに天文学的です。

 この気が遠くなるような長周期が支えているのは、乱数が623次元に均等分布するという膨大な乱数パターンです。
 早い話が過去623個分の乱数を全てチェックしないと次の数値が何か判らないということになります。
 今出た乱数だけをみて、次の乱数を当てるのはほぼ不可能と考えていいと思います。

 また、これだけパターンが多いということは、同じ数が100回やそこら連続しても、もう一回振ったらまだ出る可能性があります。
 本物の乱数は何百回同じ数が出ようが次に出ない保証はありませんから、かなり本物の乱数に近い訳ですね。

 これで、メルセンヌ・ツイスターがとても良くできた疑似乱数発生器だというのは判ると思います。

 ***

 さて、これをTRPGに応用したときに奇妙なことが起こります。
 数字が極めてバラバラ(分散性が高い)でいかにもデタラメ(乱数間の関連が薄い)な乱数をつくるはずのメルセンヌ・ツイスターですが、出目が偏る事がしばしばあります。
 3~4回ロールしてみて「あれ?大きい出目ばっかりだなぁ、偏ってるぞ」なんて言っている人、ときどき居ませんか?

 ここまで読んできたみなさんにはおわかりでしょう。

 メルセンヌ・ツイスターは非常に大きな周期で高度に分散した乱数なので、短い期間で区切ると出目が偏ってみえることがあるんです。(なにしろ数百回同じ出目が出るパターンまで網羅されていますもんね)
 なんの仕掛けもないダイスを実際に振っても、しばしば出目が偏るのと全く同じ事が起きるという訳ですね。
 つまり、メルセンヌ・ツイスターはダイスの女神のきまぐれも再現できてしまう凄い疑似乱数というわけです。

コマンドラインって何ですか?

 私が公開しているプログラムの多くはアイコンをダブルクリックして起動しするGUIではなく、本来はコマンドラインから起動するCUIなのです。

 私がコマンドラインと呼んでいるのは、コマンドをキーボードから受け付けるプログラムの事です。呼び方が複数あったりします。
 Unix系では「ターミナル」といいますし、Windows系では「コマンドプロンプト」古くは「DOSプロンプト」「DOS窓」などと呼ばれます。

 あなたがお使いのOSがWindowsなら、「スタート → 全てのプログラム → アクセサリ → コマンドプロンプト」と辿ると見つかると思います。
 昔のOSは、この窓が全画面表示されているだけで、みなコマンドを手で打って使っていたのです。(Windowsのコマンドプロンプトは、昔のMS-DOSの操作をWindowsで行うためのものです)

 あとはマニュアルにあるとおりにコマンドをタイプしてリターンを押せば、ちゃんと動作するはずです。


 蛇足

 本当はコマンドラインというのは、コマンド+引数+オプションで作られるコマンド文字列の事です。
 私はコマンドライン処理プログラムを頭の方だけ取って略して呼んでいるというわけです。検索にも引っかかりやすいですしね(笑
 「コマンドライン」に「Windows」などとOSの種類を付け足して検索すると、そのOSのコマンドライン処理プログラムの解説がちゃんと見つかります。

ダイスボットが特定のチャンネルで巧く動きません

 国内のIRCでは、伝統的にiso-2022-jp(いわゆるJISコード)が採用されています。
 ところが実はIRCでは、多バイトコードについての規定がありません。
 国内でもUTF-8を使っている所もありますし、海外に至ってはシフトJISの所もあるそうな。
 いずれにせよ、アスキーコードだろうが日本語全角文字だろうがアラビア文字だろうがIRCサーバは全く気にしないで同じ処理をしようとします。
 そんな訳で、IRCで特別な意味がある文字(「,」とか「:」)と同じ文字コードが含まれている全角文字はIRCサーバーの方で誤解してしまう原因になる訳です。
 多くの国内サーバは、そんな日本語特有の不具合を回避するパッチをあてて対処しているようです。

 さて、実は現状私のダイスボットに使われている「NET-IRC」というモジュールは古くからあるIRCモジュールの一つです。
 このモジュールはIRCの規格通りに動こうとするのです。
 従って「:」や「,」の含まれる全角文字を使ってチャンネルを作ると、そのチャンネルでは上手く動作しません。
 とはいっても、そんな文字判らないよ!という方が普通だと思います。

 正直、私も判りません(笑

 ネットを調べると、ちゃんとそういう問題について調べている方がいるものです。
 チャンネル名に使用できる文字の制限

 書かれた時期が少々古いですが、国内サーバでも全て対処されたと限らない様子ですね。
 いずれにせよ、ユーザの賢い対応策としてサーバにとって紛らわしい文字はチャンネル名に使うのを避けるというのが間違いないと思います。
 いずれほとんどのサーバが対応する(もしくは現状している)のは確実と思われますので、ダイスボットの対応も考えていこうとは思っています。

Perlを勉強するのに、どんな本を読んだらいいですか?

 実際に聞かれたので、ちょっと書いておきます。

 色々良書はあるのですが、とりあえず一冊あげろと言われて私が思い浮かぶ本は初めてのPerl(通称 リャマ本)です。
 文章が平易で読みやすく、プログラム言語としてよく使われる機能優先に説明されています。(CGI向け解説本は、当然CGI向けの機能中心です)
 私が公開しているプログラムの中に出てくるものは一通り出てくると思います。
 この本で食い足りなかったら「ラクダ本」なり「続」へ進んで、これが難しかったらさらに入門向きの本を探すと良いでしょう。
 大体概要が掴めたら、ネット上の解説サイトをあさってみるのも悪くありません。

 私が「え~っと、アレってどう書くんだったっけ?」なんて時に真っ先に取り出す本は、今でもコレだったりします。
 どっちにしても無駄にならない本だと思います。

ツールのライセンスは何ですか?

 修正BSDライセンスにしています。(MITライセンスでもほぼ同じなんですよね)

 完全無保証な代わりに、改造や利用が無制限です。(商業利用含みます)
 不具合報告の他に、利用報告や改造報告などもお待ちしています。
 かなり励みになるものなのです。

 特に制約は無いのですが、私の作ったツールを利用してプレイする場合にはプレイするゲームのルールブックは所有しているのが望ましいです。
 基本的に私のツールは自分の好きなゲームに対応しているので、ツールがあるからといってルールブックが不要にはなりにくいように考えているつもりです。
 好きなゲームが先細りになっていくのは、誰でも悲しいですしね。

質問・バグ報告・改造報告などはどこにしたら良いでしょう?

 該当エントリのコメントやトラックバック、もしくはメールでお願いします。

 改造報告は、長くなるでしょうからコメントは避けた方が良いでしょう。
 私から本体に移植する許可を頂き、正式対応とする場合があります。

 どこに付けたら良いかさっぱり判らない場合は、このエントリに付けるのが良いかと思われます。
 なお、当ブログならびに私の作成したツールに無関係なコメントやトラックバックは削除する事がありますのでご了承ください。

TRPG用ツール関連リンク

  • ActivePerl
    ActiveStateのWindows用Perl処理系ActivePerlのサイト。英文。
  • COM Meets Ruby
    Windows用Ruby処理系の一つActiveScriptRubyのサイト。
  • TRPG支援ツール@Wiki
    2ch卓上ゲーム板TRPG支援ツールスレWiki
  • どどんとふ@えくすとりーむ
    Ruby+Flashの高機能オンセツール「どどんとふ」の公式サイト。プレイ会場もあるのでお試しもOKです。私のB&Cが丸ごと入ってます。
  • ターミナルベロシティ
    IRCオンラインセッション界でデファクトスタンダードなダイスボットOD-Toolが公開されているWiki。ぶっちゃけ国産TRPGのフォローアップはOD-Toolの方が良いですw

よく行くサイトさん

  • TRPG SNS
    TRPGに特化したSNS。利用は無料で、どどんとふの半公式コミュもあります。
  • TRPG.NET Wiki
    IRCサーバでお世話になっているTRPG.NET上にある、TRPG関係の包括的?Wiki
  • ten-youの日記
    JavaScriptでLimeChatのマクロ作りに余念がない“ten-you”さんのブログ。DX2用決定版マクロはここから出るかも?!
  • あかまんぼう
    アイコンなどのグラフィックス関係で多大な協力をしてくれている“なかやまさき”さんのブログ
  • お店番ブラウの控え室
    TRPG仲間にして、グラフィック担当の“白瀬 北斗”氏のブログ。内容はTRPGと無関係な罠。
  • きまぐれTRPGニュース
    有名なTRPG関係ニュースのまとめサイト。新製品から論考まで幅広く網羅されています。
  • ひきだしの中身blog
    CoCの伝道師かつ作家かつ美味い物スキーの“内山 靖二郎”氏のブログ。
  • ぽち*ぷ~ち
    怒濤のLinux使い“犬山ぽち丸”さんのサイト
  • トリスメギストスラボ
    三賢者の研究所でしょうか?絵が描けてTRPGが出来る“xing”さんのサイト。デザインが綺麗だなぁ。
  • パルテストラーダ
    “Regulus”さんのArsMagicaのサイトです。人のことは言えませんけど、マニアックですよね(笑
  • 大槌ぶんぶん
    ウォーハンマー翻訳チームの方のブログ。「どどんとふ」の竹流さんの友人だそうです。凄い人は凄い人と繋がってるものですね。
  • 来ヶ!たいたいキングダム 4th Destructor
    Ruby使いの“来山 竹流”さんのブログ。メインは「ど@えむ」に移行したので、こっちはTRPGと開発の話?!
  • 迷いの森
    私はもっぱらブログを読んでる“雪だるま”さんのサイト

こんなの読んでます