スクリプトがわからないすべての熟練ツクラーへ贈る

実験的に、新しい企画を始めます。
どうも、かげろうです。

RGSS2の講座をやってみたいと思うのです。
RGSS2とは、つまりツクールVXのスクリプトです。
場合によってはACEにも応用できるかもしれないので
去ろうとしているそこのACE使いの人ちょっと待ってください。

なんでそんなことをやるのかというと、
これは常々思っていることなんですが、
プログラマーって文系の人間を別の人種扱いしてるんですよ。
(文系に限らないかもしれませんが、ここではとりあえず文系という言葉を使います)

文系のプログラマーとして、僕はその乖離を
今まで嫌というほど見てきたのです。
例えば、RGSS講座と検索すると、だいたいこんな項目が出てくる。

1.変数
2.条件分岐
3.配列

あのな、それはRGSS講座じゃなくてプログラミング講座と言うんだ。
ツクール内にあるスクリプト入門もだいたいそんな感じだ。
お前らのその勝手な優しさが
どれだけの初心者を挫折させているかわかるか?


とまでは言いませんが(いや言ったぞお前)、
そういう講座を読んで理解できるのは理系の素質がある人です。

文系人間は、
少なくとも、RGSSなんか調べる人間が知りたいのは、
文法の知識じゃない。
「どこをいじればキャラの移動速度が変わるのか」
そういう具体的な疑問なのだ。

配布されているスクリプトだけではかゆいところに手が届かない。
そんな経験、熟練のツクラーなら何度も経験しているはず。

これはそんな文系ツクラーを救うため立ち上がった、
文系プログラマーかげろうの孤独な戦いの記録である(何

反響が大きければ続編どんどん書くので
コメントお願いします。
書いてほしい内容とかも募集。


それでは記念すべき第一回目は、
「ダッシュ禁止」&「スピード限界突破」



とりあえず僕がツクールVXを使ってみて最初に思ったのは。
「Shiftキーでダッシュとか馬鹿じゃねえの」

なんでRPG、しかもマス目移動が前提のRPGツクールで、
押すボタンがひとつ増えるだけのダッシュ機能が要る?

ダッシュが速すぎて対象を通り越してしまうなら別だが、
初期設定の速度はそこまでの速さではない。(変えられるけど)
これ、ダッシュボタンを離す機会ってあるのか?

結果、多くのフリーゲームで無駄にダッシュ機能が搭載されている。

サンプルゲームですら
「Shiftキーを押している間歩く」に変更されているものがある。
じゃあなんでダッシュ機能なんかデフォで実装した


とにかく、このダッシュ機能を廃止したいと思います。
まず、Game_Characterの ●移動時の更新 のところを見ます。
ダッシュ
↑ここ

#--------------------------------------------------------------------------
# ● 移動時の更新
#--------------------------------------------------------------------------
def update_move
  distance = 2 ** @move_speed # 移動速度から移動距離に変換
  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


まず赤文字の行に注目します。
ご丁寧にも、ダッシュ状態ならさらに倍と書いてあります。

その行を消せ
すぐにけせ


これでシフトキーを押しても走らなくなりました。
めでたしめでたし。

おいまてよ。主人公めっちゃ遅いじゃねえか

と思った人は、おそらく熟練のツクラーではありません。
なぜなら、プレイヤーの速度なんか、イベントの
「移動ルートの設定→移動速度の変更」
で簡単に変えられるからです。

ツクールVXでキャラに設定できる速度は、
[1/8倍速][1/4倍速][1/2倍速][標準速][2倍速][4倍速]
の6段階です。

さて、ここで先ほどのスクリプトの青文字の箇所を見てみましょう。

distance = 2 ** @move_speed # 移動速度から移動距離に変換

この、「@move_speed」というのがその6段階のスピードです。
「2 **」というのはつまり「2に乗算する」ということですが、
この部分は今回は気にしないほうが良いでしょう。

要は、ここでキャラクターの基本スピードをいじれるわけです。
例えば、
distance = 2 ** @move_speed * 2
とするだけで、キャラ全部のスピードが2倍になります。
(プレイヤーだけではないので注意)
※アスタリスク(*)は、かける(×)の意味です

これは例えば3倍でも4倍でもいいですし、
2.5倍なんて中途半端な数も可能です。
ただ、検証しましたが、16倍以上にすると、[標準速]で
イベントの接触判定をすり抜けるのでやめたほうがいいです。
([4倍速]なら4倍ですり抜けるので注意。[*2]や[*3]が無難か)

また、先ほど消した行である
distance *= 2 if dash? # ダッシュ状態ならさらに倍
ですが、この「2」を「4」にしたらダッシュ時に4倍速になりますし、
「*=2」を「/=2」にすればシフトで速度が半減する仕様も作れます。
※スラッシュ(/)は、わる(÷)の意味です

これだけでも随分役に立つのではないでしょうか。
4倍速では物足りないと思っている人、おそらくいっぱいいるでしょう。


さて、最後に蛇足ですが、スクリプトの基本運用方法です。
たしかに、上記のようにスクリプトを直接変更しても反映されます。
が、もともとのスクリプトはできれば残したい人もいるでしょう。

さて、配布されているスクリプトを使ったことのある人ならピンときたかもしれませんが、スクリプトの一番下に、改変部分だけを貼り付けることで内容の更新が可能です。
基本的に、下にあるほど優先度が高いと思ってください。

例:
スクリプト追加の仕方
このようにすれば、
自作スクリプトっぽくなっていい感じではないでしょうか。
※行頭に「#」を入れるとコメントになります。自由にメモしましょう

クラス名というのは、さっき確認した「Game_Character」の
一番上のほうにあるやつですが、
わからない人は蛇足はあきらめましょう。


さて、RGSS2講座第一回は以上で終了です。
コメントでのリクエストお待ちしています。
かげろうでした。


RGSS2講座目次

RGSS2講座第2回
スポンサーサイト

コメントの投稿

非公開コメント

No title

これは……まるで私のためにあるような企画ですね((
さっそく使わせていただこうと思います。

早速リクエストですが、オリジナルの自作メニューの作り方について気になってました。
イメージとしては、格闘ゲームのキャラクター選択画面みたいなのでしょうか。
これはピクチャーや変数を使っても可能ではありますが、スクリプトを使ったスマートなものを作ってみたいなと……
ご教授お願いします><

Re: No title

自作メニューっすか
いきなりなんという高難度

格闘ゲームのキャラ選択がいまいちイメージできないのですが、単純にオリジナルのメニュー画面を作りたいのであれば、スクリプトを拾ってきたほうが良いかと。
CACAO SOFTさんのカスタムメニューとかではダメですかね?

もし自作で作りたいのであれば、
「メニュー画面の顔グラを歩行グラに変える」
「メニュー項目の順番を入れ替える、項目を減らす」
「メニューのウィンドウの位置を変える」
「メニュー画面にピクチャを表示」
程度のことなら僕でも説明できるかもしれませんが、需要はありますかね。

No title

デフォルトのメニューを改造する話ではなく、なんといいましょうか……

「→」がカーソルだとして


→ ステージ1  ステージ6
ステージ2  ステージ7
ステージ3    ・
ステージ4    ・
ステージ5    ・

下キーを押せば「→」のカーソルが下に動いて、右キーを押せば「→」左に動いて、行くステージを選べる……
こんなの作れたらいいなあと思いました。

わかりづらくて申し訳ないです……


メニュー画面にピクチャーを表示する ……気になります。

Re: No title

ふむ、つまり「タイトル画面」「ゲーム画面」以外のオリジナルの画面を作りたいみたいなことでしょうかね?

ただ、おっしゃるようなステージ選択画面程度のものであれば、スクリプトから作るよりも、イベントコマンドで『ピクチャーや変数を使って』作った方が、簡単で柔軟なものができるのではないかと思います。
まあスクリプトを使おうが使うまいが「ピクチャー」も「変数」も使うんですけどね。

ピクチャー使わないでウィンドウでステージ選択作りたいんだぜ!
という場合でも、僕なら『直接アイテム画面を開くスクリプト』だけ作って、「ステージ1」「ステージ2」みたいな名前のアイテムを作って付属コモンイベントで飛ばします。(もしくはスキル)

まあ要するに、僕にはツクールのイベントでゴリゴリやればなんとかなることを、それより『スマートに』スクリプトで実現するほどのスキルがないのです。
ご期待に添えなかったら申し訳ありません。

「メニュー画面にピクチャ表示」に関してはいつかやろうと思います。

No title

なるほど、わかりました!
確かにスクリプト使わなくてもなんとかなることだったら別に使わなくてもよいですね。(プレイヤーからしたら『スマート』かどうかなんてわからないし、こだわる必要もなかった)なんとかしてみます。

次のRGSS講座期待しています!
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR