RGSS2知ったかぶり
スクリプトエディタってどこから見るの?
最終更新:
rgss2study
-
view
入門編・1
スクリプトエディタってどこから見るの?
スクリプトエディタを開いてみよう
スクリプトエディタを開くと、左に項目が並んでいます。
モジュール、ゲームオブジェクト、スプライト、ウィンドウ、シーン、素材、と並んで、最後にメインとあります。
各項目をクリックするとプログラムの内容が表示されます。長いのも短いのもあります。さて、どこから見るべきなのでしょうか?
モジュール、ゲームオブジェクト、スプライト、ウィンドウ、シーン、素材、と並んで、最後にメインとあります。
各項目をクリックするとプログラムの内容が表示されます。長いのも短いのもあります。さて、どこから見るべきなのでしょうか?
どこから見るの?
ちょっとごまかして言うと、最初に実行されるのは、メインの下の"Main"です。
ですが、コンピュータが解釈するのは、一番上からです。つまり、モジュールの"Vocab"から始まって、その下、その下……と下がっていき、
最後に"Main"となります。
なぜ、こんなことになるのでしょうか? これを考えるため、RPG(というか、ゲーム一般)のゲームの流れを考えてみましょう。
ですが、コンピュータが解釈するのは、一番上からです。つまり、モジュールの"Vocab"から始まって、その下、その下……と下がっていき、
最後に"Main"となります。
なぜ、こんなことになるのでしょうか? これを考えるため、RPG(というか、ゲーム一般)のゲームの流れを考えてみましょう。
ゲームの流れ
実行すると、まずタイトル画面が出て、そこからモードを選んで、別の画面に移動します。プログラム的には、どう考えるでしょう?
ただとりとめもなく、次にこれをやって、次にこれを、と書いていくよりは、
『タイトル画面のシーン』『ロード画面のシーン』『マップのシーン』『バトルのシーン』と、今、ゲームがどんなシーンをプレイ中か、というようにまずプログラムをシーンに分けて考えた方が簡単だと思いませんか?
RPGVXは、プログラムをシーンごとに分けています。さっきのリストの中にありましたね? スクリプトエディタの『シーン』、この下にあるプログラムがゲーム全体をシーンに分けたプログラムです。
ただとりとめもなく、次にこれをやって、次にこれを、と書いていくよりは、
『タイトル画面のシーン』『ロード画面のシーン』『マップのシーン』『バトルのシーン』と、今、ゲームがどんなシーンをプレイ中か、というようにまずプログラムをシーンに分けて考えた方が簡単だと思いませんか?
RPGVXは、プログラムをシーンごとに分けています。さっきのリストの中にありましたね? スクリプトエディタの『シーン』、この下にあるプログラムがゲーム全体をシーンに分けたプログラムです。
シーンの中身
さて、シーンごとに小分けにしましたが、この『小分けにする』というのは、もっと使える技術です。
例えば、バトルのシーンでは、味方キャラと敵キャラが戦うわけです。
敵は行動パターンに従って行動し、ダメージ計算に従ってダメージが与えられます。
味方キャラと敵キャラが常に居るのなら、最初から『敵キャラ』『味方キャラ』を、バトルシーンの部品として決めておいた方が楽なんです。
RPGVXでは、戦闘シーンの部品として、敵キャラ、味方キャラ、敵の行動パターン、パーティ編成、といった要素を決めています。
これらは、スクリプトの『ゲームオブジェクト』の下のプログラムにまとめてあります。
例えば、バトルのシーンでは、味方キャラと敵キャラが戦うわけです。
敵は行動パターンに従って行動し、ダメージ計算に従ってダメージが与えられます。
味方キャラと敵キャラが常に居るのなら、最初から『敵キャラ』『味方キャラ』を、バトルシーンの部品として決めておいた方が楽なんです。
RPGVXでは、戦闘シーンの部品として、敵キャラ、味方キャラ、敵の行動パターン、パーティ編成、といった要素を決めています。
これらは、スクリプトの『ゲームオブジェクト』の下のプログラムにまとめてあります。
ウインドウ
また、RPGに特徴的なものに、各種ウインドウがあります。
ただ表示するものもあれば、選択肢があるもの、スクロールするもの、と機能はいくつもあります。
これにはいろんな種類があるので、『ウィンドウ』として別枠でまとめてあります。これも『ゲームオブジェクト』の一種だと考えていいでしょう。
ただ表示するものもあれば、選択肢があるもの、スクロールするもの、と機能はいくつもあります。
これにはいろんな種類があるので、『ウィンドウ』として別枠でまとめてあります。これも『ゲームオブジェクト』の一種だと考えていいでしょう。
モジュール、スプライト
解説していないものにモジュール、スプライトがありますが、ここでは飛ばします。
準備は全部最初にして、実行するのは最後だけ
このように小分けしておきたいわけですが、どんな風に小分けするかを予め指示しておかないと、コンピュータはどうしていいか分かりません。
こちらで小分けの方法を決めてやる必要があります。
{その小分けの方法を決めているのが、Mainより上の部分全部なのです。
ここで、シーンの分け方、ゲームオブジェクトの分け方、……を全部決めた後に、じゃあ、タイトルシーンから始めましょうか、と始めている}のです。
Mainの中身が非常に少ないのは、それまでに準備を全部してしまっているからです。
こちらで小分けの方法を決めてやる必要があります。
{その小分けの方法を決めているのが、Mainより上の部分全部なのです。
ここで、シーンの分け方、ゲームオブジェクトの分け方、……を全部決めた後に、じゃあ、タイトルシーンから始めましょうか、と始めている}のです。
Mainの中身が非常に少ないのは、それまでに準備を全部してしまっているからです。
オブジェクト指向
ちなみに、このように、要素ごとに分けてモノを管理するようなプログラムのやり方を、オブジェクト指向と言います。
分けられた要素のモノはオブジェクトと呼ばれます。
Rubyはオブジェクト指向を採用した言語で、自然にオブジェクト指向の考え方でプログラムをすることが出来ます。
分けられた要素のモノはオブジェクトと呼ばれます。
Rubyはオブジェクト指向を採用した言語で、自然にオブジェクト指向の考え方でプログラムをすることが出来ます。
- すごくわかりやすいです!!
わかりやすい講座を探していたのでありがたいです。
続き楽しみにしています! -- (名無しさん) 2009-04-11 17:41:26 - コメントありがとうございます。
こんなに早く反応があるとは……。
ヘルプの解説を含め、シーンの構造などを説明しているものが
ほとんどなかったのが不満で、作ってみました。
本当に実はあんまり分かっていないので、至らないところも
多いかと思いますが、よろしくお願いします。 -- (管理人) 2009-04-11 18:58:22 - すいません、『自機を表示する』の記述に誤りがありました。
updateの中身を書かないと、自機の位置が正しく反映されません。
記事を修正しておきます。 -- (管理人) 2009-04-14 21:59:20 - ツクール古参ですがRGSSに四苦八苦でした(^^;)
が、シーンの基本構造を解説した記事にガチで救われました
応援してるんで、がんばってください!!続き楽しみです。
-- (うきぶくろ) 2009-04-27 12:17:15 - コメントありがとうございます。
一番書きたかったそのあたりは書いたもののなんだか忙しい+
自分でもRGSSの解読に手間取っているためになかなか更新できていません。
どの程度まで書けるか分かりませんがよろしくお願いします。 -- (管理人) 2009-04-28 08:40:35 - 敵キャラを作成する・2の最後の方に、
updateの際に敵キャラを扱うスプライトの更新を行うのを忘れていたのを修正しました。
イタリック体で修正が入っている部分です。 -- (管理人) 2009-05-02 22:10:23 - UFOが見にくかったので画像に縁取りをつけました。 -- (管理人) 2009-05-04 08:56:56
- ホントにスゴイと思います。尊敬します。
大変だと思いますが少しずつでいいんで頑張ってください。 -- (ユウ) 2009-05-12 00:07:40 - コメントありがとうございます。
恐らくこれを見て作る側はすぐなんでたいそうもどかしいと思いますが……。
ところで、今のところはちゃんとこの講座の通りで動くようになっているのでしょうか?
一応チェックはしてますが、多少ポカはすると思ってたので指摘が無いのがむしろ意外です。 -- (管理人) 2009-05-13 21:11:52 - 大丈夫です。ちゃんと動いています。
頑張ってください。続きが楽しみです。 -- (ユウ) 2009-05-18 01:06:59 - 1段目と言われている部分は『RGSS2』
2段目と言われている部分は『プリセットのスクリプト』
と言われると、より解り易い表現なのでは? -- (通行人) 2009-11-05 12:48:40 - @enemies[i] = Game_Enemy.new(200 + rand(312), rand(384))
↑argumentErrorが発生しました。wrong number of arguments(2 for 0)
どうすればいいでしょうか、頼みます。
-- (help me!!) 2010-01-05 00:22:50 - マウス入力はできますぜ。
Win32とかなんやらをつかって。
キーボードもできるみたいですが見つかりません。
探してます。 -- (シャミラ) 2010-03-24 05:28:28 - 勉強させてもらってます、とても参考になります。
入門編・10 にあるGame_Ememiesのクラスの
attr_accessor ;s_enemies ですが、;を:に変えないとエラーを吐きますので
コピペでやった人は修正した方がよさそうです
-- (邯鄲) 2010-09-04 17:27:18 - @enemies[i] = Game_Enemy.new(200 + rand(312), rand(384))
↑argumentErrorが発生しました。wrong number of arguments(2 for 0)
Game_Enemyクラスって最初からありますよね。
それが原因では? -- (ぽん) 2010-10-03 23:11:42 - 製作初心者なのでとても助かります!! -- (ありがとうございます!) 2011-02-05 12:44:03
- セーブ/ロードまわりはMarshalを使ってスクリプトで記述されていますし、
ファイルの読み書きもRubyと同様にできますから、
セーブやロードをいじるのはスクリプト操作でできることでは? -- (ななし) 2011-05-20 13:04:19 - ダンジョンなら3D化できると、下記サイトに書いてありました。 -- (だれかさん) 2011-08-18 07:26:19
- アルバイトはじめましたd(´∀`*)グッ♪ http://64n.co/ -- (私だ) 2012-01-09 04:49:41
- 風俗店を探よりココ!!男性は報酬あり!d(´∀`*)→ http://www.44m4.net/ -- (江梨子) 2012-08-20 17:11:02