あきおのメモ帳

主にゲーム作ってる時の備忘メモです。たぶんほぼ放置。

ツクールMZでなんちゃって畑マップを作った備忘メモ

前書き

制作中のフリーゲーム「ちゅりある!」で自分好みな畑マップを軽い気持ちで作り始めたらやたら変数やイベント使っちゃって多分半年後には仕様忘れそうな気がしてきたので未来の自分のためにざっくりメモ sdsong.web.fc2.com

前提

  • 自分用の殴り書きメモです
  • ツクールMZ 去年の2月に体験版をちょっと触って7月からゲーム制作はじめた(空白期間あり)
  • 本職じゃないしあんまり作り込みしたくないタイプのものぐさです
  • ぼくものすき 主に3DSソフトあたり
  • 素材はこちらを購入させていただきました(ありがとうございます)
    www.dlsite.com

実際の畑の様子

※畑マップ外の処理の話はこの記事では書いてないです
(この記事に書いてる変数やコモンイベントを流用してはいます)


データベースに設定するパラメータ情報

進捗の考え方(進捗タグ)

カテゴリ 詳細 備考
step0 種まき前
step1 種まき済
step2 1日経過 小さな芽
step3 2日経過~ 大きな芽
step10 収穫可能 作物の収穫日になったら10にする

アイテム(作物)のメモ欄

  • [データベース]>[アイテム]>[畑で栽培したい作物]のメモ欄に以下の様に進捗タグの進捗に合わせて画像ファイルやインデックス、向きを設定する
    ※コモンイベント「畑共通:水やり」や「畑共通:画像設定」で「移動ルートの設定(スクリプトで記述)」を行う際に使用
<step2:水やり前の画像ファイル名,水やり後の画像ファイル名,画像内のインデックス(例:0),画像の向き(例:16),水やり中の画像ファイル名>
<step3:水やり前の画像ファイル名,水やり後の画像ファイル名,画像内のインデックス(例:0),画像の向き(例:17),水やり中の画像ファイル名>
<step10:水やり前の画像ファイル名,水やり後の画像ファイル名,画像内のインデックス(例:0),画像の向き(例:18),水やり中の画像ファイル名>
カテゴリ 詳細 備考
水やり前のファイル名 移動ルートの設定で指定したい画像ファイル名(拡張子不要) 水やり前の状態の時に取得
水やり後のファイル名 同上 水やり済の状態の時に取得
画像内のインデックス 移動ルート設定で指定したい画像のインデックス 左上の0から連番
画像の向き 画像の向きを指定 下16,左17,右18,上19
水やり中の画像ファイル名 移動ルートの設定で指定したい画像ファイル名(拡張子不要)(後から追加した) 水やり演出で使用 足踏みアニメをON/一瞬ウェイト/OFFしてる

アイテム(種)のメモ欄

  • [データベース]>[アイテム]>[畑にまく種]のメモ欄に以下の様に作物情報を設定する
    ※コモンイベント「畑共通:種まき」で畑で作成する作物の情報や管理情報を取得する際に使用
<info:作物のID(例:2),収穫するまでの日数(例:3),収穫数(例:8),作物カテゴリ(例:1)>
カテゴリ 詳細 備考
作物のID アイテム(作物)のID 作物情報の取得に必要
収穫するまでの日数 何日後に収穫するかを設定 1日経過させる処理中に行う進捗チェックで使用
収穫数 デフォルトの収穫数
作物カテゴリ 連作かどうかのフラグ(に使う予定だった) やる気が出なくて放置中

変数に設定するパラメータ情報

畑共通変数

  • 種まきや水やりなど各種処理をコモンイベントで共通化したいので畑個別の情報を事前に共通変数にぶちこむようにしている
  • 畑は4マスごとに1ブロックとして作っている
    (畑Aのイメージ)
    | 畑A-1 | 畑A-2 |
    | 畑A-3 | 畑A-4 |
変数名 詳細 備考
畑共通:畑ID 共通処理内で使用する畑のイベントID 畑Aブロックの場合は畑A-1のID(連番にしているので各処理内でカウントアップさせる)
畑共通:アイテムのID 共通処理内で使用するアイテムのID格納用変数 作物や種のIDを入れる
畑共通:アイテムの名前 共通処理内で使用するアイテムの名前格納用変数 $dataItems[アイテムのID].nameで取得する
畑共通:収穫までの日数 共通処理内で使用する収穫までの日数格納用変数 畑の進捗との比較で使う
畑共通:収穫数 共通処理内で使用する収穫数格納用変数 収穫時や肥料で収穫数を増やす時に使う
畑共通:作物タイプ 共通処理内で使用する連作フラグ格納用変数 やる気が出なくて使ってない
畑共通:肥料A 共通処理内で使用する肥料A使用フラグ格納用変数 0未使用、1使用済み
畑共通:肥料B 共通処理内で使用する肥料B使用フラグ格納用変数 0未使用、1使用済み
畑共通:水やり 共通処理内で使用する水やりフラグ格納用変数 0未実施、1実施済み
畑共通:進捗 共通処理内で使用する「畑x:進捗」の値格納用変数 畑の進捗=進捗タグの数字
畑共通:情報ID 共通処理内で使用する「畑x:畑情報」の変数番号格納用変数 「畑A:畑情報」の変数番号が41の場合は41を設定

畑個別変数

  • 進捗はイベントページの出現条件で使うから分けている
  • 畑情報に設定した情報を後述の情報取得処理で取得している
  • 以下は畑A用の変数(畑B、畑Cなど増やす場合はセットで増やす)
変数名 詳細 備考
畑A:進捗 畑の進捗管理用変数 畑の進捗=進捗タグの数字
畑A:畑情報 後述の畑情報格納用変数(配列)

畑情報

畑情報 詳細 備考
作物のID 栽培中の作物のアイテムID 「畑共通:アイテムのID」と連携する
作物名 栽培中の作物 「畑共通:アイテムの名前」と連携する
収穫までの日数 栽培中の作物の収穫までの日数 「畑共通:収穫までの日数」と連携する
収穫数 栽培中の作物の収穫数 「畑共通:収穫数」と連携する
作物タイプ 栽培中の作物が連作かどうかのフラグ 「畑共通:作物タイプ」と連携するけど使ってない
肥料Aフラグ 畑に肥料Aを使用したかのフラグ 「畑共通:肥料A」と連携する
肥料Bフラグ 畑に肥料Bを使用したかのフラグ 「畑共通:肥料B」と連携する
水やり 当日に畑の水やりを実施したかのフラグ 「畑共通:水やり」と連携する

コモンイベントについて

全体の流れ

  • 1.「畑共通:畑ID」、「畑共通:進捗」、「畑共通:情報ID」に畑個別の情報を設定する
      (すべての畑が対象の場合はコモンイベント内で設定)
  • 2.状況に応じて各種コモンイベントを呼び出す
  • 3.コモンイベント内で「畑共通:情報取得」コモンイベントを 呼び出す
  • 4.コモンイベント内の処理が実行される
  • 5.コモンイベントの処理で更新した畑共通変数の値を「畑x:進捗」や「畑x:畑情報」に反映する

コモンイベントの一覧

畑マップ用に作ったコモンイベントの一覧

イベント名 詳細 備考
畑共通:情報取得 「畑共通:情報ID」にある変数番号をもとに「畑x:畑情報」の畑情報を各共通変数に格納する
畑共通:種まき 「アイテムの選択」で選んだ種のアイテムIDをキーに作物情報を取得
畑共通:水やり 畑ブロックを水やり済みにする
畑共通:一括水やり すべての畑を水やり済にする 「畑共通:水やり」を呼び出す
畑共通:肥料 「アイテムの選択」で選んだ肥料のタイプによって「収穫するまでの日数」や「収穫数」を操作する 肥料は畑ブロックに一つずつだけ使用可
畑共通:収穫 畑ブロックの作物を収穫する 連作フラグ使うならここだけどやる気が出ない
畑共通:水やりチェック 1日経過させる前に水やりできていない畑がないかチェックする 未実施の場合は「畑共通:強制水やり」を呼び出す
畑共通:強制水やり チュリアが就寝前に慌てて水やりにいったイベントをはさむ 寝不足でHPが減る
畑共通:初期化 1日経過させる前にすべての畑の進捗をチェックする、水やりフラグのクリア 「畑共通:進捗チェック」を呼び出す
畑共通:進捗チェック 畑ブロックの進捗をチェックする 「進捗」+1、「収穫するまでの日数」を比較し収穫日の場合は固定で「進捗」を10にする
畑共通:画像設定 畑ブロックの進捗に合わせて表示する画像を更新する 畑マップに入る際に都度自動実行(セルフスイッチで制御)

後書き

もっと効率のいいやり方あるんだろうな~!とか、共通の肥料フラグはひとつで十分だったな~!とかそもそもプラグイン探したらあったんじゃないかな〜!とか思いつつ、ひとまず自分が遊びたい仕様で動作できてるからいいや!という感じです。

半年後の自分が困らないように殴り書きしたメモなのでいろいろ内容も荒いですが、サンプルケースの一つとして晒しておきます。

もしこの記事を楽しめた方は気が向いたらで構いませんので来月リリース予定のTHE 虎牙道のCD試聴動画を浴びて頂けるとうれしいです。(突然のP活)
youtu.be