投稿記事

2023年 04月の記事 (4)

梔子 2023/04/30 20:37

【ゲーム制作日記#12】方向転換と進捗報告【RPGツクールMZ】

どうもこんばんは。
また大分期間が空いてしまいました。

バリバリ作っていたのですが、当初の予定とズレてきていたのでちょっとしたご報告があります。

方向転換

今までの記事を読んでゲームを楽しみにしてくれていた方がいたら申し訳ないのですが、制作中のカードバトルRPGが大作になり過ぎて完成する前に体力(貯金)が尽きてしまいそうなため、一旦本来予定していた短めで安価なゲームを制作することにします。
申し訳ございません。

ゲームシステムをいじくって完成させていくのはとても楽しいけど、それ故に愛着が湧きすぎて中途半端な完成度で出したくなくなってしまいました。
なので制作中止ではなく、一旦別のゲームを作り、自分の技術向上&ゲームを作る事への自信をつけようと思います。

現在制作中のゲーム

3時間程度(予定)で終わるマルチエンディングの脱出ゲームを作成中です。
基本NTRで、通常NTRエンド、淫乱エンド、洗脳エンド、悪堕ちエンドの4つを予定しています。
堕ちていく過程をじっくりやりたい……。

今作ヒロインの西園寺彩香ちゃんです。
彼女は西園寺グループの才色兼備なお嬢様で、主人公と付き合っています。

ゲームの他のキャラクターや細かい設定紹介は次の記事でまたしていきたいと思います。
それでは、ばいばい!

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

梔子 2023/04/19 14:32

【ゲーム制作日記#11】進捗と苦労した部分の話。次の作業予定【RPGツクールMZ】

どうも、こんにちは。
毎日進んではいますが、進捗はそんなに予定通りは行ってません。
新しいもの実装するたびに色んなバグが出てきて想像以上に時間がかかってます。
前回から4日くらいでこんな感じのものを実装できたよっていう報告です。

戦闘システムの進捗

バフデバフの実装と敵のバリア、バリアゲージ実装ができた。

まだ仮だが、動画の通りウィッチレイスは奇数ターンにバフで自分の攻撃力をアップ、ラミアはバリア貼りと攻撃をランダムで、アイススライムはこちらの攻撃力を下げるデバフを打ってくる。

苦労した部分1

まずダメージ計算を全てコモンイベントでやっているので、ターゲットした相手がどのデバフ状況であるかを調べる事に苦戦。
最初はプラグインを作ってやろうとしていたが、コモンイベントで事足りることに気づいてコモンイベントで管理することにした。


最終的にはそんな難しくなく、そのまんまの実装になった。
やな様のBeforeCommonプラグインを利用し、ターゲットのIDを変数83に入れてターゲット対象が敵か味方か判定し、それに応じてデバフの付与をisStateAffectedで調べてダメージ倍率を計算している。
素の状態のままだとRPGツクールの変数に小数を入れると整数になってしまうので、トリアコンタン様の変数小数演算プラグインを使っている。
デバフ時の倍率はこれから作るレリック等で変更可能にしようとしているため、変数92~95で倍率を管理している。
例えば炎症デバフの場合は今は150が素で入っているので、100で割って、1.5倍するような計算にしているが、レリックの効果で1.75倍にしたい場合は敵炎症倍率変数の92番に175と代入すればよい。

苦労した部分2

バリアを張った敵に対して、バリアグラフィックの表示と敵1体ごとのバリア数値管理。戦闘開始時に相手の位置を全て変数で取得し、それに応じてごにょごにょすることにより解決した。
戦闘開始時に下記のようなコモンイベントを動かしている。


ci-enにコード記入するとぶっ壊れて投稿できなくなるので、画像ですいません。

ちなみに、少し見ればわかると思うがこの仕様だと8体以上の敵が出ると、X座標がY座標の領域まで来てしまうためバグってしまう。
私は多くて6体までということに決めているので、このような仕様にした。

敵が増えれば増える程、バリアゲージ、魔力アップアイコンなどの数を増やさなければいけないことと、画面の狭さ的にも基本3体くらいが限界のため、6体をマックスとした。

苦労した部分3

バフデバフ状況によって、敵の行動予測、ヘルプテキストを変更する事。
敵の行動予測はtomoaky様のTMFutureSight.jsを使用させていただいているが、大分改変させてもらっている。TMFutureSight.jsのプラグイン内でデバフの判定をし、それに応じて苦労した部分1と同じようなダメージ計算を行ってテキスト化している。

また、文字を作成している部分を計算してもリアルタイムで反映されてないため、プラグインのupdate部分で文字を変更するようにし、リアルタイムでデバフのダメージ計算が反映されるようにした。

主人公側のヘルプテキストは更に無理やり実装している。
rmmz_window.jsに直接このように書きこんでいる。


カードは全て内部ではアイテム扱いなので、setItem関数にて処理。
アイテムタイプIDが1かつ取得TP量が1の場合はダメージ系カードとして判定して、計算し、取得TP量が2の場合は防御系カードとして判定している。それ以外は特にヘルプテキストをいじらずそのまま処理している。

ヘルプテキスト内から上手く数字を取り出すことができなかったため、parseInt関数を使いテキスト内の先頭の数字を取り出す処理をしてゴリ押ししている。
なので、全てのカードのヘルプテキストで最初に出てくる数字はダメージやバリア値にしなくてはいけない。

もっといい方法を思いついたらおそらく変わると思う仕様。

苦労した部分4

手札を引いた順番通りに手札に配置すること。
先ほども言ったが、カードは全て内部ではアイテム扱いなのである。RPGツクールの仕様だと同じアイテムは一つにまとまり、その中で個数の情報を持って管理される。
つまり、同じアイテムの中で並び順も糞もないのである。
まずデフォルトの状態だと同じアイテムは重なって個数表示され、アイテムIDの若い順に自動で並べられてしまう。
まず、アイテムが重ならないようにするのにノリミツ様の『NLM_ItemDilution.js』を使用させていただいた。しかし、アイテムIDの若い順に並べられてしまう問題は解決しなかったため、ゲーム内コモンイベントでドローした時にドローした順番をゲーム内変数に保管し、その情報を元に並び替えるように改変した。
改変したが問題のある仕様であり、同じアイテム内でどのアイテムを使用したかはどう頑張っても取得できなさそうなため、同じアイテムが複数手札にある場合は一番左のアイテムから使用されていく仕様になっているのが気持ち悪い。が、仕方ない。

例:手札が『ファイア バリア ファイア ファイア ファイア』となっている時、3,4,5番目のファイアを使用しても1番目のファイアが消えてしまう。

ここまで来て、そもそもカードをアイテムとして管理せず自分で作れば良かったと後悔もあるが、アイテムであることでかなり楽出来てる部分もあるので仕方ない。
というかそこまですると、本当にRPGツクールを利用している意味が会話部分だけになりそうである。

次の作業予定

前回言ったマップ作成システムも作りたいが、先にSlaytheSpireで言うレリック的な物を実装しようと思っている。これもバフデバフの一種のようなものなので。
これはRPGツクール内の武器か何かとスイッチでリンクするように所持を管理して、実装しようかなと考え中。
例:武器1を所持していると、武器1所持スイッチがオンになり、武器1所持スイッチがオンの場合は炎症デバフ倍率1.75倍になる。
また、手に入れた順番もできれば変数で管理し、画面の左上に入手した順でアイコンを表示したい……。

これも実装するたびに今までの部分がバグったりするんだろうなぁ。
目標としては4月中に戦闘、マップ、報酬画面のゲーム部分を完成させること。
出来ればボス敵やバランス調整も。
元々は1作目のため、4月中にゲーム自体完成させるくらいのつもりで始めたが、戦闘システムに凝り出したのが終わりの始まりだった。
今は5月中完成目指してます。

それではバイバイ。

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

梔子 2023/04/15 15:58

【ゲーム制作日記#10】ステートの重ねがけでターン数が蓄積されるプラグイン【RPGツクールMZ】

どうも、こんにちは。
絶賛毎日制作中ですが、現在もまだゲームシステム部分のコードの修正、改変などで時間を使っています。

大体は自分専用の仕様であったりするので、あまり公開してもしょうがないものなのですが、今回は微妙に需要がありそうで簡単な仕様なので紹介します。

RPGツクールでステートをかけると、ターン数が蓄積されずに設定したターンにリセットされてしまう仕様を、蓄積する仕様に変更するプラグインです。

※本プラグインにより生じたいかなる問題においても、一切の責任を負いかねます。もし使用した方でバグ報告して頂いたら、私の可能な範囲であれば修正するかもしれません。また、他のプラグインとの競合は考えられておりません。

作成したプラグイン

『StateAddMZ.js』
https://github.com/Kuchinashi-W/Plugin/blob/main/StateAddMZ.js

ステートを重ね掛けしたとき、ターン数を初期化せず蓄積するように仕様変更致します。指定したステートは対象外にして往来の仕様のまま使えます。
また、メモ欄に記入することで本来の継続ターン数に追加のターン数を付与することが可能になります。

使用例の動画

炎のステートを継続ターン数1、氷のステートを継続ターン数2に設定し、
氷のステートは対象外に設定しているため、蓄積されない。
テストとして設定しているステート付与攻撃を3回撃った結果、炎3氷2となっている。

ステートが横ならべに表示して残りターン数が表示されているものは
NUUN様の『NUUN_StateIconSideBySide.js』プラグイン
を使用しております。

元コードの処理の場所

改変箇所を書く。
『プロジェクト→jsフォルダ→rmmz_object.js』内にあるresetStateCounts関数で、ステートターンを毎回代入してリセットしているので、ここをプラグインによって処理を追加している。
実際にコードを書いたらなぜかCi-enで記事が投稿できないので、省略する。

ゲームの進捗、予定

戦闘処理の部分は残りはステートの中身処理くらいで終わりそう。
『このステートがついてる時はダメージが1.5倍』のようなステートを作るのに結局自分でプラグインを作ることになりそう……。

これが終わったら次はマップ処理の作成に移る予定である。
試しに一つ作ってみたマップ画像がこちら。


骸骨がバトル、黒い骸骨が強敵、?がランダムイベント、Gが商店、焚火が回復、プレゼントが特殊アイテム取得
一番左の部屋3つから好きな部屋を1つ選んでスタートして、線が繋がってる先に自分で選んで進めるという想定で考えている。
このようなマップをダンジョン1つにつき多くて10個ほど用意して、ダンジョンの入り口に入る時にランダムで1つ渡すようにしてダンジョンを組み立てるようなシステムを作る予定。

後は戦闘終了時の報酬の処理を作成すれば、ゲームの遊び部分は完成になる。

あまりにもダンジョン部分に力を入れ過ぎてしまったため、メインヒロインを一人に減らしてゲーム中のダンジョンエロのボリュームを増やそうか検討中。

?のランダムイベントマスで回復して貰ったりカードを貰ったり下の娘とエロイベントが起きたり等々妄想中。

それではまた。


ウンディーネちゃん(NovelAI絵)

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

梔子 2023/04/09 04:32

【ゲーム制作日記#09】カードバトルRPG、ゲームシステム進捗【RPGツクールMZ】

どうも、こんばんは。
ご無沙汰しておりました。

毎日ゲームシステムの実装についてアレコレ考えて試していたら、気づいたら1週間経っていてビックリです。書きたいことはいっぱいあるのですが、作るのが楽しすぎてとりあえずそちらに集中しております。

前回書いた妄想のゲームシステムが大分形になってきたので、現在の進捗状況を動画にしてみました。

もろSlay the Spire風ゲームです。
自分でターン終了するまでマナがある限り何回もカードを使えます。
山札が空になると、自動的に捨て札が山札に戻ります。
ターン終了した時に発生してる謎の攻撃は一応PTに存在して自動戦闘にしている主人公君です。

前回の日記では、RPGツクールの戦闘をカードバトルにするのは大変そうなので見送って簡略化したもので実装する予定でしたが、いざゲームシステムを弄り始めると面白くて面白くて……。
気づいたら、プラグインの改変や直接コードをいじってここまで辿り着いていました。

いざ実装してみると、カードのイラスト大量生産でAIのメリットをかなり生かせそうなので良かった。戦闘画面も華やか。
ここから何十枚とカードの実装をしないといけないですが……。

本格的に作り始めてから20日目くらいですが、やればやるほどやることが出てきて楽しい!
しかも1人で制作しているので、完全に自分のペースで作業が出来るのもまた面白いです。

作ったシステムの解説もいつかしたいですが、もう自分でも何が何やらで、力押しで解決してる部分が多すぎて人に紹介できるものじゃないですね……。

短いですが、おやすみ~。

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

月別アーカイブ

限定特典から探す

記事を検索