ZAPAnet総合情報局 > ZAPAブログ2.0 > RPGツクールVX、RGSS2動作スピード関連メモ

RPGツクールVX、RGSS2動作スピード関連メモ

2007年12月27日 ゲーム全般
今日12月27日に発売された「RPGツクール VX」。
一足早く、昨日エンターブレインに行って「RPGツクール VX」をもらってきました。


中の人から、
RPGツクールVXは、スーパープログラマによって作られている
などの興味深いお話も聞かせていただききました。

せっかく「RPGツクール VX」をもらったので、認証を済ませ早速使ってみることにしました。
(本当は買おうかどうかずっと迷っていて、「時間がかかりそうだからやめておこうかな…」と悩んでいたところで、偶然もらうことができました。どうもありがとうございます)

「RPGツクール VX」には、最近Web業界を賑わせている「Ruby」が搭載されています。
ゲーム内スクリプト機能も「RPGツクール XP」のRGSSから進化してRGSS2となりました。
「RPGツクール VX」内のスクリプトをいじることで、どんなゲームでも作ることが可能になっています(RPG以外のゲームも作れます)。

前作「RPGツクール XP」からの一番大きな変更点は、
・解像度の規定値が 640×480 から 544×416 に変更
・フレームレートの規定値が 40 から 60 に変更
になります。
初期設定の解像度は多少低くなりましたが(変更可能)、フレームレートがデフォルトで60になり、滑らかに動作します。
自分のPCでは、楽に60FPSで動いています。
雰囲気は過去最高作の呼び声が高い「RPGツクール2000」に似ていて、それでいてスクリプト機能があり、フォントも美しく、完成度の高いゲームに仕上がっています。


さて今回は、そんな「RPGツクールVX」を使ってみて、最初に設定したRGSS2の動作スピード関連メモです。

1.フレームレートを変更してゲームを速くする

RPGツクールVXでは、全体の動作スピードを決定するフレームレートを変更することができます。
デフォルトでは、Graphics.frame_rateは60に設定されていて、この値を変更することによりフレームレートを変更できます。
例えば、スクリプトのどこかに次のように記述します。
#zapa start
  Graphics.frame_rate =90                 #フレームレート変更
#zapa end
Graphics.frame_rateを90とすれば、通常の1.5倍のスピードで動作するようになります。
Graphics.frame_rateは最大で120まで設定可能となっています。
ただし、フレームレートを高くすれば高くするほど、マシンスペックが要求されます。
フレームレートを変更したときは、ゲームプレイ時にF2ボタンを押してFPSを表示させて確認してみてください。
ディスプレイとビデオカードの設定にもよりますが、60FPS出ていれば問題ありません(ディスプレイのリフレッシュレートが60なら、この値が最高になるかと思います。ゲームスピード自体は上がっているはずです)。

2.バトルスピードを速くする

バトルスピードを速くするには、1のフレームレートを変更する方法もありますが、マシンへの負担が大きくなります。
マシンへの負担を大きくせずにバトルスピードの体感速度を上げるには、ウェイト時間を減らすのが効果的です。

class Scene_Battle < Scene_Baseの50行目辺りに「一定時間ウェイト」の記述があります。
この中で、ウェイト時間を決定するdurationが初期設定ではフレーム数に設定されているので、以下のように変更します。
  #--------------------------------------------------------------------------
  # ● 一定時間ウェイト
  #     duration : ウェイト時間 (フレーム数)
  #     no_fast  : 早送り無効
  #    シーンクラスの update 処理の中でウェイトをかけるためのメソッド。
  #    update は 1 フレームに 1 回呼ばれるのが原則だが、戦闘中は処理の流れを
  #    把握しにくくなるため、例外的にこのメソッドを使用する。
  #--------------------------------------------------------------------------
  def wait(duration, no_fast = false)
#zapa start
#   for i in 0...duration
    for i in 0...(duration / 3)     #ウェイト時間を減らす
#zapa end
      update_basic
      break if not no_fast and i >= duration / 2 and show_fast?
    end
  end
待ち時間を3分1にすることで、体感スピードを速くしています(というよりも、実際かなり速くなります)。
ただし、メッセージを読む時間自体も短くなってしまうので、その辺りはいろいろ工夫してみてください。
(duration / 3)の3の部分を変更するだけで、ウェイト時間を変更できます。

3.歩く速さを常に速くする

初期設定では、歩くスピードがやや遅いため、歩く速さを常に速くする方法を考えます。
1のフレームレートを変更する方法もありますが、移動時の処理自体を変更してしまう方法もあります。

class Game_Characterの303行目辺りに「移動時の更新」の記述があります。
この中で、移動距離を決定するdistanceの値を次のように変更します。
  #--------------------------------------------------------------------------
  # ● 移動時の更新
  #--------------------------------------------------------------------------
  def update_move
#zapa start
#    distance = 2 ** @move_speed   # 移動速度から移動距離に変換
    distance = 2.4 ** @move_speed   # 移動速度から移動距離に変換
#zapa end
    distance *= 2 if dash?        # ダッシュ状態ならさらに倍
    @real_x = [@real_x - distance, @x * 256].max if @x * 256 < @real_x
    @real_x = [@real_x + distance, @x * 256].min if @x * 256 > @real_x
    @real_y = [@real_y - distance, @y * 256].max if @y * 256 < @real_y
    @real_y = [@real_y + distance, @y * 256].min if @y * 256 > @real_y
    update_bush_depth unless moving?
    if @walk_anime
      @anime_count += 1.5
    elsif @step_anime
      @anime_count += 1
    end
  end
移動距離を増やすことで、歩くスピードを速くしています。
あまり大きな値を設定しすぎると、本来起きるはずのイベントが起きないような不具合も起きてしまいますので、いろいろと試してみてください。

4.ダッシュスピードをさらに速くする

RPGツクールVXでは、最初からダッシュ機能が搭載されています。
このダッシュ機能は、通常の歩くスピードの2倍に設定されていますが、これを変更してダッシュスピードをさらに速くすることができます。

class Game_Characterの303行目辺りに「移動時の更新」の記述があります。
この中で、ダッシュ状態の移動距離を決定するdistanceの値を次のように変更します。
  #--------------------------------------------------------------------------
  # ● 移動時の更新
  #--------------------------------------------------------------------------
  def update_move
    distance = 2 ** @move_speed   # 移動速度から移動距離に変換
#zapa start
#    distance *= 2 if dash?        # ダッシュ状態ならさらに倍
    distance *= 4 if dash?        # ダッシュ状態ならさらに倍の倍
#zapa end
    @real_x = [@real_x - distance, @x * 256].max if @x * 256 < @real_x
    @real_x = [@real_x + distance, @x * 256].min if @x * 256 > @real_x
    @real_y = [@real_y - distance, @y * 256].max if @y * 256 < @real_y
    @real_y = [@real_y + distance, @y * 256].min if @y * 256 > @real_y
    update_bush_depth unless moving?
    if @walk_anime
      @anime_count += 1.5
    elsif @step_anime
      @anime_count += 1
    end
  end
上の場合は、ダッシュ時のスピードを通常の倍から、さらに倍に設定しています。
かなりのスピードで走り回ることが可能になります。

最後に

ここに書いたスクリプトには、何の保証もありません。
少しでも速くデバッグプレイをして修正できるように、スピードをいじる実験をした内容のまとめです。 配布する際は、各自動作確認した上で利用するようにしてください。


RPGツクール VX (Amazon.co.jpオリジナル特典 オリジナルレーベル素材集付き)
エンターブレイン
2007-12-27

by [Z]ZAPAnetサーチ2.0