僕の・私の制作テクニック!

terunon

モデレーター
スタッフ
モデレーター
制作上便利なテクニックについて、ここで書いたり教えあったりしてお互いの制作に活かしませんか?
メモ書きのように使ってもよし、質問に使ってもよし。
まずはここで色々お話してみて、(たとえば質問系と備忘録系で分けるなど)
内容を細分化した方がよくなってきたら住み分けて行きましょう~。

まずはわたしから、制作上ちょっと役に立つテクニックを紹介します。



■スクロールウェイト
イベントコマンドのマップのスクロールで「0マス」のスクロールを入れると、
直前の画面スクロールが終わるまでウェイトがかかります。
1/4速の1マススクロールなどと合わせると、ちょっとした間の演出に便利ですね。

■ルート移動ウェイト
イベントコマンドでスクリプト:this.setWaitMode('route') と入れると、
移動ルートの強制の「☑完了までウェイト」の効果を後付けすることができます。
つまり、歩きながらしゃべらせつつ、会話が終わったらちゃんと移動終了まで待つ、などができます。

■オートタイルをせずにマップ描画
マップエディタでShiftキーを押しながらクリックすると、オートタイル(壁や床の形、影を自動で合った形にする)を
無効化して描画することができます。
これを知っていると、物陰になっている部分の壁なども正確に描画することができます。
右クリックのタイルコピーと組み合わせて、うまく使いましょうー。

■バトルイベントでバトルログに直接文字列を書き込み
スクリプト:BattleManager._logWindow.push("addText", "ハロルドは戸惑っている様子だ。")
と入れると、バトルログに直接好きな言葉を書き込むことができます。
バトル中以外のときに使うとエラーになるので注意です!
 

kuro

フォーラムスタッフ
良いスレッド、ありがとうございます(立ててくださると思ってました…!)。
私からも簡単に実装できるテクニックをご紹介します。

■マップ画面でプレイヤーに見せたくないイベントを実行する


◆画面のフェードアウト
◆場所移動:
 ★プレイヤーに見せたくないイベントを設定
  ◆透明状態の変更
  ◆隊列歩行の変更
  ◆隊列メンバーの集合
  ◆タイルセットの変更
  ◆遠景の変更
  ◆画面の色調変更(朝/夕焼け、夜)
 ★ここまで

◆画面のフェードイン

■ゆっくりと画面が暗転して場面が変わる演出

◆画面の色調変更:(-255,-255,-255,0), 90フレーム (ウェイト)
◆場所移動:
◆画面の色調変更:(0,0,0,0), 90フレーム (ウェイト)

・90フレーム:通常→イベントへ切り替わりを強調

■過去の場面を回想する演出

◆画面の色調変更:(-255,-255,-255,0), 120フレーム (ウェイト)
◆場所移動:
◆画面の色調変更:(34,-34,-68,170), 120フレーム (ウェイト)

・120フレーム:現在→過去、あるいは距離感に応じてフレームの長さを調整しています(お好みで調整してください)
・既にプレイヤーが聴いているBGMをピッチ下げ(100→80%)、音量下げ(90→60%)することで、違いを演出できます

kuro2.gif

■階段の登り下りの演出

例.登り階段の場合

◆SEの演奏:Move1 (90, 100, 0)
◆移動ルートの設定:プレイヤー
:        :◇移動速度:3
:        :◇上に移動
:        :◇移動速度:4

◆場所移動:次のマップ (向き: 上)
◆移動ルートの設定:プレイヤー (ウェイト)
:        :◇移動速度:3
:        :◇上に移動
:        :◇移動速度:4


・赤字の部分は階段の段差のために歩行スピードが低下する演出です
・青字の部分をイベント予約しておくことで、マップ移動後にゆっくりと一歩進む「階段を上がってきた演出」です

kuro1.gif

ちょっとした一工夫が作品の雰囲気づくりになります。
ぜひご参考になれば幸いです~。
 
ツクール2000の時代から、いろいろと体得して行ったので、経験則上、役に立ちそうなのをいくつか。

■データベースやイベント編集中は、頻繁に「Alt + A」を押す
ツクールMVでは注意が出るが、更新した後に間違ってキャンセルを押して、変更が水の泡に……
というのを防ぐために、常時、最新の状態を反映するのに役立ちます

■イベントの移動速度を、例えば4と5の中間くらいの速度にしたい場合
「移動ルートの設定」の「スクリプト」で例えば、以下のように書きます。
RGSS: @move_speed = 4.3
MV: this.setMoveSpeed(4.3);
このように、小数点付きで、きめ細かい移動速度が設定可能です。

■MV:「スクリプト」や「プラグインコマンド」でF1を押すとプラグインのヘルプが見られる
わざわざやりたい処理をテキストエディタにコピー&ペーストする必要が無く、大変便利です。

■「条件分岐」で変数の値が、「複数の値のうちのどれか」と等しい場合の判定方法
例えば、変数55番が、「1,7,12,56,77」のどれかである場合の判定は、
通常は5回、条件分岐の判定を行う必要がありますが、
分岐条件を「スクリプト」にして、以下のように書くことで1回で判定可能です。
RGSS: [1,7,12,56,77].include?($game_variables[55])
MV: [1,7,12,56,77].contains($gameVariables.value(55))
 

Izunabi

ユーザー
私からもいくつか。大したものでもないのですが。

■スクリプトコマンドを使わず、「歩きながらしゃべりつつ歩き終わるまでウェイトをかける」方法

◆移動ルートの設定:ヘニー_初回EV用
:        :◇下に移動
:        :◇下に移動
<<移動内容中略>>
:        :◇右に移動
:        :◇右に移動
:        :◇スイッチON:0001
◆文章:5ori_mob(1), ウィンドウ, 下
:  :\n<\v[19]>はいはい、ただいま!
:  :ったく、お父さん。さっきから声、うるさいよ。
:  :静かに呑んでるお客さんもいるんだし、
:  :少しは声をおさえてよね。
◆文章:9ori_mob(5), ウィンドウ, 下
:  :\n<\v[20]>ははっ! そりゃスマンかったな!
◆フキダシアイコンの表示:宿屋の主人_初回EV用, 沈黙
◆フキダシアイコンの表示:泊り客_EV用, 音符
◆ループ
◆条件分岐:#0001がON
◆ループの中断

:分岐終了

:以上繰り返し

◆スイッチの操作:#0001 = OFF

移動ルートの設定の最後に、使い回し用の制御用スイッチ(何番でも構いません)をONにするよう設定し、ウェイトをかけたいところでループ。ループの中で、制御用スイッチがONならループ中断、とすることで、「しゃべり終わっても移動が未完了ならウェイト、しゃべり終わっていればノーウェイト」となります。
但し、制御用スイッチは、直前または直後にOFFにするのを忘れないように。


■ゲーム内の時間帯によって屋内のカーテンを開け閉めする
ゲームによっては、プレイ中に夜間になったり、夕方になったりするかと思います。
その際、屋内マップの窓を、「日中は開いていて、夜になると閉じる」ようにします。
小技というよりは、ちょっとした芸の細かさのアピールポイントとして機能するような感じですが。

条件なしで「開いた状態の窓」グラフィック、夜間制御スイッチONの場合で「カーテンを閉じた状態の窓」グラフィックのイベントを設置。(この窓チップは上下に分かれているので、上下に設定する必要がありますが)
upload_2017-4-30_16-48-30.png

upload_2017-4-30_16-50-31.png
こんな感じで窓の上下をイベントとして設定して、スイッチ0002「夜間制御中」のON/OFFを切り替えることで

昼間(夜間制御中スイッチがOFF)
upload_2017-4-30_16-54-7.png

夜(夜間制御中スイッチがON)
upload_2017-4-30_16-54-33.png
↑は酒場なのでカーテンを閉めるだけにしていますが、一般家庭なら場合によっては暖炉の火なんかも消しておくとベターかと思います。


■町の住人一人一人に名前を設定する場合の手抜き方法
◆変数の操作:#0020 tempVal_10(人名リザーブ) = '宿屋の娘ヘニー・ロウソン'
◆変数の操作:#0019 tempVal_9 = '宿屋の主人ガーグ・ロウソン'

◆文章:5ori_mob(1), ウィンドウ, 下
:  :\n<\v[20]>このお部屋の修理が終わったら、また来て
:  :ください。その時は、無料でお泊めしますから。
:  :……だから、この宿のこと、悪く思わないで
:  :ほしいです。悪いのは、お父さんですから!
◆文章:9ori_mob(5), ウィンドウ, 下
:  :\n<\v[19]>ははっ! なんだか悪口を言われている
:  :みたいな気がするぞ!
◆画面のシェイク:9, 9, 20フレーム
◆文章:5ori_mob(1), ウィンドウ, 下
:  :\n<\v[20]>悪口を言ってるのよ、お父さん!
◆文章:9ori_mob(5), ウィンドウ, 下
:  :\n<\v[19]>ははっ! 反抗期ってヤツか!
◆文章:5ori_mob(1), ウィンドウ, 下
:  :\n<\v[20]>……すみません、あんな父で。
◆変数の操作:#0019 tempVal_9 = 0
◆変数の操作:#0020 tempVal_10(人名リザーブ) = 0


こんな感じで、一時格納用変数を用意しておいて、会話の最初で名前を変数に格納しておくことで、会話時に、最初に設定した名前が使われます。
upload_2017-4-30_17-1-3.png
なお、基本的に会話が終わったらゴミになる変数ですので、イベント終了時にクリアしておいた方がよいかと思います。(特にブラウザ版だとセーブデータを圧迫します)

欲を言えば、セーブデータではなくプロジェクトスコープの変数があれば、そっちに全ての固有名詞や数値設定なんかを突っ込めるんですけれど……

■DoT系状態異常の効果を、ボス相手にはマイルドに調整する
毒などの状態異常で、HP再生率-10%などはよくあるかと思いますが、ターンごとHP10%ダメージというとボス相手にはちょっと強すぎて、成功率を極端に抑えるか、そもそも効かないかにしているようなボスをよく見ます。
が、「ザコ・味方が受ける用の毒」と「ボスに効く毒」と2種類用意することで、「ボスにも効くが、強すぎない毒」なんかを作れます。

上:普通の毒
下:ボス限定の毒 ※ここでは「中毒」という名前を使用しています
upload_2017-4-30_17-36-31.png

ボスの状態異常耐性 ※ここではDoTのある状態異常を「出血」「中毒」「火傷」の3種類用意しています
通常のDoT状態異常は無条件で無効化します。ボス限定のDoT状態異常のステート有効度はお好みで。
upload_2017-4-30_17-11-5.png
ザコの状態異常耐性では、これとは逆に「ボス限定〇〇」をステート無効化にしておきます。

技術的なものというよりは、どうしても小手先の技になってしまっていますが……
 
最後に編集:

Izunabi

ユーザー
さらについでで。相変わらず画期的!すげえ!みたいな内容はありませんが。

■スキルの説明に変数を使用して表示させる
スキル説明には変数が使えます。ですので、こんな感じの変数を入れた説明文のスキルを作って
upload_2017-5-2_13-8-35.png

イベントで対応する変数に文字列を追加します
◆変数の操作:#0017 拠点間移動文字列 = 'ペグジェリアンの森―野営地―潤いの野―魔神の在った地'

スキル説明に反映されます
upload_2017-5-2_13-11-47.png

あんまり移動先が多くないタイプのルーラの移動先や、変数に突っ込んである何らかのリソースの残数なんかを表示させたい場合などには割と重宝するかも知れません。しないかも知れません。

■死にパラメータになりがちな「運」を別の用途に使用する
初期設定では「運」は、一応様々な成功判定に関わってくるのですが、効果が不透明かつ運が高くても目に見える影響が大きいわけでもなく、割と死にパラメータになりがちです。
そこで、「運」の項目をそもそも全く別のパラメータとして使用します。

そのためには、まずコアスクリプトの運の影響の判定ファンクションを改修します。

rpg_objects.js にある

Game_Action.prototype.lukEffectRate = function(target) {
return Math.max(1.0 + (this.subject().luk - target.luk) * 0.001, 0.0);
};


これを

Game_Action.prototype.lukEffectRate = function(target) {
// return Math.max(1.0 + (this.subject().luk - target.luk) * 0.001, 0.0);
return 1.0;

};

こう修正してしまうことで、「運による影響はなし」にできます。
ただし、コアスクリプトを修正するのは割とリスキーかつコアスクリプト入れ替えの度に修正が必要になってきますので、自作のプラグインにしてしまうのが手っ取り早いです。(これについては後述します)

その上で、「運」のパラメータを、データベースの「用語」覧から適当な名前に変更します。
例として、「武器習熟」という名前にしてみました。
upload_2017-5-2_13-27-47.png
で、このパラメータをどう使うかというと、まあご自由にではあるのですが、たとえば各種武器攻撃(通常攻撃含む)の倍率として機能させることができます。
ダメージ計算式の例:
(a.atk - b.def) * (a.luk/100)
↑の場合、「武器習熟」は100を基準として、「武器習熟」がそのままダメージ倍率になります。(武器習熟が200あると2倍ダメージ、50しかないと半分のダメージ)


■その他、いじっておく場所を知っておくと便利なコアスクリプトの処理
・逃走の成功判定

rpg_managers.js の BattleManager.processEscape = function()

例)逃走を確実に成功させる場合
BattleManager.processEscape = function() {
$gameParty.performEscape();
SoundManager.playEscape();
var success = this._preemptive ? true : (Math.random() < this._escapeRatio);

//常にtrueにする
success = true;

<<以下省略>>

他にも、逃走の成功率を倍がけしたりなど、判定式自体を変更できます。

・不意打ち発生、先制攻撃発生判定
rpg_objects.js

Game_Party.prototype.ratePreemptive : 味方の先制攻撃
Game_Party.prototype.rateSurprise : 敵からの不意打ち

常に「rate = 0;」としてしまえば先制攻撃や不意打ち自体が発生しなくできますし、先制率アップ・不意打ち禁止の効果を任意で増減可能です。

・ランダムエンカウンター方式の敵との遭遇歩数
rpg_objects.js
Game_Player.prototype.makeEncounterCount

Game_Player.prototype.makeEncounterCount = function() {
var n = $gameMap.encounterStep();
this._encounterCount = Math.randomInt(n) + Math.randomInt(n) + 1;
};


上記のとおり、「0~設定された歩数」+「0~設定された歩数」+1歩で敵と遭遇します。
これだと運が悪いと1歩歩いただけで敵と遭遇してしまいます。
これを任意に修正できます。例としては
(「0~設定された歩数」+「0~設定された歩数」+「0~設定された歩数」+「0~設定された歩数」) / 2
とかにして分散を抑えるとか、最後の「+1」の部分を「+10」にして「最低10歩は敵が出現しない」変更するなどです。

・TPの溜まり方や初期値など
けっこう、TPを採用している作品でも、TP引継ぎなしで、TPの初期値をツクールMVのデフォ任せ(25までランダム)にしている作品を見かけます。
TPスキルが強力であればあるほど、初期値がランダムというのはゲームバランス上、けっこうな悪影響を及ぼしてしまいますので、この辺を修正します。

rpg_objects.js Game_Battler.prototype.initTp

これを
Game_Battler.prototype.initTp = function() {
this.setTp(0); // TPは0から
};

こうすることで、「戦闘開始時、常に0から」となります。もちろん初期値はお好みで。
あるいは、コアスクリプトを使わずとも、敵グループの0ターン目の共通イベントでTP操作してもいいかも知れません。
たとえば、「まずアクターのTPをマイナスして0にしておく」「アクターのレベルを変数に突っ込んだ上で、アクターのTPをレベル変数ぶんだけ増やす」ことによって、「TP初期値がレベルと同じ」といった具合に調整できます。

ついでに Game_Battler.prototype.chargeTpByDamage もいじっておけば、ダメージを受けた際のTPの溜まり具合を調整できます。(私はダメージを受けた際のTPの回復は廃止し、能動的にしか溜められないようにしています)

・常に、ステート有効度による抵抗をさせる
ツクールMVのコアスクリプトのバージョンによっては、「必中攻撃でステート付与効果ありの場合、ステート有効度を参照しない」とかそんな感じの謎仕様があります。
再発されても困るので、プラグインに切り出して、「必中攻撃(isCertainHitがtrue)だろうが何だろうが常にステート有効度による抵抗を有効にする」としてしまいました。

rpg_objects.js

Game_Action.prototype.itemEffectAddAttackState
及び
Game_Action.prototype.itemEffectAddNormalState

この辺のプラグイン関連については、「IZNB_SelfCustom.js」という形でまとめて添付しています。
かなりやっつけで、「とりあえず自分が使えればそれでいいや」って感じのやる気の感じられないプラグインではありますが、難しい修正は入れていないので、ぱっと見で分かるかと思います。

こんなところで。
 

Attachments

  • IZNB_SelfCustom.js
    4.1 KB · 閲覧: 37
最後に編集:

くらむぼん

モデレーター
スタッフ
モデレーター
私からも、イベントコマンドの「スクリプト」を使った簡単で便利なテクニックをいくつか紹介させて頂きます!

■「キーが押された瞬間」だけ条件分岐
「条件分岐」コマンドの「ボタンが押された時」はボタンが押されている間はずっと分岐し続けますが、
そうでなく「ボタンが押された瞬間」だけ条件分岐したい場合のテクニック。
条件分岐の「スクリプト」欄にInput.isTriggered('ok')と書けば「決定キーが押された瞬間」だけ条件分岐します。
キャンセルキーにしたい場合はokの部分をcancelに書き換えればオーケーです。
(その他にup, down, left, right, pageup, pagedownなども可能です)

■ルート設定で「指定したキャラクターの方へ歩く」
ルート設定の「スクリプト」欄にthis.moveTowardCharacter($gameMap.event(1))と書くと、
なんと通常のルート設定では命令できないはずの
「イベントID:001のマップイベントに向かって(一歩)歩く」という機能を実現できます!
また指定したマップイベントから遠ざかりたい場合はmoveTowardCharacterの部分を
moveAwayFromCharacterに書き換えれば実現可能です。
同様に指定したマップイベントの方を向く場合はturnTowardCharacter、
指定したマップイベントの逆を向く場合はturnAwayFromCharacterで出来ます!

発展:もっと特殊な使い方としてマップイベント指定ではなく座標を直接指定するパターンもあります。
this.moveTowardCharacter({x: 3, y: 4})で座標(3,4)に向かって(一歩)歩くという移動ルートに、
this.moveTowardCharacter({x: $gameVariables.value(1), y: $gameVariables.value(2)})で
座標(変数1番,変数2番)に向かって(一歩)歩くという移動ルートになります。

■バトルイベントで文章の表示中にステータスウィンドウを隠しておく
バトルイベントで会話などのために文章の表示はよく使いますが、
その会話の間でアニメーションを表示したりして文章の表示が途切れると
その間だけちらっと体力バーなどの表示されているステータスウィンドウが戻ってきて、また文章が出ると隠れます。
これは私としては非常にダサいと思ってるのですが、対策法があります。

バトルイベントの中でイベントコマンドのスクリプトを用いて
スクリプト:BattleManager._statusWindow.hide();
と記述するとステータスウィンドウを隠すことができます。
つまり、会話が途切れてもステータスウィンドウが現れたりはしません!

ただし、イベントの後に戦闘が続く場合は会話を終えた後に
スクリプト:BattleManager._statusWindow.show();
と記述してステータスウィンドウを再び見えるようにしておきましょう。
 

kuro

フォーラムスタッフ
始めたばかりの方向けに、便利なテクニックを2つご紹介します。

■『移動ルートの設定』で便利なテクニック


・イベントIDにキャラクター名のイニシャルなどを付けることで
「移動ルートの設定」で対象とするイベントを見つけやすくなります
20170503-8.jpg

20170503-6.jpg

■オートタイルを使ったテクニック

・使わないマップのスペースに5×5マスの端欠けタイルを設置
 (5×5マスの端欠けにすることで淵を全て揃えることができます)
20170503-7.jpg

・右クリックでコピー後、崖の淵部分にShiftキーを押しながら貼り付け
 このスレッドの一番はじめにある『■オートタイルをせずにマップ描画』の内容です
20170503-9.jpg
 

トロぼう

ユーザー
■ゆっくりと画面が暗転して場面が変わる演出

◆画面の色調変更:(-255,-255,-255,0), 90フレーム (ウェイト)
◆場所移動:
◆画面の色調変更:(0,0,0,0), 90フレーム (ウェイト)

・90フレーム:通常→イベントへ切り替わりを強調

ゆっくりと暗転させるにはピクチャを使う方法もあります。
やり方は、まず真っ黒で画面と同じサイズのピクチャを用意し、ピクチャの100番目に不透明度0で待機させておきます。
そして暗転させたい時はこのピクチャを適当なフレーム数で不透明度255にするだけです。

実は色調変更はピクチャには適用されないので、もしピクチャを使っているゲームの場合ピクチャだけ暗転せず画面に残ってしまうのですが、ピクチャで暗転させる方法なら全て含めて暗転させられます。
また、単純なフェードアウトではなく画面上方向からシャッターのようにストーンと被せたり、工夫次第で少し変わった暗転演出にも使えます。
 

ツミオ

ユーザー
同一マップ内でプレイヤーの位置を変更する
プレイヤーの位置を変更する場合、普通はイベントコマンドの《場所移動》をつかいます。
ですがこの《場所移動》コマンドを実行した場合、同一マップ内であっても《マップ名の表示》機能が実行されるようです。
何らかの理由で《マップ名の表示》をしてほしくない場合、同じくイベントコマンドの《マップ名表示の変更》をOFFにする必要があります。

1つや2つのイベントで《マップ名の表示》をONにしたりOFFにしたりするのは管理するのも問題ないですが、200個300個とイベントを管理するようになった場合、本来表示されるべきシーンで《マップ名の表示》がOFFになっていたり、逆に表示してほしくないシーンで《マップ名の表示》がされたりするかもしれません(主にケアレスミスによって)。

そこで僕がオススメするのが以下のスクリプトです。

コード:
$gamePlayer.locate(x座標,y座標);

使用例:
コード:
$gamePlayer.locate(10,20);
結果:
プレイヤーのx座標が10、y座標が20に変更


これはプレイヤーのx座標とy座標を(現在のマップに対して)変更するだけのスクリプトで、他には特に何のアクションも起きません。
何らかの理由で《マップ名の表示》をしてほしくない場合でかつ、プレイヤーの位置を変更させたい場合に試してみてください。

ちなみにですが、座標変更後のプレイヤーの向きを指定したい場合
コード:
$gamePlayer.setDirection(向き);
を併用してください。
2が下向きで、4が左向きで、6が右向きで、8が上向きです。

おまけ
イベントの位置を変更したい場合、大抵の場合は《イベントの位置設定》コマンドで事足ります。
ですが「イベント1~10を横一列に並べたい」といった場合、一つ一つ設定するのは手間です。
そんなときに便利なのが以下のスクリプトです(上記のスクリプトをちょっと変えただけです)。
コード:
$gameMap.event(イベント番号).locate(x座標,y座標);
これをループで回せば簡単に位置を設定できます。

使用例:
コード:
for(var i = 0, event_id = 1; i < 10; i++){
     $gameMap.event(event_id + i).locate(10 + i,20);
};
結果:
イベント番号1から10のx座標が10~20、y座標が20に変更

使用方法:
そのままコピー&ペーストしてから、「event_id = 1;」の1起点となるイベント番号に変更してください。
また、「for(var i = 0, event_id = 1; i < 10; i++)」の10終点となるイベント番号に変更(event_idを足します)してください。


他にもっといいやり方があれば、ぜひ教えてください。
僕も知りたいです。
では~。

*あんまり詳しく検証していないので、バグったり挙動が変になったらすみません。
*間違っていたり、「こうした方がいいよ」という部分があったら修正してください。
 
最後に編集:

枢おとめ

ユーザー
[MV]
調べれば出てくるものですが、私は探すのにちょっと手間取ったので紹介させて頂きます。

■変数に特定の文字列が含まれているかどうか判定する方法
条件分岐でスクリプトを選択し、
~$gameVariables._data[100].indexOf('こんにちは')

上記のように入力すると、"変数100番に「こんにちは」という文字列が含まれているとき"
といった条件分岐を作成することが出来ます。
 
枢おとめさん、こん**は。
なかなか便利な機能のご紹介、ありがとうございます。僭越ながら補足を。
好みにもよりますが、以下のように書くとよりシンプルに書けますよ!

$gameVariables.value(100).contains('こんにちは')

ここで、contains とは、rpg_core.js でString.prototype.contains として定義されており、
「その文字列が含まれているか」をずばりboolean(true/false)で返してくれます。
分かりやすくなるため、こちらもご検討ください。
 

OPUWA

ユーザー
テクニック以前の部分かもしれませんが、方眼紙、方眼ノートを買っておくことをお勧めいたします。
ツクールMVは17×13マス、816×624ピクセルなので、
それに相当する長方形をノートに書けば、
インターフェース設計と、メモ書きができます。
自作システム(特にメニュー画面)を作る上では非常に有効でした。

また、マップデザインを行う上でも非常に便利でした。
マップと言っても、一つのマップの詳細を方眼紙の上で設計するわけでは無く、
プレステ時代のバイオハザードのようなマップをノートに描く形で使いました。
各エリアのつながり(鍵や一方通行の有無)や、ここには何を設置する ということをメモするだけで、
大型ダンジョンなどの作成に大いに役立つと思います。
 

まるちゃん

ユーザー
ちょーザックリしてるけれど
” できないことはやらない ”

例えばマップが作れなくてゲーム制作が止まるなんて考えないで
マップが作れないならマップを使わないゲームに工夫しようって感じ…

テクニックっていうのかな?
でも自分はこういうふうに発想を切り替えたらゲームが作りやすくなりました
 

しんぞ

ユーザー
ちょーザックリしてるけれど
” できないことはやらない ”
すっごくわかります。
「雑魚敵作るのめんどくさかったらネタに走る」とか
「テストプレイがめんどくさくなったら街のマップをコンパクトに描き直す」とか
妥協じゃなくて工夫なんだぜ、という気持ちで
楽しみながら作れる箇所以外はバンバン削っちゃたり。
一人でしこしこ作るには限界がありますしね。
 
ちょーザックリしてるけれど
” できないことはやらない ”

例えばマップが作れなくてゲーム制作が止まるなんて考えないで
マップが作れないならマップを使わないゲームに工夫しようって感じ…

テクニックっていうのかな?
でも自分はこういうふうに発想を切り替えたらゲームが作りやすくなりました

自分は、町に「居住区」をおいてそこにはよそ者(プレイヤーキャラ)は入れないという
設定にすることで、モブの家を作る手間を省くということと、住民はゲームに出てこないだけで
いっぱいいるんだという演出をしているつもりです。
 
GIMPを利用したキャラチップの制作です。
「デフォルトの倒れキャラチップがイマイチなんだよな~」とか、
「地面に倒れてるキャラチップが欲しいんだよ!」なんていう人に。

※用意するモノ
・サイドビューのキャラチップ。
・576×384サイズで、全て透明化されているPNGファイル。
576x384.png  ←よろしければ、どうぞ。上記サイズの透明のPNGです。


1.まず、GIMPにサイドビューのキャラチップを編集します。
  例えばハロルド君を編集しましょう。
  下画面のように、GIMPのツールで『画像の拡大・縮小』を選択します。
  1.jpg

2.次に『画像の拡大・縮小』で75パーセントのサイズに縮小します。
  2.jpg

3.上記画像を保存し、次は先程の『576×384』のPDFに、保存したデータを合わせます。
  3.jpg

4.その画像を『0,0』の位置まで移動させます。
  画像でいうと青丸印までです。
  緑丸印をしているルーペのツールで拡大すると、やりやすいです。
  画像を移動させるのは、赤丸印の十字に矢印の付いたツールをクリックし、
  黄色い囲いの中の画像をクリックすれば動かせます。
  黄色い点線を端に合わせるのがコツです。
  4.jpg

5.あとは保存して、出来上がり!
  これをゲームに組み込むと・・・
  5.png
  こんな感じに! どうですかね~?
 
MVで僕が最近編み出したテクニック。(中~上級者向け)

マップイベントのメモ欄にのプラグインコマンドを書いて、イベントコマンドから好きな条件で実行したい時には、
以下のようにスクリプトコマンドを書けば、メモに書かれたコマンドが実行される。

var n = $dataMap.events[this._eventId].note;
var s = n.split(" ");
var a = s.slice(1);
$gameMap._interpreter.pluginCommand(s[0],a);


※スペースで区切られたプラグインコマンドでしか動かないので注意!

使いどころとしては、思考錯誤のテストプレイ中にプラグインコマンド入力窓を一々開くのが面倒くさい時や、
プラグインを作っているとき、イベントを沢山置くアクションRPGなどを作る時。

また、1行目を
var n = $dataMap.events[this._eventId].name;
に変更することで、メモ欄ではなくイベント名からプラグインコマンドを実行することができるので、
プラグインによってはこのほうが管理しやすいかもしれない。

あと、コモンイベントから呼び出しても動く。(自動・並列コモンだと動かない)
 
最後に編集:
トップ