こんにちは。
なんだか唐突ですがsteamのセールでRPGツクールMVとやらを手にしたハカセです。
カードワースのシナリオ制作に区切りがついてなかったので放置していましたが、先週末に「小さいことはいいことだ?」を無事に公開できましたので、さわりはじめました。
このカテゴリの記事は私自身の備忘録的につけていきたいと思います。
ツクールとハカセ
ツクール…誰でも割と手軽にそのジャンルのゲームを作ることができるソフト。
そういう認識でした。
そして、最後に触ったことがあるツクールはRPGツクール2003。あと2000がありました。
両方ともパッケージがまだ残っています。
Windows10では2000は動作するようですが、2003はダメみたいですね。
これも中二病全開で色々といじってはいたのですが、個人的にツクールは大雑把な戦闘の計算式とかが好みではありませんでした。
そこで、オリジナルの仕様にしたいと思うと「変数」は使えますので、その辺をうまく活用してマップイベントを駆使することで独自色の強い作品にすることは可能でした。
でも、相当大変ですよね(´・ω・`)
その後のツクールはよく知りません。
趣味としてゲームを作るっていうことはあまりやらなくなったからというのが大きいです。
ツクールMVをさわってみて
一体何を感じたかと言うと、「正直言ってツクールばかにしてました。ごめんなさい」です。
理由として、いじれる自由度が大幅に上がっている。
なぜかというと、ブラウザ動作やスマホ動作が求められる現代に対応するようにHTML5とJavaScriptでツール自体が作られているからです。
つまり、今現在、フリーランスなどでWebを中心とした制作業を営んでいる私のような人だと仕様を変更するのが相当に簡単だということ。
結論として、難しいことがわからないけどゲームを作ってみたい人にとっては手軽に作れるソフトであることは変わらず、多少経験値がある人にとっては自分なりのシステムでゲームを作るための優秀な補助ツールという位置づけになったのかなと感じています。
今企んでいること
まずは、習作としてどういったことができるのか試し、今後の作品のために基本となるデータベースを組みながらひとつ作ることにしています。
そして、なぜか…3DダンジョンRPGになりました。
理由は、ストーリーがシンプルでよく、拠点は一か所でいいこと。
個人的に好みだから。
ですが、RPGツクール…本来こんなものを作る仕様ではありません。
そこでMBS_FPLEというプラグインを使っているのですが、これに関しての詳しいことはコチラでも読んでいただくことにして…
導入さえできれば、これは割と楽です。
ただし、これの導入にはちょっと問題点がありました。
新規プロジェクトを制作した場合の現行版のコアスクリプトに組み込んでも動作しないのです。
なので、このプラグインのデモプロジェクトをベースとして組み立てていくことが安全です。
このプラグイン、現在はマップチップとそれに対する通行設定、タグ付けで通行の可否と壁か床かを設定するのですが、天井と床を別にできないんですよね。
なので、ダンジョンの表現には少し制限があります。
天井と床が一緒だということは…大変なのが階層移動用の階段です。
登り階段は壁テクスチャでなんとか…と思ったのですが、下りは?
床テクスチャにしたら天井にも下り階段が見えることになります。
なので、ここはキャラチップとしてうまい具合に見えるように…描きました(´・ω・`)
床に穴が開いていて梯子がついている様子と天井に穴が開いていて梯子がついている様子。
その辺の素材は後日スクショもつけて公開しようと思います。
スキル等々は制作中(そしてネーミングに困っています)なのですが、使用すると周囲の様子がミニマップとして表示されるようになる迷子対策魔法を実装しました。
これは「T_MiniMap.js」というプラグインの効果をスキル使用によって呼び出す形を取っています。
このプラグインは「RPGツクールMVにおけるユーザ目線(ツクラーさん・プレイヤーさん)で最適なゲーム速度を実現するプラグインについて」の下の方にある「プラグインでき~る」のデモゲームに同梱されています。
それとは別に、現在使うことによって常時よりも遠くまで見通せるようになる「魔法の灯り」的なスキルを実装しています。
やり方は単純ですが、ダンジョンRPGには必須要素ですよね(´・ω・`)
さて、ある程度ざっくりと作ろうとするものが固まったところで、今度は根っこのシステム部分です。
スキルバランスやアイテムなどはその後です。
なんかスクショが古臭いのは気にしないでください。
フォントも変えて(フォントの制御はCSSなので…Webのお仕事なら簡単に変更できます。)ありますので、ツクール2000とかで作ってるわけではありません。
一番大事なところですが、ツクールのデフォルトのような大雑把なダメージ計算式はあまり好きではありません。
一見、1レベル時のHPが高く、FFみたいな感じなのかと思わせますが、とんでもありません(´・ω・`)
ちょっとバランスが取りにくいと思いましたので、今回はJavaScriptですから基本的な戦闘システムはそのまま活用しつつ計算式を変えることで大きく仕様の違うゲームにできるのです。
スクリーンショットの時はドラクエくらいの感じになるバランスを考えて式を作ったのですが、レベル毎の能力値のセッティングや成長が調整しにくい。
そこで、今現在はソードワールドなどのTRPGによくある形の仕様にしたいと考えて変更をしました。
具体的な式は伏せておきますが、次のような感じです。
・レベルによって自動的に上昇するのはHPとMPのみで各能力値は上昇しない。
ゲーム開始時にボーナスアイテムで若干カスタマイズ可能にする形とレベルアップ時にボーナスポイントを割り振れる形を考えています。
・基本的にダメージの計算は
物理ダメージ=(腕力ボーナス+武器種固定乱数+レベルボーナス乱数)-防御力基準に算出される数値
魔法ダメージ=(知力ボーナス+魔法別乱数+レベルボーナス乱数)-精神力基準に算出される数値
のような形です。
TRPGでダイスを振ってダメージを出す感覚ですね。
そして、純正プラグインのWeaponSkill.jsを応用して武器種毎に基本的なダメージ算出式を変更します。
※武器種によってはダメージ算出に使われる能力値ボーナスが腕力ではないものも設定しています。
■武器毎の基本値と武器に関する考え方
武器種毎にダメージ算出の基本式を変える。
そもそもが乱数を用いた計算なので分散度は使わない。
基本的には武器を装備することで攻撃力(能力値)が変化することは少ない。
ダメージは固有に設定された式から導かれるから(乱数部分が変化)
魔法の武器等で力にボーナスがついたりする場合があり、間接的にそれによるダメージ増加が行われる。
強い武器はそのボーナス値が多かったり、攻撃回数が多いことで表現する。
■ここまで作ってきて遭遇したトラブル
まだスキル類までできてもいないのですが、ここまでで遭遇したトラブルがあります。
モンスターにも同じ素手攻撃基準の「通常攻撃」を設定した場合、敵の攻撃ターンでエラーを吐いて止まるのです。
理由は、モンスターのデータにはプレイヤーキャラにある「レベル」が存在しないからです。
計算式にa.levelを使っているので、引っ張ってくるデータがなくてストップするわけです。
プラグインなどを使ってモンスターにレベルを持たせることはできますが、それでも同じ変数ではないのでアウトです。
だからといって、ここでプラグインを作ってしまうと、基本的な戦闘システムを活用するという道から外れてしまうので、打開策として、敵キャラ側の「通常攻撃」スキルとしてレベルボーナスを含めないものを用意することにしました。
今後、プレイヤーと同じ名前のスキルを敵が使う場合も別枠として作る必要があります。
※ボーナスポイントでレベルアップ時に能力値が上がる機会があるなら、レベルボーナス排除でもいいかもしれませんが(´・ω・`)もう少し試行錯誤してみます。
ある程度、戦闘用の計算式が固まったので次はアイテムやスキルデータを作る予定です。
他に基本的な仕様で考えている部分はありますが、その辺はまた今度紹介します(´・ω・`)
地下1階の探索が可能な状態までできたら一度体験版として(習作ではありますが)アップしてみたいと思います。