# 5. PVNS のカスタマイズ

この章では、ゲーム開発者が PVNS の外見や動作をカスタマイズする方法について説明します。

## 5.1 カスタマイズの概要

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

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

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

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

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

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

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

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

## 5.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 行ずつにバージョン情報ダイアログで表示されます。

## 5.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)ダイアログが表示されます。

## 5.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' です。

図5.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' です。

図5.4.2: 「設定」メニュー

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

リソース名 | peko.menu.help.help-contents
データ型 | string
説明 | 「ヘルプ」-「ヘルプ」メニューのキャプション文字列を設定します。mnemonic は 'H' です。＊β1 rel.05 では使用されていません。

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

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

図5.4.3: 「ヘルプ」メニュー

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

under construction...

### 5.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.5.2 その他のダイアログ

under construction...

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

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

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

### 5.6.1 キャンバス全体

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

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

### 5.6.2 TextCanvas

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

図5.5.2.1: ページ表示領域の表示タイプの例

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

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

図5.5.2.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
説明 | 文字の陰の部分の色を設定します。

図5.5.2.3: ページ表示領域の各種色設定の例

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

### 5.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` 属性が省略された場合に使用されます。

### 5.6.4 SelectCanvas

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

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

図5.5.4.1: 水平方向の基準位置設定の例

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

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

図5.5.4.2: 垂直方向の基準位置設定の例

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

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

図5.5.4.3: 列数設定の例

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

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

図5.5.4.4: 選択肢ボタン間隔設定の例

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

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

表5.5.4.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
説明 | 選択肢ボタンのラベルの陰の部分の色を設定します。

図5.5.4.5: 選択肢ボタンの各種色設定の例

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

## 5.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
説明 | 「終了」タイトルメニューボタンのラベルを設定します。

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

PVNS の外観や動作は、シーン毎に設定されたのプロパティ情報によっても変更されます。シーン・プロパティの設定方法は、「A1. 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 データ型の説明を参照してください。