鳥小屋.txt

ゲーム作ったり、Web的なことしたり、ぐだぐだしたりしますねヽ(・x・)ノ

RPGツクールMVで「地下ドール」的なゲームを作る方法

たまにはツクラーっぽいブログも書きます!

前提:憎悪の獣の地下ドール is 何

↑これのことだよ。

RPGアツマール上で公開しているゲームです。
かつて流行ったCGIゲーム「FFAdventure」を参考にしたゲームで、
自分のパーティをつくって、他のプレイヤー(チャンプ)と戦うゲームになっています。
RPGツクールMVでつくっています。

普通のRPGっぽい部分は「RPGツクールだよ」で説明できるし、
他のプレイヤーと云々みたいな部分は「RPGアツマールのAPIだよ」でいいのですが、
実際に他のプレイヤーと対戦する部分とか、ドール編成の仕組みとかは
外から見ると結構謎なのかなと思ったので、せっかくだし記事を書いてみることにします。

僕が地下ドールを実現する上での基本戦略

別に地下ドール的なゲームはこうしないと作れないというわけではなく、
地下ドールを作ったときはこうやりました、的なものです。

「ドール」を表現する方法

f:id:ru_shalm:20200711151746p:plain:w300

  • ドールは「武器」としてデータベースに登録
    • つまりドールのステータス=武器のパラメータ
  • 武器によってサイドビュー時の見た目が変わるようにしている
  • 装備できる防具タイプを武器ごとに変わるようにして、スロットの属性を表現

パッと見は謎機能に見えますが、中身を知れば「フツーじゃん!」ってやつです。
プレイヤーの皆さんは頑張ってドールを集めたり編成しているつもりですが、
実際は武器を集めて、主人公に装備しているだけだったりします。

関係ない話ですが、上の画像を見るとわかるとおり、
そろそろ★4ドールのIDの空きスペースが少なくなってきました。
もうちょっと余裕を持ってID開けておけば良かった!

パーティを表現する方法

ドールがどうなっているかわかれば簡単ですね!
単純に同じステータスの主人公2人のパーティをつくっているだけです。
それぞれがドール(武器)を装備して、別の見た目になっているだけです。

ちなみにドールを装備していない場合は、試合開始前にパーティから外して、
試合が終わったらパーティに戻すことで1人パーティができるようにしています。

敵を表現する方法

f:id:ru_shalm:20200711153117p:plain:w300

敵のデータベースはスカスカです。というかデフォルト値です。
実際、メモ欄の <UseActor: 6> とか書いてある部分しか使っていません。

<UseActor: ここに数字> とメモ欄に書くことで、戦闘中にそのIDのアクターを敵として登場させています。
つまりチャンプ戦のときは以下のような手順で処理をしています。

  1. 対戦相手のデータをアツマールのAPIで取得する
    • つまり、ドール(武器)とスロット(防具)を取得する
  2. ID:6と7のアクターに取得したドール(武器)とスロット(防具)を装備させる
  3. <UseActor: 6><UseActor: 7> が設定されたエネミーと戦闘をする

以上です

基本的にはこういうことをすると地下ドール的なゲームが作れます。

実際はドール(武器)にレベルをつけていたりとか、
同じスロット(防具)を複数装備したら性能劣化する仕組みを入れていたりとか、
オート戦闘がクソバカAIにならないように色々やっていたりとか、
そもそも戦闘画面とかドール編成画面をいい感じにするのが一番むずかしいとか、
いろいろありますが、その辺りは割愛ということでひとつ…!

(特に解説することがなく、プラグイン書いてがんばりました!くらいしか言えることがないので……)

もっと簡単につくる方法

武器をドールにするの多分無駄に難しいので、
地下ドールっぽいゲームを作るなら、普通にアクターをいっぱい作ればいいと思います。
(そうすると、パーティ編成=ドール編成になるのでわかりやすいし、
 ドールのレベル上げも普通にレベルを上げればいいだけだしネ)

アクターID: 1に味方専用ハロルド、アクターID: 2に敵専用ハロルドのように
同じ見た目・ステータスのキャラを2体ずつ登録しておけば、シンプルに作れそうです。

敵にアクターを登場させる方法ですが、地下ドールでは自分でゴリゴリ変な処理書いてやっていましたが、
tomoakyさんが公開されていた「アクターバトル」(TMActorBattle.js)プラグインを使うと
わりと簡単にできそうです(試してはいません、ごめんね)

てか、こんなシンプルに実現できたのか……
地下ドールのやつ、めっちゃガチャガチャやってしまって僕にも理解不能になってきている><;

後はアツマールのAPI周りをどう扱うか、でしょうか……
あの辺りは通信が挟まる関係上どうしてもプラグインがわかることが前提みたいなところがあるので、
ちょっと面倒ではありますね。。。。

ちなみに地下ドールでは「装備のIDとドールのレベル」しか共有していません。
パラメータとかを送るようにするとデータが多すぎて大変なので、
装備とドールのレベルだけでステータスを再現できる仕様にしています。
なので「食べると最大HPが増える実」とか作れないわけです。

やれること制限したほうが作るの簡単になるので、ココらへんがトレードオフかなー
あんまり難しくするとバグの温床になるしね!


さぁ、みんなも自分だけの最強のFFAdventureをつくろう!(?)