こんにちは!
RPGツクールMVで自作ゲーム制作を行っているシロガネと申します
ゲームクリエイターズキャンプ2nd アドベントカレンダー14日目の記事になります
(この記事は以前他のブログで書いた記事の移植です)
そこでこちらのゲームを作っていました
↑こちらがゲームのリンクです
ゲームの気持ちよさとは何だろう、というのを考えながら実装を進めていましたが、RPGツクールMVのデフォルトの挙動だと、もう少しテンポを良くしたいなと思っていました
RPGツクール2000のときのテンポが割と良かった印象があってそれを意識する感じでコードにも結構手を入れて調整を行いました
大体はプラグインを導入して済んでますが場合によっては独自に実装したりもしています
テンポを良くするために考えた小ネタ集でまとまりはありませんが、逆引きしてもらうと役に立つかもしれません
jsファイルを準備してツクールの「プラグイン管理」から追加します
自前で挙動を変えたいところはそこに書き足す形でコードを追記して挙動を変更します
今回はrq03.jsというファイルを作って追加しています
RPGツクール2000の時にあったオートコマンドを入れました
プラグインを導入しました
→ AutoBattle.js
で、それで終わりでなく
結構消費の激しい攻撃を連発してしまうため「全力オート」と「オート」に分けました。
全力オート
従来のオートコマンド、つまり「ガンガンいこうぜ!」です
オート
できるだけ節約しながら戦うオートコマンド、つまり「じゅもんをつかうな」です(でも使いますけど)
「攻撃」「防御」「ウェーブⅠ」「セイントⅠ」「ヒールⅠ」だけを候補に入れます
選出ロジックを下記のように実装しました
パーティコマンドにコマンドを追加(割愛)してisSaving=trueの状態でmakeActionListを呼ぶようにします
// 「オート」の行動選択ロジックの修正
// isSavingの設定は改造したAutoBattle.jsが必要
var _Game_Actor_makeActionList = Game_Actor.prototype.makeActionList
Game_Actor.prototype.makeActionList = function(isSaving)
{
var list = _Game_Actor_makeActionList.call(this) // 元のmakeAcyionList()に引数はありません
// 節約オートの場合
// 「攻撃」「防御」「セイントⅠ」「ウェーブⅠ」「ヒールⅠ」以外のスキルを削除
if(isSaving)
{
list = list.filter(function(element, index, array){
return element.isAttack() || // 攻撃
element.isGuard() || // 防御
element.item() === $dataSkills[13] || // ウェーブⅠ
element.item() === $dataSkills[15] || // セイントⅠ
element.item() === $dataSkills[16] // ヒールⅠ
})
}
return list
}
デフォルトはパーティコマンドの位置は記憶されません
Enterキー押しっぱなしでずっとオートにしておく、といったことができるようにしたかったため入れました
下記のコードで実現しています
// 定義
Window_PartyCommand._lastCommandSymbol = null
// コマンド選択開始
var _Window_PartyCommand_setup = Window_PartyCommand.prototype.setup
Window_PartyCommand.prototype.setup = function() {
_Window_PartyCommand_setup.call(this)
if(ConfigManager.commandRemember)
{
this.selectSymbol(Window_PartyCommand._lastCommandSymbol)
}
}
// コマンド選択
var _Window_PartyCommand_processOk = Window_PartyCommand.prototype.processOk
Window_PartyCommand.prototype.processOk = function() {
_Window_PartyCommand_processOk.call(this)
if(this.isCurrentItemEnabled())
{
if(ConfigManager.commandRemember)
{
Window_PartyCommand._lastCommandSymbol = this.currentSymbol()
}
else
{
Window_PartyCommand._lastCommandSymbol = null
}
}
}
Enterキー押しっぱなしにすることでアニメーションと併せて高速化します
左上のボタンからも切替可能です
プラグインを利用しました
→ SSEP_BattleSpeedUp_v2.js
デフォルトの機能でEnterキー押しっぱなしにするとイベントを早回しできます
その速度を1段階上げました
プラグインを導入しました
→ FastForwardCustomize.js