actionData概要

action要素のデータベースです。action自体のスキーマは実行エンジンに依存する点に注意してください。 従って、ここではPegmaの採用するaction要素のスキーマを提示するにとどめます。

Pegma:Static自身が実装する(予定の)SORA実行エンジン。
要素役割
actionDataデータベースのルート
action行動データの実体

actionData要素

属性役割
href外部ファイルへの参照

actionを子要素として持ち、データベースとしてのインターフェイスを提供します。 actionDataが子要素として有効なhref属性を持つactionDataを含んでも構いません。その際、href属性で参照されているactionDataの内容が、参照元要素の位置に展開されます。

Pegmaにおいて(外部ファイルの解決などの)解析の結果生成されるactionDataは単一のものとします。

action要素

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回数なし

行動のデータ構造

1.action要素

属性役割
id識別子(内部名)
skill技能に分類されるかどうか
item道具に分類されるかどうか
timing行動のタイミング
available行動の使用場面

行動の1レコードを表します。action要素の属性は内部名の指定や行動の分類に用いられます。行動の具体的なデータはaction要素の内容に記述します。

id属性は各行動を他と識別するための名称で、actionData内で一意の値を持ちます。 skill,item属性は行動がどの役割で用いられるかを表し、bool値を持ちます。skill,item属性値が重複しても構いません。

両方の値がtrueであるときは技能で用いる(使用キャラクタのパラメータを消費して発動する)ことも、道具として用いる(行動自体を消費することで発動する)ことも可能である、ということを示します。

逆に両方の値がfalseであるというのは、行動がキャラクタによって一切発動されないことを表します。これはシナリオ内でのキーアイテムに相当するでしょう。(「道具」という概念が「物体」という概念に含まれることに注意。)

timing属性は戦闘シーン中に行動が発動されるタイミングを表します。次の4つのキーワードから選択できます。Pegmaの実装によっては複数の選択が許される場合もあります。 *ただし、Pegmaではtiming属性値を複数選択できません。

major
メジャーアクション。1ラウンド内で発動者に順番が回ってきた(行動を行う権利が与えられた)ときに行動を発動できます。
interrupt
インタラプト。自らを対象とした行動が発動された時に、その行動を取り消して自らが選択していた行動を発動できます。
first
ファーストアクション。1ラウンド内のメジャーアクションが行われる前に行動が発動されます。
second
セカンドアクション。通常の行動使用に加えてこの属性を持った行動を使用することが出来ます。この属性の行動を持つキャラクターは行動選択が2回となり、2回目は習得しているセカンドアクションの中から選ぶことになります。セカンドアクションとして選んだ行動は、1ラウンド内でメジャーアクションが全て完了した後に発動されます。

戦闘シーンの実装については別文書を参照してください。

available属性は行動を使用できる場面を表します。次の3つのキーワードから1つを選択されます。

walk
移動中。シナリオの制御がwalk要素にあるとき(プレイヤーを操作可能な時)に行動を使用できます。
battle
戦闘中。シナリオの制御が戦闘シーンにあるときに使用可能です。
always
walkとbattleの両方を選択していることを表します。

actionの属性値は使用するPegmaにあわせて拡張しても構いません。その際には任意の名前空間を用いて基本構造と拡張した構造を区別するのが良いでしょう。

独自拡張の例。
slv:miracle
奇跡の概念を持つかどうか。bool値。
true時はskill,itemの指定をfalseとして打ち消し、timing="fastest"を強制する。 (xmlns:slv="http://mine.at/Static/salvable/")
timing値の拡張
"fastest"、"fastest interrupt"(複数指定)を追加。
fastest
1stアクションよりも優先的に発動。
fastest interrupt
fastestに対してインタラプト、かつ誘因である行動を取り消し。

2.具体的なデータ

要素役割
name表示名
feature表示される行動の説明
sort行動の種別
target行動の対象
times行動回数
waste行動の消費量
rest使用可能回数のデフォルト値
equip装備時効果
trigger発動時効果
effectエフェクト(画面効果)
(powertype行動の属性、将来のために予約)

name要素

属性役割
なし

ウィンドウ上に表示される行動の名前を表します。

feature要素

属性役割
なし

行動についての説明を表します。エンジンによっては、ユーザーの選択を補佐するため、関連付けられたラベルにフォーカスが合った時に説明を表示する、といった動作をするのに用いられるでしょう。

sort要素

属性役割
なし

行動の種類についての情報を表します。検索時のキーワードやキャラクターが装備・習得できるかどうか判断する時に用いられます。

target要素

属性役割
type対象の型を指定
value対象の人数を指定

行動の対象となるキャラクターの範囲を表します。 type属性は次の4つのキーワードから1つを選択します。

self
発動者自身。この属性値を選択時、value属性値は1で固定される。
one
任意の一人。
party
片方のパーティ全体。
whole
戦闘に参加しているキャラクター全体。
area
ある範囲内のキャラクター。

value属性はtype属性で示した範囲内での人数を表します。行動の対象を選択する時はこの数値の回数だけキャラクターを選択することになるでしょう。

例:片方のパーティ内から任意の2人が行動対象となる。
  <target type="party" value="2"/>

type属性値が"area"であるとき、target要素はSVGデータを内容として持ちます。このとき行動の対象は、内容が表す図形の内側に存在するキャラクターすべて、となります。伝統的なRPGよりも、シミュレーションRPGなどのマップを用いた戦闘システムで使う手法です。

例:中心から100ピクセル以内のキャラクターが行動の対象となる。
 
  <target type="area">
 	<svg:circle r="100">
  </target>

times要素

属性役割
なし

一回の発動でeffect要素が実行される回数を表します。

waste要素

属性役割
なし

行動の発動に伴って減少するパラメータを表します。内容としてparameter要素やrest要素を持ちます。

waste要素に記述されたパラメータを減少することが出来ない場合、行動の発動は失敗となります。(発動自体はなされます。つまり、waste要素を満たせない時でもインタラプトの発動判定は行われます。)

parameter要素

属性役割
name変化させるパラメータ名
valueパラメータの変化量

消費されるパラメータを指定します。

useRest要素

行動の発動に伴って使用回数が減少することを表し、またその量を指定します。デフォルト値は1です。

rest要素

属性役割
reset値がリセットされる状態
value使用可能回数のデフォルト値

行動を使用できる回数を表します。valueにはゼロ以上の整数かキーワードindefiniteが入ります。デフォルト値はindefiniteです。

indefinite
無限大。行動は何回でも使用できる。

valueがゼロになると行動は使用できなくなります。このとき、行動が使用されている区分によって挙動が異なります。

行動が道具として使用されているときは、キャラクターのデータから削除されます。これは道具が消滅することを表します。

一方、行動が技能として利用されている時は、単に使用が不可能となるだけで消滅はしません。

また、reset属性によって回数が自動的に元に戻る条件を指定することが出来ます。次の4つのキーワードが許されています。デフォルト値はneverです。

battleEnd
戦闘終了時。
service
service要素による操作によって。
never
回数の回復は起こらない。
actEnd
act要素の終了時。("The Salvable"拡張)

effect要素

属性役割
srcリソース

行動が発動されたときに再生されるエフェクト(画面効果)を表します。エフェクトはSVGかSMILで記述されているものとします。src属性でエフェクトが記述されたリソースを指定するか、内容として直にエフェクトを記述します。

equip要素

属性役割
なし

行動を装備時に、装備したキャラクターに及ぶ効果を表します。内容は、後述の「基本効果」要素です。「発動の時点」で述べたように、効果は装備を解除するまで持続します。

trigger要素

属性役割
なし

行動が発動時にキャラクターへ及ぶ効果を表します。内容は、以下の「基本効果」要素、SORA Resource、SMIL(演出)です。「発動の時点」で述べたように、効果は発動時に一度だけ表れます。

行動が発動されると、effect要素の内容が先頭から順に実行されます。

基本効果

hit要素

属性役割
probable成功率
test成功条件

行動が実際の効力を発するための条件を表します。平たく言えば、「攻撃の命中率」です。probable属性を用いず、代わりにtest属性によって式の評価を成功条件とすることも出来ます。probable属性とtest属性が共存するときはprobable属性の評価のみ行われます。

probable属性は成功率を持ちます。値は0〜1.0、ないし0%〜100%の範囲を取ります。probable属性が存在する時は、属性値によって乱数が生成され、生成された数がprobable属性値以下であれば、hit要素の次にある内容が実行されます。

test属性値は式を値として持ち、test属性値が真となるとき次の内容へと処理が進み、偽となる時は行動の発動が中断されます。

*独立の要素とせず、@testと@probableを効果を表す要素に組み込む、というのもアリ。

addParam要素

属性役割
name変化させるパラメータ名
valueパラメータの変化量
time効果時間

対象にssd:parameter要素(ssd="http://www.static.com/sora/state/"、SORA State Definition)を付加します。つまり、対象に一時的なパラメータ変化を起こします。変化量は絶対値と相対値の両方で指定できます。

state要素

属性役割
name付加・削除する状態名
enable状態が有効かどうか

対象の状態を付加・削除します。enable属性値が偽であるときは、該当する状態が削除されます。削除される状態がキャラクターにとって有害である時は、「(悪い)状態を治療する」とも言われます。

setParam要素

属性役割
name変化させるパラメータ名
valueパラメータの変化量

対象のパラメータを永続的に変更します。ただし戦闘中に変更されたパラメータは戦闘終了後に元の値へ戻ります。

以下の要素は組み込みユーザー定義要素です。実装は内部的であっても上記の基本効果を組み合わせたマクロとしても構いません。

addDamage要素

属性役割
valueダメージ量

setParam要素のうち、VPに特化した効果です。いわゆる「ダメージを与える・回復する」効果を表します。valueの値が負であればダメージ回復を表します。

attack要素、sorcery要素

属性役割
value攻撃力の増加量

成功判定とダメージの反映を行います。attack要素は「物理攻撃」を表し、sorcery要素は「魔法攻撃」を表しますが、その挙動は実装に依存します。

例として、Pegmaのデフォルト式を挙げます。

*未定。候補としては次のとおり。

attack要素
成功判定
(行動者のqui値+装備のqui値の総和+乱数)>(対象の行動+装備のqui値の総和+乱数)
ダメージ
(行動者のatt値+装備のatt値の総和+乱数)×value値−(対象のgrd値+装備のgrd値の総和+乱数)、負の値であればゼロとする。
sorcery要素
成功判定
probable="90%"
ダメージ
(行動者のmen値+装備のmen値の総和+乱数)×value値−(対象のmen値+装備のmen値の総和+乱数)、負の値であればゼロとする。

行動使用の流れ

Pegmaでは次の流れを踏んで行動を実行します。(上から下へ進行)

行動リスト
行動者、発生する行動、優先度数を1レコードとして、行動タイミングと優先度の順に並べたもの。1ラウンド(全キャラクターの行動が1回行われる単位)内に発生する行動をまとめ、管理する役割を持つ。
 *デフォルト挙動ファイル
  各設定:
 
  戦闘シーン
  ・各イベント前後の操作
  	行動リスト作成
  	各行動
  	クリーンアップ

 ・通常攻撃(attack要素)
  	成功判定
  	ダメージ算出
  		クリティカル時
  		通常

 ・魔法攻撃(sorcery要素)
  	成功判定
  	ダメージ算出
  		クリティカル時
  	通常

 シナリオシーン
  ・メッセージウィンドウのレイアウト
  ・キーウェイトアイコン
  ・台詞表示スピード
 
  メニュー
  ・項目のレイアウト
  ・
 
  システム
generated on Thu Jun 17 15:42:01 JST 2004
Copyright ? 2004 Static All rights reserved.
制作 せはやみ