莞爾の草原。

RPGツクールVX Ace、MVや自作のことを主に書いていくブログです。不定期更新。

トップ

【反省】今まで作った・エターナらせてきたゲーム集

さて、2017年ももうそろそろで終わりという時期に差し掛かってききました。いかがお過ごしでしょうか。

さて、来年をよりよく過ごすために今私がすべきことは何なのか。それはお寺参りでもお遍路参りでもなく、まず一番に今自分が立っている位置を知ることでしょう。

今自分がどこにいるのかを知らなければ、次自分がどこに進めがいいかという指針の方角も決まってこないでしょう。

ということで今回は、私が今まで作ってきた、もしくは、エターナらせてきたゲームたちを箇条書きにしてまとめてみたいと思います。

現在製作中のゲーム、完成したゲーム、事実上の製作停止状態のゲーム、これから製作予定のゲーム、没になったゲームの5つのくくりで分けていきたいと思います。

それではどうぞー

 

■現在製作中のゲーム

・デイドリームリバー キャピタルA

 

■完成したゲーム

・魚れない。(公開停止)

・FIRE!

RPGツクール.exe

・安楽木(やすらぎ)さんは席についた ―消えた一億円の謎―

 

 

■事実上の製作停止状態のゲーム(未完成)

・華宮アキヒロは離さない 傅の字篇(未完成、現在公開停止状態)

・華宮アキヒロは離さない 遥の字篇(公開中。トリックが思い浮かばず停滞状態)

・若王子探偵の捕物帖(時間がないため)

  

■これから製作予定のゲーム

・華宮アキヒロは離さない 博の字篇(遥の字篇が完成してから)

モッツァレラチーズの復讐劇(ピザをテーマにしたゲーム、どっちかというと没)

・デイドリームリバー キャピタルB(キャピタルAが完成してから)

・安楽木(やすらぎ)さんは席についた ―宝の地図の指し示す場所―(トリックば思い浮かばないためいまだに構想状態)

 

■没になったゲーム

・ファーストエイプリル(掌編の推理ゲーム。タイトル落ちだったので没に)

・エレベーター(ホラーゲーム。ほぼ没状態)

 ・新聞社を作ろう!(新聞社を経営するというゲーム。経営シミュレーションの勝手がわからず没に)

赤毛刑事(華宮の傅の字篇に出てくるハインツ刑事が主人公のゲーム。傅の字篇がままならない状態で作れるわけなかったため没に)

 

…… 以上、16個のゲームでした。

 

一人でできるわけねーじゃねーか! ふざけんな!

 

■2018年の抱負

2017年は自分の中で作品量産期と銘打って、いろんなジャンルへと風呂敷を広げに広げてみました結果、このように多くのエターナると製作停止状態のゲームを作ってしまいました。

このまま放っておくのも忍びないので、2018年はそれらと何らかの形でケリを付けて行かなければなと思っております。

 

以下は来年完成させたいゲームです。

 

■完成させたいゲーム

・デイドリームリバー キャピタルA

・華宮アキヒロは離さない 傅の字篇

・華宮アキヒロは離さない 遥の字篇

・安楽木(やすらぎ)さんは席についた ―宝の地図の指し示す場所―

・若王子探偵の捕物帖 

モッツァレラチーズの復讐劇

 

■取り掛かりたいゲーム

・デイドリームリバー キャピタルB

・華宮アキヒロは離さない 博の字篇

・安楽木さんの続編

・若王子探偵の続編

 

……来年も忙しい1年になりそうです。

 

 

 

 

【12禁・閲覧注意】ホラーRPG:デイドリームリバーの紹介(画像付き)

f:id:kanjinokusa0405:20171029143745p:plainどうも。自分でも自分が何者だか正体がつかめなくなってきている莞爾です。

今回は、皆さんに製作中のホラーRPGゲーム:デイドリームリバーに興味を持っていただけたらな、という魂胆のもと、デイドリームリバーの紹介をしていきたいと思います。

 

【注意】

・12禁ゲーです。

・ここから先、ややグロテスクな画像もあります。苦手な方はお控えください。

SNSやブログなどへの画像の転載・利用は自由ですが、どこかにゲームのタイトル(デイドリームリバー)を明記していただけると幸いです。

・画像は製作中のものです。

f:id:kanjinokusa0405:20171029144336p:plain

「大丈夫!」という方だけ先にお進みください。

 

 

f:id:kanjinokusa0405:20171029144538p:plain

f:id:kanjinokusa0405:20171029144635p:plain

朝、登校してきた中学生の伊沢京介(いさわ・きょうすけ)は、理科室で死体が見つかったと騒ぎになっていることに気づきます。

そして、教師の話声から、その死体の主が伊沢と同じテニス部の佐々木翔真(ささき・しょうま)であるのではないかと疑い始めます。

 

伊沢の友人の籏崎健斗(はたざき・けんと)は登校中、佐々木の母親が泣きながら「翔真を見なかったか?」と聞いて回っていたのを目撃していました。そのことを聞いても、伊沢はまだ佐々木が死んだことを信じられずにいました。

f:id:kanjinokusa0405:20171029145322p:plain

ですが、籏崎の携帯に入っていた佐々木からの留守番電話を聞き、伊沢は佐々木の死を信じざるを得なくなります。

f:id:kanjinokusa0405:20171029145353p:plain

f:id:kanjinokusa0405:20171029145450p:plain

伊沢と籏崎は、何が佐々木を死に至らしめたのかを知るために、部活動を無断で休んで夜中の学校に行くことを決意します。

f:id:kanjinokusa0405:20171029145604p:plain

そこに、引退したテニス部の先輩である岡梨優也(おかなし・ゆうや)が現れ、彼らが部活に参加しなかったことを受け、何があったのかを探ってきます。

f:id:kanjinokusa0405:20171029145708p:plain

事情を知った岡梨は叱らないまでも、「自分もそういうことに興味がないわけではない」といって二人をやんわりと注意します。それを聞いた籏崎は、何を勘違いしたのか岡梨を夜中の学校に誘います。そして、何を思ったのか岡梨は二人に同行することを決意します。

f:id:kanjinokusa0405:20171029145852p:plain

夜中の学校に入ろうとしますが、当然鍵が掛かっていて入れません。

f:id:kanjinokusa0405:20171029145924p:plain

そこで、籏崎が一人で通気口から職員室に入り、昇降口の鍵を開けに行くことになります。

f:id:kanjinokusa0405:20171029150134p:plain

f:id:kanjinokusa0405:20171029150213p:plain

このとき、これから起こる奇妙な出来事の数々を誰が予測できただろうか……。

※ここから先は画像だけです。

f:id:kanjinokusa0405:20171029150506p:plain

f:id:kanjinokusa0405:20171029150616p:plain

f:id:kanjinokusa0405:20171029150702p:plain

f:id:kanjinokusa0405:20171029153430p:plain

f:id:kanjinokusa0405:20171029153455p:plain

f:id:kanjinokusa0405:20171029153550p:plain

f:id:kanjinokusa0405:20171029154543p:plain

f:id:kanjinokusa0405:20171029154629p:plain

f:id:kanjinokusa0405:20171029160100p:plain

f:id:kanjinokusa0405:20171029160202p:plain

f:id:kanjinokusa0405:20171029160232p:plain

f:id:kanjinokusa0405:20171029160424p:plain

f:id:kanjinokusa0405:20171029160446p:plain

f:id:kanjinokusa0405:20171029160841p:plain

f:id:kanjinokusa0405:20171029161032p:plain

f:id:kanjinokusa0405:20171029161100p:plain

f:id:kanjinokusa0405:20171029161118p:plain

f:id:kanjinokusa0405:20171029161212p:plain

f:id:kanjinokusa0405:20171029161317p:plain

f:id:kanjinokusa0405:20171029161456p:plain

f:id:kanjinokusa0405:20171029161629p:plain

f:id:kanjinokusa0405:20171029161643p:plain

f:id:kanjinokusa0405:20171029162200p:plain

 

f:id:kanjinokusa0405:20171029161745p:plain

f:id:kanjinokusa0405:20171029162252p:plain

f:id:kanjinokusa0405:20171029162328p:plain

f:id:kanjinokusa0405:20171029162354p:plain

f:id:kanjinokusa0405:20171029162416p:plain

f:id:kanjinokusa0405:20171029163725p:plain

f:id:kanjinokusa0405:20171029163837p:plain

f:id:kanjinokusa0405:20171029181931p:plain

f:id:kanjinokusa0405:20171029182026p:plain

f:id:kanjinokusa0405:20171029182056p:plain

f:id:kanjinokusa0405:20171029182948p:plain

f:id:kanjinokusa0405:20171029182952p:plain

f:id:kanjinokusa0405:20171029182959p:plain

f:id:kanjinokusa0405:20171029183034p:plain

f:id:kanjinokusa0405:20171029183156p:plain

f:id:kanjinokusa0405:20171029183758p:plain

f:id:kanjinokusa0405:20171029184207p:plain

f:id:kanjinokusa0405:20171029184314p:plain

f:id:kanjinokusa0405:20171029184617p:plain

f:id:kanjinokusa0405:20171029184628p:plain

f:id:kanjinokusa0405:20171029184736p:plain

f:id:kanjinokusa0405:20171029184819p:plain

f:id:kanjinokusa0405:20171029184825p:plain

f:id:kanjinokusa0405:20171029184835p:plain

f:id:kanjinokusa0405:20171029190931p:plain

f:id:kanjinokusa0405:20171029192029p:plain

f:id:kanjinokusa0405:20171029192110p:plain

f:id:kanjinokusa0405:20171029192118p:plain

f:id:kanjinokusa0405:20171029192258p:plain

f:id:kanjinokusa0405:20171029192611p:plain

f:id:kanjinokusa0405:20171029192448p:plain

f:id:kanjinokusa0405:20171029192758p:plain

f:id:kanjinokusa0405:20171029193155p:plain

 

f:id:kanjinokusa0405:20171029193235p:plain

f:id:kanjinokusa0405:20171029193821p:plain

f:id:kanjinokusa0405:20171029193924p:plain

f:id:kanjinokusa0405:20171029194025p:plain

f:id:kanjinokusa0405:20171029194034p:plain

f:id:kanjinokusa0405:20171029194145p:plain

f:id:kanjinokusa0405:20171029194206p:plain

f:id:kanjinokusa0405:20171029195805p:plain

f:id:kanjinokusa0405:20171029195829p:plain

f:id:kanjinokusa0405:20171029203847p:plain

f:id:kanjinokusa0405:20171029203753p:plain

f:id:kanjinokusa0405:20171029204022p:plain

f:id:kanjinokusa0405:20171029204049p:plain

f:id:kanjinokusa0405:20171029204313p:plain

f:id:kanjinokusa0405:20171029204430p:plain

f:id:kanjinokusa0405:20171029205215p:plain

f:id:kanjinokusa0405:20171029210052p:plain

f:id:kanjinokusa0405:20171029212423p:plain

f:id:kanjinokusa0405:20171029212431p:plain

f:id:kanjinokusa0405:20171029212451p:plain

f:id:kanjinokusa0405:20171029212626p:plain

f:id:kanjinokusa0405:20171029212850p:plain

f:id:kanjinokusa0405:20171029213717p:plain

f:id:kanjinokusa0405:20171029213726p:plain

f:id:kanjinokusa0405:20171029213737p:plain

f:id:kanjinokusa0405:20171029213746p:plain

f:id:kanjinokusa0405:20171029213758p:plain

f:id:kanjinokusa0405:20171029213810p:plain

f:id:kanjinokusa0405:20171029213821p:plain

f:id:kanjinokusa0405:20171029213832p:plain

f:id:kanjinokusa0405:20171029213849p:plain

f:id:kanjinokusa0405:20171029213912p:plain

f:id:kanjinokusa0405:20171029213918p:plain

f:id:kanjinokusa0405:20171029213929p:plain

 

――学校編はここまで――

 

 

【このゲームのセールスポイント】

・社会的なストーリー

 完成版をお待ちください。

・バラエティ豊かなスキルとコマンドが作る戦略性

 このゲームに出てくるプレイアブルキャラクターたちは皆、異なるコマンドとスキルを覚えています。

例えば、伊沢の格闘というコマンドは、覚えている格闘技をランダムに選んで、ノーコストで使うことができます。

f:id:kanjinokusa0405:20171029151330p:plain

f:id:kanjinokusa0405:20171029150923p:plain

また、伊沢がテクニックで覚えている調合という技は、持っているアイテム同士を使って新たなアイテムを作り出すことができます。思わぬアイテムが生まれることも……

f:id:kanjinokusa0405:20171029150944p:plain

f:id:kanjinokusa0405:20171029151646p:plain

f:id:kanjinokusa0405:20171029151834p:plain

調合で作ったアイテムで、アンデッドのモンスターにダメージを与えることも。

f:id:kanjinokusa0405:20171029154356p:plain

籏崎は敵のアイテムを盗むことができ、これを使って物語を有利に進めていくことができます。盗めるアイテムはモンスターによって異なります。

f:id:kanjinokusa0405:20171029152120p:plain

f:id:kanjinokusa0405:20171029152201p:plain

f:id:kanjinokusa0405:20171029152639p:plain

さらに、彼のコマンド「踊る」は、敵を状態異常にかけたり、味方を回復したりできる踊りをランダムに選んでノーコストで使うことができます。

f:id:kanjinokusa0405:20171029151010p:plain

f:id:kanjinokusa0405:20171029152502p:plain

次に、岡梨は戦闘中に敵が使ってきた一部の技を覚えることができます。より多くの技を覚えることで、より幅広い戦術を練ることができます。

f:id:kanjinokusa0405:20171029151032p:plain

f:id:kanjinokusa0405:20171029152844p:plain

f:id:kanjinokusa0405:20171029152954p:plain

さらに、岡梨しか覚えていない「かばう」や「耐える」を使うことによって、仲間を瀕死にすることを防ぐこともできます。

 

f:id:kanjinokusa0405:20171029153205p:plain

佐賀の「ジャンプ」と別宮の「隠れる」を使うと、数ターンの間敵の猛攻から逃れることができます。

f:id:kanjinokusa0405:20171029155109p:plain

f:id:kanjinokusa0405:20171029155149p:plain

f:id:kanjinokusa0405:20171029160009p:plain

桜庭の「魔法反射」というコマンドは、その名の通り敵の魔法攻撃を反射することができます。ノーコストで何度でも使えて便利ですが、物理攻撃はしっかり当たるので注意が必要です。

f:id:kanjinokusa0405:20171029155429p:plain

他にも、コマンドを変えられる装備がいくつかあり、さらに多彩な戦略を生み出すことが可能です。

f:id:kanjinokusa0405:20171029153933p:plain

f:id:kanjinokusa0405:20171029153948p:plain

f:id:kanjinokusa0405:20171029154837p:plain

また、TPが100になると、「■切り札」という必殺技を使えるようになる。各キャラごとに使う技は異なるが、いずれも敵に大ダメージを与えることができる。

f:id:kanjinokusa0405:20171029163005p:plain

f:id:kanjinokusa0405:20171029163031p:plain

f:id:kanjinokusa0405:20171029163039p:plain

f:id:kanjinokusa0405:20171029163255p:plain

f:id:kanjinokusa0405:20171029163319p:plain

f:id:kanjinokusa0405:20171029163503p:plain

 

更に、戦闘中にも自由に隊列を変更することができます。戦闘に参加していないメンバーを戦闘に出したり、前列と後列を入れ替えることができます。

f:id:kanjinokusa0405:20171029181326p:plain

f:id:kanjinokusa0405:20171029181459p:plain

アイテム画面を開くと、装備を変えることができます。

f:id:kanjinokusa0405:20171029181510p:plain

 

【ここまでの感想等】

 いかがだったでしょうか。

 日ごろからTwitterに作業の進捗の画像やら動画やらを載せているんですが、このゲームだけはグロテスクな表現が多いため、載せられない部分が多かったです。ただ、このゲームに興味を持っていただくためには、どうしてもこの部分も見ていただく必要があると思い、こういうふうにまとめてみました。

 少しでも、デイドリームリバーに興味を持っていただけたら幸いです。

 最後までお付き合いいただき、ありがとうございました。

 

【RGSS3、バグあり】二人ポーカースクリプト(AI搭載)(Script : Heads Up Poker)

f:id:kanjinokusa0405:20170923221625p:plain

「ポーカー? そんぐらい楽勝っしょ」

そんな軽率なノリで作り始めました。まさか三日もかかるとは思いませんでした。

f:id:kanjinokusa0405:20170923221340p:plain

ジョーカーなしのヘッズアップポーカーです(ジョーカーは仕様が面倒くさいので搭載しなかったのは内緒)。これさえ作れればプログラマーになれるといいますが、こんなものを作らなければならないくらいだったらプログラマーにはなりたくありません。

 

20/3/18追記 - シーン終了時正しく終了しない場合があります。

スクリプト本体】

https://github.com/KanjiTheGrass/train/blob/master/PokerScript.txt

【お借りしたトランプの画像】

sozai.7gates.net

 

利用規約はこちら(http://kanjinokusargss3.hatenablog.com/entry/2017/08/03/150359

 

【更新履歴】
・ver.0.00

・公開しました

・ver.0.01
・コミュ太郎氏の助言を受けてcard_numberとsame_number_countの処理を簡略化
・ワンゲームが終わった後にゲームを終了しようとしても終われないバグを修正
・アンティの額を変えられるように変更
・チップ制度を追加。

 

【RGSS3】混乱時行動拡張スクリプト(Script : Extend Actions in Confusing)

f:id:kanjinokusa0405:20170803204301p:plain

混乱時の行動パターンを拡張するスクリプトです。混乱時に混乱しているアクターが敵にアイテムを使ったり、味方に攻撃スキルを使ったりするようになります。某最終幻想よりの仕様です。

 

スクリプト

https://github.com/KanjiTheGrass/train/blob/master/RGSS3ConfusingAction.rb

 

利用規約はこちら(http://kanjinokusargss3.hatenablog.com/entry/2017/08/03/150359

 

【更新履歴】
・ver.1.00 公開しました
・ver.1.00a コミュ太郎氏により使用不能のスキルがあるとまれに行動できなくなる不具合の修正とスクリプトの簡略化が行われました。

【RGSS3】技の攻撃対象拡張スクリプト(Script : Extend the Target of specific skill or item)

f:id:kanjinokusa0405:20170803151054p:plain

味方を殴ったり敵を回復したりできるようになるスクリプトです。攻撃対象を決めるウィンドウでRかLキーを押すと攻撃対象が敵から味方、味方から敵へ変わります。混乱・眠り状態の仲間を治したいときや、レベル調整で仲間を間引きたいときなどに使えるでしょう。

 

スクリプト

 https://raw.githubusercontent.com/KanjiTheGrass/train/master/RGSS3TargetExtend.rb 

 

【「XPスタイルバトル」および「戦闘コマンド消したりするやつ」対応版(コミュ太郎氏制作)】(ver.1.00)

http://wikiwiki.jp/comtarorgss/?RGSS3%2F%B5%BB%A4%CE%C2%D0%BE%DD%CA%D1%B9%B9_XP%A5%B9%A5%BF%A5%A4%A5%EB%A5%D0%A5%C8%A5%EB%C2%D0%B1%FE%C8%C7

 

更新履歴:

・ver.1.00 公開しました。

・ver.1.10 一部スキルでの対象変更を禁止できるようにしました。 

・ver.1.11 一度対象変化できるスキルを使おうとすると、次の対象変化禁止のスキルでも対象変化できてしまうバグを修正。

 ・ver.1.12 戦闘開始時にスキルを選んでも正常に対象変化が行われないバグを修正。

・ver.1.13 敵全体スキルを味方対象にしたときに味方単体にしか攻撃しない仕様を変更しました。

 

利用規約

・利用報告は不要ですが、報告していただけると舞い上がります。

・素材の改変は自由ですが、無断で素材単体を二次配布する行為は禁止です。

・Readmeやスタッフロールなどのクレジットに当サイト名(莞爾の草原。)や作者の名前(莞爾の草)、もしくはスクリプト/プラグイン名のどれか一つを必ず明記してください。

・商用利用も可。成人ゲームでも使っていただいて構いません。

・公式非公認の二次創作などを含む違法なゲームでは使用しないでください(公認の場合はOKです)。この件に関してのご相談は受け付けません。ご自身で考えて決めてください。

・他の制作者様のスクリプトとの競合に関しましては一切相談を受け付けません。

バグ報告は当ブログもしくは作者Twitterhttps://twitter.com/kanjinokusa)からお願いします。

【RPGツクールVX Ace】動くタイトル画面を作ろう!(ウィンドウ編)【初心者向け】

どうも、つい最近自転車を撤去された莞爾です。以後気を付けます、もとい、以後お見知りおきを。

f:id:kanjinokusa0405:20170720184429p:plain
さて、デフォルトのタイトル画面には「ニューゲーム、コンティニュー、シャットダウン」のコマンドがありますが、「ウィンドウの位置を変えたーい」とか、「選択肢を中央揃えにしたーい」とか、「ウィンドウを消して選択肢だけにしたいてー」とか、「オリジナルのコマンドをつけくわえたいロドリゲスー」とか、いろいろやりたいことはあると思います。

それとこれは独自の見解ですが、何かと疎まれがちなツクール感はここから出ているような気もします。何て言ったって一番最初にプレイヤーが見る画面ですから。
……と、前置きはさておいて、早速動かしていきましょう。

 

目次

■ウィンドウの位置を変える

■ウィンドウの大きさを変える

選択肢を中央揃えにする(行間の長さを変える)

ウィンドウを消して選択肢だけにする

■選択肢を横に並べる

■オリジナルのコマンドをつけくわえる

 

■ウィンドウの位置を変える

f:id:kanjinokusa0405:20170720184627p:plain

まず、デフォルトのウィンドウの位置はclass Window_TitleCommandのupdate_placementというメソッドの中で決められています。このメソッドはinitializeというクラスを読み込んだ時に一度だけ実行されるメソッドから呼ばれています。

ではさっそく、数値の変えていきましょう。デフォルトのXは(ゲーム画面の横幅(Graphics.width、デフォルトでは544)-このウィンドウの横幅)÷2となっており、Yのほうは(ゲーム画面の縦幅(Graphics.height、デフォルトでは416)×1.6-このウィンドウの縦幅)÷2となっています。

f:id:kanjinokusa0405:20170720185507p:plain

では、試しにこの位置設定の部分を#でコメントアウト(該当の部分を評価しないこと)してみましょう。すると、ほかにこのウィンドウの位置を設定している箇所がないため、ウィンドウX・Yはデフォルト設定の0になります。つまり、こうです。

f:id:kanjinokusa0405:20170720185806p:plain

さて、では次にこのウィンドウを任意の位置に持っていきましょう。例えば、右に50下に300のところに持っていきたいというなら、

f:id:kanjinokusa0405:20170720190625p:plain

こうです。そしてこうすると……

f:id:kanjinokusa0405:20170720190701p:plain

こうなります。だいぶ雰囲気が変わりますね。

ちなみに、Xの数字は数学みたく正のほうに増えるにつれて右のほうにずれ、負のほうに増えると左にずれていきますが、Yは正のほうに増えるにつれて位置が下がっていき、負のほうに増えるにつれて位置が上がっていきます。

X=30,Y=-15の場合の図。

f:id:kanjinokusa0405:20170720190135p:plain

それと、数字で直接指定していると、Graphics.resize_screenで画面のサイズを変えたときや、このウィンドウのサイズを変えたときなんかに、ウィンドウが思ってた位置よりずれてしまうことがあります。

f:id:kanjinokusa0405:20170720191146p:plain

先ほどちょっと触れましたデフォルトの位置設定ではそれを避けるために、直接数字で指定することなく、画面のサイズやこのウィンドウのサイズ、倍率などを使って位置を調整していました。まあ、そんなに頻繁に画面のサイズもろもろを変えることはないと思うので大丈夫だと思いますが、もし気になる方はそういった方法で位置調整すればいいでしょう。

ちなみに、Scene_Titleでも位置を変えることができます。Window_TitleCommandで設定した座標はScene_Titleで設定されたものに加算されます。基本的に使うならどちらか一つでいいです。

f:id:kanjinokusa0405:20170720193220p:plain

 

 

■ウィンドウの大きさを変える

タイトル画面の選択肢のウィンドウの横幅はWindow_TitleCommand内のwindow_widthによって160と決められています。

f:id:kanjinokusa0405:20170720190455p:plain

この数値を変更することによって、ウィンドウの横幅を自由に変えることができます。

ちなみに、縦幅を決めるwindow_heightというメソッドはWindow_TitleCommand内にはなく、Window_TitleCommandのスーパークラスであるWindow_Commandの中に入っています。スーパークラスとは、サブクラス(子クラス、ここでいうWindow_TitleCommand)のもととなるクラスのことで、スーパークラスで決められた命令は、特に変更がない限りサブクラスでも同様に行われます(画像編でもスーパークラスについて説明しています

【RPGツクールVX Ace】動くタイトル画面を作ろう!(画像編)【初心者向け】 - 莞爾の草原。

)。

話を戻します。つまり、Window_TitleCommandクラスにはないメソッドなので、スーパークラスのWindow_Commandからメソッドwindow_heightをコピペしてきます。

f:id:kanjinokusa0405:20170720195645p:plain

「fitting_heightって何?」とお思いの方もいると思います。これはWindow_Commandのスーパークラススーパークラス、Window_Base内にあるメソッドです。ひいおじいちゃんの形見って感じですね。……違いますかそうですか。とにかくスーパークラスは何個でも呼び出せるんです。

f:id:kanjinokusa0405:20170720200336p:plain

見てみると、line_number×行の高さ(デフォルトでは24)+行間(12)×2という計算になっています。このline_numberというのはこのメソッドを呼ぶときに、呼んだ側が指定した引数を格納する変数です。

window_heightではfitting_height(visible_line_number)となっていて、今回はline_numberにはvisible_line_numberが代入されていることになります。このvisible_line_numberというのはWindow_Command内にあるメソッドで選択肢の数を返します。つまり、3です。つまり、Window_TitleCommandデフォルトのウィンドウの縦幅は3×24(行の高さ)+12(行間)×2、ということで96であることが分かります。くどい。

ちなみに、縦幅をwindow_heightの数字より1でも小さくすると、下の図のように矢印が表示され一つ下の選択肢が表示されなくなります。

f:id:kanjinokusa0405:20170720202158p:plain

f:id:kanjinokusa0405:20170720202504p:plain

スクリプトを組めばこうなることを避けることもできますが、特に理由のない限りはwindow_heightの数字より大きい数字にすることをおすすめします。

それと、大きさを変えるとウィンドウが画面からはみ出ることがあります。ウィンドウの位置変更の方法は上記参照。

f:id:kanjinokusa0405:20170720201845p:plain

f:id:kanjinokusa0405:20170720201716p:plain

 それと、WindowクラスはSpriteクラスではないので、ウィンドウを画像として拡大したり角度をつけたりということはできません。

 

選択肢を中央揃えにする(行間の長さを変える)

f:id:kanjinokusa0405:20170720203353p:plain

いくらウィンドウの横幅を大きくできたとしても選択肢が全部左揃えだとなんだかちょっと不揃い感を感じるという人もいると思います。

ということで選択肢を中央揃えにしましょう。

基本的に、ウィンドウ上で文字を描写するときはWindowクラスのcontentsというBitmapのdraw_textというメソッドを使うのですが、このときに文字のアライメント(揃え方)を決めることができます。そして、そのアライメントはWindow_Command内で自由にいじれるようになっています(デフォルトで)。

そういうことで、アライメントを決めているこのdef alignmentをWindow_TitleCommandにコピペします。

f:id:kanjinokusa0405:20170720203808p:plain

アライメントの設定は簡単で、0が右揃えで、1が中央、2が左です。今回は中央揃えなのでreturn 0の0を1に変えます。

f:id:kanjinokusa0405:20170720204641p:plain

 

 

f:id:kanjinokusa0405:20170720204715p:plain

するとちゃんと中央揃えになります。

ちなみにこれ、RPGツクールVX Ace付属の説明書にちゃんとやり方が書いてあります。だからといって受け売りを話してたわけじゃないですけど。受け売りを話してたわけじゃないですけど。

f:id:kanjinokusa0405:20170720204909p:plain

 

次に行間を広くします。こんな感じです。

f:id:kanjinokusa0405:20170720215008p:plain

f:id:kanjinokusa0405:20170720215140p:plain

まず、Window_Baseからline_heightというメソッドをWindow_TitleCommandに持ってきます。次に任意の高さに変えます。これだけです。

 

 

ウィンドウを消して選択肢だけにする

f:id:kanjinokusa0405:20170720205404p:plain

これも説明書にやり方が書いてあるので、使用例だけ紹介するとこんな感じです。

f:id:kanjinokusa0405:20170720205612p:plain

f:id:kanjinokusa0405:20170720205708p:plain

ただ、デフォルトだと黒い影が薄いので、Window_Commandからdraw_itemをコピペしてきてこうすると影が濃くなります。

f:id:kanjinokusa0405:20170720210139p:plain

f:id:kanjinokusa0405:20170720210216p:plain

 

■選択肢を横に並べる

f:id:kanjinokusa0405:20170720211042p:plain

ちょうどこんな感じです。ではさっそく作っていきましょう。

f:id:kanjinokusa0405:20170720212013p:plain

変更点は3点。まとめるとこんな感じです。

スーパークラスをWindow_CommandからWindow_HorzCommandに変える。

・新たにcol_maxというメソッドを設ける。

・window_widthをGraphics.widthに変える。

これだけでOKです。Window_HorzCommandのスーパークラスがWindow_Commandのため、Window_Commandのメソッドも使うことができます。

 

オリジナルのコマンドをつけくわえる【上級者向け】

 これ、コマンドを作るだけなら簡単ですが、その先の実行内容を作るのは上級者向けです。いろんなケースが想像できるので、全てを対応することはできませんのでコマンドの作り方だけを説明していきます。

まずWindow_TitleCommandクラスのメソッドmake_command_listに任意のコマンドを付け加えます。

f:id:kanjinokusa0405:20170720213026p:plain

次に、Scene_Titleのcreate_command_windowにも同じ任意のコマンドを加えます。どちらかが抜けているとうまく実行しません。

f:id:kanjinokusa0405:20170720213433p:plain

そして次に、set_handlerの中で作ったメソッドを作ります(この場合command_additionになります)。

f:id:kanjinokusa0405:20170720214107p:plain

f:id:kanjinokusa0405:20170720213700p:plain

 起動するとこうなります。

ただ、今回の場合command_additionの中が空なので、このコマンドを押すとフリーズします。

ここから先どうするのかはあなた次第です。

 

さて、この記事で私は何回デフォルトという言葉を使ったでしょうか。あ、数えなくて結構です。

【RPGツクールVX Ace】動くタイトル画面を作ろう!(天候編)【初心者向け】

どうも。RGSS3(VX Ace)歴4年のかんじの草です。今回はタイトル画面に雨(その他)を降らせていきたいと思います。

前回(【RPGツクールVX Ace】動くタイトル画面を作ろう!(画像編)【初心者向け】 - 莞爾の草原。)に引き続いて初心者向けに書いていこうと思うのですが、スクリプトを学んでいくうえで何よりも大切なことは、スクリプトに苦手意識を持たないことです。

スクリプトは怖いものじゃない」「スクリプトはあなたのツクールライフをよりよくするものだ」

そう頭に念じてやっていきましょう。冗長だ。

 

以下のスクリプトを▼ 素材の下に貼り付けることでタイトル画面に雨を降らせることができます(上書きなので注意)。デフォルトとの相違点は青文字で記します。

#==============================================================================
# ■ Scene_Title
#------------------------------------------------------------------------------
#  タイトル画面の処理を行うクラスです。
#==============================================================================

class Scene_Title < Scene_Base
#--------------------------------------------------------------------------
# ● 背景の作成
#--------------------------------------------------------------------------
def create_background
@sprite1 = Sprite.new
@sprite1.bitmap = Cache.title1($data_system.title1_name)
@sprite2 = Sprite.new
@sprite2.bitmap = Cache.title2($data_system.title2_name)
@sprite1.z=-50
@sprite2.z=-50
center_sprite(@sprite1)
center_sprite(@sprite2)
@weather = Spriteset_Weather.new(Viewport.new)
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
def update
super
@weather.type = :rain

#:rain(雨)の部分を

#:stormに変えると嵐になり、

#:snowに変えると雪になり、

#:noneに変えると天候がなくなります。
@weather.title=true#true=天気がタイトルから呼び出されている
@weather.power = 15#天気の強さ。マップでいじる天気の強さと同じ
@weather.ox = 0
@weather.oy = 0
@weather.update
end
#--------------------------------------------------------------------------
# ● 背景の解放
#--------------------------------------------------------------------------
def dispose_background
@sprite1.bitmap.dispose
@sprite1.dispose
@sprite2.bitmap.dispose
@sprite2.dispose
@weather.dispose
end
end

#==============================================================================
# ■ Spriteset_Weather
#------------------------------------------------------------------------------
#  天候エフェクト(雨、嵐、雪)のクラスです。このクラスは Spriteset_Map クラ
# スの内部で使用されます。
#==============================================================================

class Spriteset_Weather
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :title #Spriteset_WeatherクラスがTitle画面から呼び出された時にtrueになる。
#--------------------------------------------------------------------------
# ● 暗さの取得
#--------------------------------------------------------------------------
def dimness

#Spriteset_WeatherがScene_Titleから呼び出されているときに、@titleがtrueになります。
@title ? 0 : (@power * 6).to_i
end
#--------------------------------------------------------------------------
# ● メンバ変数の初期化
#--------------------------------------------------------------------------
def init_members
@type = :none
@ox = 0
@oy = 0
@power = 0
@sprites = []#はてなの仕様上全角にしてあります。半角に変えてください

@title=false
end
end

 

f:id:kanjinokusa0405:20170701233449p:plain

ただ、これだけだとやや地味というか、まだ何か足りない……そう思う方もいるかもしれません。

では、いろいろカスタムしていきましょう!

 

【目次】

・タイトル画面にBGSを流そう!

・雨の画像を編集しよう!

 

 

 

 

・タイトル画面にBGSを流そう!

せっかく雨を降らせたのなら、是非とも雨の音もつけたいですよね。

ということで付けていきましょう。

#--------------------------------------------------------------------------
# ● タイトル画面の音楽演奏
#--------------------------------------------------------------------------
def play_title_music
$data_system.title_bgm.play
RPG::BGS.stop
RPG::ME.stop
RPG::BGS.stop
Audio.bgs_play('Audio/BGS/Rain',70)
end

上がスクリプトです。Scene_Titleに貼り付けてください。どこにでも貼り付けていいわけではなく、それは前回の画像編で解説しているとおりです。どこに貼ればいいかわからない方はclass Scene_Title < Scene_Baseのすぐ下に貼り付けてください。

上の青字の部分は、Audioというモジュールから実行するBGS:Rainをボリューム70で再生するように命令しているメソッドです。モジュールとは、前回使用したCacheやGraphics、VocabやSoundなどの、クラスのどこからでも呼び出せる、ざっくり言えばクラスより強い奴です。モジュールの名前は必ず大文字から始まらなくてはなりません。

また、青の上にあるRPG::BGS.stop、RPG::ME.stop、RPG::BGS.stopのRPG::○○(音楽の種類)の中でも一様にこのAudioのモジュールが使われています。

f:id:kanjinokusa0405:20170702002928p:plain

Audio.bgs_playというメソッドには引数という呼び出すときに必要なものがあります。それが、()のなかにあるものです。なのでAudio.bgs_play('Audio/BGS/Rain',70)の引数は、'Audio?BGS/Rain'と70という数字となります。

「'Audio?BGS/Rain'はファイル名だとして、70って何?」とお思いの方もいるかもしれません。こういった引数がなにかわからないときは、呼び出し元のメソッドを見ましょう。説明書のAudio(モジュール)のページには、

Audio.bgs_play(filename[, volume[, pitch[, pos]]]) (RGSS3)

BGS の演奏を開始します。順にファイル名、ボリューム、ピッチ、再生開始位置を指定します。

再生開始位置 (RGSS3)ogg または wav の場合のみ有効です。

RGSS-RTP に含まれるファイルも自動的に探します。拡張子は省略可能です。

 とあります。

つまり引数70の正体は二番目のvolume、つまり音量ということになります。

三番目のpitchというのは文字通りピッチのことで、posというのは再生開始位置を指します。

ちなみに、引数の中にある[](半角角かっこ)は、必要ではない引数のことで、省略しても問題がないです。だから、70の引数を消してAudio.bgs_play('Audio/BGS/Rain')としてもちゃんとメソッドを実行することができます。

 

・雨の画像を編集しよう!

「雨をもっと大きくしたい」「雨の色を変えたい」など、いろいろとやりたいことが出てくると思います。スクリプトを知ると可能性が広がり、同時に視野も広くなってくるでしょうからね。

ということで、画像を編集していきましょう。

 

例えば、「大きい雨と小さい雨を分けてタイトル画面に奥行きを出したい」とします。

そんな時はこうしましょう。

class Spriteset_Weather
#--------------------------------------------------------------------------
# ● スプライトの追加
#--------------------------------------------------------------------------
def add_sprite
sprite = Sprite.new(@viewport)
sprite.opacity = 0
if @title
sprite.zoom_x=s=rand(40)/10
sprite.zoom_y=s
end
@sprites.push(sprite)
end

end

これを実行するとこうなります。

f:id:kanjinokusa0405:20170702005754p:plain

四角!って感じですが、動画で見てみると結構いい感じです。

さて、なにをしたかというと、「もし@titleがtrueならば、sprite(パーティクル)の拡大率を「0から39のうちの乱数を10で割ったもの」にする」というものです。zoom_xとzoom_yは前回の画像編で触れたスプライトのプロパティです。このspriteは文字通りSpriteクラスのものなので、Spriteクラスにできるプロパティやメソッドなら好きに実行することができます。

f:id:kanjinokusa0405:20170702010815p:plain

例えば、 sprite.mirror =rand(3)==1;sprite.blend_type =2;sprite.angle=(361)とするとこんな感じにちゃんと動作します。趣味が悪いわ。

f:id:kanjinokusa0405:20170702012909p:plain

case rand(3)
when 0
sprite.color=Color.new(255,0,0)
when 1
sprite.color=Color.new(0,255,0)
when 2
sprite.color=Color.new(0,0,255)
end

 

また、雨雪嵐のほかに、自分が用意した画像を降らせることもできます。

#--------------------------------------------------------------------------
# ● スプライトの更新[雨]
#--------------------------------------------------------------------------
def update_sprite_rain(sprite)
sprite.bitmap = @title ? Cache.system("Ball") : @rain_bitmap#ここのキャッシュの部分を変える
sprite.x -= 1
sprite.y += 6
sprite.opacity -= 12
end

ただ、あまり画像が大きすぎると重くなので注意が必要です。ちなみに、sprite.x -= 1;sprite.y += 6の数字の部分を変えることで粒子の落ち方を変えることができます。例えばsprite.y -= 6とすると、粒子が上がっていきます。

f:id:kanjinokusa0405:20170702012015p:plain

f:id:kanjinokusa0405:20170702012148p:plain

これにさっきの拡大率を変える奴を使うとこんな感じ。内部的には雨の設定となっています。