trpgオンラインセッション環境とルール&シナリオ記述言語 その2

46
TRPG オオオオオオオオオオオオオ オオオ オオオオオオオオ オオ オオオオ オオオオオオ () Twitter: @ ChihiroShiiji / FB: takayuki.kando 2015/04/12 11 オオオオ オオオオオオオオオオオオ 西)

Upload: takayuki-kando

Post on 26-Jul-2015

402 views

Category:

Software


0 download

TRANSCRIPT

Page 1: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

TRPG オンラインセッション環境とルール&シナリオ記述言語 その2

神戸隆行(椎路ちひろ) Twitter: @ChihiroShiiji / FB: takayuki.kando

2015/04/12 (第 11 回福岡市西区プログラム勉強会資料)

Page 2: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

自己紹介 神戸 隆行(かんど たかゆき)、 PN. 椎路ちひろ(しいじ ちひろ)

Twitter: @ChihiroShiiji / FB: takayuki.kando 出身は名古屋、趣味イラストとコスプレ 本業は九大の社会人博士課程で博士を取ろうとしながら研究開発に従事する有

期雇用の勤め人@百道浜 専門は流転中:

数値解析(のプログラミング・インターフェースの改良、修論@名大)→数式処理(のプログラミング・インターフェースの改良@某 F 研) →プログラム最適化(博士課程一回目の失敗@東工大)( 2005 年に仕事を紹介され福岡へ来た)→コンパイラ開発( Redefis 、動的再構成可能プロセッサ向けコンパイラ)→ SW/HW開発環境( IDE 上からクラウド上の開発ツールを利用できるミドルウェアPTaaS の開発) http://www.qualiarc.com/?post_type=seihin&p=202

使用プログラミング言語: 最初は FORTRAN 、大学以降は C++ と C 、今は主に Java 、他は必要に応じてボチボ

チ 本日は趣味で開発中のシステムとオレオレ言語の紹介

ソースとサンプルは GitHub[ https://github.com/TakayukiKando/Lore ] に置いてます2015/04/122 第 11 回福岡市西区プログラム勉強会

Page 3: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

ルール・シナリオ記述言語の要件(再掲) ゲーム内時間管理と連動するイベント駆動なルール記述

TRPG ではゲーム内時間とプレイヤー間のセッションの進行が密接に絡み合っているのでこれを管理する必要がある 但し TRPG は非リアルタイムなゲームである

→ゲーム性が変ってしまうので安易にリアルタイム化してはいけない メッセージングの仕組みと適合する必要がある GUI が自然に組み込める必要がある

TRPG 向けのデータ記述 ゲーム内データを記述、管理する必要

確率、ランダム要素の表現 時間、距離、重さ等の各種スケールの表現

特に地形データの作成を容易にする必要 大事な部分の地形のデザインに集中できるよう情報が粗いマップと情報が密なマップが混在

できるようにする必要がある ユーザ階層を考えたルール記述とシナリオ記述の緩やかな分離

ルール記述は複雑で、厳密な記述が可能でなければならない シナリオ記述は簡素でなければならない しかしシナリオ・ローカルのルールも記述したい場合がある

2015/04/123 第 11 回福岡市西区プログラム勉強会

Page 4: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

basic.loreLore基本

ライブラリ

RuleA.lore"A" のルールライブラリ

WorldA.lore"A" の世界設定

ライブラリ

CampaignB.lore

キャンペーン・シナリオ "B"

ScenarioC.lore

シナリオ "C"

プレイヤー

GM、パワー・プレイヤー

キャンペーンライター

設定ライター

ルール設計者

Loreシステム設計者

人口が多い

必要な知識が多い

ユーザ階層を考えたルール記述とシナリオ記述の緩やかな分離

2015/04/124 第 11 回福岡市西区プログラム勉強会

Page 5: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

DSL(Domain Specific Language 、 特定分野向け言語)

2015/04/12第 11 回福岡市西区プログラム勉強会5

ルーツ: 設定ファイルやマクロ言語、フォーマット記述言語

例:  make (ビルド)、 ANT (ビルド)、 HTML( webページの記述)、 CSS ( webページのスタイル記述)、 Postscript (印刷物の記述)

特定分野で使われるコンセプトを直接記述可能 例: HTML の表題( <h0>~</h0> )、パラグラフ

( <p>~</p> )といった文書構造、 CSS のフォント指定、make の依存関係や拡張子ルール

特定分野に焦点を絞ることで言語を簡易化 例えばチューリング完全である必要はない

…しかし便利機能を追加していくと意図せずチューリング完全に 例:  Postscript 、 TeX マクロ

Page 6: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

実装方式による DSL の分類

2015/04/12第 11 回福岡市西区プログラム勉強会6

外部 DSL… 特定の既存言語とは独立した DSL(元々の意味での DSL )

内部 DSL …汎用プログラミング言語など既存言語内でライブラリやフレームワークとして実現されるDSL 例:  Chef( インフラ構築、 Ruby) 、 Rake(ビルド、

Ruby) 、 Gradle(ビルド、 Groovy) 独自の処理系をゼロから作らなくていいので実装が簡単 実質は母体言語のサブセットとなるので構文や意味につ

いて母体となる言語の制約を受ける 母体言語を知っていれば習得容易な一方、 DSL が使いたいだ

けなのに母体言語の知識が求められることも

Page 7: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

DSL in DSL

2015/04/12第 11 回福岡市西区プログラム勉強会7

DSL の中に内部 DSL を作る 汎用性が高めの DSL の中に、汎用性が低いが記述が簡易

な内部 DSL をサブセットとして作る 観察: 元々、汎用言語でも型宣言の構文などは内

部 DSL と看做せるようなサブセットになっていることが多い C++ の総称型であるテンプレート構文に至っては宣言構文だけでチューリング完全になってしまった→ テンプレートメタプログラミング

Page 8: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

TRPG ルール・シナリオ記述言語におけるDSL in DSL

2015/04/12第 11 回福岡市西区プログラム勉強会8

ルールなど処理の流れを記述する汎用プログラミング言語的な機能を持つ TRPG ルール記述言語( DSL )

ルール記述言語内のデータ記述部分がシナリオや世界設定の記述言語として DSL in DSL になっていればよい (汎用言語における定数宣言とリテラルに相当する部分)

Page 9: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

状態情報

ルール情報

Lore ファイル

位置情報

時間情報(スケジュール)イベント イベン

トイベント

手続き

手続き

手続き

管理情報タイトル、作成者、作成日付と改訂記録、管理者(GM) ...etc.

location"C 地方 "

location"迷宮 "

単位

単位

単位

列挙

列挙

location"α 大陸 "

環境情報

マップ

location" ある場所 "

キャラ情報Actor"PC1"

Actor"PC2"

Actor"NPC1"

Actor"NPC2"

シナリオ情報

アイテム情報

アイテム情報アイテム "Item1"アイテム "Item2"

アイテム "Item3"

マップ

マップ

列挙

トリガ トリガ トリガ

シークレット シークレット

2015/04/129 第 11 回福岡市西区プログラム勉強会

Page 10: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

状態情報

ルール情報

Lore ファイル

位置情報

時間情報(スケジュール)イベント イベン

トイベント

手続き

手続き

手続き

管理情報タイトル、作成者、作成日付と改訂記録、管理者(GM) ...etc.

location"C 地方 "

location"迷宮 "

単位

単位

単位

列挙

列挙

location"α 大陸 "

環境情報

マップ

location" ある場所 "

キャラ情報Actor"PC1"

Actor"PC2"

Actor"NPC1"

Actor"NPC2"

シナリオ情報

アイテム情報

アイテム情報アイテム "Item1"アイテム "Item2"

アイテム "Item3"

マップ

マップ

列挙

トリガ トリガ トリガ

シークレット シークレット

2015/04/1210 第 11 回福岡市西区プログラム勉強会

シナリオ記述用DSL in DSL

Page 11: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

DSL in DSL まとめ

2015/04/12第 11 回福岡市西区プログラム勉強会11

…とこのように: ユーザ階層を考えたルール記述とシナリオ記述の緩やかな分離 ルール記述は複雑で、厳密な記述が可能でなければならない シナリオ記述は簡素でなければならない しかしシナリオ・ローカルのルールも記述したい場合がある

…を DSL in DSL 的に実現する

Page 12: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

TRPG ルール・シナリオに特徴的なデータの例

2015/04/12第 11 回福岡市西区プログラム勉強会12

Page 13: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

本日取り上げる例

2015/04/12第 11 回福岡市西区プログラム勉強会13

Dice型 単位型ファミリ 地形情報と位置情報

Page 14: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

Dice型

2015/04/12第 11 回福岡市西区プログラム勉強会14

TRPG を含むテーブルゲームではお馴染みのダイス(サイコロ)の仕様を記述する型 例:  D6(6面1個 ) 、 D20 ( 20面1個)、 2D6+6 ( 6面2個と定数 6 )、

D8-D4 ( 8面1個から 4面1個を引く) 数学的には乱数の仕様を示す TRPG では行為の成功率の仕様や武器のダメージ仕様の指定に使われ

る 機能

実際に乱数を発生させられる セッションの進行に必要

分布を示すパラメタが取れる(平均、分散、標準偏差、度数分布) プレイヤーやGM (司会兼レフェリー)が結果を予想し易くなる

加算、減算、乗算が可能 例: 武器のダメージ( D8 )+キャラクタの体力に依存するダメージ修正値( -D4 )

から D8-D4 など。 乗算は加算に: 2*D8==D8+D8 減算は加算と定数減算に:  -D4==D4-5

Page 15: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

単位型ファミリ

2015/04/12第 11 回福岡市西区プログラム勉強会15

TRPG では単位付きの数値型を沢山利用する 距離、重さ、容積(実数ベース)、通貨(整数ベース)…など

要件 用途に合わせてスケールの違う単位を使う

街の距離は km で、戦闘時のキャラの距離は m で…など 特に雰囲気を出すために同じ「次元」(例えば長さ)を複数の単位系で表現したりもする m じゃなくてヤードやキュビットを使いたいとか 各地で違う通貨を使ってるとか

ルール記述上はできるだけ汎用的に取り扱いたい 暗黙のうちに換算するなど

アプローチ 単位付きの数値型を導入 単位付きの数値型の宣言が「次元」毎にファミリを構成できるよう

にする

Page 16: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

単位1.0(m)

単位1(秒 )

real実数値型

integer整数値型

単位1(p)

単位12=(dozen)

単位1.0(kg)

単位×0.001=(g)単位×1000=(t)

単位×0.001=(mm)単位×1000=(km)

単位×60=( 分 )

単位×60=( 時 )

単位×24=( 日 )

単位×12=(gross)

単位×100=(£ )

単位×12=(R)

単位×12= (FT)

個数

通貨

時間

重さ

長さ

ulong非負長整数値型

2015/04/1216 第 11 回福岡市西区プログラム勉強会

Page 17: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

ルール・シナリオ記述言語の要件(再掲) ゲーム内時間管理と連動するイベント駆動なルール記述

TRPG ではゲーム内時間とプレイヤー間のセッションの進行が密接に絡み合っているのでこれを管理する必要がある 但し TRPG は非リアルタイムなゲームである

→ゲーム性が変ってしまうので安易にリアルタイム化してはいけない メッセージングの仕組みと適合する必要がある GUI が自然に組み込める必要がある

TRPG向けのデータ記述 ゲーム内データを記述、管理する必要

確率、ランダム要素の表現 時間、距離、重さ等の各種スケールの表現

特に地形データの作成を容易にする必要 大事な部分の地形のデザインに集中できるよう情報が粗いマップと情報が密なマップが混在

できるようにする必要がある ユーザ階層を考えたルール記述とシナリオ記述の緩やかな分離

ルール記述は複雑で、厳密な記述が可能でなければならない シナリオ記述は簡素でなければならない しかしシナリオ・ローカルのルールも記述したい場合がある

2015/04/1217 第 11 回福岡市西区プログラム勉強会

Page 18: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

位置情報と地形情報

2015/04/12第 11 回福岡市西区プログラム勉強会18

地形情報 TRPG の舞台となる世界の各地の地形と気候風土

いわゆる「マップ」 世界統一スケールのフル 3D が例え技術的に可能でも多くのアマチュアのシ

ナリオ作者にそんなものを作ってる暇はない 多彩なマップ表現を受け入れる必要がある

グラフ構造、升目、ヘックス、簡易 3D 、フル 3D… など 異なるマップ表現を繋ぎ合わせて使える必要がある

世界や地域は 2次元マップ、戦闘の舞台はヘックス、ダンジョンは 3D… など 位置情報

TRPG の舞台となる世界での: キャラや物の位置を記録する必要 それらの相対的な方向や距離の計測が必要

移動の必要な時間は? 視線が通るか? 武器は敵に届くのか?

ルール記述の簡素化のため、マップ表現に依存しない統一的な取り扱いが必要になる

Page 19: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

エリア階層とロケーション・パス

2015/04/12第 11 回福岡市西区プログラム勉強会19

エリア階層:範囲、スケール、表現形式も様々なエリアを階層化(ツリー)して管理する エリアに上位の階層のロケーションパスを記録して基準点とする 各エリアは様々なタイプ、スケールのマップ情報を持つ

例: Point 、 LinkedPoint 、2 D 、 Section 、3D など マップ情報はツールで編集し易いよう XML 形式(ヒアドキュメントも URL指定も

可) 各エリアに環境情報を記録する

マップの基準値・デフォルト値となる気温、標高、風向、風速など 未定義の環境情報は上位(広域)のマップの物が継承される

ロケーションパス:位置の指定は階層を指定するパス+各マップ内での「座標」で行う 座標はマップ形式毎に異なる形式を持つ 距離や方位はローケーションパスを入力にして計算する

表現形式やスケール毎に精度は色々だが最悪でも概算値は返す

Page 20: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

location" 地方 A"

location"迷宮 "

location" 大陸 "

area

location"祭壇 "

area

area

location"街 "

area

location"城 "

area

location"/"(root)

environment

location" 地方 B"

location"石碑 "environme

nt

environment

area

2015/04/1220 第 11 回福岡市西区プログラム勉強会

Page 21: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

location" 地方 "

location"迷宮 "

location" 大陸 "

area

location

area

area

location"街 "

area

location"城 "

area

location"/"(root) ロケーション・パス:"/"

ロケーション・パス: "/ 大陸 "

ロケーション・パス: "/ 大陸 / 地方"

ロケーション・パス: "/ 大陸 / 地方 /迷宮 "

ロケーション・パス: "/ 大陸 / 地方 /迷宮[110,350]"

root は場所未定なキャラクタやアイテムを置くために利用できる

ロケーション・パス: "/ 大陸 / 地方[20,800]"

ロケーション・パス: "/ 大陸[1205,900]"

ロケーション・パス: "/[0]"

[ ] 内はそのロケーションが含まれる area 内での座標… area のタイプによって表記は異なる

ロケーションの「親」へのリンクを表すロケーション・パス

そのロケーション自身を指すロケーション・パス

地形情報を表す、いわゆるマップ情報

マップ情報のない末端のリーフ・ロケーションキャラやアイテム、トリガの配置に利用

2015/04/1221 第 11 回福岡市西区プログラム勉強会

Page 22: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

付録

2015/04/1222 第 11 回福岡市西区プログラム勉強会

Page 23: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

同じ場所

GM

player

player

データキャラクター・シートマップ表ハンドアウト… etc.

判定•ダイス•カード

物理媒体による情報共有

物理媒体による情報共有

直接操作

直接会話

TRPG セッション プレイヤーが PC

( Player Character )を演じる

GM ( Game  Master )はシナリオに則った進行とルールに則った判定、NPC ( Non-Player Character 、敵や協力者)の操作を行う GM が情報ボトルネックになり易い

2015/04/1223 第 11 回福岡市西区プログラム勉強会

Page 24: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

ネットワーク

ダイスボット

GM

player

player

データキャラクター・シー

トマップ表ハンドアウト…etc.

判定•ダイス•カード

物理媒体による情報共有

物理媒体を模倣した電子媒体による情報共有

コマンド操作

チャット

コマンド受付型オンラインセッション環境 ユーザがゲーム

のルールと操作の両方を覚える必要 現在はチャット

にテキスト・コマンドを混入 チャットパレッ

トによる入力量の緩和工夫

自然に GUI 化するのが難しい

2015/04/1224 第 11 回福岡市西区プログラム勉強会

Page 25: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

ネットワーク

ルール解釈エンジン

GM

player

player

データキャラクター・シー

トマップ表ハンドアウト…etc.

判定•ダイス•カード

ルールで駆動されるルール解釈エンジンを介した共有

問合せ

チャット

ルール主導型オンラインセッション環境 ユーザはゲーム

のルールも操作も両方覚える必要なし

システムがルールを「理解」して GM の進行・判定を助ける GM ボトルネッ

ク解消 ルールをイベン

ト駆動的に記述すれば GUI 化も自然

2015/04/1225 第 11 回福岡市西区プログラム勉強会

Page 26: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

XGMTK - サンプル・セッション .lore

マップ - Dungeon

マップ - Town

送信送信

ファイル (F)  編集 (E)  プロパティ (P)  ウィンドウ (W)  ヘルプ (H)

Askr: 移動先指定よろしくね。

Askr: うーむ。了解。

Kmdr: あ、移動経路変えたいんだけど…。

Kyn: ネタはいいからw

Kyn: 飯休憩にしね?

Kyn: りょーかい(空腹をこらえつつ)Ngt: あい。

Kmdr: あい。

ジャンヌ : いや、あんたシスターでしょ。

メディア : フフフ、アンデッドなんて私のファイヤーボールで全部灰にしてあげるわ!

アガタ : 誰にも一つくらいあるでしょう?苦手な物は仕方ないのでしてよ…。

アガタ : うう、地下墓地は苦手なのですわ…。

GM: 薄暗い中、あちこちからカタカタとかすかな音が…。アガタ : ぎゃーーーー!!!

ジャンヌNgt: カレーで。

Kmdr: しかしカレーは飲み物…。

Askr: じゃぁ一通り移動が終わったら休憩で。

名前: ジャンヌ__ 種族: 人間_ 社会: 君主社会   職業: 兵士STR : 17 CON : 9 SIZ : 12 INT : 14POW : 12 DEX : 8 APP : 13HP: 11/11MP: 12/12FP : 15/26

プレイヤー向け GUI イメージ

2015/04/1226 第 11 回福岡市西区プログラム勉強会

Page 27: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

XGMTK - サンプル・セッション .lore

マップ - Dungeon

マップ - Town

送信送信

ファイル (F)  編集 (E)  プロパティ (P)  ウィンドウ (W)  ヘルプ (H)

Askr: 移動先指定よろしくね。

Askr: うーむ。了解。

Kmdr: あ、移動経路変えたいんだけど…。

Kyn: ネタはいいからw

Kyn: 飯休憩にしね?

Kyn: りょーかい(空腹をこらえつつ)Ngt: あい。

Kmdr: あい。

ジャンヌ : いや、あんたシスターでしょ。

メディア : フフフ、アンデッドなんて私のファイヤーボールで全部灰にしてあげるわ!

アガタ : 誰にも一つくらいあるでしょう?苦手な物は仕方ないのでしてよ…。

アガタ : うう、地下墓地は苦手なのですわ…。

GM: 薄暗い中、あちこちからカタカタとかすかな音が…。アガタ : ぎゃーーーー!!!

ジャンヌNgt: カレーで。

Kmdr: しかしカレーは飲み物…。

Askr: じゃぁ一通り移動が終わったら休憩で。

名前: ジャンヌ__ 種族: 人間_ 社会: 君主社会   職業: 兵士STR : 17 CON : 9 SIZ : 12 INT : 14POW : 12 DEX : 8 APP : 13HP: 11/11MP: 12/12FP : 15/26

行動の予定

キャンセル

これからどうしますか?

送信

移動調べる休息

移動

行動選択の例

2015/04/1227 第 11 回福岡市西区プログラム勉強会

Page 28: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

インターネット

サーバ・サイドXGMTKコンポーネント( XMPP外部サーバコンポーネント)Lore言語

エンジン

ルール シナリオデータ(マップ、キャラクタ…

etc. )

標準的なXMPPサーバ

XGMTKクライアント( XMPPクライ

アント)

XGMTKクライアント( XMPPクライ

アント)

XGMTKクライアント( XMPPクライ

アント)

GM player player

セッション記録

Lore言語データ・ビュワー

Lore言語データ・ビュワー

Lore言語データ・ビュワー

XGMTK アーキテクチャと Lore 言語 XGMTK: Web

ではなくメッセージングベースのオンラインセッション環境 XMPP : オー

プンなメッセージングプロトコル

Lore: 汎用・ルールシナリオ記述言語 ゲーム内時間

管理と連動するイベント駆動なルール記述

TRPG 向けのデータ記述

2015/04/1228 第 11 回福岡市西区プログラム勉強会

Page 29: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

ルール・シナリオ記述言語の要件 ゲーム内時間管理と連動するイベント駆動なルール記述

TRPG ではゲーム内時間とプレイヤー間のセッションの進行が密接に絡み合っているのでこれを管理する必要がある 但し TRPG は非リアルタイムなゲームである

→ゲーム性が変ってしまうので安易にリアルタイム化してはいけない メッセージングの仕組みと適合する必要がある GUI が自然に組み込める必要がある

TRPG 向けのデータ記述 ゲーム内データを記述、管理する必要

確率、ランダム要素の表現 時間、距離、重さ等の各種スケールの表現

特に地形データの作成を容易にする必要 大事な部分の地形のデザインに集中できるよう情報が粗いマップと情報が密なマップが混在

できるようにする必要がある ユーザ階層を考えたルール記述とシナリオ記述の緩やかな分離

ルール記述は複雑で、厳密な記述が可能でなければならない シナリオ記述は簡素でなければならない しかしシナリオ・ローカルのルールも記述したい場合がある

2015/04/1229 第 11 回福岡市西区プログラム勉強会

Page 30: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

未処理のイベント群

処理済みのイベント群

処理中のイベント

ゲーム内現在

ゲーム内未来

ゲーム内過去

必要に応じ、時刻を指定して新規にイベントを登録追加

ログが必要なければ削除

ゲーム内時間管理と連動するイベント駆動なルール記述

ゲーム内の時間進行

Lore 言語エンジンのイベント処理機構(サーバ側)

GM player

クライアントの GUI

XMPP メッセージング

ユーザたちのセッション進行

問い合わせ 応答

2015/04/1230 第 11 回福岡市西区プログラム勉強会

Page 31: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

状態情報 :TRPG の登場人物、舞台となる場所、アイテムを表現するデータ位置情報

環境情報マップ

アイテム情報キャラ情報

アイテム情報

ルール情報:TRPG のゲームシステムを記述するルール、単位系、状態名、カテゴリ名、フォーム、テーブル手続き単位列挙フォームテーブル

Loreファイル(拡張子 ".lore" のファイル)

時間情報(スケジュール):TRPG セッションの時間経過、起こるべき出来事を表現するデータ現在時刻カウンタイベント・キューイベント

管理情報:当該 Lore ファイルの書誌事項、管理情報

シナリオ情報:TRPG のキャラクタやマップ上の仕掛け(状態がある条件を満たすとルールに従って何かが起こる)、隠された情報を表現するデータトリガシークレット

Lore 言語で記述・管理される情報の例

2015/04/1231 第 11 回福岡市西区プログラム勉強会

Page 32: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

basic.loreLore基本

ライブラリ

RuleA.lore"A" のルールライブラリ

WorldA.lore"A" の世界設定

ライブラリ

CampaignB.lore

キャンペーン・シナリオ "B"

ScenarioC.lore

シナリオ "C"

プレイヤー

GM、パワー・プレイヤー

キャンペーンライター

設定ライター

ルール設計者

Loreシステム設計者

人口が多い

必要な知識が多い

ユーザ階層を考えたルール記述とシナリオ記述の緩やかな分離

2015/04/1232 第 11 回福岡市西区プログラム勉強会

Page 33: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

コマンド主導型オンライン・セッション・システム

ルール主導型オンライン・セッション・システム

ダイス・ボット(コマンド・インタプリタ)

カードやダイス等の判定の執行と共有

マップ等一部データの管理と共有

コマンド

応答

イベント・スケジューラ(ルール&シナリオ・インタプ

リタ)

ルールに基づいて基本的にゲームの進行のスケジュール全体を管理している

チャットは基本的に説明と会話と打ち合わせに利用される

ゲーム中ほぼ全てのデータの管理と共有

GM

GM

player

コマンド

応答

player応答

問い合わせ

応答

問い合わせ

アドリブ手段スケジュールやデータを書き換えるイベント追加トリガ追加ローカル・ルール追加

ゲーム進行の多くは通常のチャットでインフォーマルに行われる(アドリブ容易)

2015/04/1233 第 11 回福岡市西区プログラム勉強会

Page 34: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

コマンド受付型 vs ルール主導型 コマンド受付式

直感的 ただしルールは部分的にしかモデル化されず受動的

ルール主導式 ルール解釈エンジンから必要に応じて能動的に選択をユーザに問いかける

GUIや記述言語でこのようなモデルを引用して表示や記述することはできるがユーザが直接的に操作はしない

2015/04/1234 第 11 回福岡市西区プログラム勉強会

Page 35: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

Kyn[offline]: -

邪魔しないで

XMPP クライアント GUI イメージ

2015/04/1235 第 11 回福岡市西区プログラム勉強会

Page 36: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

行動の予定

キャンセル

これからどうしますか?

送信

移動調べる休息

移動

行動選択ダイアログの例

2015/04/1236 第 11 回福岡市西区プログラム勉強会

Page 37: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

ファイル名 作成者 説明basic.lore Lore 言語開発

者共通する基本的なデータ型の定義

ファイル名の例 主な作成者 内容の例RuleAA.lore ルール設計者、

移植者ゲームシステム AA のルール定義(主に手続き、単位系、カテゴリや状態を表す名前、 etc. )

WorldAA.lore 設定ライタ、移植者

ゲームシステム AA の世界設定(主にデータ、幾らかの手続き: マップ、クリーチャー、著名 NPC 、標準的なアイテム設定、ローカル・ルール、 etc. )

CampaignBB.lore キャンペーン(シナリオ)ライタ

キャンペーン BB のシナリオ(主にデータ、少量の手続き:マップ、クリーチャー、 NPC 、特別なアイテム設定、トリガ、秘密の情報。必要に応じてローカル・ルール。)

ScenarioCC.lore シナリオ・ライタ、 GM 、パワー・プレイヤー

シナリオ CC (殆どデータ:マップ、配置済のクリーチャーや NPC 、特別なアイテム設定、トリガ、秘密の情報 etc. )

Lore 言語と共に配布されるファイル

Lore 言語で記述されるファイルの例

2015/04/1237 第 11 回福岡市西区プログラム勉強会

Page 38: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

セッション環境

basic.loreLore基本データ

型ライブラリ

RuleAA.loreAA のルールライブラリ

WorldAA.loreAA の世界設定

ライブラリ

CampaignBB.lore

キャンペーン・シナリオ BB

ScenarioCC.loreシナリオ CC

Lore ファイル群 セッション・ファイル

セッション

Pack

Unpack

SuspendResume

Read

Write

画像、テキスト等各種素材ファイル群

各種オーサリング・ツール

作成、編集

2015/04/1238 第 11 回福岡市西区プログラム勉強会

Page 39: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

Lore言語エンジンLore 言語ファイルの解釈・実行 Java ライブラ

リbasic.loreLore基本データ型

ライブラリ

RuleAA.loreゲーム・システム"AA" のルール

ライブラリ

WorldAA.lore"AA" の世界設

定ライブラリ

CampaignBB.loreキャンペーン・シナリ

オ "BB"

ScenarioCC.loreシナリオ "CC"

import

import

import

解釈、実行、作成支援

import

2015/04/1239 第 11 回福岡市西区プログラム勉強会

Page 40: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

遠隔セッション環境

データ共有・流通

ルール適用、データ管理省力化、自動化

ルール、シナリオ、データの製作

GM player player

XGMTKクライア

ント

XGMTKクライア

ント

XGMTKクライア

ント

XGMTKオーサリング

ツール

作成

XGMTKサーバ

テキスト・メッセージチャットダイアログ

データの配布ゲーム進行に必

要な対話

Lore 言語スクリプト

(ルール、シナリオ、データ)

Lore 言語スクリプト(データ)

Lore 言語スクリプト

(ルール、シナリオ、データ)

2015/04/1240 第 11 回福岡市西区プログラム勉強会

Page 41: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

Eclipse IDE

XGMTKプラグイン

ルール シナリオデータ(マップ、キャラクタ…

etc. )

GM

セッション記録

スクリプト言語Loreエディター

セッション・シミュレータ

スクリプト言語Loreエンジン

スクリプト言語Lore

データ・ビュワー

2015/04/1241 第 11 回福岡市西区プログラム勉強会

Page 42: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

遠隔セッション支援

オーサリング支援

データ共有支援

GM player player

データ: ルール、シナリオ、キャラクタ、アイテム、マップ

データ: ルール、シナリオ、キャラクタ、アイテム、マップ

データ: ルール、シナリオ、キャラクタ、アイテム、マップ

ビュワー ビュワービュワーオーサリングツール

作成

配布 / 共有

閲覧 / 操作

対話

スクリプト言語エンジ

スクリプト言語エンジ

スクリプト言語エンジ

自動化支援

2015/04/1242 第 11 回福岡市西区プログラム勉強会

Page 43: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

セッション環境

メッセージング・クライアント

メッセージング・クライアント

メッセージング・クライアント

GM player player

NPC PC PCNPC NPC

セッション(キャラクタ間チャットルーム

+ゲーム内イベント伝達インフラ)

チャット(ユーザ間チャットルーム)

制御 制御制御

主催&制御 参加 参加参加参加参加

参加参加主催

2015/04/1243 第 11 回福岡市西区プログラム勉強会

Page 44: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

歩く(目的地まで)

歩く

歩く

襲われる(歩行中断、戦闘開始)

戦う

戦う

歩く

歩く

目的地着

戦う

戦う

歩く(目的地まで)

襲われる(戦闘開始)

目的地着

歩くクロック型時間管理

イベント型時間管理

2015/04/1244 第 11 回福岡市西区プログラム勉強会

Page 45: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

スケジューラ

イベント・キュー

イベントイベント

イベント

Location 、 Actor 、 Item等

トリガ

実行

イベント登録 / 取り消し

条件に合致するトリガを実行

イベント登録 / 取り消

イベント最も時間が早く、その中で最も優先度の数値が低いイベントから順に並べてイベントを管理

キューの先頭からイベントを順に取り出して実行

手続き

手続き

トリガ・チェッカ

監視

現在時刻カウンタ

セッション開始からの経過時間、イベント実行が終わるとイベント・キューの先頭のイベントの時刻に更新される

イベントの作用の結果がトリガ群の条件に合致するか調べる

復帰

呼び出し

復帰

呼び出し

2015/04/1245 第 11 回福岡市西区プログラム勉強会

Page 46: TRPGオンラインセッション環境とルール&シナリオ記述言語 その2

ネットワーク

ルール

手続き

復帰

呼び出しイベント or トリガ

手続き呼び出し

フォームによる問い合わせ

キャラクタ

GM

プレイヤー

キャラクタ

アイテム 環境情報 マップ

各種情報の取得

計算

返り値(値、作用)の組み立て

メッセージ送信

キャラクタ

テーブル

テーブル参照

イベント登録

2015/04/1246 第 11 回福岡市西区プログラム勉強会