action要素のデータベースです。action自体のスキーマは実行エンジンに依存する点に注意してください。 従って、ここではPegmaの採用するaction要素のスキーマを提示するにとどめます。
要素 | 役割 | |
---|---|---|
actionData | データベースのルート | |
action | 行動データの実体 |
属性 | 役割 |
---|---|
href | 外部ファイルへの参照 |
actionを子要素として持ち、データベースとしてのインターフェイスを提供します。 actionDataが子要素として有効なhref属性を持つactionDataを含んでも構いません。その際、href属性で参照されているactionDataの内容が、参照元要素の位置に展開されます。
Pegmaにおいて(外部ファイルの解決などの)解析の結果生成されるactionDataは単一のものとします。
Pegmaの使用する行動データを定義します。
ここで定義するaction要素の名前空間はhttp://www.static.com/sora/actionとします。(*サイト移転対策。)
ユーザ(プレイヤ)や他のキャラクタによって引き起こされ、対象に何らかの変化や命令を与えるオブジェクトのことをまとめて行動といいます。RPGでは「魔法」・「道具」・「武器」が行動に相当します。SORAではこの三者を峻別せず、一種類の「行動」として扱います。
行動は発動者と対象をもちます。発動者は行動を引き起こしたキャラクタで、対象は行動の効果を受け取るキャラクタです。Pegmaでは、発動者は1人で固定されますが、対象として複数のキャラクタを指定でき、また発動者自身を対象とすることも出来ます。
戦闘中において、対象は味方パーティと敵パーティから選べますが、「敵キャラクタ」が存在しない場面では、行動の対象は味方パーティの中から選択することになります。
行動は二つの発動点を持ちます。ひとつはプレイヤかキャラクタによって使用された時点です。もう一つはキャラクタが行動を装備(一人のキャラクタが独占的に所持)した時点です。前者の発動は行動する権利を与えられた1回のみ行われ、後者は装備を解除するまで持続します。
*本来の意味では、「使用」や「装備」が“action”にあたるが、“act”は自動詞であるため、この文書内での「行動」(actionされるオブジェクト)に相当する用語が存在しない。
行動には何らかの代償が求められることがあります。RPGでは「MP」と呼ばれるパラメータや行動の使用回数が代償となります。
MPを消費する行動の代表例は魔法です。行動者のMPの現在値が魔法の消費MPを下回っている場合には、選択後であってもその魔法は使用できません。何らかの方法で消費MP以上に行動者のMPが回復した場合は、その魔法を再び使用できます。
多くの道具は行動の使用回数が決められています。使用回数だけ使用した道具は消滅します。理論上では、回数が限界に達する前に減少させれば、道具を何度でも使用できます。しかしたいてい使用回数は1回で、この場合、同じ道具は二度と使用できません。
いわゆる「魔法」・「道具」・「武器」と比較すると次のようになります。
魔法 | 道具 | 武器 | |
---|---|---|---|
発動時点 | 使用時のみ、一時 | 使用時のみ、一時 | 装備時:永続、使用時:一時 |
消費 | MP | 回数 | なし |
属性 | 役割 |
---|---|
id | 識別子(内部名) |
skill | 技能に分類されるかどうか |
item | 道具に分類されるかどうか |
timing | 行動のタイミング |
available | 行動の使用場面 |
行動の1レコードを表します。action要素の属性は内部名の指定や行動の分類に用いられます。行動の具体的なデータはaction要素の内容に記述します。
id属性は各行動を他と識別するための名称で、actionData内で一意の値を持ちます。 skill,item属性は行動がどの役割で用いられるかを表し、bool値を持ちます。skill,item属性値が重複しても構いません。
両方の値がtrueであるときは技能で用いる(使用キャラクタのパラメータを消費して発動する)ことも、道具として用いる(行動自体を消費することで発動する)ことも可能である、ということを示します。
逆に両方の値がfalseであるというのは、行動がキャラクタによって一切発動されないことを表します。これはシナリオ内でのキーアイテムに相当するでしょう。(「道具」という概念が「物体」という概念に含まれることに注意。)
timing属性は戦闘シーン中に行動が発動されるタイミングを表します。次の4つのキーワードから選択できます。Pegmaの実装によっては複数の選択が許される場合もあります。 *ただし、Pegmaではtiming属性値を複数選択できません。
戦闘シーンの実装については別文書を参照してください。
available属性は行動を使用できる場面を表します。次の3つのキーワードから1つを選択されます。
actionの属性値は使用するPegmaにあわせて拡張しても構いません。その際には任意の名前空間を用いて基本構造と拡張した構造を区別するのが良いでしょう。
要素 | 役割 |
---|---|
name | 表示名 |
feature | 表示される行動の説明 |
sort | 行動の種別 |
target | 行動の対象 |
times | 行動回数 |
waste | 行動の消費量 |
rest | 使用可能回数のデフォルト値 |
equip | 装備時効果 |
trigger | 発動時効果 |
effect | エフェクト(画面効果) |
(powertype | 行動の属性、将来のために予約) |
属性 | 役割 |
---|---|
なし |
ウィンドウ上に表示される行動の名前を表します。
属性 | 役割 |
---|---|
なし |
行動についての説明を表します。エンジンによっては、ユーザーの選択を補佐するため、関連付けられたラベルにフォーカスが合った時に説明を表示する、といった動作をするのに用いられるでしょう。
属性 | 役割 |
---|---|
なし |
行動の種類についての情報を表します。検索時のキーワードやキャラクターが装備・習得できるかどうか判断する時に用いられます。
属性 | 役割 |
---|---|
type | 対象の型を指定 |
value | 対象の人数を指定 |
行動の対象となるキャラクターの範囲を表します。 type属性は次の4つのキーワードから1つを選択します。
value属性はtype属性で示した範囲内での人数を表します。行動の対象を選択する時はこの数値の回数だけキャラクターを選択することになるでしょう。
<target type="party" value="2"/>
type属性値が"area"であるとき、target要素はSVGデータを内容として持ちます。このとき行動の対象は、内容が表す図形の内側に存在するキャラクターすべて、となります。伝統的なRPGよりも、シミュレーションRPGなどのマップを用いた戦闘システムで使う手法です。
<target type="area"> <svg:circle r="100"> </target>
属性 | 役割 |
---|---|
なし |
一回の発動でeffect要素が実行される回数を表します。
属性 | 役割 |
---|---|
なし |
行動の発動に伴って減少するパラメータを表します。内容としてparameter要素やrest要素を持ちます。
waste要素に記述されたパラメータを減少することが出来ない場合、行動の発動は失敗となります。(発動自体はなされます。つまり、waste要素を満たせない時でもインタラプトの発動判定は行われます。)
属性 | 役割 |
---|---|
name | 変化させるパラメータ名 |
value | パラメータの変化量 |
消費されるパラメータを指定します。
行動の発動に伴って使用回数が減少することを表し、またその量を指定します。デフォルト値は1です。
属性 | 役割 |
---|---|
reset | 値がリセットされる状態 |
value | 使用可能回数のデフォルト値 |
行動を使用できる回数を表します。valueにはゼロ以上の整数かキーワードindefiniteが入ります。デフォルト値はindefiniteです。
valueがゼロになると行動は使用できなくなります。このとき、行動が使用されている区分によって挙動が異なります。
行動が道具として使用されているときは、キャラクターのデータから削除されます。これは道具が消滅することを表します。
一方、行動が技能として利用されている時は、単に使用が不可能となるだけで消滅はしません。
また、reset属性によって回数が自動的に元に戻る条件を指定することが出来ます。次の4つのキーワードが許されています。デフォルト値はneverです。
属性 | 役割 |
---|---|
src | リソース |
行動が発動されたときに再生されるエフェクト(画面効果)を表します。エフェクトはSVGかSMILで記述されているものとします。src属性でエフェクトが記述されたリソースを指定するか、内容として直にエフェクトを記述します。
属性 | 役割 |
---|---|
なし |
行動を装備時に、装備したキャラクターに及ぶ効果を表します。内容は、後述の「基本効果」要素です。「発動の時点」で述べたように、効果は装備を解除するまで持続します。
属性 | 役割 |
---|---|
なし |
行動が発動時にキャラクターへ及ぶ効果を表します。内容は、以下の「基本効果」要素、SORA Resource、SMIL(演出)です。「発動の時点」で述べたように、効果は発動時に一度だけ表れます。
行動が発動されると、effect要素の内容が先頭から順に実行されます。
属性 | 役割 |
---|---|
probable | 成功率 |
test | 成功条件 |
行動が実際の効力を発するための条件を表します。平たく言えば、「攻撃の命中率」です。probable属性を用いず、代わりにtest属性によって式の評価を成功条件とすることも出来ます。probable属性とtest属性が共存するときはprobable属性の評価のみ行われます。
probable属性は成功率を持ちます。値は0〜1.0、ないし0%〜100%の範囲を取ります。probable属性が存在する時は、属性値によって乱数が生成され、生成された数がprobable属性値以下であれば、hit要素の次にある内容が実行されます。
test属性値は式を値として持ち、test属性値が真となるとき次の内容へと処理が進み、偽となる時は行動の発動が中断されます。
*独立の要素とせず、@testと@probableを効果を表す要素に組み込む、というのもアリ。
属性 | 役割 |
---|---|
name | 変化させるパラメータ名 |
value | パラメータの変化量 |
time | 効果時間 |
対象にssd:parameter要素(ssd="http://www.static.com/sora/state/"、SORA State Definition)を付加します。つまり、対象に一時的なパラメータ変化を起こします。変化量は絶対値と相対値の両方で指定できます。
属性 | 役割 |
---|---|
name | 付加・削除する状態名 |
enable | 状態が有効かどうか |
対象の状態を付加・削除します。enable属性値が偽であるときは、該当する状態が削除されます。削除される状態がキャラクターにとって有害である時は、「(悪い)状態を治療する」とも言われます。
属性 | 役割 |
---|---|
name | 変化させるパラメータ名 |
value | パラメータの変化量 |
対象のパラメータを永続的に変更します。ただし戦闘中に変更されたパラメータは戦闘終了後に元の値へ戻ります。
以下の要素は組み込みユーザー定義要素です。実装は内部的であっても上記の基本効果を組み合わせたマクロとしても構いません。
属性 | 役割 |
---|---|
value | ダメージ量 |
setParam要素のうち、VPに特化した効果です。いわゆる「ダメージを与える・回復する」効果を表します。valueの値が負であればダメージ回復を表します。
属性 | 役割 |
---|---|
value | 攻撃力の増加量 |
成功判定とダメージの反映を行います。attack要素は「物理攻撃」を表し、sorcery要素は「魔法攻撃」を表しますが、その挙動は実装に依存します。
例として、Pegmaのデフォルト式を挙げます。
*未定。候補としては次のとおり。
Pegmaでは次の流れを踏んで行動を実行します。(上から下へ進行)
*デフォルト挙動ファイル 各設定: 戦闘シーン ・各イベント前後の操作 行動リスト作成 各行動 クリーンアップ ・通常攻撃(attack要素) 成功判定 ダメージ算出 クリティカル時 通常 ・魔法攻撃(sorcery要素) 成功判定 ダメージ算出 クリティカル時 通常 シナリオシーン ・メッセージウィンドウのレイアウト ・キーウェイトアイコン ・台詞表示スピード メニュー ・項目のレイアウト ・ システムgenerated on Thu Jun 17 15:42:01 JST 2004