trpgオンラインセッション環境とルール&シナリオ記述言語 その2
TRANSCRIPT
TRPG オンラインセッション環境とルール&シナリオ記述言語 その2
神戸隆行(椎路ちひろ) Twitter: @ChihiroShiiji / FB: takayuki.kando
2015/04/12 (第 11 回福岡市西区プログラム勉強会資料)
自己紹介 神戸 隆行(かんど たかゆき)、 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 回福岡市西区プログラム勉強会
ルール・シナリオ記述言語の要件(再掲) ゲーム内時間管理と連動するイベント駆動なルール記述
TRPG ではゲーム内時間とプレイヤー間のセッションの進行が密接に絡み合っているのでこれを管理する必要がある 但し TRPG は非リアルタイムなゲームである
→ゲーム性が変ってしまうので安易にリアルタイム化してはいけない メッセージングの仕組みと適合する必要がある GUI が自然に組み込める必要がある
TRPG 向けのデータ記述 ゲーム内データを記述、管理する必要
確率、ランダム要素の表現 時間、距離、重さ等の各種スケールの表現
特に地形データの作成を容易にする必要 大事な部分の地形のデザインに集中できるよう情報が粗いマップと情報が密なマップが混在
できるようにする必要がある ユーザ階層を考えたルール記述とシナリオ記述の緩やかな分離
ルール記述は複雑で、厳密な記述が可能でなければならない シナリオ記述は簡素でなければならない しかしシナリオ・ローカルのルールも記述したい場合がある
2015/04/123 第 11 回福岡市西区プログラム勉強会
basic.loreLore基本
ライブラリ
RuleA.lore"A" のルールライブラリ
WorldA.lore"A" の世界設定
ライブラリ
CampaignB.lore
キャンペーン・シナリオ "B"
ScenarioC.lore
シナリオ "C"
プレイヤー
GM、パワー・プレイヤー
キャンペーンライター
設定ライター
ルール設計者
Loreシステム設計者
人口が多い
必要な知識が多い
ユーザ階層を考えたルール記述とシナリオ記述の緩やかな分離
2015/04/124 第 11 回福岡市西区プログラム勉強会
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 マクロ
実装方式による DSL の分類
2015/04/12第 11 回福岡市西区プログラム勉強会6
外部 DSL… 特定の既存言語とは独立した DSL(元々の意味での DSL )
内部 DSL …汎用プログラミング言語など既存言語内でライブラリやフレームワークとして実現されるDSL 例: Chef( インフラ構築、 Ruby) 、 Rake(ビルド、
Ruby) 、 Gradle(ビルド、 Groovy) 独自の処理系をゼロから作らなくていいので実装が簡単 実質は母体言語のサブセットとなるので構文や意味につ
いて母体となる言語の制約を受ける 母体言語を知っていれば習得容易な一方、 DSL が使いたいだ
けなのに母体言語の知識が求められることも
DSL in DSL
2015/04/12第 11 回福岡市西区プログラム勉強会7
DSL の中に内部 DSL を作る 汎用性が高めの DSL の中に、汎用性が低いが記述が簡易
な内部 DSL をサブセットとして作る 観察: 元々、汎用言語でも型宣言の構文などは内
部 DSL と看做せるようなサブセットになっていることが多い C++ の総称型であるテンプレート構文に至っては宣言構文だけでチューリング完全になってしまった→ テンプレートメタプログラミング
TRPG ルール・シナリオ記述言語におけるDSL in DSL
2015/04/12第 11 回福岡市西区プログラム勉強会8
ルールなど処理の流れを記述する汎用プログラミング言語的な機能を持つ TRPG ルール記述言語( DSL )
ルール記述言語内のデータ記述部分がシナリオや世界設定の記述言語として DSL in DSL になっていればよい (汎用言語における定数宣言とリテラルに相当する部分)
状態情報
ルール情報
Lore ファイル
位置情報
時間情報(スケジュール)イベント イベン
トイベント
手続き
手続き
手続き
管理情報タイトル、作成者、作成日付と改訂記録、管理者(GM) ...etc.
location"C 地方 "
location"迷宮 "
単位
単位
単位
列挙
列挙
location"α 大陸 "
環境情報
マップ
location" ある場所 "
キャラ情報Actor"PC1"
Actor"PC2"
Actor"NPC1"
Actor"NPC2"
シナリオ情報
アイテム情報
アイテム情報アイテム "Item1"アイテム "Item2"
アイテム "Item3"
マップ
マップ
列挙
トリガ トリガ トリガ
シークレット シークレット
2015/04/129 第 11 回福岡市西区プログラム勉強会
状態情報
ルール情報
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
DSL in DSL まとめ
2015/04/12第 11 回福岡市西区プログラム勉強会11
…とこのように: ユーザ階層を考えたルール記述とシナリオ記述の緩やかな分離 ルール記述は複雑で、厳密な記述が可能でなければならない シナリオ記述は簡素でなければならない しかしシナリオ・ローカルのルールも記述したい場合がある
…を DSL in DSL 的に実現する
TRPG ルール・シナリオに特徴的なデータの例
2015/04/12第 11 回福岡市西区プログラム勉強会12
本日取り上げる例
2015/04/12第 11 回福岡市西区プログラム勉強会13
Dice型 単位型ファミリ 地形情報と位置情報
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
単位型ファミリ
2015/04/12第 11 回福岡市西区プログラム勉強会15
TRPG では単位付きの数値型を沢山利用する 距離、重さ、容積(実数ベース)、通貨(整数ベース)…など
要件 用途に合わせてスケールの違う単位を使う
街の距離は km で、戦闘時のキャラの距離は m で…など 特に雰囲気を出すために同じ「次元」(例えば長さ)を複数の単位系で表現したりもする m じゃなくてヤードやキュビットを使いたいとか 各地で違う通貨を使ってるとか
ルール記述上はできるだけ汎用的に取り扱いたい 暗黙のうちに換算するなど
アプローチ 単位付きの数値型を導入 単位付きの数値型の宣言が「次元」毎にファミリを構成できるよう
にする
単位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 回福岡市西区プログラム勉強会
ルール・シナリオ記述言語の要件(再掲) ゲーム内時間管理と連動するイベント駆動なルール記述
TRPG ではゲーム内時間とプレイヤー間のセッションの進行が密接に絡み合っているのでこれを管理する必要がある 但し TRPG は非リアルタイムなゲームである
→ゲーム性が変ってしまうので安易にリアルタイム化してはいけない メッセージングの仕組みと適合する必要がある GUI が自然に組み込める必要がある
TRPG向けのデータ記述 ゲーム内データを記述、管理する必要
確率、ランダム要素の表現 時間、距離、重さ等の各種スケールの表現
特に地形データの作成を容易にする必要 大事な部分の地形のデザインに集中できるよう情報が粗いマップと情報が密なマップが混在
できるようにする必要がある ユーザ階層を考えたルール記述とシナリオ記述の緩やかな分離
ルール記述は複雑で、厳密な記述が可能でなければならない シナリオ記述は簡素でなければならない しかしシナリオ・ローカルのルールも記述したい場合がある
2015/04/1217 第 11 回福岡市西区プログラム勉強会
位置情報と地形情報
2015/04/12第 11 回福岡市西区プログラム勉強会18
地形情報 TRPG の舞台となる世界の各地の地形と気候風土
いわゆる「マップ」 世界統一スケールのフル 3D が例え技術的に可能でも多くのアマチュアのシ
ナリオ作者にそんなものを作ってる暇はない 多彩なマップ表現を受け入れる必要がある
グラフ構造、升目、ヘックス、簡易 3D 、フル 3D… など 異なるマップ表現を繋ぎ合わせて使える必要がある
世界や地域は 2次元マップ、戦闘の舞台はヘックス、ダンジョンは 3D… など 位置情報
TRPG の舞台となる世界での: キャラや物の位置を記録する必要 それらの相対的な方向や距離の計測が必要
移動の必要な時間は? 視線が通るか? 武器は敵に届くのか?
ルール記述の簡素化のため、マップ表現に依存しない統一的な取り扱いが必要になる
エリア階層とロケーション・パス
2015/04/12第 11 回福岡市西区プログラム勉強会19
エリア階層:範囲、スケール、表現形式も様々なエリアを階層化(ツリー)して管理する エリアに上位の階層のロケーションパスを記録して基準点とする 各エリアは様々なタイプ、スケールのマップ情報を持つ
例: Point 、 LinkedPoint 、2 D 、 Section 、3D など マップ情報はツールで編集し易いよう XML 形式(ヒアドキュメントも URL指定も
可) 各エリアに環境情報を記録する
マップの基準値・デフォルト値となる気温、標高、風向、風速など 未定義の環境情報は上位(広域)のマップの物が継承される
ロケーションパス:位置の指定は階層を指定するパス+各マップ内での「座標」で行う 座標はマップ形式毎に異なる形式を持つ 距離や方位はローケーションパスを入力にして計算する
表現形式やスケール毎に精度は色々だが最悪でも概算値は返す
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 回福岡市西区プログラム勉強会
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 回福岡市西区プログラム勉強会
付録
2015/04/1222 第 11 回福岡市西区プログラム勉強会
同じ場所
GM
player
player
データキャラクター・シートマップ表ハンドアウト… etc.
判定•ダイス•カード
物理媒体による情報共有
物理媒体による情報共有
直接操作
直接会話
TRPG セッション プレイヤーが PC
( Player Character )を演じる
GM ( Game Master )はシナリオに則った進行とルールに則った判定、NPC ( Non-Player Character 、敵や協力者)の操作を行う GM が情報ボトルネックになり易い
2015/04/1223 第 11 回福岡市西区プログラム勉強会
ネットワーク
ダイスボット
GM
player
player
データキャラクター・シー
トマップ表ハンドアウト…etc.
判定•ダイス•カード
物理媒体による情報共有
物理媒体を模倣した電子媒体による情報共有
コマンド操作
チャット
コマンド受付型オンラインセッション環境 ユーザがゲーム
のルールと操作の両方を覚える必要 現在はチャット
にテキスト・コマンドを混入 チャットパレッ
トによる入力量の緩和工夫
自然に GUI 化するのが難しい
2015/04/1224 第 11 回福岡市西区プログラム勉強会
ネットワーク
ルール解釈エンジン
GM
player
player
データキャラクター・シー
トマップ表ハンドアウト…etc.
判定•ダイス•カード
ルールで駆動されるルール解釈エンジンを介した共有
問合せ
チャット
ルール主導型オンラインセッション環境 ユーザはゲーム
のルールも操作も両方覚える必要なし
システムがルールを「理解」して GM の進行・判定を助ける GM ボトルネッ
ク解消 ルールをイベン
ト駆動的に記述すれば GUI 化も自然
2015/04/1225 第 11 回福岡市西区プログラム勉強会
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 回福岡市西区プログラム勉強会
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 回福岡市西区プログラム勉強会
インターネット
サーバ・サイド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 回福岡市西区プログラム勉強会
ルール・シナリオ記述言語の要件 ゲーム内時間管理と連動するイベント駆動なルール記述
TRPG ではゲーム内時間とプレイヤー間のセッションの進行が密接に絡み合っているのでこれを管理する必要がある 但し TRPG は非リアルタイムなゲームである
→ゲーム性が変ってしまうので安易にリアルタイム化してはいけない メッセージングの仕組みと適合する必要がある GUI が自然に組み込める必要がある
TRPG 向けのデータ記述 ゲーム内データを記述、管理する必要
確率、ランダム要素の表現 時間、距離、重さ等の各種スケールの表現
特に地形データの作成を容易にする必要 大事な部分の地形のデザインに集中できるよう情報が粗いマップと情報が密なマップが混在
できるようにする必要がある ユーザ階層を考えたルール記述とシナリオ記述の緩やかな分離
ルール記述は複雑で、厳密な記述が可能でなければならない シナリオ記述は簡素でなければならない しかしシナリオ・ローカルのルールも記述したい場合がある
2015/04/1229 第 11 回福岡市西区プログラム勉強会
未処理のイベント群
処理済みのイベント群
処理中のイベント
ゲーム内現在
ゲーム内未来
ゲーム内過去
必要に応じ、時刻を指定して新規にイベントを登録追加
ログが必要なければ削除
ゲーム内時間管理と連動するイベント駆動なルール記述
ゲーム内の時間進行
Lore 言語エンジンのイベント処理機構(サーバ側)
GM player
クライアントの GUI
XMPP メッセージング
ユーザたちのセッション進行
問い合わせ 応答
2015/04/1230 第 11 回福岡市西区プログラム勉強会
状態情報 :TRPG の登場人物、舞台となる場所、アイテムを表現するデータ位置情報
環境情報マップ
アイテム情報キャラ情報
アイテム情報
ルール情報:TRPG のゲームシステムを記述するルール、単位系、状態名、カテゴリ名、フォーム、テーブル手続き単位列挙フォームテーブル
Loreファイル(拡張子 ".lore" のファイル)
時間情報(スケジュール):TRPG セッションの時間経過、起こるべき出来事を表現するデータ現在時刻カウンタイベント・キューイベント
管理情報:当該 Lore ファイルの書誌事項、管理情報
シナリオ情報:TRPG のキャラクタやマップ上の仕掛け(状態がある条件を満たすとルールに従って何かが起こる)、隠された情報を表現するデータトリガシークレット
Lore 言語で記述・管理される情報の例
2015/04/1231 第 11 回福岡市西区プログラム勉強会
basic.loreLore基本
ライブラリ
RuleA.lore"A" のルールライブラリ
WorldA.lore"A" の世界設定
ライブラリ
CampaignB.lore
キャンペーン・シナリオ "B"
ScenarioC.lore
シナリオ "C"
プレイヤー
GM、パワー・プレイヤー
キャンペーンライター
設定ライター
ルール設計者
Loreシステム設計者
人口が多い
必要な知識が多い
ユーザ階層を考えたルール記述とシナリオ記述の緩やかな分離
2015/04/1232 第 11 回福岡市西区プログラム勉強会
コマンド主導型オンライン・セッション・システム
ルール主導型オンライン・セッション・システム
ダイス・ボット(コマンド・インタプリタ)
カードやダイス等の判定の執行と共有
マップ等一部データの管理と共有
コマンド
応答
イベント・スケジューラ(ルール&シナリオ・インタプ
リタ)
ルールに基づいて基本的にゲームの進行のスケジュール全体を管理している
チャットは基本的に説明と会話と打ち合わせに利用される
ゲーム中ほぼ全てのデータの管理と共有
GM
GM
player
コマンド
応答
player応答
問い合わせ
応答
問い合わせ
アドリブ手段スケジュールやデータを書き換えるイベント追加トリガ追加ローカル・ルール追加
ゲーム進行の多くは通常のチャットでインフォーマルに行われる(アドリブ容易)
2015/04/1233 第 11 回福岡市西区プログラム勉強会
コマンド受付型 vs ルール主導型 コマンド受付式
直感的 ただしルールは部分的にしかモデル化されず受動的
ルール主導式 ルール解釈エンジンから必要に応じて能動的に選択をユーザに問いかける
GUIや記述言語でこのようなモデルを引用して表示や記述することはできるがユーザが直接的に操作はしない
2015/04/1234 第 11 回福岡市西区プログラム勉強会
Kyn[offline]: -
邪魔しないで
XMPP クライアント GUI イメージ
2015/04/1235 第 11 回福岡市西区プログラム勉強会
行動の予定
キャンセル
これからどうしますか?
送信
▼
移動調べる休息
移動
行動選択ダイアログの例
2015/04/1236 第 11 回福岡市西区プログラム勉強会
ファイル名 作成者 説明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 回福岡市西区プログラム勉強会
セッション環境
basic.loreLore基本データ
型ライブラリ
RuleAA.loreAA のルールライブラリ
WorldAA.loreAA の世界設定
ライブラリ
CampaignBB.lore
キャンペーン・シナリオ BB
ScenarioCC.loreシナリオ CC
Lore ファイル群 セッション・ファイル
セッション
Pack
Unpack
SuspendResume
Read
Write
画像、テキスト等各種素材ファイル群
各種オーサリング・ツール
作成、編集
2015/04/1238 第 11 回福岡市西区プログラム勉強会
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 回福岡市西区プログラム勉強会
遠隔セッション環境
データ共有・流通
ルール適用、データ管理省力化、自動化
ルール、シナリオ、データの製作
GM player player
XGMTKクライア
ント
XGMTKクライア
ント
XGMTKクライア
ント
XGMTKオーサリング
ツール
作成
XGMTKサーバ
テキスト・メッセージチャットダイアログ
データの配布ゲーム進行に必
要な対話
Lore 言語スクリプト
(ルール、シナリオ、データ)
Lore 言語スクリプト(データ)
Lore 言語スクリプト
(ルール、シナリオ、データ)
2015/04/1240 第 11 回福岡市西区プログラム勉強会
Eclipse IDE
XGMTKプラグイン
ルール シナリオデータ(マップ、キャラクタ…
etc. )
GM
セッション記録
スクリプト言語Loreエディター
セッション・シミュレータ
スクリプト言語Loreエンジン
スクリプト言語Lore
データ・ビュワー
2015/04/1241 第 11 回福岡市西区プログラム勉強会
遠隔セッション支援
オーサリング支援
データ共有支援
GM player player
データ: ルール、シナリオ、キャラクタ、アイテム、マップ
データ: ルール、シナリオ、キャラクタ、アイテム、マップ
データ: ルール、シナリオ、キャラクタ、アイテム、マップ
ビュワー ビュワービュワーオーサリングツール
作成
配布 / 共有
閲覧 / 操作
対話
スクリプト言語エンジ
ン
スクリプト言語エンジ
ン
スクリプト言語エンジ
ン
自動化支援
2015/04/1242 第 11 回福岡市西区プログラム勉強会
セッション環境
メッセージング・クライアント
メッセージング・クライアント
メッセージング・クライアント
GM player player
NPC PC PCNPC NPC
セッション(キャラクタ間チャットルーム
+ゲーム内イベント伝達インフラ)
チャット(ユーザ間チャットルーム)
制御 制御制御
主催&制御 参加 参加参加参加参加
参加参加主催
2015/04/1243 第 11 回福岡市西区プログラム勉強会
歩く(目的地まで)
歩く
歩く
襲われる(歩行中断、戦闘開始)
戦う
戦う
歩く
歩く
目的地着
戦う
戦う
歩く(目的地まで)
襲われる(戦闘開始)
目的地着
歩くクロック型時間管理
イベント型時間管理
2015/04/1244 第 11 回福岡市西区プログラム勉強会
スケジューラ
イベント・キュー
イベントイベント
イベント
Location 、 Actor 、 Item等
トリガ
実行
イベント登録 / 取り消し
条件に合致するトリガを実行
イベント登録 / 取り消
し
イベント最も時間が早く、その中で最も優先度の数値が低いイベントから順に並べてイベントを管理
キューの先頭からイベントを順に取り出して実行
手続き
手続き
トリガ・チェッカ
監視
現在時刻カウンタ
セッション開始からの経過時間、イベント実行が終わるとイベント・キューの先頭のイベントの時刻に更新される
イベントの作用の結果がトリガ群の条件に合致するか調べる
復帰
呼び出し
復帰
呼び出し
2015/04/1245 第 11 回福岡市西区プログラム勉強会
ネットワーク
ルール
手続き
復帰
呼び出しイベント or トリガ
手続き呼び出し
フォームによる問い合わせ
キャラクタ
GM
プレイヤー
キャラクタ
アイテム 環境情報 マップ
各種情報の取得
計算
返り値(値、作用)の組み立て
メッセージ送信
キャラクタ
テーブル
テーブル参照
イベント登録
2015/04/1246 第 11 回福岡市西区プログラム勉強会