つくば文庫 > ソフトウェア工房 > The "Peko" project

# The "Peko" project

## Project Menu

- "Peko" project
  - Welcome!
  - News
  - プロジェクト状態
  - ライセンス
- Documentation
  - PVNS イントロダクション
  - QuickStart ガイド
  - PSML-Scene ショートリファレンス
  - PVNS カスタマイズガイド
- Download
  - PVNS releases
- Get Involved
  - プロジェクト概要
  - 協力者募集
  - Mailing Lists
  - CVS Repository
  - Bug Tracking System

## "Peko" Visual Novel System：カスタマイズガイド

この文書では、ゲーム開発者向けに、"Peko" Visual Novel System のカスタマイズ方法について説明します。

### Table of Contents

### 1. カスタマイズの概要

PVNS では、データディレクトリの位置や読み込むフォント・プラグインなどのシステム設定の他、キャンバスのサイズや文章の描画色など外観に関する設定など、多くのプログラム構成情報をリソースとして、プログラムコードの外に出しています。

リソースを編集することで、PVNS をゲーム開発者の意向に添うようにカスタマイズすることができます。

カスタマイズ可能な項目の種類は次の通りです。

- ゲーム情報
- システム設定
- メニューのキャプション文字列
- ダイアログのキャプション・メッセージ文字列
- キャンバスの外見

PVNS におけるリソースとは、ID によって識別される外部データであり、リソースファイル中に格納されているものを指します。

リソースの詳細については、後述の「A. リソースとは」を参照してください。

PVNS のリソースは項目の種類毎に用意されたリソースファイルに記述されます。以下にその対応を表として示します。

表1.1：リソースファイル一覧
種別 | リソースファイル
--- | ---
ゲーム情報 | `game-info.xml`
システム設定 | `system.xml`
メニューのキャプション文字列 | `menu.xml`
ダイアログのキャプション・メッセージ文字列 | `dialog.xml`
キャンバスの外見 | `canvas.xml`
タイトル画面の設定 | `title.xml`

これらのリソースファイルは、PVNS runtime (`peko.jar`) と同じディレクトリに、各ファイルばらばらに配置するか、あるいは、 `config.dat` という名前の ZIP ファイルに纏めて配置します。

なお、`config.dat` が PVNS runtime と同じディレクトリにある場合、PVNS は `config.dat` に格納されたリソースファイルを優先的に使用します。

また、これらリソースファイルは全て必須です。PVNS の起動時にどれか一つでも検出できないリソースファイルがあった場合、PVNS は起動できません。

### 2. ゲーム情報の設定

ゲーム情報として、ゲームのタイトルやアイコンなどを設定できます。ゲーム情報はメインウィンドウのタイトルバーや、バージョン情報ダイアログなどに使用されます。

リソース名 | game-info.title
データ型 | string
説明 | ゲームタイトルを設定します。設定した内容は、メインウィンドウのタイトルバーとバージョン情報ダイアログで表示されます。

リソース名 | game-info.version
データ型 | string
説明 | ゲームのバージョン番号を設定します。設定した内容はバージョン情報ダイアログで表示されます。

リソース名 | game-info.publisher
データ型 | string
説明 | ゲームの制作者名を設定します。設定した内容はバージョン情報ダイアログで表示されます。

リソース名 | game-info.copyright
データ型 | string
説明 | ゲームの Copyright noticeを設定します。設定した内容はバージョン情報ダイアログで表示されます。

リソース名 | game-info.additional-info
データ型 | list/string
説明 | ゲームに関する追加の情報 (制作者 URL やサポートメールアドレスなど) を設定します。設定した内容は、各項目 1 行ずつにバージョン情報ダイアログで表示されます。

### 3. システム設定のカスタマイズ

システム設定として、PVNS がゲームを実行するために必要な情報を設定します。必要な情報としては、言語情報、ディレクトリ設定、フォント設定などがあります。

リソース名 | peko.system.locale
データ型 | peko:locale
説明 | 言語情報を設定します。設定した内容は、フォントやセーブ時刻に影響します。未設定の場合は、PVNS の起動に使用した Java VM の設定に従います。

リソース名 | peko.system.location.scenes
データ型 | string
説明 | データ種別が scene であるデータを格納するディレクトリ／アーカイブ名を設定します。ディレクトリ／アーカイブ名は、ゲームパッケージがインストールされたディレクトリからの相対パスで記述します。設定したディレクトリ／アーカイブは実際に存在している必要があります。なお、パス中に上位ディレクトリへの移動を表す「`..`」を含めることはできません。

リソース名 | peko.system.location.images
データ型 | string
説明 | データ種別が image であるデータを格納するディレクトリ／アーカイブ名を設定します。設定内容や制約については、peko.system.location.scenes に準じます。

リソース名 | peko.system.location.sounds
データ型 | string
説明 | データ種別が sound であるデータを格納するディレクトリ／アーカイブ名を設定します。設定内容や制約については、peko.system.location.scenes に準じます。

リソース名 | peko.system.location.misc
データ型 | string
説明 | データ種別が misc であるデータを格納するディレクトリ／アーカイブ名を設定します。設定内容や制約については、peko.system.location.scenes に準じます。

リソース名 | peko.system.location.save
データ型 | string
説明 | セーブデータを格納するディレクトリ名を設定します。ディレクトリ名は、ゲームパッケージがインストールされたディレクトリからの相対パスで記述します。設定したディレクトリが実在しない場合、PVNS 起動時に生成されます。なお、パス中に上位ディレクトリへの移動を表す「`..`」を含めることはできません。

リソース名 | peko.system.start-scene
データ型 | string
説明 | ゲーム開始時に、最初に処理するシーン名を設定します。

リソース名 | peko.system.fonts
データ型 | list/string
説明 | 追加で読み込むフォントを指定します。利用可能なフォントファイルは True Type 形式で、misc ディレクトリに配置します。指定されたフォントが misc ディレクトリに存在しない場合、起動時に警告(WARN)ダイアログが表示されます。

### 4. メニューのカスタマイズ

メニューのキャプション文字列をカスタマイズすることができます。個々のメニュー項目には mnemonic が設定されており、キャプション文字列に含まれる mnemonic 文字には下線が引かれて描画されます。

リソース名 | peko.menu.system.menu-caption
データ型 | string
説明 | 「システム」メニューのキャプション文字列を設定します。mnemonic は 'S' です。

リソース名 | peko.menu.system.save
データ型 | string
説明 | 「システム」-「セーブ」メニューのキャプション文字列を設定します。mnemonic は 'S' です。

リソース名 | peko.menu.system.load
データ型 | string
説明 | 「システム」-「ロード」メニューのキャプション文字列を設定します。mnemonic は 'O' です。

リソース名 | peko.menu.system.return-title
データ型 | string
説明 | 「システム」-「タイトルに戻る」メニューのキャプション文字列を設定します。mnemonic は 'T' です。

リソース名 | peko.menu.system.read-again
データ型 | string
説明 | 「システム」-「過去の文章」メニューのキャプション文字列を設定します。mnemonic は 'R' です。

リソース名 | peko.menu.system.exit
データ型 | string
説明 | 「システム」-「終了」メニューのキャプション文字列を設定します。mnemonic は 'X' です。

図4.1：「システム」メニュー

リソース名 | peko.menu.config.menu-caption
データ型 | string
説明 | 「設定」メニューのキャプション文字列を設定します。mnemonic は 'C' です。

リソース名 | peko.menu.config.play-mode.menu-caption
データ型 | string
説明 | 「設定」-「プレイモード」メニューのキャプション文字列を設定します。mnemonic は 'P' です。

リソース名 | peko.menu.config.play-mode.normal
データ型 | string
説明 | 「設定」-「プレイモード」-「ノーマル」メニューのキャプション文字列を設定します。mnemonic は 'N' です。

リソース名 | peko.menu.config.play-mode.auto
データ型 | string
説明 | 「設定」-「プレイモード」-「自動」メニューのキャプション文字列を設定します。mnemonic は 'A' です。

リソース名 | peko.menu.config.play-mode.skip
データ型 | string
説明 | 「設定」-「プレイモード」-「次の選択肢までスキップ」メニューのキャプション文字列を設定します。mnemonic は 'S' です。

リソース名 | peko.menu.config.use-effect
データ型 | string
説明 | 「設定」-「画像エフェクト OFF」メニューのキャプション文字列を設定します。mnemonic は 'E' です。

図4.2：「設定」メニュー

リソース名 | peko.menu.help.menu-caption
データ型 | string
説明 | 「ヘルプ」メニューのキャプション文字列を設定します。mnemonic は 'H' です。

リソース名 | peko.menu.help.help-contents
データ型 | string
説明 | 「ヘルプ」-「ヘルプ」メニューのキャプション文字列を設定します。mnemonic は 'H' です。＊現在のバージョンではヘルプ機能は未実装です。

リソース名 | peko.menu.help.version
データ型 | string
説明 | 「ヘルプ」-「バージョン情報」メニューのキャプション文字列を設定します。mnemonic は 'A' です。

リソース名 | peko.menu.help.about-pvns
データ型 | string
説明 | 「ヘルプ」-「PVNS について」メニューのキャプション文字列を設定します。mnemonic は 'P' です。

図4.3：「ヘルプ」メニュー

### 5. ダイアログのカスタマイズ

under construction...

#### 5.1 セーブデータ選択ダイアログ

リソース名 | peko.savedata-chooser.cell.size
データ型 | peko:dimension
説明 | セーブデータ情報を表示するセルのサイズを設定します。

リソース名 | peko.savedata-chooser.cell.title-format
データ型 | message-format
説明 | セーブデータ情報のタイトルをセルに描画する際に使用するフォーマットを設定します。置換文字列は、{0}:セーブデータ番号 {1}:タイトル に置換されます。

リソース名 | peko.savedata-chooser.cell.timestamp-format
データ型 | date-format
説明 | セーブデータ情報のタイムスタンプをセルに描画する際に使用するフォーマットを設定します。

リソース名 | peko.savedata-chooser.cell.no-data-title
データ型 | string
説明 | セーブデータが保存されていないセルに描画するタイトルを設定します。

リソース名 | peko.savedata-chooser.cell.background.selected
データ型 | peko:color
説明 | 選択されているセルの背景色を設定します。

リソース名 | peko.savedata-chooser.cell.background.unselected
データ型 | peko:color
説明 | 選択されていないセルの背景色を設定します。

リソース名 | peko.savedata-chooser.cell.title.color
データ型 | peko:color
説明 | セーブデータ情報のタイトルを描画する際に使用する前景色(文字色)を設定します。

リソース名 | peko.savedata-chooser.cell.title.font
データ型 | peko:font
説明 | セーブデータ情報のタイトルを描画する際に使用するフォントを設定します。

リソース名 | peko.savedata-chooser.cell.timestamp.color
データ型 | peko:color
説明 | セーブデータ情報のタイムスタンプを描画する際に使用する前景色(文字色)を設定します。

リソース名 | peko.savedata-chooser.cell.timestamp.font
データ型 | peko:font
説明 | セーブデータ情報のタイムスタンプを描画する際に使用するフォントを設定します。

リソース名 | peko.savedata-chooser.cell.comment.color
データ型 | peko:color
説明 | セーブデータ情報のコメントを描画する際に使用する前景色(文字色)を設定します。

リソース名 | peko.savedata-chooser.cell.comment.font
データ型 | peko:font
説明 | セーブデータ情報のコメントを描画する際に使用するフォントを設定します。

リソース名 | peko.savedata-chooser.cell.items-at-once
データ型 | integer
説明 | セーブデータ選択ダイアログを表示した際に、スクロールせずに一度に表示できるセル数を設定します。セーブデータ選択ダイアログでは、横スクロールバーは使用しませんので、この設定によりダイアログの高さが決定されます。

リソース名 | peko.savedata-chooser.cell.button.ok
データ型 | string
説明 | 「OK」ボタンのラベル文字列を設定します。

リソース名 | peko.savedata-chooser.cell.button.cancel
データ型 | string
説明 | 「キャンセル」ボタンのラベル文字列を設定します。

リソース名 | peko.savedata-chooser.caption.save
データ型 | string
説明 | セーブ処理のためにセーブデータ選択ダイアログを表示した際に使用する、キャプション文字列を設定します。

リソース名 | peko.savedata-chooser.caption.load
データ型 | string
説明 | ロード処理のためにセーブデータ選択ダイアログを表示した際に使用する、キャプション文字列を設定します。

リソース名 | peko.savedata-chooser.dialog.title.save
データ型 | string
説明 | セーブ処理のためにセーブデータ選択ダイアログを表示した際に使用する、ダイアログタイトルを設定します。

リソース名 | peko.savedata-chooser.dialog.title.load
データ型 | string
説明 | ロード処理のためにセーブデータ選択ダイアログを表示した際に使用する、ダイアログタイトルを設定します。

リソース名 | peko.savedata-chooser.dialog.confirm.title
データ型 | string
説明 | セーブデータの上書き確認ダイアログのダイアログタイトルを設定します。

リソース名 | peko.savedata-chooser.dialog.confirm.message
データ型 | string
説明 | セーブデータの上書き確認ダイアログのダイアログメッセージを設定します。

リソース名 | peko.savedata-chooser.dialog.notify.title
データ型 | string
説明 | ロード可能データなし情報ダイアログのダイアログタイトルを設定します。

リソース名 | peko.savedata-chooser.dialog.notify.message
データ型 | string
説明 | ロード可能データなし情報ダイアログのダイアログメッセージを設定します。

#### 5.2 その他のダイアログ

under construction...

### 6. キャンバスのカスタマイズ

キャンバスの設定を行うリソースは、リソース ID が `peko.canvas` で始まり、大きく次の 4 項目に分類されます。

1. 全体に共通のリソース
2. TextCanvas のリソース
3. StageCanvas のリソース
4. SelectCanvas のリソース

#### 6.1 キャンバス全体

リソース名 | peko.canvas.canvas-size
データ型 | peko:dimension
説明 | キャンバスのサイズを指定します。PVNS はキャンバスサイズを基に StageCanvas や Main Window のサイズを決定します。

リソース名 | peko.canvas.text-history
データ型 | integer
説明 | 「過去の文章」表示機能で見直すことができる最大のページ数。

#### 6.2 TextCanvas

リソース名 | peko.canvas.text.view-type
データ型 | string
説明 | ページ表示領域の表示タイプを設定します。リソースの値には、`full` または `window` のいずれかを指定して下さい。それ以外の値では、PVNS 実行時に警告としてメッセージが表示され、`full` が設定されます。

図6.1：ページ表示領域の表示タイプの例

リソース名 | peko.canvas.text.size
データ型 | peko:dimension
説明 | ページ表示領域のサイズを設定します。ページ表示領域の表示タイプが `full` の場合、ここでの設定は無視されます。

リソース名 | peko.canvas.text.location
データ型 | peko:point
説明 | キャンバス内での、ページ表示領域の左上隅の座標を設定します。キャンバス左上隅が座標の原点(0,0)になります。ページ表示領域の表示タイプが `full` の場合、ここでの設定は無視されます。

図6.2：ページ表示領域の各サイズ設定の例

リソース名 | peko.canvas.text.padding
データ型 | peko:insets
説明 | ページ表示領域の枠と文章が表示されている領域の間のパディング幅を設定します。通常では、マーカーを配置するために、右パディングに一文字分のスペースを追加して下さい。

リソース名 | peko.canvas.text.line-span
データ型 | float
説明 | 行と行の間の間隔(上の行の下端から下の行の上端)を設定します。

リソース名 | peko.canvas.text.background.transparency
データ型 | float
説明 | ページ表示領域の背景の透過率(透明度)を 0.0 から 1.0 の間の実数で指定します。

リソース名 | peko.canvas.text.background.color
データ型 | peko:color
説明 | ページ表示領域の背景色を設定します。

リソース名 | peko.canvas.text.foreground.color
データ型 | peko:color
説明 | ページ表示領域の前景色(文字の色)を設定します。

リソース名 | peko.canvas.text.foreground.shadow
データ型 | float
説明 | 文字の陰の部分の色を設定します。

図6.3：ページ表示領域の各種色設定の例

リソース名 | peko.canvas.text.font
データ型 | peko:font
説明 | 文章の表示に使用するフォントを設定します。

#### 6.3 StageCanvas

リソース名 | peko.canvas.stage.default-effect.background
データ型 | string
説明 | 背景切り替え時に使用するデフォルトのエフェクト名を設定します。PSML-Scene の `background` 要素で `effect` 属性が省略された場合に使用されます。

リソース名 | peko.canvas.stage.default-effect.actor
データ型 | string
説明 | 人物切り替え時に使用するデフォルトのエフェクト名を設定します。PSML-Scene の `enter`, `action`, `exit` 要素で `effect` 属性が省略された場合に使用されます。

リソース名 | peko.canvas.stage.default-effect.slide
データ型 | string
説明 | スライド切り替え時に使用するデフォルトのエフェクト名を設定します。PSML-Scene の `show-slide`, `hide-slide` 要素で `effect` 属性が省略された場合に使用されます。

#### 6.4 SelectCanvas

リソース名 | peko.canvas.select.align
データ型 | string
説明 | 選択肢ボタンが配置される領域の水平方向の基準位置を設定します。リソースの値には、`left`、`center`、あるいは `right` のいずれかから指定して下さい。

left | center | right
--- | --- | ---

図6.4：水平方向の基準位置設定の例

リソース名 | peko.canvas.select.vertical-align
データ型 | string
説明 | 選択肢ボタンが配置される領域の垂直方向の基準位置を設定します。リソースの値には、`top`、`middle`、あるいは `bottom` のいずれかから指定して下さい。

top | middle | bottom
--- | --- | ---

図6.5：垂直方向の基準位置設定の例

リソース名 | peko.canvas.select.columns
データ型 | integer
説明 | 選択肢ボタンを並べる際の列数を設定します。

columns=1 | columns=2
--- | ---

図6.6：列数設定の例

リソース名 | peko.canvas.select.span.column
データ型 | integer
説明 | 選択肢ボタンの列間の間隔(左のボタンの右端から右のボタンの左端までの距離)を pixel 単位で設定します。

リソース名 | peko.canvas.select.span.row
データ型 | integer
説明 | 選択肢ボタンの行間の間隔(上のボタンの下端から下のボタンの上端までの距離)を pixel 単位で設定します。

図6.7：選択肢ボタン間隔設定の例

リソース名 | peko.canvas.select.span.bound
データ型 | integer
説明 | ボタンが配置される領域とキャンバスの枠との間の間隔を設定します。この設定は、ボタンを配置する基準位置によって適用される場所が変わります。

表6.1：水平方向の基準位置ごとの適用場所
基準位置 | 適用される場所
--- | ---
`left` | ボタン配置領域の左端とキャンバスの左枠との間
`center` | 無視されます
`right` | ボタン配置領域の右端とキャンバスの右枠との間

表6.2：垂直方向の基準位置ごとの適用場所
基準位置 | 適用される場所
--- | ---
`top` | ボタン配置領域の上端とキャンバスの上枠との間
`middle` | 無視されます
`bottom` | ボタン配置領域の下端とキャンバスの下枠との間

リソース名 | peko.canvas.select.button.width
データ型 | integer
説明 | 選択肢ボタンの幅を設定します。

リソース名 | peko.canvas.select.button.background.transparency
データ型 | float
説明 | 選択肢ボタンの背景の透過率(透明度)を 0.0 から 1.0 の間の実数で指定します。

リソース名 | peko.canvas.select.button.foreground.selected
データ型 | peko:color
説明 | 選択されている選択肢ボタンの前景色(文字の色)を設定します。

リソース名 | peko.canvas.select.button.foreground.unselected
データ型 | peko:color
説明 | 選択されていない選択肢ボタンの前景色(文字の色)を設定します。

リソース名 | peko.canvas.select.button.foreground.shadow
データ型 | peko:color
説明 | 選択肢ボタンのラベルの陰の部分の色を設定します。

図6.8：選択肢ボタンの各種色設定の例

リソース名 | peko.canvas.select.button.font
データ型 | peko:font
説明 | 選択肢ボタンのラベルに使用するフォントを設定します。

### 7. タイトル画面のカスタマイズ

タイトル画面で設定できる内容は、SelectCanvas とほとんど同じです。実際、タイトル画面に表示されるタイトルメニューは、選択肢として描画されています。

タイトルメニューのスタイルを設定するリソースのリソース ID は、`peko.canvas.select.*` の `canvas.select` を `title.style` に置き換えたもの(`peko.title.style.*`) になります。

ここでは、タイトル画面固有のリソースについて説明します。タイトル画面固有のリソースとしては、タイトルメニューのラベルなどがあります。

リソース名 | peko.title.bgm
データ型 | string
説明 | タイトル画面の BGM として再生する音楽クリップ名を設定します。

リソース名 | peko.title.image
データ型 | string
説明 | タイトル画面背景として描画する画像名を設定します。

リソース名 | peko.title.caption.start
データ型 | string
説明 | 「最初から始める」タイトルメニューボタンのラベルを設定します。

リソース名 | peko.title.caption.resume
データ型 | string
説明 | 「続きから始める」タイトルメニューボタンのラベルを設定します。

リソース名 | peko.title.caption.exit
データ型 | string
説明 | 「終了」タイトルメニューボタンのラベルを設定します。

### 8. シーン固有のカスタマイズ

PVNS の外観や動作は、シーン毎に設定されたのプロパティ情報によっても変更されます。シーン・プロパティの設定方法は、「PSML 1.0 Scene ショートリファレンス」の `property` 要素の解説を参照して下さい。

以下にシーン毎に設定可能なプロパティの概要を示します。

プロパティ名 | canvas.text.view-type
データ型 | string
説明 | ページ表示領域の表示タイプを設定します。設定できる値の詳細は、peko.canvas.text.view-type の項目を参照して下さい。

プロパティ名 | canvas.text.size
データ型 | peko:dimension
説明 | ページ表示領域のサイズを設定します。設定できる値の詳細は、peko.canvas.text.size の項目を参照して下さい。

プロパティ名 | canvas.text.location
データ型 | peko:point
説明 | キャンバス内での、ページ表示領域の左上隅の座標を設定します。設定できる値の詳細は、peko.canvas.text.location の項目を参照して下さい。

プロパティ名 | canvas.text.padding
データ型 | peko:insets
説明 | ページ表示領域の枠と文章が表示されている領域の間のパディング幅を設定します。設定できる値の詳細は、peko.canvas.text.padding の項目を参照して下さい。

プロパティ名 | canvas.text.line-span
データ型 | float
説明 | 行と行の間の間隔(上の行の下端から下の行の上端)を設定します。設定できる値の詳細は、peko.canvas.text.line-span の項目を参照して下さい。

プロパティ名 | canvas.text.background.transparency
データ型 | float
説明 | ページ表示領域の背景の透過率(透明度)を設定します。設定できる値の詳細は、peko.canvas.text.background.transparency の項目を参照して下さい。

プロパティ名 | canvas.text.background.color
データ型 | peko:color
説明 | ページ表示領域の背景色を設定します。設定できる値の詳細は、peko.canvas.text.background.color の項目を参照して下さい。

プロパティ名 | canvas.text.foreground.color
データ型 | peko:color
説明 | ページ表示領域の前景色(文字の色)を設定します。設定できる値の詳細は、peko.canvas.text.foreground.color の項目を参照して下さい。

プロパティ名 | canvas.text.foreground.shadow
データ型 | float
説明 | 文字の陰の部分の色を設定します。設定できる値の詳細は、peko.canvas.text.foreground.shadow の項目を参照して下さい。

プロパティ名 | canvas.text.font.family
データ型 | string
説明 | 文章の表示に使用するフォントのフォントファミリ名を設定します。このプロパティで設定されたフォントファミリ名で、リソースで指定されたフォントの設定を上書きします。フォントのファミリ名以外の項目(size, style, weight)はリソースの設定が使用されます。使用できる値については、peko:font データ型の説明を参照してください。

プロパティ名 | canvas.text.font.size
データ型 | float
説明 | 文章の表示に使用するフォントのフォントサイズを設定します。このプロパティで設定されたフォントサイズで、リソースで指定されたフォントの設定を上書きします。フォントのサイズ以外の項目(family, style, weight)はリソースの設定が使用されます。使用できる値については、peko:font データ型の説明を参照してください。

プロパティ名 | canvas.text.font.style
データ型 | string
説明 | 文章の表示に使用するフォントのフォントスタイルを設定します。このプロパティで設定されたフォントスタイルで、リソースで指定されたフォントの設定を上書きします。フォントのスタイル以外の項目(family, size, weight)はリソースの設定が使用されます。使用できる値については、peko:font データ型の説明を参照してください。

プロパティ名 | canvas.text.font.weight
データ型 | string
説明 | 文章の表示に使用するフォントのウェイトを設定します。このプロパティで設定されたフォントウェイトで、リソースで指定されたフォントの設定を上書きします。フォントのウェイト以外の項目(family, size, style)はリソースの設定が使用されます。使用できる値については、peko:font データ型の説明を参照してください。

### A. リソースとは

リソースとは、PVNS の設定情報や、アイコン、メニュー文字列などのデータです。PVNS ではリソースを特定の記述方式に従って XML ファイル中に記述します。このリソースを記述したファイルのことを、リソースファイルと呼びます

この章では、リソースファイルの記述方式について説明します。

#### A.1 リソース ID

リソースは ID によって識別されます。ID には階層構造があり、図A.1に示す形式で定義されます。

    (親カテゴリ名).(子カテゴリ名).〜(略)〜.(リソース名)

図A.1：リソース ID の構造

カテゴリとカテゴリ(またはリソース名)の間は「`.`」 `(半角ピリオド: \u002E)` で区切ります。

例えば、シナリオ固有の設定として、キャンバスの、テキストキャンバスに関する設定で、テキストキャンバスの表示タイプを設定するリソースのリソース ID は `peko.canvas.text.view-type` となります。

#### A.2 XML ファイルへの記述

リソースファイルでは、リソースは、XML namespaces URI `http://tsukuba-bunko.org/ns/resource` で定義される `resources` 要素の内容として記述されます。`resources` タグには、リソースを表すタグと明確に区別するためにXML namespace prefix を使用することを推奨します。

リソースファイルの例を以下に示します。

    <?xml version="1.0" encoding="Shift_JIS"?>
    <res:resource xmlns:res="http://tsukuba-bunko.org/ns/resource">
      <scenario>
        <title>テスト！</title>
        <producer>つくば文庫</producer>
              ：
        （その他のリソース）
              ：
      </scenario>
    </res:resource>

図A.2：リソースファイルの例(1)

リソースファイルにリソースを記述する場合、リソース ID を構成するカテゴリ名(またはリソース名)が、そのまま XML のタグ名になります。

例えば、`peko.canvas.text.view-type` の場合、次のように記述されます。

    <peko>
      <canvas>
        <text>
          <view-type>window</view-type>
        </text>
      </canvas>
    </peko>

図A.3：リソースファイルの例(2)

親カテゴリが同一であるリソースは、XML 上でも親カテゴリに対応する要素を共有することが出来ます。

例えば、`scenario.canvas.text.view-type` と `scenario.canvas.canvas-size` は、`scenario.canvas.` までを共有していますので、次のように記述することが出来ます。

    <scenario>
      <canvas>
        <canvas-size>640,480</canvas-size>
        <text>
          <view-type>window</view-type>
        </tet>
      </canvas>
    </scenario>

図A.4：リソースファイルの例(3)

### B. データ形式

リソースの値は単なる文字列データではなく、固有のデータの型(種別)を持っています。この章では、データ型毎の記述方式について説明します。

型名 | boolean
解説 | 論理値(真／偽)を表すデータ型です。値が `true`、`yes`、`on` の場合「真」に、それ以外の場合「偽」になります。大文字小文字は区別しません。

型名 | integer
解説 | 32bit の整数値を表すデータ型です。指定可能な範囲は `-2147483648` 〜 `2147483647` です。途中に桁を示すカンマやピリオドを入れることは出来ません(エラーになります)。詳しくは The Java Language Specification の 3.10.1 Integer Literals を参照してください。

型名 | float
解説 | 32bit の浮動小数値を表すデータ型です。詳しくは The Java Language Specification の 3.10.2 Floating-Point Literals を参照してください。

型名 | string
解説 | 文字列を表すデータ型です。文字列を構成する文字としては、Unicode で定義されている文字であれば使用することが可能です。ただし、XML の区切り文字として指定されている文字については文字参照を使用することでエスケープする必要があります。

型名 | message-format
解説 | 文字列のテンプレートを表すデータ型です。置換したい箇所に「`{n}`」という形式のトークンを埋め込むことでテンプレートを構築できます。詳しくは、Java API Specification の MessagFormat を参照してください。

型名 | date-format
解説 | 日時の表記法のテンプレートを表すデータ型です。詳しくは、Java API Specification の SimpleDateFormat を参照してください。

型名 | list/string
解説 | 文字列のリストを表すデータ型です。リストの各要素は、`http://tsukuba-bunko.org/ns/resource` 名前空間に定義された `item` 要素の値として記述します。図B.1に、`list/string` 型リソースの記述例を示します。
    <res:resource xmlns:res="http://tsukuba-bunko.org/ns/resource">
      <sample>
        <list>
          <res:item>string1</res:item>
          <res:item>string2</res:item>
          <res:item>string3</res:item>
        </list>
      </sample>
    </res:resource>
図B.1：list/string データ型リソースの記述例

型名 | peko:dimension
解説 | 矩形のサイズを表すデータ型です。width(幅)と height(高さ)から構成され、それぞれの値をカンマで区切った一つの文字列として記述します。カンマや width、height の前後に空白(\u0020:半角スペース)が任意の数含まれてもかまいません。width と height は、それぞれ 0 以上の 32bit 整数値です。図B.2に、`peko:dimesion` 型リソースの記述例を示します。
    <res:resource xmlns:res="http://tsukuba-bunko.org/ns/resource">
      <sample>
        <dimension>640, 480</dimension>
      </sample>
    </res:resource>
図B.2：peko:dimension の例

型名 | peko:point
解説 | 2 次元の座標を表すデータ型です。x 座標値と y 座標値から構成され、それぞれの値をカンマで区切った一つの文字列として記述します。カンマや x 座標値、y 座標値 の前後に空白(U+0020:半角スペース)が任意の数含まれてもかまいません。x 座標値 と y座標値 は、それぞれ 0 以上の 32bit 整数値です。例として、図B.3に`peko:point` 型リソースの記述例を示します。
    <res:resource xmlns:res="http://tsukuba-bunko.org/ns/resource">
      <sample>
        <point>0, 100</point>
      </sample>
    </res:resource>
図B.3：peko:point の例

型名 | peko:insets
解説 | ある矩形の境界線と、その矩形を囲む矩形の境界線との間の距離を表すデータ型です。矩形のパディング領域を指定するのに使用されます。top、right、bottom、left の4つの値で構成され、それぞれの値をカンマで区切った一つの文字列として記述します。カンマや top、right、bottom、left の前後に空白(U+0020:半角スペース)が任意の数含まれてもかまいません。top、right、bottom、left は、それぞれ 0 以上の 32bit 整数値です。図B.4に、`peko:insets` 型リソースの記述例を示します。
    <res:resource xmlns:res="http://tsukuba-bunko.org/ns/resource">
      <sample>
        <insets1>0, 1, 2, 3</insets1>
        <insets2>0, 1, 2</insets2>
        <insets3>0, 1</insets3>
        <insets4>0</insets4>
      </sample>
    </res:resource>
図B.4：peko:insets の例 `peko:insets`型のリソース値には、省略記法が使用できます。図B.4の例では、次のように解釈されます。
表B.1：peko:insets の記法と解析結果の例
リソース値 | 解析結果
--- | ---
0,1,2,3 | top=0, right=1, bottom=2, left=3
0,1,2 | top=0, right=1, bottom=2, left=1
0,1 | top=0, right=1, bottom=0, left=1
0 | top=0, right=0, bottom=0, left=0

型名 | peko:color
解説 | 色を表すデータ型です。色の記述には、色名または RGB 指定の２種類の方法があります。図B.5に色指定の例を示します。
    <res:resource xmlns:res="http://tsukuba-bunko.org/ns/resource">
      <sample>
        <color1>red</color1>
        <color2>#FFBBAA</color2>
      </sample>
    </res:resource>
図B.5：peko:color の例 `peko:color`型リソースの値として使用可能な色名は次の 13 種類です。
表B.2：色名一覧
black | blue | cyan | darkGray | gray
green | lightGray | magenta | orange | pink
red | white | yellow |  |
RGB 指定では、「#」(\u0023) に続けて、R値、B値、G値を 2 桁の 16 進数で記述します。RGB の各値は 8 bit の符号なし整数で、0 〜 255 の範囲になります。例えば、R=8 G=255 B=127 の場合、「#08FF7F」と記述します。

型名 | peko:font
解説 | フォントを表すデータ型です。フォントは、family (フォントファミリ名)、size (サイズ)、style (スタイル)、weight (ウェイト) から構成されます。family, size, style, weight の各項目は XML 形式の場合、子要素の値として記述します。図B.6に、`peko:font`型リソースの記述例を示します。
    <res:resource xmlns:res="http://tsukuba-bunko.org/ns/resource">
      <sample>
        <font>
          <family>SansSerif</family>
          <size>25</size>
          <style>italic</style>
          <weight>bold</style>
        </font>
      </sample>
    </res:resource>
図B.6：peko:font の例 family, size, style, weight の各項目は省略することができます。省略は任意の項目で行うことができ、4 項目のうち 2 項目を省略したり、あるいは全部省略したりすることもできます。表B.3に、省略した場合に適用される各項目のデフォルト値を示します。
表B.3：フォント設定のデフォルト値
項目名 | 型 | デフォルト値
--- | --- | ---
family | string | Serif
size | float | 20.0
style | `italic` or `normal` | `normal`
wight | `bold` or `normal` | `normal`
style には `italic` または `normal` のいずれかを、weight には `bold` または `normal` のいずれかを指定します。どちらの項目でも、大文字小文字は区別され、前述の値以外が指定された場合はデフォルト値を使用します(エラーにはなりません)。family に使用できないフォントファミリ名を指定した場合、または、size に不正な値を記述した場合、PVNS の初期化時に警告が表示されます。