【MZ】畑システム-準備編-
サンプルプロジェクトDL 2025/04/28 更新
執筆者:神凪洸
誰もが一度は憧れる、牧場●語やルーン●●クトリーのような畑システム。
楽しいっすよねー!現実の畑はやらないけど!!(飛んでくる虫の問題はデカイ)
でもいざ作ろうとすると、スイッチがごちゃごちゃ。変数どれだけ用意すんねん!
イベントページ全く足りねーじゃねーか!!
MZに関しては20ページしか作れなくなってるのは控えめに言ってk(ソレイジョウハイケナイ)
で、結局作れる作物数が数種類しかないオマケ程度の畑システムしか
作れなかったって人も多いハズ。
そんな訳で、白黒洋菓子店仕様の畑システムの作り方講座を開くよ!
今回は、準備編だ!!(あまりにも長いので複数回にわけてお送りします)
◆大前提1 畑システムの細かい仕様を決めておく
今回の畑システムは、牧物のように本格的なシステムっす。
種を植え、水をやり続け、日数ごとに徐々に成長していき完成し、収穫!
と言うのは簡単っす。でも、よく考えるっす。
水をやった時とやらなかった時の翌日の挙動は?
水をずっとやり忘れた時の挙動は?
徐々に成長って作物によってバラつきあったりしない?日数とか決めた?
収穫しないで放置した時の挙動は?
肥料とかで成長促進なんてこともあるね。
天候や季節があったら、雨や嵐の時は水やり必要ない挙動も作らなきゃ?
え?嵐とか台風で作物枯れちゃう挙動も?
あ、屋外と屋内に畑がある場合の挙動……!
などなどなど……。わりと、仕様は予めよく考え決めておく必要があるっす。
組みながら仕様を決めるなんてそんな気軽に出来るものじゃないっす。
◆大前提2 スクリプト理解が必要
今回のシステムは、めちゃくちゃスクリプトを使うっす。
当講座では、そっくりそのままサンプルプロジェクトを使えば
あとはコピペで作物などを追加するだけで簡単に作れます。
が、触り慣れていないとタイプミスはもちろん
ちょっと違う仕様にしようと思ったら、どうすりゃええの?ってすぐに止まるっす。
単純なスイッチONOFF・変数に代入やら加算やらだけではないし
条件分岐すらほぼ全てスクリプトで書く事になるので
作物の種類とかそこそこ多かったりすると
覚悟と根気が必要になるくらいの難易度っす!ホントだよ!!
スクリプトの条件分岐はif文、変数は配列を利用するっすよ。
そこの初心者君、全然ピンと来てないね!それでも大丈夫!
執筆者はプラグイン知識らしいものはほぼありません。
綺麗に理解しなくても作れればそれでいいってド初心者向けです。
ひとまず、様々なスクリプト文を使うのでこちらのサイトを見て把握しておきましょう。
プログラムわかんない民でも ちょっと凝ったことをする際には
一番役に立つコマンドまとめサイトです。
◆大前提3 日付と天候のシステムが先
この畑システムに必要な大きなシステムがある。
それは「日付システム」だ!! これがなければお話にならないのだ。
白黒洋菓子店ではプラグインを使わないタイプの日付+天候システム講座もあるので、こっちも参考にしてね。
お宅の日付はどういうシステムっすか?歩数で時間経過?●秒で1時間方式?
昼とか夜とかが分かるようにスイッチなり変数なりに代入される?
天候は一日固定?それとも変動?
畑システム仕様の話になるけど、成長更新のタイミングは時間経過?
それとも一日毎に更新されるタイプ?
◆大前提4 当講座の畑システムの仕様について
大前提多すぎぃ!ってなると思うっすけど
それだけ大掛かりなシステムであると認識してほしいっす。でもこれが最後なので。
当講座で作れる白黒洋菓子店の畑システム仕様は以下の通り。
使用グラフィック「畑素材集」(これじゃなくてもキャラチップ素材であればなんでもヨシ)
あった方が便利(というか必須レベル)なプラグイン
「イベントロック無効化(トリアコンタン様)」「選択肢拡張(木星ペンギン様)」
■機能あり
- 種まき→水やり→成長→水やり→成長……→完成→枯れる(完成しない限り枯れない仕様)
- 成長段階でランダムで作物が枯れ、水やりで復活する仕様もサンプルに付属
- 種まき、水まき、肥料まきの順番はなく、どれからでもやれる
- 雨の日など水やりが自動的にされる
- 作物は一日ごとに成長更新される
- 作物の成長更新は畑MAP外にいても更新される
- 水やりをしないと成長しない。肥料のみあげても成長しないが、肥料は消費されない
- 成長促進肥料で作物の成長速度を変化。肥料アイテム複数作成可
- 収穫の際に発揮する肥料アイテム。サンプルではレア作物が採れるようになる肥料のみ
- ただし、使える肥料は畝1つに成長促進系1種と収穫系1種の計2種のみ
- 成長促進系は、一日毎に肥料は消費される
- 収穫系は、収穫直前までならいつ使っても効果あり。収穫した際に消費される
- 作物によって完成までの日数が違う
- 収穫時、作物数のランダム化。レア作物なり枯れ草なり種なりも仕込める
- じょうろの概念(水が入ってないとまけないとか)
■機能なし(ただし、理解ができれば今回作ったシステムに追加導入は可能)
- 季節で植えられるor植えられない。もしくは植えても翌日、枯れる
- 季節で作物成長速度の変化。適正季節外に育てると収穫まで遅い等
- 畝から作る(耕す)
- 嵐や台風などの悪天候で、作物が駄目になる
- 作物の連作。収穫して数日でまた収穫を繰り返せる
- 畑のあるマップが複数存在
■機能はないが、比較的導入は簡単
- 屋内の畑マップ。天候にかかわらず水やりが必ず必要になる仕様
- 散水機の概念(一回で全部に水をまけるとか)
◆下準備
■サンプルプロジェクトをDL
基本的にサンプルプロジェクトそのまま使用するのを推奨します。
本番プロジェクトの方にID含めて全く同じようにコピペするか
サンプルプロジェクトごと複製して、片方を本番プロジェクトとして使用するのどちらか。
(´・ω・`){どうして?
(・ω・)ノ{サンプルプロジェクトを見てもらうとわかるが、スクリプトでIDなどを取得して条件分岐したりなんだりするので、スクリプト理解がない方は下手に違うIDにしたりなんだりするとミスが連発するからだよ。
(∩´∀`)∩{このサンプルプロジェクトはその為のサンプルなので、ありがたくまるっと使用するのだ!
(・ω・)ノ{一応、一からでも作れるような説明でいくけど サンプルプロジェクトの解説としても読めるようにしてあるよ。
■データベースの用意
種アイテム、作物アイテム、肥料アイテムをそれぞれ用意しましょう。
予め、どの程度の種類を作るか、それぞれどのグラフィックを何日で成長するかを
決めておくことが白黒洋菓子店製の畑システムにおいて重要なルールです。
(´・ω・`){どうして予め決めておかないといけないの?
(・∀・){後で決めると、今後の追加作業がガチクソレベルでめんどくさくなるよ
(・∀・){キッチリカッチリ決めなくても、種はアイテムID1番~20番の範囲内
作物は21番~40番以内とそれ以上は絶対追加しないぞ!って覚悟で決めておこう
(・ω・)ノ{各作物が何日で収穫できるようになるかも決めておこうね
ヽ(`Д´)ノ{未来の自分への投資だ!
ポイントヽ(`Д´)ノ
「アイテム選択拡張(Artemis様)」導入時は、アイテムのメモ欄にカテゴリタグを入れろ!
種なら<subCategory:tane>みたいな感じで。
じょうろ系はなくてもいいし、あってもいい。水残量しか参照しないので。
ポイントヽ(`Д´)ノ
種の順番と作物の順番は同じにしろ!
例えば、かぶの種→にんじんの種→はくさいの種→小麦の種という順番で種を設定した。
それぞれの種に対応する作物も かぶ→にんじん→はくさい→小麦の順番で設定すること。
一つの種から複数の作物が採れるって? 駄目です。原則一つに設定しましょう。
ただし、たまに同時に採れるレア作物とかの意味であれば作るのはおk。
レア作物は別のIDから初めてね。レアに関しては順番はとくに決めなくておk
(´・ω・`){つまり?
ヽ(`Д´)ノ{サンプルプロジェクトで言うと、こういう事だ!
アイテムID1~10番は種!
ID12~21番は種と同じ順番にした通常作物!
肥料は肥料!ID22~29番だけだ!
ID31番からはレア作物だ!ここは種と同じ順番にしなくてもヨロシ!
■スイッチと変数の用意
スイッチ:「畑更新」「畑成長更新」の2つ。
前者は畑MAPに入った際に現在の状態に更新する為のもの。
場所移動時にスイッチがONになるっすよ。
後者は一日一回だけ発動される成長時用のスイッチっす。
変数:たくさんある。ありすぎる。
配列:「成長経過日数」「種ID」「水、成長促進」「収穫時肥料」「作物完成状況」
判定:「状況汎用A~E」「水残量」
代入:「種ID」「畑ID」「画像名」「画像インデックス」「画像向き」
「種名/肥料名」「作物成長度」「作物数ランダム(画像では占い表記)」「萎れる?」
変数は以下の画像のような感じにするとわかりやすいと思うっす。
ポイントヽ(`Д´)ノ
畑のあるMAPが複数存在する時は、スイッチと配列変数を畑マップ数分用意!
畑マップが複数ある(ルンファクでいうダンジョン内の畑のような)場合はそれぞれのスイッチと変数(配列のみ)はマップ数分、必要っす。さらに変数「【代入】マップID」も。
つまり、複数マップあるとめちゃ大変っすね。
今回、複数MAPある場合の解説はなしでいくのでご了承を。
■コモンイベントの確保
【サンプルプロジェクト コモンイベントID1 ID7~18】
成長に必要な最大日数と、完成してから枯れるまでの日数を決めてください。
最大日数とは、色んな作物の中で一番成長に時間のかかる作物の日数っす。
この日数+枯れるまでの日数分、コモンイベントが必要になります。
(もう少しスマートに出来ると思うけど、限界だった)
例:完成してから3日後には確実に枯れる。一番長い最大成長日数は16日の場合
最低19コモンイベントの枠が必要。
●用意するコモンイベント
「日数別コモン判別」「畑作業」「作物画像の変更実行」「事前代入」
「畑成長更新代入」「成長日数分の画像代入」「収穫関連」
(・ω・)ノ{以下で1つずつ、コモンイベントの内容解説をするよ
「日数別コモン判別」
作物を植えてからの成長日数を元にどの「画像代入」コモンイベントを呼び出すかを決めるコモンイベントだよ。
「畑作業」
MAP上の畑(畦)イベントを調べた際に出てくる作業選択肢のイベントだよ。
「作物画像の変更実行」
どの画像を表示するのかを決めて、各変数に代入された値を元に実際に画像変更を行うイベントだよ。ここは変数IDを変えない限り、弄ることはないよ。
「事前代入」
色んな所で使うデータを使いやすいようにする処理だよ。まとめておけば呼び出すだけになるのでちょっとだけ実行内容が見やすくなったり、管理がしやすくなるよ。
これも変数IDを変えない限り、弄ることはないよ。
「畑成長更新代入」
日付更新や時間経過などで、作物が更新される際に呼び出される処理だよ。
「画像変更コモンへ」
日数別コモン判別のスキップ内注釈に書いてある通りだよ。
不要な時は削除しちゃってね。
「成長日数、画像代入」
コモンイベントの名前の先頭にある[0]や[5]というのが、成長経過日数を表すよ。
最大成長日数+枯れるまでの日数分、用意するよ。管理がしやすいように連番にしておこうね。
(´・ω・`){コピペ用ってなに?
(・ω・)ノ{画像代入で要所要所で使うコマンド集だよ。実際に呼び出されるイベントじゃないので日数11日以上にする時は、テキトーな場所にコピペして移動させちゃっていいよ。
「収穫関連」
畑作業で収穫を選んだ時に実行されるイベント処理だよ。
収穫する作物IDを設定したり、収穫数を変更したりする以外では弄らないよ。
■マップと畑イベントの確保
畑システムを利用するマップは、基本的にそれ以外のイベントは
設置しないような専用マップとして用意しましょう。
以下、イベントの内訳。
【サンプルプロジェクト MAPID3「畑」】
「畑更新用」を1つ。「畑(畝)」必要分。「水をくめる場所」必要なだけ。
ポイントヽ(`Д´)ノ
畝のイベントIDは連番にしろ!
ID5番が最初の畝イベントなら、その後は必要な数まで畝イベントを作るっす。
ID5番、ID7番、ID8番、ID13番 みたいに飛ばしちゃダメです。
◆準備めんどくさい
(´・ω・`){用意するの多くない?
(;・∀・){だろうな。だが、我々はこれを1から作ったのだ。ガンバレ
(´・ω・`){なにその時代遅れの苦労したからお前も苦労し(以下略)
そんなわけで、サンプルプロジェクトを用意したっすよ。
というか、今回の畑システム講座はこのサンプルプロジェクトを見ながらの方が
圧倒的に説明もしやすいし、分かりやすい(筈)なので頼むからDLしてください。
◆準備編終わり
はい、お疲れ様でした。ここまでやってかつサンプルプロジェクトを見て
無理だなめんどくせーって思ったら畑システムは諦めましょう。
そして畑プラグイン素材がない理由もお分かりになるでしょう。(あっても牧物レベルじゃない筈、多分)
とくにカスタム性(拡張性)が容易に出来る構造にするにはきっとプラグイン作者的には絶対作りたくねぇ!この仕様で有償で個人用に作る分にはともかくな!って思うレベルのものだと、プラグインちょっと弄れる民は思うのです。
しかも日付天候システム必須。そりゃぁ……ねぇ?
とりあえず、白黒洋菓子店仕様の畑システムがどんなもんかってのを
動画にしたので見てね。こういうのが作れるようになります。
0コメント