(依頼)効果音でダメージの大きさを見極めるプラグイン(RTPキャラ漫才付き)

ダメージが数値で出る戦闘は好きですか?

  • すき

    Votes: 10 66.7%
  • きらい

    Votes: 1 6.7%
  • どちらともいえない

    Votes: 4 26.7%

  • Total voters
    15
:esad:「最近のRPGの戦闘って、なんでダメージがついてるかなぁ…。つまんないよ。」

:ysad:「なんで? ダメージが数値で見れた方が便利だし、効率的じゃない?」

:eswt:「そうかなぁ。ボクはついてないほうが好きだな。エルシャダイみたいに。」

:yswt:「そんな古いゲームの話は置いておいて……。なんでダメージ表示が嫌なの?」

:ehappy:「だってさぁ。ダメージさえわかれば、どんなにかっこいい攻撃でも、作業化しちゃうでしょ?」

:yswt2:「? どういうことか説明してくれないとわからないよ~。」

:ehappy:「例えば、ダメージ30の通常攻撃と、ダメージ60の全力攻撃があって。
   でも、通常攻撃のエフェクトは1秒で終わるけど、全力攻撃は6秒くらいかかるとするじゃない?
   そしたら、効率を考えたら、通常攻撃を2回やったほうがお得でしょ? ザコ敵なら。
   まぁ、ボス戦なら全力攻撃の方を使うけどね。」

:yswt:「ああ……。効率化の問題ね。ダメージよりも時間を気にしちゃうっていうか…。計算力の性ね。」

:ewink:「そうしたら、せっかくつくった全力攻撃のなが~いエフェクトがすご~く邪魔なものになっちゃう……。
   開発者としても、切ないねえ~。」

:ywink:「……じゃあ、どうしたらいいと思う?」

:ehappy:「ダメージ数を表示しないで、ヒット時の効果音の違いで、ダメージの大きさを見極められたら、面白いと思わない?」

:ysad:「どういうこと?」

:ehappy:「例えば、敵にダメージを与えた時、
   ダメージ 1以上~40未満なら、ザシュッ!と、
   ダメージ40以上~80未満なら、ザグシュッ!と、
   ダメージ80以上なら、     ドグシュッ!と、いう音にする」

:yhappy:「言うのは簡単だけど、結構実装は難しそうね…。ヒット直前のダメージを取るのね……高速化が要求されそう。」

:ehappy:「そしたら、全力攻撃の時、ザグシュ!っという音の違いで、
   プレイヤーが『ああ、このスキルはけっこう強いんだな』とだけ認識する」

:yswt:「でも、本来のダメージからは、2倍なんでしょ?」

:eswt:「それがこのシステムのミソさ。ダメージが音でしかわからないから、
  プレイヤーは本来どっちが強いのかは、いろいろやってみないとわからない。
  何度も試行錯誤をして、
  クリティカル率や命中率、エフェクトの長さなどを総合的に評価して、
  『通常攻撃の方が強いんだな』と認識したら、通常攻撃を、
  『全力攻撃の方が強そうだな』と認識したら、全力攻撃を、
  それぞれが各々の判断で使えばいいんだ。」

:yhappy:「なるほどねー。それがゲームの面白さっていうか……現実も似たようなものかもね。」

:eswt:「開発者は裏でどっちが効率的か知ってるけれど、それを数値で出すなんて、
   統計データで人の好みを平均化するくらい、安直なものだろう?
   そんなの、ゲームには向かないよ。 ゲームは遊びたくなるように設計すべきだ。」

:yswt2:「はいはい。ウンチクはどうでもいいから、どんな風に設定できたらいいか、プラグインの説明書を書いてよ。」

:esad:「……全力攻撃の方を、ダメージ分散値40%位にして、
  更にクリティカル率を+20%くらい上げちゃおうかな…。
  そしたらいい感じになるかな」

:yswt:「はーーやーーくーーー説明書~~~~っ!」



こんなプラグインが欲しいですが、技術力がなく手困っています。可能でしたらどなたか作っていただけると助かります。

■こんなことができるとうれしい
・パラメータ「ダメージ閾値」で、配列で一定数未満のダメージ範囲を定義できる (デフォルト値の例:{1, 40, 80, 100, ...})
・パラメータ「効果音1」で、 1以上 40未満の効果音を設定できる (デフォルト値の例:Damage1)
・パラメータ「効果音2」で、40以上 80未満の効果音を設定できる (デフォルト値の例:Damage2)
・パラメータ「効果音3」で、81以上100未満の効果音を設定できる (デフォルト値の例:Damage4)
・パラメータ「効果音3」で、101以上***未満の効果音を設定できる (デフォルト値の例:Damage5)
・パラメータ「効果音4」で、…

■その他、要望など
・パラメータ「ダメージ閾値」で設定可能な要素数は、最低でも20個くらいは欲しいです。(10ダメージ毎などの微細な聞き分けを試してみたいため)

・パラメータ「ダメージ閾値」は、必要に応じて、パラメータ「効果音」として配列化してもかまいません。(デフォルト値の例: {Damage1, Damage2, Damage4, Damage5, ...})

・ダメージ数ではなく敵のHP率で効果音を変えたりすることも考えられますが、それだとザコ敵で強い効果音がぼんぼん出て面白みに欠けますし、勘の良いプレイヤーさんなら効果音だけでボスのHPなどを推測できてしまうようになるため、HP率は使いません。

・効果音は、ピッチ、音量も含めて設定できるとなおうれしいですが、難しいようであればこちら側で新しく効果音ファイルを作るので、大丈夫です。(ピッチを変えることで処理速度が犠牲になるのなら、新しく効果音ファイルを作成したほうが無難かも。)

以上です。よろしければお願いいたします。


PS(20181217追記):アストラルさんに感謝の気持ちを込めて…おまけ漫才

:ehappy:「いやぁ~、いいねぇ~ DamageSoundEffect.jsプラグイン!
  通常攻撃のオンパレードでも、飽きない戦闘が作れそうだよ~」

:ysrs:「そんなにいいんだ…何が一番そんなに気に入ったの?」

:ewink:「敵に大ダメージを受けた時だけ、ゴフッ…!てなるのが凄いいいんだよねぇ~
 Damage3で音量100、ピッチ60? いや、ピッチ70位の方がいいかな?」

:yswt:「マニアックすぎて誰もついてこないわよ……」
 
最後に編集:
こんにちは。
プラグインを試作してみました。

パラメーターの味方・敵ダメージSEで設定された条件とSE(ファイル・ボリューム・ピッチ、位相)を再生します。
1から順番に判定して、設定された値(0やfalseは除く)に一致した場合を判定しています。
(イベントの出現条件のページ順に判定するのと似たような仕組みです)
負荷がかからないようにしているので、100個くらいなら許容範囲だと思います。
ただ新規SEファイルを読み込むの場合には、特にウェブ版だと読み込みに時間がかかるかもしれません。

ダメージ量は、最小値から、指定された変数の値を100%としてその割合、
吸収時やクリティカル時、スキルやステートでも判定出来るようにしています。
固定値のみだと攻撃力やHPの増加に対応出来ないのと、バリエーションが乏しくなるので汎用性をもたせました。

HP吸収時にもダメージSE効果音を鳴らすようにし、数値が出るものは非表示になるようにもしています。

試作段階なので、もう少し追加・変更予定です。


追記
Version
0.1.2へ更新しました。
YEP_BattleEngineCore.jsとの競合回避
ヘルプの記述ミスを修正
 
最後に編集:
お返事が遅くなりすみません。

>シトラスさん
確かにそうですね。
ダークソウル等のアクションRPGや、格闘ゲームをはじめとした、あえてダメージ数を表示しないゲームは、
プレイヤーに数値を意識させずにそういう駆け引きが楽しめるよう、アクション要素が多いのかもしれません。
主に感覚ではなく頭を使うRPGにそういう駆け引きが必要かどうかは、ゲームによるかもしれません。

>アストラルさん
試作プラグイン、ありがとうございます!
基本ダメージレートの変数を「1000」として、早速試してみました。
7a321f215cac9c9f7b1fd2cb25ce2f04.png
一部うまく動かないながらも、なんとか試すことができました。

一点ややこしかったのが、最大値を1-100%のレートでやってしまうと、例えば指定した変数が「1000」だった場合、
1%の10以上からしかSEを設定できない?
(1-9は無音になってしまいます?…解釈が間違っていなければ)デメリットがあるので、レートは小数点有にするか、
使い勝手としては、最小ダメージ固定値で、直接、ダメージの絶対値を入れるやり方が、
わかりやすかったです。
(最小ダメージ固定値とレートを同時に入れてしまうとどうなるのかよくわからず、上記の図のような形で動作が不安定だったのかもしれませんが…。もし使い方間違ってたらごめんなさい。)

他の点は、とても親切で、意味もある程度はわかりました。
falseや0が入っているところは無視する(このSEは鳴らさない)ということですよね。
もしかすると、レートも設定する必要がなく、最小ダメージだけで行ける問うことでしょうか。
それなら納得です。
また、スキルID毎にSEを変えたり、新しく別の枠を増やして、「クリティカル時(=true)だけ別の音を鳴らす」とかできるのは、かなり汎用性が高いと思います。

試作段階とのことですが、可能性が広がるプラグインで、わたしもダメージバランスのテストプレイが終わり次第、
ちょくちょく使って試してみたいと思います。
 
最後に編集:
早速試していただき、ありがとうございます。
わかりにくくてすいません。

画像は、ダメージ閾値を次のようにする場合の設定例です。
「効果音4」101以上
「効果音3」81以上100以下
「効果音2」40以上 80以下
「効果音1」1以上 39以下
ダメージ設定例1.png ダメージ設定例2.png
101以上なら、効果音4を再生し、100以下なら2番目の判定します。

基本的な設定はこれを想定しています。

最小ダメージの固定値以上で設定しているのは、
イベントの出現条件で、変数の値が指定した値以上となっている仕様とあわせたためです。

ダメージレートは、ダメージ閾値の変動に対応出来るようにしました。
20刻みで400ダメージまで判定をした場合、パラメーターに20個、1000ダメージまで増えた場合は、50個設定する必要が出てきます。

レベル1の時は効果音1が再生されていても、レベル上がってダメージも上がるシステムだと、常に効果音4(ダメージ101以上の場合)が雑魚戦でも再生されるようになってしまうのを防ぐことも出来ます。
1%以下は、最小ダメージ1以上をリストの最後に追加しておく形になります。

falseや0は、プラグインパラメーターの設定画面の都合上、未使用扱いとなります。
イベントの出現条件なら、チェック入れてそれぞれ使用・未使用が設定出来るのですが、パラメーターだと何かしらの値を入れる必要があります。

追記
プラグインをVersion 0.1.1に差し替えました。
ダメージレートのヘルプ記述ミスで、上限100%となっていましたが、実際は101%以上も判定可能です。

ダメージは、スキルのダメージ項目の設定を元にしているので、
最大HP100の敵に300ダメージのオーバーキルした場合も、300ダメージとして判定されます。
 
最後に編集:
>アストラルさん
非常に丁寧な説明、ありがとうございます!
よく理解できました。

>ダメージレートのヘルプ記述ミスで、上限100%となっていましたが、実際は101%以上も判定可能です。
そうですね。101%以上が設定できるのであれば、何も心配する必要なかったですね! 初めに言及できずすみませんでした。
オーバーダメージを考慮できるのであれば、
あとあと1ダメージ刻みとかで増やしたい場合などを考えると、ひとまず変数の基準値を100としておくのが、
賢いやり方だと思います。

実際効果音を使って数時間テストプレイしてみましたが、とてもいい感じで、なかなかに臨場感ある戦闘が再現されていました。
デフォルトの効果音1種類でも、ピッチを変えず、ダメージが上がるごとに音量を大きくするだけでも、臨場感が全然違います!
ダメージ数の有り無しにかかわらず、音の繊細さにこだわる人は、一度は試してみてほしいプラグインだと思います。
 
>アストラルさん
かなりかなり特殊なケースですが、自前のプラグインと競合してしまったので、もし可能でしたらお知恵をお貸しいただけるとうれしいです。

拙作のminRPG_DamageEffect.jsという、クリティカルダメージ演出などを指定IDのアニメーションに置き換えるプラグイン(追記:URLが間違っていました。正しいURLだけでなく、添付ファイルも追加しておきます)
https://www.dropbox.com/s/h6xjqfmtcwj1z94/minRPG_DamageEffect.js?dl=0
と、競合してしまっているようです。
・DamageSoundEffect.jsがONの時、minRPG_DamageEffect.jsがON時のクリティカル演出だけ、デフォルトのものに戻ってしまいます。
・DamageSoundEffect.js自体に支障はありません。minRPG_DamageEffect.jsの一部機能が正常に動かないだけです。

自分で出来る限り調べてみた所、追加定義しているメソッド名がかぶっているわけではないみたいなので、原因究明は難しく、
特定は困難でした。
なお、このプラグインは
Sprite_Damage.prototype.setup
というメソッドだけを上書きしてしまっているので、それが原因と考えられます。
(追加定義をするとダメージポップアップの前にアニメーションを追加できない?ため、この方法しか思いつかなかったんです…もっといい方法があるのかも…)

音と演出、どっちを取るかは明らかですが(私は音を取ります)
…もし両方可能な方法をご存知でしたら、その知恵を教えていただけると幸いです。
 

Attachments

  • minRPG_DamageEffect.js
    16 KB · 閲覧: 6
最後に編集:
>メルサイアさん
ダメージ効果音が変わるだけでも臨場感がありますよね。
魔法にはそれぞれの属性に応じた効果音を流すだけでも、デフォとは全然違う戦闘を感じられました。

競合については、dropboxのファイルが共有されていないようで、閲覧することが出来ませんでした。
デフォルトの効果音が再生される場合は、
取り急ぎ、次の行をコメントアウトすれば、デフォルトの効果音は再生されなくなると思います。
これで正常になるかはわかりませんが。
コード:
//608行目
            //_SoundManager_playEnemyDamage.apply(this, arguments);
//619行目
            //_SoundManager_playActorDamage.apply(this, arguments);
 
すみません。。URLが間違ってました。
https://www.dropbox.com/s/h6xjqfmtcwj1z94/minRPG_DamageEffect.js?dl=0
これです。

(追記: 具体的な症状がわかりにくいと思いますので、動画にしました)
新規プロジェクver1.6.1を作り、minRPG_DamageEffect.js を追加してパラメータデフォルトのままONにすると、
味方のクリティカル時に下記の動画の様な追加演出(通常のダメージSEの後に、プラスで指定IDのアニメーション再生)が加えられますが、
DamageSoundEffect.js を追加し、どちらもONにしたところ、この演出が無くなってしまうようです。
DamageSoundEffect.js のパラメータをデフォルトのまま一切さわらずにONにしても、この状態になるので、
おそらくは minRPG_DamageEffect.js がメソッド Sprite_Damage.prototype.setup を上書きしているせいだと考えられます。

追記2: 余談ですが、特定条件で指定IDのアニメーションを再生できる機能は、視覚的にも聴覚的にも、すごく便利なんですよね…。
アニメ無しで複数のSEをフレーム単位でずらし合成して一つの音を作って鳴らすのものも、指定色・フレーム数で画面フラッシュさせるも、既存アニメや自作アニメを入れてフレーム合成するのも、何もプラグインやスクリプトを触らずとも、エディタ内で完結出来てしまうので…。

私は技術力が乏しくって、誰かの見様見真似でこういう拙宅なプラグインしか作れませんが、
もしアストラルさんよろしければ、お気軽に DamageSoundEffect.js に取り込んでくれてもOKです。
(それにパラメータ「ダメージポップアップやメッセージ(%3など)の表示ON/OFF」を
 ゲーム内スイッチで切り替えるのと組み合わせたら、
 ダメージ数OFF/ONどちらがお好みのユーザさんにも、刺激的な可変SEを楽しんでもらえる
 最強のプラグインになりますよね!)
 
最後に編集:
プラグインを0.1.2へ更新して差し替えました。
ご確認ください。

試作品からの機能追加予定としているものは、
・効果音リストとその条件を、単一のリストから複数のリストへ切り替えられるようにする
 設定が複雑にならないか試用後
・プラグインコマンドの追加
 パラメーターで設定しているものを動的に変更
・効果音再生条件の追加・変更
 特定の武器IDや防具IDも需要ありそうなので
などです。

面白そうなので、効果音と同時にアニメーションも設定出来るように検討してみます。
 
最後に編集:
>アストラルさん
ありがとうございます。ダメージポップアップの制御変更の件、一部競合対策で変更されているところを確認しました。
残念ながら minRPG_DamageEffect.js との併用はできませんが、今は音の爽快感のある戦闘の方を楽しみたいと思います!
 
…面白そうなので、効果音と同時にアニメーションも設定出来るように検討してみます。
ありがとうございます。
先ほどの動画は新規プロジェクトでのデフォルト演出だったので、
演出を凝った形で使われている、minRPG_DamageEffect.js プラグインの実装例の動画をのせておきます。
普段のスキルIDはそのまま再生しつつ、会心の一撃の時だけ、ダメージ時に別のIDのアニメーションを追加で発動できるのが、爽快感のポイントです。
 
>アストラルさん
只今確認しました。いけました! ありがとうございます!!
なるほど、minRPG_DamageEffect.js のメソッドはポップアップの部分を触っているから、
DamageSoundEffect.js でもパラーメタ「数値のポップアップ表示」をtrueにする必要があったのですね。

trueにしても、minRPG_DamageEffect.js の方でポップアップのON/OFFはゲーム内で切り替えられるので、
これで音と光の両方、楽しめます!! 感謝です><
(ダメージ表示が好きな人はダメージポップアップ表示もあわせて、三者三様ですね!!!)
 

稽古屋

ユーザー
DamageSoundEffect.jsのパラメーターで、数値のポップアップ表示をtrueにした場合は会心エフェクト表示されますか?
プラグインを使わせて頂きました。
一点、リクエストをよろしいでしょうか?

条件にアクターや敵のIDを加えることはできませんでしょうか?
このキャラが体力n%以下になると、このSE(ダメージリアクション)が鳴る、とか、この敵にこのステートを付与すると、このSEが鳴る、みたいなことを行いたいです。
特にキャラのダメージリアクション(「きゃああ!」)などはキャラごとに違うものを用意したいと考えておりまして、ご検討いただけますと幸いです。
 
トップ