2016年11月27日日曜日

ファイルダウンロードプラグイン

RPGツクールMVで使用可能な自作プラグイン「ファイルダウンロードプラグイン」の紹介です。

プラグインの説明

ゲーム中にインターネット上からファイルをダウンロードしてプロジェクト配下の任意の場所に配置できます。同名ファイルは上書きされます。
配置したファイルはゲーム中で動的に参照することができます。

スクリーンショット

スクリーンショット

利用用途

開発時のプラグインの自動アップデート

ゲーム起動時に自動で配布元の最新プラグインを適用できます。わざわざ確認しなくても機能追加やバグ修正が行われた最新のファイルを利用できます。
ただし、すでに適用済みのプラグインを更新した場合、変更を反映させるにはゲームをリロードする必要があります。

※パラメータ「配布サイトURL」をデフォルトのままで以下のプラグインコマンドを実行すると、本プラグインを最新化できます。

  • FD_MY_PLUGIN FileDownloader.js

小規模なアップデートファイル配信

あらかじめ準備しておけば、プレイヤーにゲーム全体を再ダウンロードさせずに一部ファイルのみ差し替えさせることができます。

インターネット上の画像をピクチャ表示

ネット上の画像ファイルなどを取り込んでゲーム内で使用することができます。著作権等には十分ご注意ください。

おまけ機能

おまけ機能で「指定したURLを既定のブラウザで開く」プラグインコマンドが使えます。

プラグインコマンド

FD_FILE http://~.png test/     # 指定したURLのファイルをtest/に配置
FD_ファイル http://~.png test/ # 同上
FD_MY_FILE ~.json data/        # 指定したパスのファイルをdata/に配置
FD_マイファイル ~.json data/   # 同上
FD_PLUGIN http://~.js          # 指定したURLのjsをjs/plugins/に配置
FD_プラグイン http://~.js      # 同上
FD_MY_PLUGIN ~.js              # 指定したパスのjsをjs/plugins/に配置
FD_マイプラグイン ~.js         # 同上
FD_PICTURE http://~.png        # 指定したURLのpngをimg/pictures/に配置
FD_ピクチャ http://~.png       # 同上
FD_MY_PICTURE ~.png            # 指定したパスのpngをimg/pictures/に配置
FD_マイピクチャ ~.png          # 同上
FD_START_SITE http://~.jp      # 規定のブラウザで指定したURLを開く
FD_サイト起動 http://~.jp      # 同上

ダウンロード

プラグインファイルはGithubで公開しています。
https://raw.githubusercontent.com/triacontane/RPGMakerMV/master/FileDownloader.js

ダウンロード方法(Windowsの場合)

  1. リンク先に飛ぶ
  2. 右クリック
  3. 名前を付けて保存
  4. ファイル名を変えずに、プロジェクトの「js/plugins」配下に配置

このプラグインを適用すれば、以後は以下のコマンドでOKです。

FD_MY_PLUGIN FileDownloader.js

利用規約

当プラグインはMITライセンスのもとで公開されています。作者に無断で改変、再配布が可能で、利用形態(商用、18禁利用等)についても制限はありません。このプラグインはもうあなたのものです。
http://opensource.org/licenses/mit-license.php

2016年11月20日日曜日

反撃拡張プラグイン

RPGツクールMVで使用可能な自作プラグイン「反撃拡張プラグイン」の紹介です。

プラグインの説明

反撃の仕様を拡張します。
魔法に対する反撃や、特定のスキルを使った反撃、特定の条件下でのみ発動する反撃などが作成できます。

特定のアイテムを装備時のみ特殊な反撃技を指定したり、特定の攻撃に対してボスが強力な反撃を繰り出したりする設定が可能です。

具体的な機能詳細は以下の通りです。

機能詳細

  1. 魔法攻撃を受けた場合もカウンターが発動するようになります。
    専用の発動率を指定可能で、指定しない場合は、物理攻撃と同様の反撃率が適用されます。

  2. 反撃時のスキルを個別に設定することができます。
    MPなどのコストが不足している場合の挙動はカスタマイズできます。

  3. 反撃条件をJavaScript計算式の評価結果を使って詳細指定できます。反撃条件を満たさない場合は反撃は実行されません。
    特定のスキルや属性に対してのみ反撃したり、特定の条件下でのみ反撃したりできます。
    ヘルプにいくつかのサンプルが用意されています。

  4. 反撃実行時に専用のアニメーションIDを再生できます。

スクリーンショット

スクリーンショット

メモ欄指定方法

特徴を有するデータベースのスキルのメモ欄に以下の通り指定してください。

<CE_魔法反撃:50>      # 魔法攻撃を受けた場合に50%の確率で反撃します。
<CE_MagicCounter:50>  # 同上
<CE_魔法反撃>     # 魔法攻撃を受けた場合にもともとの反撃率で反撃します。
<CE_MagicCounter> # 同上
<CE_反撃スキルID:\v[1]>    # 反撃時に変数[1]のIDのスキルを使用します。
<CE_CounterSkillId:\v[1]>  # 同上
<CE_魔法反撃スキルID:3>    # 魔法反撃時にID[3]のスキルを使用します。
<CE_MagicCounterSkillId:3> # 同上
<CE_反撃条件:v(1) &lt; 100>    # 変数[1]が100より小さければ反撃します。
<CE_CounterCond:v(1) &lt; 100> # 同上(※2)
<CE_魔法反撃条件:s(1)>         # スイッチ[1]がONなら魔法反撃します。
<CE_MagicCounterCond:s(1)>     # 同上
<CE_反撃条件:skill.id === 10>              # スキルIDが[10]なら反撃します。
<CE_反撃条件:skill.damage.elementId === 3> # スキル属性が[3]なら反撃します。
<CE_反撃条件:this.hpRate() &lt; 0.5> # 自分のHPが50%を下回ると反撃します。
<CE_反撃アニメID:20>       # 反撃実行前にアニメーション[20]を再生します。
<CE_CounterAnimationId:20> # 同上
 
※ 文章、スクリプト中で不等号を使いたい場合、以下のように記述してください。
< → &lt;
> → &gt;

ダウンロード

プラグインファイルはGithubで公開しています。
https://raw.githubusercontent.com/triacontane/RPGMakerMV/master/CounterExtend.js

ダウンロード方法(Windowsの場合)

  1. リンク先に飛ぶ
  2. 右クリック
  3. 名前を付けて保存
  4. ファイル名を変えずに、プロジェクトの「js/plugins」配下に配置

利用規約

当プラグインはMITライセンスのもとで公開されています。作者に無断で改変、再配布が可能で、利用形態(商用、18禁利用等)についても制限はありません。このプラグインはもうあなたのものです。
http://opensource.org/licenses/mit-license.php

2016年11月15日火曜日

BGS並行演奏プラグイン

RPGツクールMVで使用可能な自作プラグイン「BGS並行演奏プラグイン」の紹介です。

プラグインの説明

複数のBGSを並行して演奏できます。プラグインコマンドからBGSの演奏ラインを変更すると元のBGSを演奏したまま、新しくBGSを演奏することができます。
並行演奏しているBGSはそれぞれ個別に、音量やピッチ、左右バランスを調節できます。
演奏ラインのデフォルトは[1]です。

追加機能

追加機能として、BGS演奏中にSEを演奏すると自動でBGSを一時フェードアウトするプラグインコマンドを提供します。SEがより明瞭に聴き取れるようになります。
フェードアウト時間やSEの演奏タイミングを設定することもできます。

ダウンロード

プラグインファイルはGithubで公開しています。
https://raw.githubusercontent.com/triacontane/RPGMakerMV/master/ParallelBgs.js

ダウンロード方法(Windowsの場合)

  1. リンク先に飛ぶ
  2. 右クリック
  3. 名前を付けて保存
  4. ファイル名を変えずに、プロジェクトの「js/plugins」配下に配置

利用規約

当プラグインはMITライセンスのもとで公開されています。作者に無断で改変、再配布が可能で、利用形態(商用、18禁利用等)についても制限はありません。このプラグインはもうあなたのものです。
http://opensource.org/licenses/mit-license.php

2016年11月7日月曜日

「第三回自作ゲームフェス勉強会」に参加してきました!

 家に帰ってブログを書くまでが勉強会、ということで「第三回自作ゲームフェス勉強会」に参加してきました!

 自作ゲームフェスMVについてはこちらをご参照ください。

バナー

 結論から言うと、同人ゲーム作者としても、プラグイン作者としても、またラノベ作家志望者としても、非常に得るものの多い濃い勉強会でした。今回、貴重な機会を作ってくださった主催者様に改めてお礼を申し上げます。

なんで参加したの?

 もともと私は、自作ゲームフェスMVの企画のひとつとして「ノベルゲーム総合プラグイン」の作成や「ツクールMVでプラグインを作るための現実と作法」の記事執筆などでフェスと関わらせて頂いた関係上、興味はありましたが一方で、現在はゲームそのものは作っておらず、参加するかどうか迷っていました。
 しかし、市販の有名ホラーゲーム『零』シリーズを手掛けた柴田誠氏が講師として招かれるということで、参加する決意を固めた次第です。ホラーというジャンルは、ラノベ業界では滅多に見られない異端である一方、フリーゲーム業界では(実況という前提もありますが)一大勢力を築いているのでその勢いをなんとかラノベに応用できないかと常々考えていたのです。(この話は長くなるので適当に切り上げます)

柴田誠氏の講演を聴いた感想

 あくまでも私の解釈なので氏の実際の発言意図とは異なる可能性があります。

ホラーゲームの難しさ

 まず『零』シリーズのコンセプトと企画書が紹介されました。端的に言えば「カメラ」を使って霊から身を守りつつ進めていくゲームです。私はホラーゲームについてはあまり明るくなく当該シリーズも未プレイなのですが、やはり小説に限らずゲームでもホラーならではの「難しさ」というのが感じられました。
 ホラーというジャンルは基本的に矛盾を孕んでいます。人が忌避するモノをあえて見せていく。見たくないのに見たい。怖いのに遊びたい。他のジャンルであれば、そのジャンルの特性を突き詰めることがそのまま面白いゲーム作りに直結するところですが、ホラーは必ずしもそれが正解とは限らない。その点については、プロである柴田氏すらも悩まれて試行錯誤されたようです。私は、その相反する感情を抱かずにいられないことこそが(媒体を問わず)ホラーの何よりの魅力だと思います。

媒体による恐怖演出の違い

 個人的に興味があり、事前に「小説や映画とは違ったゲーム独自の怖さ」というテーマで質問させて頂きました。そこで挙げていただいた内容として「主人公になりきって恐怖を直に体験できる没入感」「主人公の行動に応じて最適なタイミングで恐怖演出を見せられるインタラクティブ性」というものでした。とても腑に落ちる内容でしたが、一方でこれは欠点にもなるようで、一度対処法を確立してしまえば、あとは流れ作業となってしまい恐怖感が長続きしない側面もあるそうです。
 そういう意味で『零』シリーズでは、対抗手段が一般的な武器ではなく「カメラ」というなんとも心許ない道具が使われているのだと思います。カメラ自体が武器でないのはもちろん、構えている間は無防備で、かつ視界が遮られつつも、対象を凝視しなければならないというリスクを背負うことになりますから……(想像で言っています)

3Dと2Dによる演出の違い

 また、興味深かったのが、同じゲームというジャンル内でも3Dと2Dとでは演出手法はもちろん、最適なストーリーすら異なるのだそうです。たしかに音響を使った演出や、恐怖の対象が迫ってくる感覚というのは、3Dだからこそ十分に表現できるものですよね。そういう意味ではフリーのホラーゲームの盛況と市販のホラーゲームとではアプローチの仕方からして異なり、2Dは小説に近い部分もあるのかもしれません。

その他

 懇親会の際に柴田氏に個人的に伺ったのですが、サイコホラー(主に人間そのものの怖さを炙り出していくホラー)はやはりゲームにはあまり向かないのだそうです。当然と言えば当然かもしれませんが……
 なので私がホラーゲームを作る際は、そこから考え直さないといけないかもしれません。

自作ゲームプレー企画

 自作ゲームを互いにプレーする企画でした。今回はただ遊ぶのではなくて、作者からは一切説明を受けずゲームの意図を付箋に書き出すという面白い試みが行われていました。
 「作者視点で」他人の作品に触れるというのは、映画でも小説でも意識的なインプットをする際にとても重要な考え方だと思います。ただ受け身で遊ばせてもらうのではなく、ゲームを面白くするための作者の意図を理解しながらプレーすることではじめて自分の中で経験値として蓄積される……ということですね。

グループワーク

 「新しいゲームをデザインする参加型のコーナーです。グループをくんでゲームを完成させます」という説明を事前に拝見したときは、正直行くの止めようかと思いました(笑)。グループ活動にはそれなりのトラウマがあって、他のメンバーが黙々と作業をするかたわら、自分は何をやっていいのか分からなくてオロオロしてしまうのです。(思い当たるフシがある方が一人でもいることを祈ります……)
 しかし、実際に参加してみるとそういった心配は無用でした。ゲームデザインのアプローチについて用意された仮説に従ってグループで議論を重ねて、限られた材料の中からアナログゲームを作っていくという内容で、特に役割分担して作業するような内容ではなかったです。

カメラの設定がおかしくて周囲が黒いですが気にしないでください

スクリーンショット

ゲームの要素を3つに分割する

 仮説ではまずゲームの構成要素を3つに分割して説明していました。以下の3つです。

  • ゴール(ゲームの最終目的)
  • 障害(最終目的であるゴールを阻む要素)
  • 行動(障害を乗り越えてゴールに辿り着くために、プレイヤーの行うこと)

 例えば「スーパーマリオブラザーズ」だと以下のようになります。

  • ゴール:一番右に辿り着くこと
  • 障害:敵と穴
  • 行動:ジャンプ 

作業手順

 ここで重要なのは「行動」で、多くのゲームでは「行動」が必然的に反復されるのでここが面白くなければゲームとして成り立ちません。
 そこでまずは「行動」から決めていきます。チームごとに固有のアイテムが割り当てられ、私の所属したチームでは「おはじき」でした。そして議論を重ねた結果、「行動」は「はじく」となり、他の要素は以下の通りになりました。

  • ゴール:フィールド内の敵を殲滅する
  • 障害:敵のHP(おはじき)
  • 行動:はじく

 簡単に説明すると、プレイヤーのおはじきを「はじく」ことで敵おはじきを外に押し出すアクションゲームです。大きなおはじき(主人公)をはじいて、色つきのおはじきを対応する陣地から追い出します。こうしてあえて説明しなくても三要素から推測できるあたり、なかなかよく考えられていますね。

ゲームの外観

スクリーンショット

反省と総括

 RPGというジャンルは上記三要素がすでにおおよそ確立されていることもあり、今までゲームデザインを理屈として意識することは正直なかったのでとても勉強になりました。上記三要素については、ストーリーを作る上でも流用できる考え方だと思っています。(その場合は行動よりも障害の方が重要になるかもしれません)
 また、ゴールがひとつでなくても、複数の小ゴールと最終的な大ゴールみたいな入れ子構造があってもいいかもしれません。(あまり複雑になり過ぎるのも考えものですが……)

勉強会を終えて

 人それぞれ得意分野は違っても、モノを創るというのはとてつもなく面白い、ということを再認識できた勉強会だったと思います。ある程度成熟した社会では、すべての人が何らかの創作をする……くらいでちょうどいいのではないでしょうか。
 そういう意味で、技術や才能にとらわれず個人ゲーム制作の間口を広げてくれるツクールというソフトやそれを取り巻くコミュニティが私は好きですし、発表の場を設けてくださる自作ゲームフェスには深く感謝しています。
 最後に、「ノベルゲーム総合プラグイン」ぜひ使ってくださいね。

 以上です。お付き合いくださりありがとうございました。

2016年11月1日火曜日

動的変数プラグイン

RPGツクールMVで使用可能な自作プラグイン「動的変数プラグイン」の紹介です。

プラグインの説明

指定範囲内の変数、スイッチを参照しようとした際に、「変数名称」及び「スイッチ名称」をJavaScriptとして実行した結果を返すよう変更します。

プラグインの使い道

イベントページの出現条件に設定

イベントエディタにおける「出現条件」に対象変数もしくはスイッチを指定することで、イベントページにより複雑な条件を設定することができます。
下記の例では、スイッチ欄が「変数[1]が[0]より大きい、またはスイッチ[1]がON」という条件になります。

スクリーンショット

戦闘行動に設定

条件にスイッチを指定することで敵キャラの行動をより奥深く管理できます。
スクリーンショット

定数値として使用

スイッチに「true」、変数に「'AAA'」などと記述すると常に同一の値を返す定数値として使用できます。
スクリーンショット

その他の変数・スイッチを参照する例

  1. 条件分岐
  2. イベントコマンドの各種オペランド
  3. 文章の表示の制御文字
  4. スキルやアイテムの計算式(ただしv[1]で参照した場合は除く)
  5. その他プラグインによる参照

スイッチ、変数名称の設定方法

JavaScriptを利用して記述するため難しいイメージがありますが、スキルやアイテムの計算式と同様の感覚で設定すればOKです。また、式の簡略化のために以下のローカル変数が利用できます。

v(n)      # [n]番の変数の値
s(n)      # [n]番のスイッチの値
max       # Math.maxに変換されます。(例 : max(1, 2) -> 2)
min       # Math.minに変換されます。(例 : min(1, 2) -> 1)
gPlayer   # $gamePlayerに変換されます。(例 : gPlayer.x -> プレイヤーX座標)
dSystem   # $dataSystemsに変換されます。(例:dSystem.startX -> 開始位置X座標)

Math.max以外にも一般的なMathモジュールのメソッドが使用可能です。また、他のゲームオブジェクト、データオブジェクトも同じ記法で参照できます。
いずれも利用には、多少のJavaScriptの知識が必要になります。

また、スクリプト中でさらに動的変数およびスイッチを参照することもできますが 同じ番号の変数 or スイッチを参照しようとすると循環参照となりエラーが発生します。

  • 設定例1 イベントページの「スイッチ」に「名称」が以下のものを設定する。

    v(1) > 0 || s(1) # 変数[1]が[0]より大きい、もしくはスイッチ[1]がON

    以上の条件を満たした場合に対象ページが表示される。

  • 設定例2 イベントページの「スイッチ」に「名称」が以下のものを設定する。

    v(1) < v(2) && !s(2) # 変数[1]が変数[2]より小さい、かつスイッチ[2]がOFF

    以上の条件を満たした場合に対象ページが表示される。

  • 設定例3 イベントページの「スイッチ」に「名称」が以下のものを設定する。

    gPlayer.x % 2 === 0 # プレイヤーのX座標が偶数

    以上の条件を満たした場合に対象ページが表示される。

使用上の注意

通常、イベントのページを決定する処理は、いずれかのスイッチもしくは変数が変更されたときにのみ実行されます。本プラグインでは、パフォーマンス上の理由からその仕様を維持します。もし、指定している条件がスイッチおよび変数と完全に無関係な場合(設定例3のケース等)イベントのメモ欄に以下の通り入力すると、そのイベントのみ常にページの条件チェックを行うように変更できます。

ダウンロード

プラグインファイルはGithubで公開しています。
https://raw.githubusercontent.com/triacontane/RPGMakerMV/master/DynamicVariables.js

ダウンロード方法(Windowsの場合)

  1. リンク先に飛ぶ
  2. 右クリック
  3. 名前を付けて保存
  4. ファイル名を変えずに、プロジェクトの「js/plugins」配下に配置

利用規約

当プラグインはMITライセンスのもとで公開されています。作者に無断で改変、再配布が可能で、利用形態(商用、18禁利用等)についても制限はありません。このプラグインはもうあなたのものです。
http://opensource.org/licenses/mit-license.php