Dear!くろうどぃあ!

このブログでは、私、くろうどの趣味に関する事を記述します。
当面は、「RPGツクールMV」をメインにします。

【アドベントカレンダー2017】ラノゲツクールMV先行体験版を触って、RPGツクールMVとの違いなど……

2017-12-05 00:01:41 | RPGツクールMV
  • はじめに

さて皆さん。
この記事は、「RPGツクールMVアドベントカレンダー2017」の12月5日の記事です。

https://adventar.org/calendars/2288

この記事では、ラノゲツクールMV先行体験版を触って感じた事などを書き、どのようなツールなのか紹介できればと思います。

 

  • ラノゲツクールMV概要

さて、ラノゲツクールMVは2017年12月14日発売予定のツクールシリーズ最新作です。
RPGではなく、物語ゲームやノベル系のアドベンチャーゲーム(以下、ラノゲ)を作るためのツールです。

ですが、スクリプトを改造とまで行かずとも、ラノゲツクールMVの本来の機能だけでも、色んなジャンルのゲームが作れるようです。
サンプルとして、ブラックジャックがありました。


ちなみに、キャッチコピーは「あなたしか知らない物語は、やがてみんなの物語へ」のようです。

Twitterでも言ってる人を見かけましたが、良いコピーですよね~。

 

※以下の画像は、プロジェクトのシーン作成画面と、データベース画面。



  • RPGツクールMVとの違い

RPGツクールMVとの違いですが、RPGでは登場人物の他に武器や魔法、敵キャラクターといった「データ」に、「マップ」と発生する「イベント」を作成しますが、ラノゲでは「登場人物」を設定して「シーン」を書けば基本的には作れるので、シンプルと言えるかもしれません。

(RPGツクールMVのイベント作成だけが連続しているイメージ)

機能面では、「リスト(可変長配列)」が使える、ピクチャ番号に変数が使える、「ホットスポット」という機能で画像にクリックを受け付けられる……など、コマンドに関しては、RPGツクールMVよりも機能が豊富です。

ただし、プログラミングの知識がなければ、それらの機能が何なのか、分かりにくいかもしれません。

ヘルプだと機能名から機能の使い方を引きますが、作りたい物から機能を逆引き出来るといいかもしれません。
(そのためのフォーラムかしら?)

ツクールweb(https://tkool.jp/

 

  • ラノゲツクールMV入門

さて、ラノゲツクールMVを使って、普通にラノゲを作る場合、物語が一本道であれば必要なコマンドは、メッセージ表示、キャラクター表示、音楽再生、シーンの変更などの物語部分と演出だけでも作れるでしょう。

ここに選択肢による分岐をちょっと足しても、変数や(変数による)条件分岐、ループといったプログラミング的な要素を使わずに作れるでしょう。

これは、(ゲームを作成する難易度に関わる)ちょっとしたポイントかもしれません。


選択肢による分岐では、変数を使わなくても済むのです(ラベルやシーンに移動させる)。
つまり、プログラミングに興味がない方は、物語の流れや構成を工夫すれば、プログラミング的なコマンドを使わなくても済むのです。

※以下の画像は、選択肢の表示と、「いいえ」を選んだら選択肢をループさせている。「はい」を選ぶと次のシーンへ進む。

※上の画像で使っているコマンドに、演出系のコマンドを使うだけでも、ラノゲを作る事は出来そう。

 

  • 先行体験版で私がやった事

サンプルのブラックジャックを改造して、「クリベッジ」というトランプゲームを作っています(未完成)。

※「クリベッジ」というのは、配られたカードを相手と交互に出して役(ポーカーで言うとペアやストレートなど)を作るなどして得点を稼ぐゲームです。役として得点になる組合せが多く(カードの値を足して15になると得点になるというのが特徴的)、徐々に得点が増えていきつつ、時々高得点が得られたりして楽しいゲームです。得点のカウントにはクリベッジボードという物を使います。


ラノゲツクールMVのおかげで、画像処理はかなり楽だったと思います。

特に、「ホットスポット」という機能で、いわゆるピクチャのボタン化が出来るので、カードを選択する処理で、選択肢を表示するのではなく、カードをクリック出来るように作れました。
(画像周りは苦手意識があるのです)

※作成中の画面。

 

  • ちょっとしたアドバイス
    • インデント(字下げ)

条件やループの中身はインデントで表現するようです。
設定したコマンドで左右キーを押すと、コマンドがちょっと左右に移動するのが、それです。
慣れるまで、分かりにくいと思いますので、特にループに関しては、ラベルを使ってループさせた方が分かりやすいかもしれません。

    • リスト

リストは、RPGツクールMVには無かったコマンドです。
変数が連続した物で、RPGで言うとパーティメンバー4人全体を長さ4のリストとして、勇者ハロルドがリスト0番のデータ……という感じです。
(変数ABCDの4つをリストXの1つにまとめられると考えてください)

※リストを使う事で、スタックやキューといったデータ構造を利用する事が出来ます。

※「リストのシャッフル」というコマンドも用意されているので、カードゲームを作る時にシャッフル処理に悩む事もありません。

※以下の画像は、リストの概念を図にした物です。

 

 

  • おわりに

色々と書いてきましたが、ラノゲツクールMVは、作りたい物が明確にある人向けな気がします。

RPGツクールMVは、テキトーにデータをいじってるだけでも楽しめる部分はありますが、ラノゲツクールMVは文章を書かない事には成果物が何もないからです。

ここは、いきなりつまづく可能性があるので、気を付けましょう。
そこさえ乗り越えれば、あとは、永遠の大海原(大草原?)が待っているはずです。

それでは〜。


すごろくシステムを作ってみた【3】実装編

2017-06-19 17:35:54 | RPGツクールMV

さてみなさん。
今回は、ここまで検討した内容をツクールMV上に実装していく工程になります。

(今回が最終回です)

 


▼実装(1)マップ

こんな感じで、設計時に検討した通りに、マップイベントで埋めています。
また、次に移動する方向に合わせて、リージョンを設定しています。

マップイベントの無い左上のマス(リージョン1を設定している所)が、スタート地点です。

商人風のお姉さんは、ショップイベントです。
マスに止まった時に、話しかける(任意)事で、買い物が出来ます。


↑マップイベントも設計通りに作成します。
ポイントは、サイコロを振る(移動する)かどうかの確認を行うコモンイベントを呼ぶ事と、プライオリティをプレイヤーと同じにして、トリガーを接触にする事です。

 


▼実装(2)変数

↑今回の「すごろくシステム」で使うために用意した変数です。
それぞれについて、以下に説明します。

■[Move Counter]
サイコロ1回分の移動する歩数を管理します。
ここに既に1以上の値が入っている場合、サイコロを振らずに、その値の分だけ移動します。

■[Next Way]
次の1歩の方向を示します。
リージョンIDと対応させる事として、1~5を使用します。

■[This X]
■[This Y]
プレイヤーが居るマスの座標を取得します。
そのマスのリージョンIDを取得するために使います。

■[This Map ID]
■[Map Move Counter]
プレイヤーが居るマップIDを設定し、そのマップ内での総歩数を管理します。
それぞれのマップで、止まったマスのイベントを起こすために使います。

■[Dice Counter]
サイコロを振る時の、サイコロの追加個数です。
通常はゼロでサイコロを1個振り、1だと+1個振ります(つまり2個振る)。

 

 


▼実装(3)コモンイベント

以下は作成したコモンイベント(一部省略)です。
設計通りに作ってあるはずなので、説明は省略します。

これで、「すごろくシステム」のテスト用の実装は終わりです。
あとは、動作確認をして、想定通りの動きをすればOKです。

それでは~。


「◆Move」
移動用コモンイベント
------------------------------------------------------------
◆注釈:Set [Move Counter] before this.
◆移動ルートの設定:プレイヤー (飛ばす, ウェイト)
:        :◇すり抜けON
:        :◇移動速度:5
◆ループ
◆変数の操作:#0043 [This X] = プレイヤーのマップX
◆変数の操作:#0044 [This Y] = プレイヤーのマップY
◆指定位置の情報取得:[Next Way], リージョンID, ({[This X]},{[This Y]})
◆条件分岐:[Next Way] = 1
◆移動ルートの設定:プレイヤー (飛ばす, ウェイト)
:        :◇下に移動

:分岐終了
◆条件分岐:[Next Way] = 2
◆移動ルートの設定:プレイヤー (飛ばす, ウェイト)
:        :◇左に移動

:分岐終了
◆条件分岐:[Next Way] = 3
◆移動ルートの設定:プレイヤー (飛ばす, ウェイト)
:        :◇右に移動

:分岐終了
◆条件分岐:[Next Way] = 4
◆移動ルートの設定:プレイヤー (飛ばす, ウェイト)
:        :◇上に移動

:分岐終了
◆条件分岐:[Next Way] ≥ 5
◆変数の操作:#0041 [Move Counter] = 0
◆ループの中断

:分岐終了
◆変数の操作:#0046 [Map Move Counter] += 1
◆変数の操作:#0041 [Move Counter] -= 1
◆条件分岐:[Move Counter] ≤ 0
◆ループの中断

:分岐終了

:以上繰り返し
◆移動ルートの設定:プレイヤー (飛ばす, ウェイト)
:        :◇すり抜けOFF
:        :◇移動速度:4
◆コモンイベント:◆Stop Event
------------------------------------------------------------


「◆Check Move」

移動確認コモンイベント(マップイベントで呼び出す)
------------------------------------------------------------
◆文章:なし, ウィンドウ, 上
:  :Would you move ?
◆選択肢の表示:Yes, (No) (ウィンドウ, 中, #2, #2)
:Yesのとき
◆条件分岐:[Move Counter] ≤ 0
◆変数の操作:#0041 [Move Counter] = 0
◆ループ
◆変数の操作:#0041 [Move Counter] += 乱数 1..6
◆条件分岐:[Dice Counter] ≤ 0
◆ループの中断

:分岐終了
◆変数の操作:#0047 [Dice Counter] -= 1

:以上繰り返し

:分岐終了
◆文章:なし, ウィンドウ, 上
:  :Move \V[41] step !!
◆コモンイベント:◆Move

:(No)のとき

:分岐終了
------------------------------------------------------------

「◆Stop Event」
止まったマスでイベントを起こすコモンイベント(1)
------------------------------------------------------------
◆変数の操作:#0045 [This Map ID] = マップID
◆条件分岐:[This Map ID] = 6
◆コモンイベント:◆Event 6 Test Map

:分岐終了
------------------------------------------------------------


「◆Event 6 Test Map」
止まったマスでイベントを起こすコモンイベント(2)
------------------------------------------------------------
◆条件分岐:[Map Move Counter] = 1
◆文章:なし, ウィンドウ, 上
:  :Get Gold 1000 !!
:  :And next dice plus 2 !!
◆所持金の増減:+ 1000
◆変数の操作:#0047 [Dice Counter] = 2

:分岐終了
◆条件分岐:[Map Move Counter] = 8
◆文章:なし, ウィンドウ, 上
:  :Next Step is 6 !!
◆変数の操作:#0041 [Move Counter] = 6

:分岐終了
◆条件分岐:[Map Move Counter] = 14
◆戦闘の処理:Sample
:勝ったとき

:逃げたとき

:負けたとき

:分岐終了

:分岐終了
◆条件分岐:[Map Move Counter] ≥ 22
◆文章:なし, ウィンドウ, 上
:  :Sugoroku goal !!
◆場所移動:STAR_LAND (8,9) (向き: 下)

:分岐終了
------------------------------------------------------------

 


すごろくシステムを作ってみた【2】設計編

2017-06-19 10:13:03 | RPGツクールMV

さてみなさん。
この「すごろくシステムを作ってみた」ですが、なんか長くなりそうなので、今回は設計編です。
見切り発車で書いているので、何回で終わるかは分かりません。

ちなみに、「はじめに」→「要件定義」→「設計」→「実装」→「動作確認(試験)」という順番になると思いますが、実際には所々で前工程に戻っていたり、思い付いた事を先攻して動作確認したりします。

要するに、めっちゃトライ&エラーしてます……って事です。


▼設計

さて、設計では、まとめた要件を実際にツクールで、どのように実装するのかを検討する工程です。
紙に書いたり、いきなりツクール上で作り始めたり、やり方は色々あるでしょうし、私もその時々でまちまちです。

いわゆるウォーターフォール型の開発では、要件から仕様を作っていくので、それに倣って書いていきたいと思います。

●すごろくになるのは、ダンジョン部分とする。
→マップ作成時にそのように作る事とします。

●すごろくマップでは、プレイヤーは自由に動けない。
●プレイヤーが動くためにはサイコロを振る必要がある。
→なんらかの手段で、プレイヤーの移動を不可能にする必要があります。
→今回は、マップに、マップイベントを埋め尽くして、イベントの「プライオリティをプレイヤーと同じ」にする事で通行不可を作り出す……という案を思い付きました。
→また、プレイヤーが、そのイベントに「接触したらサイコロを振る」イベントを実行するという事にすれば、埋め尽くしたイベントを有効活用できそうです。

●サイコロを振ったら、その出目の分だけ移動する。
→ここはちょっと厄介です。
→進行方向が1方向だけであれば、「移動ルートの設定」の「1歩前に進む」を出目の分だけ繰り返せば済むのですが、(要件に書いてませんが)マップをダンジョンっぽくしたいので、向きの変更も出来るようにしたいです。
→今回は、リージョンを使う事で、プレイヤーが居るマスの「次に進む方向を示す」という案を思い付きました。
→移動は、イベントの「移動ルートの設定」で行う事とします。

※ちなみに、サイコロって言ってますが、サイコロを振るグラフィックを用意する予定はありません。
※内部で乱数を生成して、その結果を表示して移動させるだけです。
※見た目は地味ですが、今回はそういう仕様にする事にしてます(書いてませんが)。

●移動して止まったマスでイベントが起こる。
→これもちょっと厄介です。
→今回は、イベントの「移動ルートの設定」で移動させる事にしてますが、移動先のマスにイベントを設定していても動作しないようなのです。
→また、仮にイベントが動作するとしても、それをマップ上に設定するのは、管理が大変な気がします(イベントが起こるマスと起こらないマスが混在するため)。
→というわけで、今回は、「マス番号を設定して、移動後に、止まったマス番号に対応したイベントを起こす」という案を思い付きました。
→この案の場合、マップ内の何番目のマスで何が起こるのかをコモンイベントで一括管理できますが、例えばマップに宝箱グラフィックを置いても、番号とずれると挙動が合ってないという事象が発生する事には留意する必要があります。

●イベントが起こらないマスもある。
→前述の案の場合、単にイベントを設定しなければいいだけなので、仕様として何かをする事はないです。

●ゴールでは必ず止まる(今回は、余分な出目の分だけ戻ったりしない)。
→今回は、リージョンで進行方向を管理する事にしましたが、リージョンで必ず止まるマスも表現する事にします。
→つまり、リージョンとして、上下左右+停止の5個を使うという事です。

●ゴールに来たら、次のマップに移動する。
●止まったマスのイベントには、戦闘も含まれる。
●止まったマスのイベントには、宝箱などのアイテム入手も含まれる。
●基本的に、買い物も止まったマスでしか出来ない事にする。
→ここら辺のモノは、止まったマスのイベントとして、それぞれのイベントを起こすだけです。

●イベントによっては、次に移動する歩数が決まる。
→これは、ちょっと仕掛けをしておく必要があります。……と言っても、フラグとして、変数を用意するだけですが。
移動歩数変数を用意して、ゼロ以下であればサイコロを振る、1以上であれば、その歩数分だけ移動する……という事にします。

●歩数の決定は、アイテム使用でも可能とする。
→前述した移動歩数変数をアイテムを使用する事で変更するコモンイベントを用意すれば、実現できそうです。

●今回は、必ず止まるマスはゴールのみとする。
●ルート分岐する時は、マップを切り替える事とする。
→これは、実は後付けした、仕様を簡略化するための要件なので、実装時に、そのように作るだけです。

●今回は、戻る移動を使用しない事とする。
→これも後付け要件ですが、前述の移動歩数変数の仕組みから考えると、後でこれを追加実装するのは大変そうです。


というわけで、「設計」は、こんな事をしました。

文章ばかりな上に、ツクール上の作業に入っていないので、地味に見えるかもしれません。
頭で考えている内容をここまで書き出す事はないかもしれませんが、だいたい、こんな事を考えて作っていますよ……という一例として受け取ってもらえれば幸いです。

※なんか、当初の意図からずれて、IT業界の開発工程をツクールで説明する内容になってしまってますが、せっかくなので、開発工程っぽく続けたいと思います。

それでは~。


すごろくシステムを作ってみた【1】要件定義編

2017-06-16 22:33:16 | RPGツクールMV

さてみなさん。

ご無沙汰しております。

今回は、作成中のうちのゲームで作った「すごろくシステム」をsample的に紹介してみます。
(すごろくシステムが出来た所でゲーム作成は停滞してますが……)

もっとスマートでエレガントな方法があるかもしれません。
あくまで、うちが作った物の紹介です。


▼はじめに

そもそも、「すごろく」にしようと思ったのは、神託を受けたから(夢で見たから)なんですが、ちょっと考えてみた所、……サイコロを振ってるだけで自動的にマルチシナリオっぽくなるのではないか?……という安直な事を考えたからです。

たぶん、シナリオの文章量は、うちがいつも普通に作ってるより増えるような気がしますが……。
(いつも、たいしてシナリオを書いてない)

 


▼要件定義

まず、「すごろくシステム」に必要な要件を考えました。

●すごろくになるのは、ダンジョン部分とする。
●すごろくマップでは、プレイヤーは自由に動けない。
●プレイヤーが動くためにはサイコロを振る必要がある。
●サイコロを振ったら、その出目の分だけ移動する。
●移動して止まったマスでイベントが起こる。
●イベントが起こらないマスもある。
●ゴールでは必ず止まる(今回は、余分な出目の分だけ戻ったりしない)。
●ゴールに来たら、次のマップに移動する。

こんな感じです。
割と、すごろくの仕様をそのまま書いただけですね。
それから、以下のような要件も追加していきました。

●止まったマスのイベントには、戦闘も含まれる。
●止まったマスのイベントには、宝箱などのアイテム入手も含まれる。
●基本的に、買い物も止まったマスでしか出来ない事にする。
●イベントによっては、次に移動する歩数が決まる。
●歩数の決定は、アイテム使用でも可能とする。
●今回は、必ず止まるマスはゴールのみとする。
●ルート分岐する時は、マップを切り替える事とする。
●今回は、戻る移動を使用しない事とする。


やり方は人それぞれあると思いますが、うちは、こんな感じで、箇条書きで要件を出しています。

あと、これも人それぞれあると思いますが、「はじめに」っていう項目を重要視しています。
「はじめに」には、主に目的や方針といった「なぜそれをやるのか」という事を書きます。
これがぶれると、後々、全部やり直しになったりします。
なので、きちんと書いておきましょう。

といった所で、案外長くなったので、今回はここまでです。
それでは~。


縦長画面にしてみよう【アドベントカレンダー2016向け】

2016-12-08 13:55:48 | RPGツクールMV

■はじめに

▼この記事の位置づけ
この記事は、「RPGツクールMV Advent Calendar 2016」の12月9日の記事として投稿しています。

アドベントカレンダーというのは、クリスマスまでの期間に、1日1個オモチャが貰えるカレンダー(だったかな)がありまして……そのブログ版です。

▽RPGツクールMV Advent Calendar 2016
http://www.adventar.org/calendars/1732


▼自己紹介
ハンドルネーム「くろうど」です。
ツイッターアカウントは「@kuroudo119」です。

RPGツクールは、Windows95の頃と、PS版のツクール3を少し触った事があった程度で、間が空いて、VX、VXAce、MVと触っています。
作品と呼べるものが完成したのは、VXAceの頃で、MVではスマホで出来るという事で、Androidアプリ化をメインに考えていました。
……が、今の所、特に収入になっていないので、まず作品のクオリティをあげねば……と思ってる次第です。

▽GooglePlayの私の作者ページ
https://play.google.com/store/apps/developer?id=krd_data&hl=ja


▼この記事の内容について
当初、『「初心者のためのデフォルト値で考えるゲームバランス」を書こうと思います。』って、予告していたのですが、以前書いた記事の焼き直し予定だったので、新しいネタの方がよろしかろうという事で、『縦長画面にしてみよう』について書く事にします。
ご了承ください。

尚、以前書いたデフォルト値絡みの記事は、以下です。

▽「コレが私の能力値ダメージ表だ!」
http://blog.goo.ne.jp/kuroudo119/e/3d99473d2b02e5afc68a60a284127ca2

 


■縦長画面にしてみよう

▼縦長画面にする理由
さて、まずは、縦長画面にする理由を書いておきたいと思います。

理由は、スマホでは縦長画面の方が操作しやすい(と、私が思っている)ためです。

スマホはだいたい縦持ちの状態で操作する事が多い……という事です。
ゲームをするために、わざわざ横持ちにするのは、煩わしいかもしれません。

しかし、縦長画面の時、RPGツクールMVのデフォルト解像度では、余白が多くなります。
それと同時に、画面も中央に小さく表示されるので、タッチ操作がしづらい事が予想されます。

というわけで、縦長画面にすれば、これらの問題が解決されるかもしれません。


▼縦長画面にするには……
解像度を変更するには、プラグインを使いましょう。
(利用規約については、各プラグインの情報をご覧ください)

▽「Yanfly Engine Plugins」の「Core Engine」
http://yanfly.moe/yep/

▽「ツクマテ」から弓猫さんの「解像度変更プラグイン」
http://tm.lucky-duet.com/viewtopic.php?f=5&t=12


デフォルト解像度が、「横816×縦624」なので、「横624×縦816」になるように設定すればOKです。


▼縦長画面にするとどうなるか……
いくつかの画面は、横幅が自動で調整されますが、表示内容がずれたりしますので、適宜調整が必要です。

▽メニュー画面(解像度変更直後)


▽装備画面(解像度変更直後)


▽ショップ画面(解像度変更直後)


▽バトル画面(解像度変更直後)



▼画面レイアウトを調整しよう
画面レイアウトを調整するために、自分用のプラグインを作りましょう。
作り方は、AdventCalendar2016の12月5日の記事で紹介されているので、そちらを参照ください。

ここでは、画面レイアウトでよく変更する項目を説明します。

▽画面と設定項目



①lineHeight
1行の高さです。
メニュー画面などの「ボタン(タッチ可能な範囲)」もこの高さに合わされますので、lineHeightを大きくするだけで、ボタンが大きくなります。


Window_TitleCommand.prototype.lineHeight = function() {
    return 36 + 30;
};

※足し算しているのは、デフォルト値を残すためです……。


②Graphics.boxWidth、Graphics.boxHeight
画面全体の横幅と高さです。


Window_MenuCommand.prototype.windowWidth = function() {
    return Graphics.boxWidth;
};

※上記の場合、ウィンドウの横幅が画面いっぱいになります。


③windowWidth、windowHeight
1つのウィンドウの横幅と高さです。
表示位置ではなくて、ウィンドウの大きさになります。
これに、数値がべた書きされている場合、解像度変更によるズレの原因になりますので、表示したい行数などを計算してウィンドウの大きさを算出するのがベターです。


Window_BattleActor.prototype.windowHeight = function() {
    return Graphics.boxHeight - Window_ActorCommand.prototype.windowHeight() - Window_BattleStatus.prototype.windowHeight();
};



④maxCols
ウィンドウ内に、項目を横に何列表示させるかの値です。


Window_MenuCommand.prototype.maxCols = function() {
    return 4;
};



⑤numVisibleRows
ウィンドウ内に、項目を縦に何行表示させるかの値です。
この値より項目数が多い場合、スクロールが発生します。


Window_MenuCommand.prototype.numVisibleRows = function() {
    return 2;
};



⑥StandardPadding
ウィンドウ内の上下左右の余白です。
この値を増やす事で、スクロールのタッチできる範囲が広がります。
(本当は、上下の余白だけ増やしたいのですが、左右も増えてしまいます)


Window_MenuStatus.prototype.standardPadding = function() {
    return 18 + 12;
};




▼画面レイアウトの調整結果
各種数値をいじった結果、以下のようにしてみました。

▽メニュー画面(調整後)


▽装備画面(調整後)


▽ショップ画面(調整後)


▽バトル画面(調整後)

※敵キャラの表示位置は、敵グループの設定で、別途、調整する事になります。
※戦闘背景は、別途、画像サイズ等を変更する必要があります。


▼今回のプラグイン配布
折角なので、今回作成した縦長画面用プラグインをツクマテさんにて配布したいと思います。
(あまり行儀のよいプラグインになってないのですが……)

▽ツクマテさんの該当ページ
http://tm.lucky-duet.com/viewtopic.php?f=5&t=2668

▽GitHubに修正版を置きました(2018/10/24)

https://github.com/kuroudo119/RPGMV-Plugin


▼おまけ「バーチャルコントローラについて」
さて、ここまで、縦長画面について書いてきましたが、もし、バーチャルコントローラプラグインを導入するのであれば、コントローラを表示する位置を確保するために、デフォルト解像度のままでもいいかもしれません。

なので、結局は、それぞれのゲームに合ったものを選んでください……という話になります。


それでは、以上になります。
ありがとうございました。


追記(20170621)

この記事では、「バーチャルコントローラについて」というおまけを書いていますが、これを書いた後、uchuzineさんの「UCHU_MobileOperation」というプラグインを使うようになりました。

http://qiita.com/uchuzine/items/045f5bf87c331528daae

縦長画面にしつつ、メニュー&キャンセル用に、(x)ボタンだけを表示するスタイルで使っています。

今は、メニュー項目を画面上部に、キャンセルボタンを右下に配置していますが、どういう配置が使いやすいのかは試行錯誤中です。

▼キャンセルボタンを採用してみた画像

 

 


【8】アニメーションの変更【RPGツクールMV初心者向け自作品解説】

2016-08-27 00:40:55 | RPGツクールMV
■はじめに
この記事ではうちの作ったゲームを解説します。
『StrayFairyMV』というタイトルの短編RPGとなっており、以下で公開中です。
実際のゲームの動作が気になった方は、プレイしてもらえるとありがたいです。

▼GooglePlay(Android 5.0以降向け。ゲーム中に広告が出ます)
https://play.google.com/store/apps/details?id=jp.gr.java_conf.krddata.strayfairy_mv&hl=ja

▼PLiCy
http://plicy.net/GamePlay/28166


さてみなさん。
今回は、データベースのアニメーションをちょっと変更する方法を書きたいと思います。

「RPGツクールMV」のアニメーションという項目は、戦闘時のエフェクトや、マップでもイベントコマンドで表示したり出来るので、必ず使うと思われますが、設定項目が色々とあって、自作するのはかなりの手間だと思われます。

しかし、デフォルトのアニメーションでは、フロントビュー戦闘向けになっていたり、動作が重かったり、何かしら変更したいと思う部分が出て来る事もあります。

そこで、1から作るのではなく、デフォルトのアニメーションをコピーして、自分用に作り変える方法を紹介したいと思います。

▼変更前


今回は、暗闇を敵全体用に変更したいと思います。

変更点は、以下です。

①画像の位置を「中心」から「画面」にする。
(これにより、対象が敵全体でも、アニメーションの表示が、敵キャラ個別ではなく、全体で1回だけになるので動作が軽くなります)

②「一括設定」を使い、表示する位置を中心より左寄りにします。
(サイドビュー戦闘で、敵キャラが左に表示されるため、敵キャラ側に移動させます)
(ついでに、表示サイズを大きくしています)
※「一括設定」では現在の値が表示されないので変更する値には注意。



③「フラッシュ」を削除します。
(これにより、スマホでの動作が軽くなります)


こうして、出来たのが以下です。

▼変更後


これだけの変更ですが、自分の望む形になりました。


といった所で、今回はこの辺で~。

【7】オープニング【RPGツクールMV初心者向け自作品解説】

2016-08-17 09:31:57 | RPGツクールMV
■はじめに
この記事ではうちの作ったゲームを解説します。
『StrayFairyMV』というタイトルの短編RPGとなっており、以下で公開中です。
実際のゲームの動作が気になった方は、プレイしてもらえるとありがたいです。

▼GooglePlay(Android 5.0以降向け。ゲーム中に広告が出ます)
https://play.google.com/store/apps/details?id=jp.gr.java_conf.krddata.strayfairy_mv&hl=ja

▼PLiCy
http://plicy.net/GamePlay/28166



さてみなさん。
今回は、オープニングイベントを見てみたいと思います。

『StrayFaityMV』のストーリーは、異世界から迷い込んだ妖精を「妖精の森」に連れて行くというモノなので、オープニングでは、その説明を行います。

今回は、「この世界の妖精と、異世界の妖精は、交流がある」という事にして、「何らかの事情で、世界間移動(ワープ的なヤツ)に失敗した」という事にしました。

(VXAceで作った時は、時空の歪み的なヤツで、無理やり妖精を呼んで、元の世界に帰すのが目的でしたので、ストーリー上の強引さは減ったかな……って思ってます)



●オープニング専用のマップを使っている。
マップ上にイベントが多いと、ゲーム動作が重くなったり、セーブのデータ量が増えたりと、何かと不都合があるので、イベントを行うだけのマップを作りました。

(まぁ、今作程度のイベント量だと、影響が出るレベルではないですが……)


●最初に(一応)注意事項などを表示している。
オープニングの最初に、ゲームバージョンや操作方法、注意事項を表示するようにしているので、そのコモンイベントを呼んでいます。

(そんなの鬱陶しいと思うプレイヤーも居るかと思いますが、ワンクッション置きたかったので)


●基本は「文章の表示」による会話。
RPGツクールMVで、プレイヤーに何かを示すには、結局の所、文章を読んでもらう事になるので、「文章の表示」でキャラクターに会話をさせる事になります。

物語や会話の面白さに関しては、皆さんの方が得意でしょうから、特筆する事は無いですが、うちは、文章の改行位置やひらがなと漢字の並び、4行目はなるべく使わない、句読点などによる可読性を気にして書いてます。


●演出はだいたい「移動ルートの設定」を使う。
イベントコマンドの「移動ルートの設定」を見てもらうと分かるのですが、マップ上のキャラクターを移動させるコマンドは、ここに入ってます。



イベントの途中で登場するキャラクターは、登場させたい場所に空っぽのイベントを置いておき、「移動ルートの設定」にある「画像の変更」を使う事で表示させています。

基本的に、自動実行イベント1つの中にオープニングの全処理を書いています。


その自動実行イベントが以下です。

▼オープニング(自動実行)
----------------------------------------
◆コモンイベント:●タイトル表示
◆コモンイベント:●権利表記
◆コモンイベント:●操作方法と注意事項
◆コモンイベント:●ゲーム初期処理
◆文章:Package2(2), ウィンドウ, 下
:  :???
:  :「みなさん。
:  :おはようございます。」
◆移動ルートの設定:スティーナ (飛ばす, ウェイト)
:        :◇上に移動
◆文章:krd_Styina(0), ウィンドウ, 下
:  :???
:  :「ファルナ師匠。
:  :今日の仕事は、ありますか?」
◆文章:Package2(2), ウィンドウ, 下
:  :ファルナ
:  :「ほっほっほ。
:  :せっかちじゃのぉ……」
◆フキダシアイコンの表示:師匠, はてな (ウェイト)
◆フキダシアイコンの表示:スティーナ, はてな
◆フキダシアイコンの表示:メルネシア, はてな (ウェイト)
◆画面のシェイク:5, 5, 60フレーム (ウェイト)
◆アニメーションの表示:パラァ, 光の柱2 (ウェイト)
◆移動ルートの設定:パラァ (ウェイト)
:        :◇画像:Package2(0)
:        :◇左を向く
:        :◇ウェイト:60フレーム
:        :◇上を向く
:        :◇ウェイト:60フレーム
:        :◇下を向く
:        :◇ウェイト:60フレーム
:        :◇右を向く
◆フキダシアイコンの表示:パラァ, びっくり (ウェイト)
◆移動ルートの設定:師匠
:        :◇左を向く
◆移動ルートの設定:スティーナ
:        :◇左を向く
◆移動ルートの設定:メルネシア
:        :◇左を向く
◆移動ルートの設定:ラドル
:        :◇左を向く
◆移動ルートの設定:ルザム (ウェイト)
:        :◇左を向く
◆フキダシアイコンの表示:師匠, びっくり
◆フキダシアイコンの表示:スティーナ, びっくり
◆フキダシアイコンの表示:メルネシア, びっくり
◆フキダシアイコンの表示:ラドル, びっくり
◆フキダシアイコンの表示:ルザム, びっくり (ウェイト)
◆文章:Package2(0), ウィンドウ, 下
:  :???
:  :「あれ~?
:  :ここ、どこ~?」
◆文章:Package2(0), ウィンドウ, 下
:  :???
:  :「ボクは\N[1]。
:  :キミたちは誰? ここはどこ?」
◆文章:krd_Styina(0), ウィンドウ, 下
:  :???
:  :「あたしは\N[2]」
◆文章:krd_Styina(0), ウィンドウ, 下
:  :\N[2]
:  :「ここは、
:  :みんなに魔法を届ける魔法社だよ」
◆文章:Package2(0), ウィンドウ, 下
:  :\N[1]
:  :「なーるほどー。
:  :よく分かんないや」
◆文章:Package2(2), ウィンドウ, 下
:  :ファルナ
:  :「ほっほっほ。
:  :どうやら異世界から来たようじゃの?」
◆文章:Package2(0), ウィンドウ, 下
:  :\N[1]
:  :「そうそう、そうなの」
◆文章:Package2(0), ウィンドウ, 下
:  :\N[1]
:  :「この世界の『妖精の森』に
:  :転移したはずなんだけど……」
◆文章:Package2(2), ウィンドウ, 下
:  :ファルナ
:  :「ほっほっほ。
:  :どうやら転移に失敗したようじゃの?」
◆文章:Package2(0), ウィンドウ, 下
:  :\N[1]
:  :「今まで、失敗した事なかったのに」
◆文章:krd_Styina(0), ウィンドウ, 下
:  :\N[2]
:  :「よく分かんないけど、
:  :『妖精の森』に行きたいんでしょ?」
◆文章:Package2(0), ウィンドウ, 下
:  :\N[1]
:  :「そうそう、そうなの」
◆文章:krd_Styina(0), ウィンドウ, 下
:  :\N[2]
:  :「じゃあ、あたしが、
:  :『妖精の森』に連れて行ってあげる!!」
◆フキダシアイコンの表示:パラァ, びっくり (ウェイト)
◆文章:Package2(0), ウィンドウ, 下
:  :\N[1]
:  :「えっ、ホント!?」
◆文章:krd_Styina(0), ウィンドウ, 下
:  :\N[2]
:  :「いいでしょ?
:  :ファルナ師匠」
◆文章:Package2(2), ウィンドウ, 下
:  :ファルナ
:  :「ほっほっほ。
:  :まぁ、いいじゃろう」
◆文章:Package2(2), ウィンドウ, 下
:  :ファルナ
:  :「そうじゃのぉ。
:  :\N[3]も一緒に行ってやんなさい」
◆フキダシアイコンの表示:ラドル, びっくり (ウェイト)
◆文章:Package1(3), ウィンドウ, 下
:  :\N[3]
:  :「おっ、ワシか。
:  :まぁ、構わんぞ」
◆文章:krd_Styina(0), ウィンドウ, 下
:  :\N[2]
:  :「わーい。旅行だ、旅行だ」
◆文章:Package1(3), ウィンドウ, 下
:  :\N[3]
:  :「そんな気楽なもんじゃないと
:  :思うがのぉ」
◆文章:Package2(0), ウィンドウ, 下
:  :\N[1]
:  :「じゃあ、よろしくね」
◆画面のフェードアウト
◆透明状態の変更:OFF
◆場所移動:魔法社 (12,7) (フェード: なし)
◆画面のフェードイン
----------------------------------------

といった所で、今回はこの辺で~。

【6】天候の設定【RPGツクールMV初心者向け自作品解説】

2016-08-16 09:43:24 | RPGツクールMV
■はじめに
この記事ではうちの作ったゲームを解説します。
『StrayFairyMV』というタイトルの短編RPGとなっており、以下で公開中です。
実際のゲームの動作が気になった方は、プレイしてもらえるとありがたいです。

▼GooglePlay(Android 5.0以降向け。ゲーム中に広告が出ます)
https://play.google.com/store/apps/details?id=jp.gr.java_conf.krddata.strayfairy_mv&hl=ja

▼PLiCy
http://plicy.net/GamePlay/28166




さてみなさん。
今回は、「天候の設定」というマップイベントを見ていきたいと思います。



おそらく、たいていの場合、「天候の設定」を使うのは、場所移動によるマップの切替時だと思われます。
(そうでもないのかな?)

うちのゲームでは、雪が降っていたら魔法禁止っていう設定を使っていました。
今回は、雨が降っていたらMP自動回復+TPチャージ減少っていうエリアにしました。
(魔力の密度が濃いエリアって事で、MP回復する設定)
(ゲーム的には、MP回復により、序盤の難易度を下げる目的)

うちが行った設定は、以下のようになります。

▼マップイベント『滝入口』
----------------------------------------
◆コモンイベント:♪場所移動SE
◆コモンイベント:◇ダンジョン入口
◆コモンイベント:♪滝戦闘BGM
◆場所移動:降雨の滝 (9,47) (向き: 上)
◆コモンイベント:◇降雨スタート
----------------------------------------


ここでのポイントは、「場所移動」の下に、「天候の設定」(コモンイベント内部にある)を置いているという事です。

「場所移動」すると、イベントの実行が中断されるような印象を持ってしまいますが、そんな事はなく、場所移動した後に、しっかりと実行されます。

もちろん、移動先のマップで、「自動実行」のイベントを作って「天候の設定」をする事も可能です。
でも、「自動実行」は、うちはなるべく使いたくないと思っているので、このようなイベントの記述になっています。


「天候の設定」は、雨を降らせたらずっと雨が降っているので、マップの切替時に止ませる処理が必要です。
これは出口になっている箇所全部に、「天候の設定」で「なし」を設定する事になります。

こちらも、切替後のマップで、雨が降ってるスイッチを見て、雨を止ませる処理をする……という書き方も出来るでしょうが、私は出口に処理を記述しています。

使ったコモンイベントは、以下のようになっています。

防具を付けたり外したりしているのは、雨のエリアではMP回復……っていうのを防具で実現しているためです。
(この記事の第3回の所を参照)


▼コモンイベント『◇降雨スタート』
----------------------------------------
◆変数の操作:#0005 パーティ人数 = パーティ人数
◆防具の増減:マナの降雨 + {パーティ人数}
◆条件分岐:パラァがパーティにいる
◆装備の変更:パラァ, イベント = マナの降雨

:分岐終了
◆条件分岐:スティーナがパーティにいる
◆装備の変更:スティーナ, イベント = マナの降雨

:分岐終了
◆条件分岐:ラドルがパーティにいる
◆装備の変更:ラドル, イベント = マナの降雨

:分岐終了
◆条件分岐:マナブがパーティにいる
◆装備の変更:マナブ, イベント = マナの降雨

:分岐終了
◆条件分岐:桃色レディがパーティにいる
◆装備の変更:桃色レディ, イベント = マナの降雨

:分岐終了
◆条件分岐:黄色ハットがパーティにいる
◆装備の変更:黄色ハット, イベント = マナの降雨

:分岐終了
◆天候の設定:雨, 5, 10フレーム (ウェイト)
◆条件分岐:降雨の説明を見たがOFF
◆文章:Package2(0), ウィンドウ, 下
:  :\N[1]
:  :「あっ、雨が降ってるよ」
◆文章:krd_Styina(0), ウィンドウ, 下
:  :\N[2]
:  :「この雨、魔力がこもってるみたい。
:  :MPが回復していくよ」
◆文章:Package2(0), ウィンドウ, 下
:  :\N[1]
:  :「でも、動きにくいから、
:  :TPは増えにくいみたい……」
◆スイッチの操作:#0002 降雨の説明を見た = ON

:分岐終了
----------------------------------------


▼コモンイベント『◇降雨ストップ』
----------------------------------------
◆変数の操作:#0005 パーティ人数 = パーティ人数
◆防具の増減:マナの降雨 - {パーティ人数} (装備品を含む)
◆天候の設定:なし, 1フレーム (ウェイト)
----------------------------------------


といった所で、今回はこの辺で~。

【5】ダンジョン生成【RPGツクールMV初心者向け自作品解説】

2016-08-10 09:06:21 | RPGツクールMV
■はじめに
この記事ではうちの作ったゲームを解説します。
『StrayFairyMV』というタイトルの短編RPGとなっており、以下で公開中です。
実際のゲームの動作が気になった方は、プレイしてもらえるとありがたいです。

▼GooglePlay(Android 5.0以降向け。ゲーム中に広告が出ます)
https://play.google.com/store/apps/details?id=jp.gr.java_conf.krddata.strayfairy_mv&hl=ja

▼PLiCy
http://plicy.net/GamePlay/28166






■ダンジョン生成

さてみなさん。
今回は、「ダンジョン生成」という機能を使った例を紹介します。

うちの今作では、金字塔というダンジョンで「ダンジョン生成」したマップを使いました。

▼生成直後の例(画像は後から取り直しました)


▼実際に作ったマップ


このマップでは、シンボルエンカウントを採用することにしたので、通路は広めにしました。
また、敵キャラがごちゃごちゃ動き回るので、マップの装飾はしませんでした。

ちなみに、黄色いタイルは、ダメージ床に設定しています。

(デフォルトだと、ダメージ床が「毒の沼」くらいですし、トゲトゲの床はタイルセットの中に無いようなので、ドラクエのバリアーをイメージして、このタイルを使ってます)


■シンボルエンカウント

ついでに、シンボルエンカウントのイベント欄(コモンイベント)の画像を貼り付けておきます。


イベントの一時消去で消しているので、マップを切り替えて戻ってくると復活してます。


といった所で、今回はこの辺で~。

【4】DB:タイルセット【RPGツクールMV初心者向け自作品解説】

2016-08-05 19:54:30 | RPGツクールMV
■はじめに
この記事ではうちの作ったゲームを解説します。
『StrayFairyMV』というタイトルの短編RPGとなっており、以下で公開中です。
実際のゲームの動作が気になった方は、プレイしてもらえるとありがたいです。

▼GooglePlay(Android 5.0以降向け。ゲーム中に広告が出ます)
https://play.google.com/store/apps/details?id=jp.gr.java_conf.krddata.strayfairy_mv&hl=ja

▼PLiCy
http://plicy.net/GamePlay/28166


■データベース「タイルセット」

さてみなさん。
今回は、「データベース」の続きを見ていきたいと思います。

「タイルセット」という項目があります。
多くの場合、初心者が触る必要の無い項目です。

今回は、うちの設定というよりも、実はこういう仕組みになってたんだよ的な話になります。

まず、こちらの画像をご覧ください。

▼動く床(というか、滑る床)


イベントの「画像」の欄に「矢印の床」の画像が使われています。

次にこの画像を見てみましょう。

▼画像の選択



これは、先程のイベントに使う画像で、「タイルセットD」という項目から選ばれています。

デフォルトだと、「タイルセットD」は無いはずです。
ここにそれがあるのは、データベースの「タイルセット」に追加がしてあるからなのです。

具体的には、この画像のような感じです。

▼タイルセット「ダンジョン」


こんな風に、既にAで使われているタイルセットでも、Dとして追加する事が出来ます。

※イベントを設置するマップの設定の「タイルセット」と合わせておく必要があります。

▼マップの設定



というわけで、「内装」を使っているけど、「ダンジョン」の画像が使いたい……といった場合は、このようにタイルセットを追加すればOKです。

※ちなみに、うちは、RPGツクールMVのサンプルゲームを見て、この機能を知りました。なので、サンプルゲームのプロジェクトを覗くと新しい発見がある事でしょう。


といった所で、今回はこの辺で~。