2003/拡張パッチ/機能詳解

Last-modified: 2021-12-26 (日) 21:35:29

ここではSteam版2003拡張パッチで追加される機能の解説を行う。

 
 

エンジンの変更点

詳細
 

全体的なパフォーマンスの向上

全てのイベントコマンドの動作が軽量化した。
イベントの呼び出しが大幅に軽量化し、1フレームに何百何千回と呼び出しても問題なく動作するようになった。
また、注釈や空白行(条件分岐などのブロック末尾に生まれる空白行)が1ステップとして計上されなくなった。

 

また、pf版(マップイベントのページの更新を毎フレーム1度だけ行うバージョン)では、
変数の操作やスイッチの操作など、マップイベントのページを切り替える可能性のあるコマンドの処理速度が大幅に増加している。
さらに、1つのイベントか1フレームに実行可能なステップ数が従来の1万から20万に増加している。

 

変数の上下限の拡張

変数の下限/上限が従来の -999万9999 ~ 999万9999 から -21億4748万3648 ~ 21億4748万3647 に変更された。

 

画面のフルカラー化

画面の描画が16bitカラーから32bitカラーになり、色の劣化がなくなった。
さらに素材には32bit PNGを使用できるようになった(アルファ値は完全透明/不透明として扱われる)。
ただしエディタは完全には対応しておらず、素材管理のインポートからは入れられない(直接画像をフォルダ内に入れる必要がある)ほか、
ピクチャの表示コマンドの編集ウィンドウでプレビューがされない点には注意。

 

OGG対応

OGG形式のBGM及び効果音が使用できるようになった。軽量かつ高音質なのが特徴。
特にBGMは一括で読み込まず順繰りに読み込んでいくので再生までにラグがほとんどなく、
LOOPSTART/LOOPLENGTHタグを埋め込むことで曲の一部をループさせることが可能である。

 

画面サイズ変更

RPG_RT.iniを編集することで画面サイズを変更できるようになった。
例として、以下の内容を書き加えればツクールXPと同じ画面サイズにすることができる。

WinW=640
WinH=480
 

RTP変更

Steam2003では英語版2003のRTPが基本となっているが、RPG_RT.iniにRuntimePackageKeyの項目を書き加えることで別のRTPを利用できる。
例えば以下の項目をRPG_RT.iniに書き加えるとツクール2000のRTPが適用される。

RuntimePackageKey="ASCII\RPG2000"

レジストリキーを調べるには「レジストリエディター」を開き、ツリービュー内のHKEY_CURRENT_USER→SOFTWARE内を探すこと。

 

RuntimePackageKey=""とすることでRTPがインストールされていない環境をシミュレートできる。
また、2000のRTPを適用してim版の実行ファイルを入れれば、デフォ戦など2000固有の要素を使っていないゲームなら簡単に2003にコンバートできる。
2000だと処理速度が重くてプレイできないという時にも使える……かもしれない。

 

ちなみにデフォルトの値は"KADOKAWA\RPG2003"である。

エディタの変更点

詳細
 

TPCとの連携

2003のイベントをテキストベースで編集できる「TPC」というツール(言語)がエディタ上で扱えるようになった。
イベント編集画面でF3でTPCコードの新規作成、コマンドを選択してF2でTPCコードとして編集できる。
拡張パッチの一部新機能はコマンド編集画面が用意されていないが、TPC側は対応しているので導入が推奨される。
エディタと同じディレクトリにtpc.exeを配置するだけで導入可能。

 

イベントコマンド選択ウィンドウの編集

イベント編集画面で右クリック⇒「リストの編集」から自由に編集できるようになった。

 
画像付きの詳細
 

2k3p7.png
イベント編集画面上で右クリック

 

2k3p8.png
コマンドリスト編集画面

 

表示するイベントコマンド、順番、行数、列数を自由に変更可能。

 

2k3p9.png
編集したコマンドリストの例

 

イベント編集画面のフォントの変更

ツクールのエディタの実行ファイルと同じディレクトリにある「RPG2003.ini」を編集することで、
イベント編集画面のフォント・文字サイズを変更できる。

 
画像付きの詳細
 

2k3p10.png
[rpg2003]というセクションを作り、FontNameとFontSizeというキーで指定する。
このiniファイルはイベントコマンドリストの設定も含んでいるので削除するときは注意

 

2k3p11.png
07ラノベPOPのフォントサイズ23にした例。デカすぎる

 

バックアップ機能

現在開いているプロジェクトのバックアップを日付名のzipで取ってくれる機能。
「最小」だとマップやデータベースなどの最小構成、「全ファイル」だと素材も含めてバックアップを行う。
デフォルトでは「プロジェクトフォルダ/Backup」内にバックアップされる。

 

2k3p12.png

 
※バックアップ先を変えたい場合

※バックアップ先を変えたい場合

 

エディタと同じディレクトリにある「Backupper.exe」のショートカットを作り、そのプロパティを開く。
リンク先の最後に半角スペースを入れ、その後に「min/full [バックアップしたいプロジェクトの場所] [バックアップ先の場所]」と記述する。
「min」だと最小、「full」だと全ファイルのバックアップを行う。
このショートカットを実行すれば任意の場所にバックアップが取れるようになるので、実行しやすい場所に置いておくこと。
ただしデフォルトのようにエディタからは起動できないので注意。

 

2k3p13.png
記入例。「C:\プロジェクト」の全ファイルを「C:\バックアップ」に保存するように指定している。
各パラメータは半角スペースを挟んで記述すること

改変されたイベントコマンドの解説

さらに詳細な情報についてはManiac Patch付属の「command_modified.txt」を参照のこと。

詳細
 

変数の操作

変数番号を直接入力できるようになり、従来のように変数一覧ウィンドウを開かなくともよくなった。
操作対象およびオペランドに「式」が追加され、複雑な計算をひとつの変数操作コマンドにまとめられるようになった。
なお、式を使うには以下のように「新しい「変数の操作」を使う」を有効にしておく必要がある(無効の場合は従来の変数の操作に近いUIになる)。
基本的には新しい変数の操作の方が見やすく高機能であるため、有効にしておくことをお勧めする。
val1.png
val2.png

 
変数の操作のさらに詳細な説明
 

◆操作対象

 
  • 一括(変数)
     
    操作する変数の範囲を動的に指定できる。変数番号の変数の範囲版。
    例) v[v[1]]..v[v[2]] *= 5 → 例えばv[1]が10、v[2]が100のとき、v[10..100]に一括で5を乗算する。
     
    val3.png
     

  • 操作対象となる変数を動的に指定できる。「..」を使えば範囲指定も可能。
    例1)「v[1] * 2 + v[v[v[2]]] / 2」 → 例えばv[1]が2、v[2]が3、v[3]が4、v[4]が6のとき、2 * 2 + 6 / 2 = 7、つまりv[7]が操作対象となる。
    例2)「2*3..v[4]」 → 例えばv[4]が12の場合、v[6..12]の7つの変数が操作対象となる。
     
    val4.png
     

追加されたイベントコマンドの解説

さらに詳細な情報についてはManiac Patch付属の「command_new.txt」を参照のこと。

詳細
 

セーブ情報の取得

指定した番号のセーブの特定の情報を読み取り、変数などに格納することができる。
デフォルトのセーブ/ロード画面上に表示される情報の他、セーブした日時も取得可能。指定した番号のセーブファイルが存在するかどうかの判別にも利用できる。
パーティメンバーの顔グラフィックは指定したIDのピクチャに読み込まれる。ピクチャの座標や透明度はそのままに画像のみが差し替えられるため、
あらかじめ画面外の座標に該当のIDのピクチャを飛ばしておき、情報の取得が終わった後に適宜移動することが望ましい。
主に「セーブの実行」「ロードの実行」と併せて自作セーブ画面を作るのに便利である。

 

getSaveInfo.png

 

セーブの実行/ロードの実行

セーブ/ロードを強制的に行うコマンド。
従来のセーブ/ロード画面を経由することなく実行されるため、プレイヤーの許可なくセーブ/ロードを行える。
また、セーブ番号は16以降も指定可能なため、従来(15個)よりもセーブする箇所を増やすことができる。

 
  • セーブの実行の「結果を受け取る」を有効にすると、指定された変数に成否が返る(0:失敗、1:成功)。
    例えばSave01.lsdを読み取り専用にした上で1番にセーブしようとした場合、セーブに失敗するため0が返る。
     
  • ロードの実行での「ファイルをチェックしない」が無効であるとき、ロードする前にセーブファイルをチェックして不正なファイルならばロードを中断する。
    ファイルのチェックには「セーブ情報の取得」と同じ処理を行う(ただし顔グラフィックは表示されず、日時等の情報を変数に取得することもない)。
    ロードに成功した場合はこのコマンド以降の処理は実行されないため、失敗した場合の分岐はこのコマンドの後に記述するとよい。
     
    SaveLoad.png
     

ロード処理の終了

ロード直後の暗転を解除するためのコマンド。
現在は実行しても意味はないコマンドである。

マウス座標の取得・マウス座標の設定

ウィンドウ上でのマウスポインタの位置を取得/設定できるコマンド。
キー入力の操作にマウスボタンが追加されたことも併さり、従来はできなかったマウスによる入力が可能となった。

 

Mouse.png

 

このコマンドの使用例はこちら → 2003/テクニック

 

文字列ピクチャの表示

指定した文字列およびそれを装飾するウィンドウをピクチャとして動的に生成する。
メッセージ送りや文字速度に関連するものを除いた制御文字を利用可能な他、桁数をN桁に揃えて表示する「\d[N]」の制御文字が追加されている
(例えば「\d[3]\[1], \v[2]」と指定してv[1]に5、\v[2]に40が入っていた場合「005, 040」と表示される)。
ピクチャサイズを固定にして文字列を指定せずに表示することで、指定したサイズのウィンドウのみを表示することもできる。
逆にウィンドウは消し、文字だけを表示する設定にすることも可能である。
また、ゲームフォルダ内(EXEと同じ階層)に「Font」というフォルダを作り、そこにフォントファイルを入れておくことで
プレイヤーの環境にインストールされていないフォント(自作フォント含む)を利用することができる。
動的に生成する都合上、比較的処理負荷が高いコマンドである点には注意。

 

StringPicture.png

 

ピクチャ情報の取得

表示されているピクチャの大きさと座標を取得することができる。
移動中のピクチャの状態や移動先の状態も取得可能。
主として、変数に座標を保持していないピクチャを一定距離ずらしたり、
サイズにかかわらず表示されているピクチャや文字列ピクチャに当たり判定を付ける際に便利なコマンドである。

 

GetPictureInfo.png

 

戦闘処理の制御

戦闘中に実行される特定の処理に割り込みを掛けてコモンイベントを呼び出し、その処理に関連する値を変更することができるコマンド。
戦闘終了後に全ての戦闘処理の制御は解除されるため、「戦闘開始」の条件に指定したコモンイベントからこのコマンドを呼び出す形で利用する。
「制御に使うコモンイベント」内で指定した変数を操作することで制御を行うことができ、既に設定された処理内容と同種類の処理内容を指定すると設定が上書きされる。
設定済みの戦闘処理の制御を無効にするには、制御に使うコモンイベントを「なし」にすればよい。

詳細な説明
  • ATBゲージ増加
    敵味方のATBゲージが増加する直前にそれぞれ個別に実行される。
    4番目に指定した変数の値を書き換えることで、該当のユニットのATBゲージの変動量に変更を加えられる。
    例1:v[4番目] = v[3番目] * -1 → 全てのユニットのATBゲージが常に0から変わらなくなる
    例2:v[4番目] *= 2 → 全てのユニットのATBゲージの溜まる速度が倍になる
     
    ControlBattleProcessing1.png
     
  • ダメージポップ
    ダメージもしくは回復が発生した際に実行される。この処理にコモンイベントを指定している場合、デフォルトのダメージ/回復の値は描画されなくなる。
    これにより、ダメージ/回復の表示のビジュアルや方式に変更を加えることができる。また、敵に与えた総ダメージの記録などにも利用できる。
    値は取得のみで、書き換えても特に影響はない。
     
    ControlBattleProcessing2.png
     
  • ターゲッティング
    ユニットが行動する直前に実行される。
    6番目に指定した変数の値を書き換えることで、単体を対象とした行動のターゲットを変更することができる。
    例1:v[6番目] = 0 → 単体攻撃や単体回復が常にパーティの先頭のユニットに当たるようになる
     
    ControlBattleProcessing3.png
     
  • 状態付与
    ユニットに状態異常が付与された際に実行される。
    値は取得のみで、書き換えても特に影響はない。
     
    ControlBattleProcessing4.png
     
  • HP以外の能力変動
    デバフ・バフの特殊技能により能力変動が起きた際に実行される。
    値は取得のみで、書き換えても特に影響はない。
    デフォルトでは表示されない能力値の変動量を表示することなどが可能となる。
 

    ControlBattleProcessing5.png

 

ATBゲージの操作

戦闘中にATBゲージの量を変更するコマンド。0~300000の範囲で変更が可能。
「主人公ID」ではデータベースの登録順、「パーティメンバー」ではパーティの順番の番号で指定できる。
操作内容の「設定」は代入のこと。

 

ControlATBGauge.png

 

戦闘コマンドの変更EX

戦闘情報の取得

変数配列の操作

いろいろと便利
以下一例

・列挙→シャッフルで被りのない乱数生成
・シューティングゲームなどでの当たり判定

キー入力の処理EX

キーボード・マウス・ジョイパッドの入力を自由に判定できるようになるコマンド。
従来のキー入力では複数のキーが一つの機能に設定されていたが(例:決定ボタンはZ・Enter・Spaceなど)、このコマンドでは一種類のキーの状態を個別に取得できる。

詳細な説明
 
  • キーボードの状態一覧取得
    キーボード(とマウス)の状態をウィンドウ下半分にある表の通りの順番で50個の変数に一括で代入する。
    押されていないときは0、押されているときは1が代入される。
    ジョイパッドの入力が割り当てられている場合、ジョイパッド側からの入力があれば割り当てられたキーに1が代入される。
     
  • キーボードの状態一覧取得(割り当て無効)
    「キーボードの状態一覧取得」と違いジョイパッドの割り当てを無視し、キーボードの状態のみを一括で取得する。
     
  • キーコード指定で状態取得(割り当て無効)
    キーをひとつキーコードで指定し状態を0か1で取得する。ジョイパッドの割り当ては無視する。
    一覧取得とは違い、OS準拠のキーコードで指定する点に注意(例えば一覧取得ではAは0であるが、キーコードで指定する場合は65である)。
    EscキーやF12キーなど、一覧取得にはないキーの状態も取得できる。キーコードはこちらを参照のこと。
     
  • ジョイパッドの状態一覧取得
    ジョイパッドの状態を16個の変数に一括で代入する。
     
  • ジョイパッドの割り当て取得
    現在のジョイパッドの割り当てを取得する。
     
  • ジョイパッドの割り当て設定
    ジョイパッドの割り当てを変更する。
    画面下半分のキーボード一覧にあるキーの番号を指定すればよい(Aに割り当てたいなら0を代入する)。
 

KeyInputProcEX.png

 

このコマンドの使用例はこちら → 2003/テクニック

 

マップの書き換え

現在のマップのチップの並びに変更を加える。マップのサイズを変えることはできない。
「地形IDの取得」を使った場合、書き換え後の情報が取得される。
メモリ上に展開した現在のマップデータを一時的に書き換えているだけであるため、マップファイルが再度読まれた時(ロード時および場所移動時)に変更は維持されない。

・「範囲」の一例
変数AからFに順に 0,6,0,7,6,6 を代入して3x2のマップの書き換えを実行すると
 0,6,0
 7,6,6

共有セーブの操作

ゲーム全体を通して共通で記録された変数・スイッチの書換・読込を行える共有セーブを扱うコマンド。
通常のセーブデータに記録された変数・スイッチはロード処理によって読み込まないと参照できないのに対し、
共有セーブは通常のセーブデータを跨いで共通の値を保持することができる。当然ニューゲーム時でも共有セーブの書換・読込は可能。
キーコンフィグなどのゲーム設定、通常のセーブの内容を管理することによるロードメニューの拡張、ADVにおけるメッセージの既読フラグ、
他のプレイヤーが作ったデータの取り込み、大量の変数を使った際に通常のセーブを使わず必要最低限の進行のみ記録してセーブを高速化する、
クリア時にニューゲームで特殊なイベントを発生させる、プレイヤーの実績やハイスコアの記録、等と用途は非常に幅広い。

 
詳細な説明
 

共有セーブは「Save.lgs」というファイル名で通常のセーブデータと同じディレクトリに保存される。
通常のセーブとはやや異なり、変数とスイッチの配列のみを持つ。共有セーブの変数・スイッチに名前をつけることはできない。

 
  • 開く
    共有セーブの内容を読み込み、メモリ上に展開する。
    F12や通常のセーブデータのロードを行うと開かれた共有セーブは破棄される。
     
  • 閉じる
    メモリ上に展開した共有セーブを破棄する。保存する前にこれを実行すると共有セーブを開いてからの変更はすべて破棄され、
    HDD上に存在する共有セーブに対する変更は一切行われない。
     
  • 保存する
    メモリ上に展開した共有セーブの内容をHDD上に存在するファイルに書き込む。これによって初めてセーブデータを跨いだ値の保持が可能となる。
     
  • 保存して閉じる
    「保存する」を実行した後に「閉じる」を実行する。
    共有セーブは保存した後に閉じなくてもとりわけ不都合はない(むしろ開く際にHDDから読み込む分のラグが発生する)が、
    ゲームの実行中にプレイヤーに共有セーブに対する直接的な操作(削除など)をさせる必要がある場合など、必要な操作を行った後は閉じておいた方が都合がいいケースもある。
     
  • 共有セーブからコピー
    メモリ上の共有セーブから値を読み、通常のスイッチもしくは変数に上書きする。共有セーブを開いていなければ(閉じた後であれば)自動で「開く」を実行する。
    「現在のセーブ」とあるが、これはSaveXX.lsdファイルに上書きをするという意味ではなく、メモリ上にある現在の変数・スイッチに対して書き込みを行うという意味である。
    「共有セーブ」で指定した番号を起点にサイズ分の変数・スイッチを読み込み、「現在のセーブ」で指定した場所を起点に書き込みを行う。
    例:「種類」に「変数」、「現在のセーブ」に「101」、「共有セーブ」に11、「サイズ」に2を指定した場合、V[101] に GV[11]が、V[102] に GV[12] が代入される
    (GVはGlobal (Save) Variable、共有セーブの変数の略である)。
     
  • 共有セーブにコピー
    通常のスイッチ・変数から値を読み、メモリ上の共有セーブに上書きする。それ以外の使い方は「共有セーブからコピー」と同様。
    これを実行した後に「保存する」を実行しない限り、HDD上のファイルに実際に書き込まれることはない。
 

ControlGlobalSave.png

ピクチャのID変更

IDを変更するだけ
位置や効果が変化するわけではないため優先度を手軽に変えるための機能か

ゲームのオプション設定

「非アクティブ時の動作」はきっと放置ゲーを作るための機能だ

コマンドの呼び出し

変数指定ができなかったすべてのコマンドに対する福音

@> 場所移動: [0001:MAP0001] (002,003), 左  →  MovePlace(1, 2, 3, 4)
@> BGMの演奏: 2003Adventurers, 100, 100, 50  →  PlayBGM("2003Adventurers", 0, 100, 100, 50)

この「2003Adventurers」が文字列引数、「 (1, 2, 3, 4) 」や「 (0, 100, 100, 50) 」が数値引数
※コマンドの一覧はcommand_code.txtに記載


例)向きを指定しつつ記憶した場所に場所移動がしたい!
まずは適当に作ったイベントをブリッジに貼り付ける
たとえば

@> 場所移動: [0001:MAP0001] (002,003), 左  →  MovePlace(1, 2, 3, 4)
「 (1, 2, 3, 4) 」が数値引数なので「マップ45の (V[11],V[12]) に左向きで移動したいな~」ってときは
変数1-4に順に45,V[11],V[12],4を代入して

@> コマンドの呼び出し: 10810, , V[0001] (x 4)

としてやればヨシ!

 

 

コメント