Leibniz hosting mode とりあえず作ってみました 2009-04-26版
 手札のセーブ保存機能を作成しました。今後は部屋作成&管理のインターフェース作成がメインになる予定です。
注意事項

・参加者一覧は左側ウィンドウ・またはGMメモに記載されています。
・左側ウィンドウは更新に時間がかかる場合があります。
・左側ウィンドウの並び順は最新発言者から上に来るようになっています。
・実際に、どの程度の人数まで動くのか不明です。
コマンド
使い方

@<コマンド> <台詞>

と発言して下さい。

「@」は必ず行頭に入れて下さい。
<コマンド>と<台詞>の間は半角スペース、もしくは全角スペースで区切って下さい。
<台詞>は、キャラクターの発言として全員に送信されます。

 ○  @おみくじ
 ○  @おみくじ ライプニッツさん、おみくじ下さいな
 ○  @おみくじ おみくじよこせ〜
 ×  おみくじ
 ×  ライプニッツおみくじ
 ×  @ライプニッツ、おみくじ

なお、チャット上では冒頭の@は抜いて表示されます。注意して下さい

@おみくじ

 ex. @おみくじ
 
 おみくじが引けます。
 おみくじの結果は全体に公開されます。


・ダイス・計算

 ex. @2D10
 ex. @2D10+100
 ex. @2D10+1D6
 ex. @D66 くらえっ
 ex. @D100
 
 ダイスを振ります。結果は全体に公開されます。
 計算式は全て半角で記入してください。計算式中にスペースを入れてはいけません。(スペース以降は台詞と解釈されます)
 計算式も使用できます。使用できる記号は+-*/%()のみです(「*」=「×」、「/」=「÷」)。
 
 

@名札「<文字列>」

 ex. @名札「Zzz」
 
 左側ウィンドウのユーザー名横に半角4文字までの単語を記入します。


@メモ「<文字列>」

 ex. @メモ「現在離籍中です!!」
 
 プレイヤーメモを変更します。
 プレイヤーメモはGMメモ内に記載されます。


@カードリロード

 ex. @カードリロード
 
 回線切断・ログアウト等の理由で手札がリセットされてしまった際に、ログアウト前の手札を、捨札から入手します。
 プレイヤー名を基準に判定しますので、ログアウト前と同名でなければリロードはできません。
 また、捨札で無いカードは戻りません。シャッフルを行いデッキに戻してしまうとリロードできませんので注意して下さい。


@部屋作成

 ex. @部屋作成
 
 部屋を新規に作成します。このコマンドによって設置された部屋はライプニッツの同系AIによって支援されます。
 支援AIは「準備中」という部屋を作成し、作成者に対してマスターキーを案内します。
 
 作成された部屋「準備中」に入室し、「@マスター認証」コマンドによる認証を行って下さい。これで手続きは終了です。
 (部屋名は「@部屋名」によって変更することができます。)
 
 使用後、部屋を閉じる際は必ず「@終了」コマンドで部屋を閉じて下さい。
 
 マスター不在で5分以上が経過した場合、部屋は自動的に閉じられます。チャット中でも同様です。
 マスターが退室する際には注意して下さい。
 
 
 なお、AIの数は限られています。限界数まで部屋が作成されている場合、新規に部屋を作成することはできません。
 2009/4/20現在、設置済みのAIは「ライプニッツ」「パスカル」の2体です。サーバの負荷等を勘案して、増設予定です。


@マスター認証「<マスターキー>」

 ex. @マスター認証「123456」
 
 自分をゲームマスターに設定します。マスター認証には部屋作成時に発行される「マスターキー」が必要です。
 ゲームマスターには次の権限が与えられます
 ・マスター専用のコマンドが使用できます。
 ・プレイヤーリストの最前列に配置されます。
 ・ロビーで表示されるGM名がマスターのハンドル名に変更されます。


マスター専用コマンド
@マスター解除

 ex. @マスター解除
 
 自分をゲームマスターから登録解除します。


@プレイヤー登録「<プレイヤー名>」

 ex. @プレイヤー「守若・まどか」
 
 参加者をゲームプレイヤーに設定します。
 ゲームプレイヤーには次の権限が与えられます。
 ・プレイヤーリストについて、ゲームマスターの次に配置されます。

 ※同姓同名のプレイヤーが複数いる場合、正常に動作しません。


@プレイヤー解除「<プレイヤー名>」

 ex. @プレイヤー解除「守若・まどか」
 
 参加者をゲームプレイヤーから登録解除します。


@キック「<プレイヤー名>」

 ex. @キック「守若・まどか」
 
 参加者を部屋から退出させます。


@部屋名「<部屋名>」

 ex. @部屋名「【守若実験室】どなたでもどうぞ」
 
 部屋名を変更します。


@パスワード「<パスワード>」

 ex. @パスワード「hogehoge」
 ex. @パスワード「」
 
 部屋にパスワードを設定します。パスワードは半角英数字8文字までです。
 パスワードを無効にする場合は「」を指定して下さい。


@GMメモ「<文字列>」

 ex. @GMメモ「ゴブリン(瀕死/重傷/死亡)」
 
 GMメモの先頭に<文字列>を追記します。
 GMメモはGMメモが消去されない限り蓄積されます。
 
 ※使いにくい気がしますので、今後、GMメモ全体を変更する、WEBアプリケーションを作成するかもしれません。
 


@GMメモ消去

 ex.@GMメモ消去

 GMメモを消去します。


@シャッフル

 ex. @シャッフル
 
 捨札のロールカードを山札に戻した後、山札をシャッフルします。
 
 
@リードシャッフル

 ex. @リードシャッフル
 
 捨札のリードカードを山札に戻した後、山札をシャッフルします。
 
 
@破棄

 ex. @破棄
 
 場のカードを全て捨札とします。
 
 
@初期化「<使用するバージョン>」

 ex. @初期化
 ex. @初期化「12」
 
 ゲーム情報を初期化します。全てのカードは山札に戻ります。
 
 「」内には使用するサプリメントを数字で指定して下さい。
 1 基本セット
 2 人狼vs吸血鬼
 3 メガリスクライシス
 
 省略すると、1〜3全てが指定された扱いになります。  
 
@カードセーブ「<セーブキー>」

 ex. @カードセーブ「12345678」
 
 デッキ・手札の情報を全てセーブします。セーブした情報は「@カードロード」によって、ロードすることができます。
 
 セーブの際にはセーブキーの指定が必要です。セーブキーは半角英数字8文字以内で指定することができます。
 
 
 ※セーブされた情報は部屋を立て直した後でもロードできます。(パスカル等の別AIからもロードが可能です。)
 ※同じセーブキーを指定した場合、後の情報で上書き記録されます。
 ※この機能を利用すると、セーブキー・カード情報・参加中プレイヤー名がサーバのHDDに記録されます。電話番号や暗証番号等、重要な文字列はセーブキーやプレイヤー名に絶対に含まれないようにして下さい。
 ※データの保管期間は最短で24時間です。以降は不定期に消去されます。長期間の保存はできません。ご注意下さい。


@カードロード「<セーブキー>」

 ex. @カードロード「12345678」
 
 「@カードセーブ」で保存された情報をロードします。
 全ての手札・デッキ情報は初期化され、セーブされた情報に置き換えられます。
 
 セーブ時と同名のプレイヤーがログインしている場合、そのプレイヤーの手札にセーブ時の手札・場札を配置します。(場札も手札に入りますので、)
 プレイヤー不在の手札は全て捨札になります。その後、捨札のままであれば、不在プレイヤーのログイン後に「@カードリロード」が使用できます。
 
 ロードの際にはセーブ時に指定したセーブキーが必要になります。


@終了

 ex. @終了
 
 部屋を終了します。
 
 
update
2009/04/26
・手札の復旧・保存・再生機能を追加しました。

2009/04/24
・レジュームの仕様を変更しました。  ・クライアントの無反応時間が20秒を超えると表示が「オフライン」になります。
 ・クライアントの無反応時間が120秒を超えると、強制的に退席となります。(退席した場合、そのプレイヤーの手札は捨札となります。)
 ・オフライン状態になったクライアントは自動再接続が可能です。再接続時には手札なども復旧します。
 ・GMおよびプレイヤーは強制退席しないようにするかもしれません。)
・GMおよびプレイヤー権限を持つプレイヤーは、アイコンの並び替えを行わないようにしました。(プレイ中にカードが上下するとプレイしにくそうですので)

2009/04/22
・カード周りの機能を試験的に実装しました。  ・「引く」「捨てる」「返す」「手札へ」「出すP」「出すE」「出すC」「手札へ(クライシス場)」ボタンが使用可能。
 ・「シャッフル」「リードシャッフル」「破棄」「初期化」のコマンドを追加
 ・「UNDO」は使えません。使えた方が良いようでしたら実装しますがのでご意見下さい(個人的には、挙動がイマイチ判らないので、他のコマンドで代用しがちなのですが。)
  プレイ中の回線断に対する対応、もしくは手札の一時記録等々の機能が今後の課題です。
  プレイヤー権限のあるプレイヤーのみカードが引ける&表示位置が動かない。というプランも検討中。
・GMのUNDOボタンを「破棄」に割り当てました。(UNDOは割り当て可能キーにするのが良いかもと思いました)
・チャンネルの参加人数上限を設定しました。とりあえず64名です。

2009/04/20
・コマンド文の形式を変更しました
・「@部屋作成」を作成。新規に部屋が作成できます。
・「@キック」を作成。
・GMメモ、プレイヤーメモを作成。旧メモは「名札」に変更しました。(用語が紛らわしいので)
・「@パスワード」を作成。部屋に鍵がかけられます。

2009/04/15
・コマンド文を変更しました。「ライプニッツ」と記載しなくても「@」のみで反応します。
・ダイスを振れるようにしました。同時に四則演算ができるようにしました。
・ゲームマスターを設定できるようにしました。
・ゲームプレイヤーを設定できるようにしました。
・関連コマンドを設定しました。

2009/04/14
・第2回実験。ありがとうございました。 ・簡易メモ機能を追加。負荷が高い機能なので、将来何らかの制限をするかもです。
・解説ページを作成しました。
・ダイスを振れるようにしました。
・bugfix

2009/04/13
・左側ウィンドウのアイコンは最新発言者が上に来るようにしました。
・左側ウィンドウに参加者一覧を表示するようにしました。
・再接続に仮対応。(ちょっと不安)
・現在の参加人数を部屋名に表示するようにしました。(ロビーから確認できます)
・一部の記号(「:/_:?.,”<>」)を半角で送信するようにしました。(全角で送っても半角になります。)
・GMメモの最下部にも参加者リストを掲載するようにしました。
・おみくじ機能を実装しました。「ライプニッツ、おみくじ」でおみくじが引けます。
・他、内部仕様を整理

2009/04/12
・第1回実験。ありがとうございました。
既知の問題

・一瞬、ユーザーがオフラインに見えることがある。
 仕様です。ユーザーの並べ替え時、データ送信に時間がかかるとそうなります。
 実際はオフラインになっていません。無害ですので気にしないで下さい。

・左側ウィンドウのユーザーリストが表示されない
 読み込みに時間がかかる場合があります。しばらくお待ち下さい。

・ロールカードを引いてからGM認証すると、ロールカードとリードカードの両方が手札に入る
・リードカードをクライシス場に置くと、プレイヤーの手札に入れる。

 今のところ仕様です。修正は可能ですけれど、これはこれで使い道があるのではないかと思ったりはしています。
 煩わしいようでしたら直します。

要検証事項

・最大で何人まで接続できるか?
 クライアント側のメモリ上限がボトルネックになる可能性があります。
ToDo
■優先度高
・カード保持プレイヤーに対する再接続、もしくは復帰後のカード復活機能
・GM用のコントロールパネルの作成。ブラウザでアクセスできる形で。
・クライアント版ライプニッツにおける、自動応答・マクロ系機能
・TRPG系の機能
   ・ダイス:他の人には出目が見えないように
   ・参加者同士、もしくはGMと参加者で内緒話ができるように。

■優先度低
・カード操作
・ステシの自動検索(ホームページで検索した結果を表示するだけなら…。同姓同名がいると絞込みできませんけれど。

■将来的な話
・ソースの公開(Perlで記述していますので、使い出は無いように思いますが。
よくある質問
Q.何人まで接続できますか?
A.わかりません。動作実績は15。理論上は100人でも対応可能です。但し、クライアント側のメモリ制約や回線速度がネックになると思います。今後の検証課題です。不具合が出ましたら、是非ご報告下さい。

Q.サーバ・クライアント・ホストへの負荷はどれくらいですか?
A.TW公式ロビーへの負荷は、公式アプリを利用した場合の1部屋分相当です。
 TWサーバへの負荷は、クライアント間の通信部分についてTWサーバを経由しませんので、構造的に負担はありません。(この辺りの事情から、中継モードでは動作しません。中継モードの場合、人数分の負荷がTWサーバにかかるので。)
 クライアントへの負荷は人数が増えた分、アイコンの読み込み等で遅くなる可能性はあります。今後の研究課題です。
 ホストへの負荷(私の環境)については、
Q.規約違反ではありませんか?
A.規約には違反しないよう配慮しています。ただし、明記されている規約には違反していない。という次元の話であって、常識やマナーの話は別問題だとは承知しています。TWや他の利用者の迷惑にならないよう、マナー良くご利用戴けるととても嬉しいです。

Q.バグを発見!
A.「守若・まどか(b61712)」までご報告下さい。チャットに書いておいて戴ければ後で確認します。

Q.○○みたいな機能が欲しい、この機能は要らない等々
A.「守若・まどか(b61712)」までご連絡下さい。検討します。チャットに書いておいて戴ければOKです。後で確認致します。

Q.ソフトを下さい。
A.機能的に落ち着いた時点で、ソースを整理・公開する予定です。
 実行環境はActivePerl5.10+WindowsXPです。UNIX環境で動くかは未検証です。決してエレガントなソースではないので期待せぬよう願います。むしろ、けちょんけちょんに貶して戴けると勉強になるので、とても嬉しいです。