設計を見直そう8、データの置き場所。

設計の見直しの記事、6回目で宿題になっていたことの続きから。

6回目では「どこからデータを引っ張ってきて」しか定義できていないことが気がかりで。
データの置き場所やフローなど、プログラム上で動かす上での構造の検討が必要そうが宿題。
その先の具体的な設計に進むためにも、TPRGさん1号におけるデータの定義を順番にまとめます。
 
 
データには置き場所と形があります。
置き場所というのは「実行プログラムと一緒に格納されるデータ」なのか、「実行中にメモリ上に存在するデータ」なのか、「ルール・シート上にあるデータ」なのかを指します。
それぞれの場所によって置かれる内容が異なります。

「実行プログラムと一緒に格納されるデータ」は固定データとなり、異なるルール・シートを使う場合でも影響を受けない内容です。
例えばアイテムのデータであったり、施設のデータであったり、共通で使える情報がそれに該当します。
共通のNPCというデータもありそうですが、ルール・シートのサンプルに用意する形で提供すれば事が足りる気もしますので、ルール・シート側で用意できる(上書きしたい)形になるデータは含まないのがよいかも知れません。
この置き場所のことを「ライブラリ」と呼びます。

「実行中にメモリ上に存在するデータ」は変更可能なデータとなり、ゲーム中に状態が変化する内容を保存しておくために使います。
TRPGさん1号は、その仕様上「実行中イコール出力シートの生成時」ということになりますので、出力シートを生成する時に必要な情報になります。
例えば場所やキャラクタのデータなどがそれに該当します。
場所のデータが含まれるのは、時間やプレイヤーの行動によって場所に含まれる情報が変化する可能性がある為です。
キャラクタは想像されるようにアイテムを使ったり、他のキャラクタやNPCからの影響を受けるために実行中は専用に領域を確保します。
最終的には場所、キャラクタのデータ共にセーブ・データという形に変換して記録情報となり、出力シートに記載(保存)されます。
この置き場所のことを「プレイ・メモリ」と呼びます。

「ルール・シート上に存在するデータ」も固定データの扱いになりますが、こちらはゲーム毎に内容が異なります。
書式は固定になりますが、内容は自由形式です。
「ライブラリ」に含まれない、ゲーム上で必要になる全ての固定データが該当します。
この置き場所のことはそのまま「ルール・シート」と呼びます。

データの形式や呼び名に関して、まとめのページでも今まとめているところですが、一部転載します。
このあたりはどんどこ直していければと思います。
なんとなく「そうなんだー」が伝われば。

・データ・フォーマット
ある要素を構成するデータの定義の集まりのこと。

・データ・セット
データ・フォーマットに合わせたデータ集合体。

・データとデータ・フォーマットとデータ・セットの違い
異なる表現であらわすと、データ・フォーマットとは空のビンが詰まったカバン。
この場合、ビンに入れる中身をデータと呼ぶ。
カバン毎にビンの種類や数が異なるため、データ・フォーマットは用途ごとに存在する。
また、カバンの中のビンにデータが入っている状態のカバンのことをデータ・セットと呼ぶ。

・ライブラリの領域
読み取り専用のデータが格納されている領域をライブラリと呼ぶ。
ライブラリには各データ・フォーマットに対応するデータ・セットが複数格納されている。
格納されているデータ・セットは以下のもの。
「場所」
「環境」
「ひと」
「施設」
「天候」
「風向」
「地形」
「キャラ構成」
「会話」
「サービス」
「売りリスト」
「買いリスト」
「アイテム」

・プレイ・メモリ
ゲームの実行中に使用する作業領域のこと。
主に状態が変化するデータに使われる。
例えば「キャラ構成」データなどは所持アイテムや所持金が変化するため、ゲームの実行中にはプレイ・メモリ内にデータが格納される。
反対に、状態が変化しないデータはライブラリの領域にデータが格納される。

置き場所とデータのやり取りに関して。
まずは概要ですがシーケンスを描いてみました。

置き場所とデータのやり取りに関して

左の「Game Engine」から「Play-Memory」に領域を確保し、「Rule Seat」からオリジナルの情報を読み、「Library」から基本データを読み、「Play-Memory」に書き込むといった流れです。
それぞれの情報ごとの都合、例えば「場所」の中の何のデータなのかによって扱いが異なる箇所を決めないといけませんが、大枠はこのようなイメージで動かせると思います。
 
 
このあたりも、どんどこです。
がんばる。