検索
現代SFRPG「重力ルーペ/探求リバーブ」

ドラマティックRPG「バンドワゴン」

ハートフルRPG「地図の時間」

新作「日向と香水」
カテゴリ
リンク集
【スポンサードリンク】


【新着・注目タイトル】


シナリオ制作


設定作り


最近読んでよかった本五選





創作意欲を掻き立てる本


自己管理術


クリエイター向けノウハウ

2018年05月08日

【ツクールMV修正情報】メニューとアイテム画面の連続切り替えで操作不能になる(シーン遷移問題)の解決

この頃は電車の中でうたた寝してしまうくらいお疲れ……じゃない、充実した毎日を送っています。
月末には自作品の近況とか、面白かった作品のお話に触れられたらと思います。
さて今日はRPGツクールMVで1点既知のトラブルが解消されたので共有です。

トラブル内容:
メニューとアイテム画面の連続切り替えで操作不能になる
http://fanblogs.jp/tabirpglab/archive/1072/0

詳細については上記の過去記事をご覧ください。
意図的にメニュー画面でEnter⇔ESCを繰り返さない限り、発生頻度は低そうです。

対策:
RPGツクールMV1.6.1β(2018/5/8版)の適用

【お知らせ】RPGツクールMV:バージョン1.6.1βテスト版 配信開始
https://goo.gl/8NWSNE
こちらのリンク先でSteam版1.6.1の適用方法が紹介されています

経緯:
・バージョン1.6.0でも同問題のシーン遷移対策が含まれておりました。
しかしその対策はコアスクリプト外のプラグインに対する柔軟性が低く、YEPさんのItemCoreなどアイテム画面遷移を伴うプラグインを使用した際に影響が発生しておりました。1.6.0対策版でもある1.5.2(1.6.0は別問題も含め影響が大きかったのか公開停止。その後継として公開された1.5.2ではシーン遷移対策はなされていませんでした。

・今回1.6.1βの修正は1.6.0とは別のシーン遷移対策が施されており、1.6.0のプラグイン干渉を見送った方にとっては期待できそうです。
ただ別対策=別の問題が発生する可能性もあるわけで、その辺りは慎重に見極めなければいけません。

1.6.1もまだβかつWindowsが対象のようなので、βの外れた正式版を待つのも一案でしょう。
あっさり風味ですみません。ではでは。

2018年04月30日

実験:スイッチの判定処理について

◆実験:スイッチの判定処理について

スイッチの判定処理について負荷の少ない方法を調べたときの話です。
取り組み上、プラグイン、スクリプトを使用しない前提で書いている記事なので、コラム的にご覧ください。
対策は結論がでているので、記事末尾の参考記事をぜひ。


同一マップ限定で何かの処理をスイッチONで開始(例.エンカウント0、光源処理、宝箱ポップ、BGM変更)マップ切り替え時にスイッチをOFFにして初期化をするということをやっていました。

座標1.1にこんなイベントを設置するといった具合ですね。
◆スイッチの操作:#0341 test1 = OFF
◆イベントの一時消去
トリガー:自動実行

たった1つならまだしも複数の処理(スイッチ)をON→OFFにする必要が生じた場合、次の2通りが一般的ではないでしょうか。

@一斉OFF
◆スイッチの操作:#0341..0350 = OFF
◆イベントの一時消去

A条件分岐でONの場合のみOFF
◆条件分岐:test1がON
◆スイッチの操作:#0341 test1 = OFF

:分岐終了
◆条件分岐:test2がON
◆スイッチの操作:#0342 test2 = OFF

:分岐終了
…以下続く
◆イベントの一時消去

この場合、どちらが処理負荷が低いのか試してみました。

20180430_7.jpg

20180430_8.jpg

結論としては、マップ切り替え時にはマップ初期化処理でイベントチェックが走るため変わらないとのことでした(ご回答くださったしぐれん様に感謝です)。

テストプレイ中にメニュー画面の切り替えをすると更新内容を即反映できるのは、この処理のためだったのですね。

逆に言うと、画面を切り替えない(メニュー画面の呼び出しのようなシーン遷移含む)
スイッチOFF時の判定なら、条件分岐の分軽くなる可能性はありますが、その場面はおそらく限定的。
それならば実装作業のコストを考えてパターン@で管理した方が早いという話でした。

予備知識として以下ご参考まで。
・スイッチON/OFF、変数の変化は同一MAP内の全イベントチェックを走らせる
1.スイッチ=Game_Switches Classの変更、Game_Variables Classの変更がsetValue() で格納される
2.1の度にGame_Map Classの refresh() =更新処理処理が走る

・スイッチ、変数の値を直接指定することで全イベントチェックを回避することは可能
-具体的には $gameVariables._data や $gameSwithes._data の値を変更する

解説や取り組まれた好例は次の記事が参考になります。

並列処理でスイッチや変数を操作すると重くなる【ツクールMV】(パラドレ様)
https://paradre.com/%E4%B8%A6%E5%88%97%E5%87%A6%E7%90%86%E3%81%A7%E3%82%B9%E3%82%A4%E3%83%83%E3%83%81%E3%82%84%E5%A4%89%E6%95%B0%E3%82%92%E6%93%8D%E4%BD%9C%E3%81%99%E3%82%8B%E3%81%A8%E9%87%8D%E3%81%8F%E3%81%AA%E3%82%8B

【ツクールMV Tips】ゲーム動作軽量化に潜むsetValueと$gameMap.refresh()の罠(terunon様)
http://ch.nicovideo.jp/terunon/blomaga/ar988845

ツクールMVでズームイン/アウトする方法

◆ツクールMVでズームイン/アウトする方法

ツクールMVでズームイン/アウトする方法です。
イベントコマンドでは実装されていないため、スクリプトで実行する必要があります。

参考:
https://www.youtube.com/watch?v=MO4Zz50WPCM

$gameScreen.startZoom(x,y,scale,duration);
()内:X座標、Y座標、ズーム(1が等倍)、遷移時間(フレーム数)

プレイヤー中心に2.5倍ズームの場合
$gameScreen.startZoom($gamePlayer.screenX(), $gamePlayer.screenY(), 2.5, 60);

■X,Y座標に使う記述例
・プレイヤーのX座標、Y座標
$gamePlayer.screenX()
$gamePlayer.screenY()

・イベントIDのX座標、Y座標
$gameMap.event(イベントID).screenX();
$gameMap.event(イベントID).screenY();

■実際の使用例
・イベントIDに向けて画面スクロール
$gameScreen.startZoom($gameMap.event(イベントID).screenX();, $gameMap.event(イベントID).screenY();, 1, 60);

・x,y座標へ瞬間拡大/縮小
$gameScreen.setZoom(x,y,scale);

・ズーム処理を初期化
$gameScreen.clearZoom();

・変数を使いスクリプトで記述する場合
var xPos = $gameMap.event(イベントID).screenX();
var yPos = $gameMap.event(イベントID).screenY();
var zoomScale = ズーム比率;
var zoomDuration = 遷移フレーム;
$gameScreen.startZoom( xPos, yPos, zoomScale, zoomDuration);

2018年03月04日

GIMPでRPGツクールMVのタイルセットを編集する方法

◆GIMPでRPGツクールMVのタイルセットを編集する方法
GIMPを使ってタイルセットをカスタマイズする方法です。


【必要なもの】
・GIMP(フリーソフト)
https://www.gimp.org/
・コピー元のタイルセット、コピー先のタイルセット

GIMPはグラフィック編集のフリーソフトです。
日本語に対応かつ、ユーザー数が多いため機能追加(プラグイン)が進んでおり、WEBで簡単に情報が見つかります。
ここではタイルセットの編集に特化した操作だけを書きますので、躓いた方は学習兼ねて調べてみてください。


【手順】
1.編集-設定を開く
gimp_20180304_11.jpg
2.それぞれ次の設定を保存する
新しい画像の設定:幅768 高さ768
A1A2タイル:768×576
A3タイル:768×384
A4タイル:768×720
A5タイル:384×768
B〜E:768×768

謝辞:どらぴか様
https://dorapika.wixsite.com/pikasgame

gimp_20180304_2.jpg
グリッド:幅48 高さ48
gimp_20180304_3.jpg
画像ウィンドウ-表示スタイル:グリッドにチェック
gimp_20180304_4.jpg

1~2は最初だけ必要な設定です
ここからは毎回必要な操作です。


3.コピー元とコピー先のタイルセットをそれぞれ「開く/インポート」で開く
gimp_20180304_8.jpg

4.表示-グリッドにスナップにチェックを入れる
この設定はコピー先、コピー元両方で必要です
gimp_20180304_5.jpg

5.コピー元のタイルセットを開き、Ctrl+Cでコピーする
グリッドに沿うように設定されているので楽にコピーができます
gimp_20180304_6.jpg

6.コピー先のタイルセットを開き、Ctrl+Vで貼り付け後、ドラッグで移動する
GIMPの移動操作はクセがありますので…慣れてください
gimp_20180304_7.jpg

7.コピー先のタイルセットをファイル→エクスポートで保存する
バックアップ済みであれば上書きエクスポートで進めた方がいいです

Tips:
RPGツクールMVを起動しておき、コピー先のタイルセットを組んだマップ画面を用意しておきます。
この状態で上書きエクスポート後にマップ選択を切り替えるとすぐに反映が確認できます。
例.マップ1F→マップ2F→マップ1Fのように切り替えると、マップ1Fのタイルセットが更新


画像編集ができると表現の幅が広がりますので、気になった方はチャレンジしてみてください。

YEP Extra Enemy Drops/Overkill Bonusを活用したアイテムドロップで難易度調整

YEP Extra Enemy DropsとOverkill Bonusの組み合わせ、アイテムドロップを活用した難易度調整を実装しました。これはバトルの内容(使用ターン、オーバーキルの有無)からプレイヤーさんに適切なフォローを入れるというものです。


【使用プラグイン】
・YEP Battle Engine Core
http://yanfly.moe/2015/10/10/yep-3-battle-engine-core/
・YEP Extra Enemy Drops
http://yanfly.moe/2015/12/19/yep-47-extra-enemy-drops/
・YEP Overkill Bonus
http://yanfly.moe/2017/03/03/yep-127-overkill-bonus-rpg-maker-mv/

利用方法の詳細については各リンクをご覧ください。


【注意点】
・プラグインの並びは次の順としてください
「YEP Battle Engine Core」
「YEP Extra Enemy Drops」
「YEP Overkill Bonus」
・IDの代わりにデータベース名(potionなど)も扱えますが、日本語がサポートされていない可能性もあるのでIDで指定する方が無難です
※これは海外プラグイン共通の注意事項です


【使用方法】
「YEP Extra Enemy Drops」と「YEP Overkill Bonus」は敵キャラクターのメモ欄で設定します。
20180303_3.jpg


【実例】
ブログの仕様上「<」がタグとして判定されるため、画像で紹介します。
20180303_4.jpg


【意識したポイント】
■雑魚モンスターのランク(シナリオの進行)ごとに共通のアイテムドロップテーブルを設定

 例.
 ランク1は物理の殴り合いがメイン→HP回復アイテムのドロップ率を高めに設定
 ランク2は物理耐性の敵が出てくる→MP回復アイテムを微割合で設定
 ランク3は状態異常を使いはじめる→状態異常回復アイテムを設定
 ※状態異常を使う敵には個別で状態異常回復アイテムのドロップ率を高めにする

順番としては逆ですが、ランク1のモンスターには状態異常、物理耐性を使わせないというバランス設計の目安にもなります。

■雑魚戦ではプレイスタイルにあわせたフォローを入れる

 例.
 ・バトルクリアに時間がかかるビギナーor低レベル→回復アイテムのドロップ率を高めにする

一方でレベル上げ時の火力型プレイスタイル、ダンジョンアタック時の温存型プレイスタイルにあわせたフォローをするときはベクトルを微妙にズラすことも大切だと感じました。

 例.
 ・火力型プレイスタイルでモンスターを倒すとMP回復アイテムのドロップ
  →高火力スキルの連続戦法が成立してしまう。
   イオナズンからの魔法の聖水がぶ飲み的な…

この場合は気付かれにくい効能の戦術系アイテム(バフ系)を割り当てると良いと思います。
「お試し」して貰うことでプレイスタイルに広がりを持たせられるきっかけになれば良いですよね。

■ボス戦では次の指針を提示する or プレイスタイルを強化する
ボス戦は討伐情報を読み取ることでプレイヤーが必要としている or 必要な情報を間接的に与えるチャンスだと思います。

 例.ボス戦の討伐ターンを基に設定
 ・短いターンで討伐→次ランクの武器を先行して入手//ダメージが増える楽しみを強化
 ・長いターンで討伐→次ランクの防具を先行して入手//やられにくくなることで防具の重要性をレクチャー

単純ですが、次ステージ(ランク)への導入として使うのは良い案だと思っています。


YEP Extra Enemy Dropsの機能を見ると、某市販作品のシステムが再現できることがわかります。

 YEP Extra Enemy Drops
 http://yanfly.moe/2015/12/19/yep-47-extra-enemy-drops/

機能から逆引きすることで、データベース側に還元するアイディアも生まれやすくなります。
これは制作を楽しむ秘訣かもしれませんね。
以上、ご参考になりましたら幸いです。