忍者ブログ

「の」べや

編集後記とかゲーム作ってたりとかいろいろ。 気まぐれ飽き性なんでもござれ。

   
カテゴリー「ツクール系 RGSS2(凍結)」の記事一覧

戦闘のシステムを考える

同人誌、同人ゲーム、同人ソフトのダウンロードショップ - DLsite

コツコツとRPGを作っております。

趣味程度と思って始めたのですが、思ったよりガッツリしたのができてきた感じに……。

戦闘システムを考えているのですが、できれば「さくっ」と終わるシステムにしたくどこぞで拾ってきたATBシステムのスクリプトとずっと睨めっこしてました。

しかしなんだか微妙。 いろいろ動くのはいいのですが肝心な「さくっ」と感がない。

そこでふと思い出したのがこの戦闘スクリプト。



(これはスゴい!これ作った人本当にすごい)

このシステムをちょっといじらさせてもらおうかな、と考えてます。

その前にこのブログを何とかしろって話だな。カスタマイズとか全くしてないし、宣伝もしてない。

半年やってカウンター100行ってないって……。
同人誌、同人ゲーム、同人ソフトのダウンロードショップ - DLsite DMM GAMES 遊び放題
PR

RGSS : 「self.index = 」 「@index =」 「index = 」 の違い

同人誌、同人ゲーム、同人ソフトのダウンロードショップ - DLsite

もうそろそろVX Aceなるものが発売されるというのに……未だVXに奮闘中です。

Aceもおもしろそうだけど、まあしばらくはVXで遊ぶことにします。

して本題。
RGSSをいじっていると題名のように同じ変数なのに命令形式が違う場合があるのです。
最初の頃はこれにかなり悩まされました。「何で違うんだろう」って。
で、適当に使っていたのですが、いかんせんうまく動かない。

それにはこんな理由があったんですね。

↓↓↓↓↓↓
同人誌、同人ゲーム、同人ソフトのダウンロードショップ - DLsite DMM GAMES 遊び放題

マップ上のキャラクターはどう描かれている?

同人誌、同人ゲーム、同人ソフトのダウンロードショップ - DLsite

マップの上にキャラクターを描きたいのだが、歩行グラフィックとか含めると、
「ファイル読む」「インデックスからキャラを取得」「描画」とやっていると時間がかかってしまう。

だもんで、RGSS2ではどうやってるのか見てみた
以下はスクリプトから抜粋。

  #--------------------------------------------------------------------------
  # ● 転送元ビットマップの更新
  #--------------------------------------------------------------------------

  def update_bitmap
      self.bitmap = Cache.character(@character_name)
      self.ox = @cw / 2
      self.oy = @ch
  end

抜粋しすぎw
要は、キャッシュした画像から原点を指定して@cw、@chのサイズをコピーしている、というわけだ。
なるほどねぇ。
アニメーションとかどうしてるかとかは後で調べるとして……。コピー元の原点を動かして言うというのがわかったのでOK牧場。
同人誌、同人ゲーム、同人ソフトのダウンロードショップ - DLsite DMM GAMES 遊び放題

$scene を見てみる

同人誌、同人ゲーム、同人ソフトのダウンロードショップ - DLsite

RPGツクールVX (XPも) のRGSSは $sceneっていうグローバル変数が軸になってプログラムが実行されている。正確にはスクリプトの「Main」の中に書いてある一文、

  $scene.main while $scene != nil

というのがプログラムを実行させていると考えていい。
この一行を簡単に言うと「$sceneというグローバル変数の中がnilじゃない限りその変数に入っているクラスのメソッド " main " をずっと行う」みたいな感じ。
$sceneの中に入るのはシーンクラスのみ。他のクラスをいれてしまうとエラーが起きる。正確には「main」というメソッドを持ったクラスならとりあえずOKっぽい。

じゃあ、そのmainってのは何をやっているのかというと、そこでScene_Baseクラス

じゃん。

  #-----------------------------------------------------------------
  # ● メイン処理
  #-----------------------------------------------------------------

  def main
    start                         # 開始処理
    perform_transition            # トランジション実行
    post_start                    # 開始後処理
    Input.update                  # 入力情報を更新
    loop do
      Graphics.update             # ゲーム画面を更新
      Input.update                # 入力情報を更新
      update                      # フレーム更新
      break if $scene != self     # 画面が切り替わったらループを中断
    end
    Graphics.update
    pre_terminate                 # 終了前処理
    Graphics.freeze               # トランジション準備
    terminate                     # 終了処理
  end

Scene_Baseはシーン関係のスーパークラスとして使われるので再定義や上書きをされていない限りはこの処理が行われると。
で、処理の真ん中あたりにあるloop の中身をずっと繰り返している。$sceneの中身が変わったらbreakとなっているのでシーンが変わらない限りはupdateメソッドが行われているわけだ……。

トランジションは画面切替の効果なので手をつけなくてもいいと思う。
画面がなめらかに切り替わっているのはこのトランジション処理のおかげ。

だからまあ、新しくシーンを作りたい場合はこれらのメソッドに行いたい処理を入れればいいという事。

start             画面切替の前に行っておきたい処理(画像の準備とか)
post_start  画面切替の後に   〃

update       シーンが行われている間にフレーム毎に行いたい処理

pre_terminate  終了の画面切替の前に行いたい処理
terminate          画面切替中に行いたい処理

おのおののメソッド名がInitialize や dispose とは違い start や terminate という名前にしているのは
恐らく混同しないためかと思う。

ちなみに Scene_XXXX.new の時に呼び出される関数はInitializeなのでシーン移動の際に引数を入れたい場合はInitialize関数を入れてそこで引数を使う処理をするといい。

スクリプト例とか作るのは手間なので割愛。リクエストあればやりますが、カウンターまだ1しか回ってないし(笑)。

こうやって紐解いていくと意外とシンプルなのがわかる。
まあ、グラフィック関連についてはまだまだサッパリなんだけどね。
同人誌、同人ゲーム、同人ソフトのダウンロードショップ - DLsite DMM GAMES 遊び放題

fill_rect vs blt

同人誌、同人ゲーム、同人ソフトのダウンロードショップ - DLsite

fill_rectとbltはどっちが速いのか?

昨日久しぶりにノートパソコンでツクール動かした。そしたらなんかめっさ重い。

比較的性能のいいデスクトップだとさくさく進むけど、ノートだとこんなに重くなるとは……。スクリプトを無茶苦茶に書いたのが原因なのはわかるけど……。
ということで少し「速さ」というのにもこだわってみる事にしました。

基本は描画関係。

とりあえず処理を10000回回して速度をはかります。ばらつきがあるので50000回回して5で割ってみました。スクリプトはかなり適当。一応使ったスクリプトを続きのとこに載せておきます。
Timeで時間引っ張ってその差を求めただけです。単位は秒です。

スペルミスあるけどキニシナイ







スペルがアレだがそのあたりは大目に見るのが大人ってものだ。

結果。(20 x 20)

処理 1回目 2回目 3回目
fill_rect 0.0272 0.0202 0.0278
blt 0.06 0.0618 0.0474
gradient_fill_rect 0.0732 0.08 0.0964
draw_text 0.9118 0.9118 0.9252


サイズを変えてもう一回(128 x 128)
draw_textはサイズあまり関係ないので計測せず

処理 1回目 2回目 3回目
fill_rect 0.0792 0.1026 0.0908
blt 0.8102 0.8257 0.8078
gradient_fill_rect 1.8556 1.8674 1.87


つまり、
fill_rect  >  blt  >  gradient_fill_rect
となりました。

何かの参考にでもナレバ

ちなみに使った処理は「続き」から ↓
結構下なの気をつけて orz



 
同人誌、同人ゲーム、同人ソフトのダウンロードショップ - DLsite DMM GAMES 遊び放題

ブログ内検索

お知らせ

動画に使用している「妹さん」の立ち絵はこちらの著作権フリー素材集を使って作っています。


著作権フリー立ちキャラクター素材集vol.8全年齢版


2021/08/05に CeVIO AI さとうささらが発売されました。なんとDLSiteでも買えます。

カレンダー

02 2024/03 04
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 26 27 28 29 30
31

カテゴリ

プロフィール

HN:
のぎー
性別:
男性

カウンター

Copyright ©  -- 「の」べや --  All Rights Reserved
Design by CriCri / Photo by Geralt / powered by NINJA TOOLS / 忍者ブログ / [PR]