投稿記事

開発メモの記事 (7)

絵の無いゲーム 2020/12/10 21:00

今日の進捗 ※ネタバレ注意~図書館でのヒント閲覧~ 開発メモ

今日は、未開放のHシーンの情報などを図書館で調べられるようなシステムを作りました。

※本記事はシステムの性質上、回想の解放に関するネタバレを含みます!


閲覧コストを消費して様々な情報を見られる。

閲覧コストは物語の進行により回復。
聞き耳の復活と同じタイミングです。

今の所考えているのは、Hシーン・おねだりの条件・装備品の取得方法・アイテムの取得方法。お役立ち情報はチュートリアルに入れられなかったシステム(「会話」・「アイテム」コマンドやステータスの詳細など)が主。

今日でシステムの骨子を組み、現在Hシーンの情報を制作中……

以下個人的な開発メモ。

Hシーンの区画

それぞれのHシーンには、そのHシーンに対応する区画の変数が設定されている。
(例えば吸精室の敵を倒して回想を解放した場合、吸精室の区画の変数に1加算される)

Hシーンのヒント閲覧システム(以下本システム)では、回想の解放状況を区画単位でチェックして、その区画が全て解放されていたら次の区画をチェックするようになっている。

赤丸部分がチェックする際の条件分岐。

クローディアのHシーンは現在2つなので、この区画の変数が2であれば、クローディアのHシーンを全て解放しているとみなせる。

解放していたら、次の区画を調べる……というのをヒントが出るまで繰り返す。
(回想を全て解放している場合は、本システムを選べないようにしている)

これにより、全体の解放状況によって開示するヒントの順序をある程度定め、いきなり後半のヒントがでないようにできる。


ランダム性

実際に取得するヒントは、その区画での変数範囲で、乱数を回して決める。

赤丸部分が乱数での分岐。
クローディアのHシーン区画の変数は最大2なので、1~2の範囲で乱数を回している。

解放済み回想の乱数が選ばれてしまったらループして再抽選し、未解放のヒントが出るまで回す。

上記の例だと二種類なのでランダム性は低いが、区画が部屋単位になると乱数も増えていき、多少のランダム性が見込める。


ヒントの被り

上記までだと、得たヒントの回想をすぐに解放せず連続で回すと、ヒントの被りが出てくる。
これを極力回避するために、ヒント毎に任意の変数を定め、任意の変数を保管して監視する変数を用意した。



監視用変数の保管

ヒントを取得すると、変数「記録書Hシーン被り保存用」に、ヒント毎に定めた任意の変数が代入される(赤丸部分)。
任意の変数は、その回想解放スイッチのIDに等しい。




変数の保管には別のコモンイベントを用意している。

変数「記録書Hシーン被り防止1」が0の時(他の任意の変数を保存していない時)、「記録書Hシーン被り防止1」に上記で定めた任意の変数を保管する。

「記録書Hシーン被り防止1」に別の変数が保管されていた場合は「記録書Hシーン被り防止2」に降り、それを繰り返す。

「記録書Hシーン被り防止n」は10まで用意してある。


ヒント被りの監視


赤丸部分がヒント被りを監視している。

まず変数「Hシーン被りチェック用送信」に、ヒント毎の任意の変数を代入する。




ここから別のコモンイベント。

変数「Hシーン被りチェック用受信」に、上記で得た「Hシーン被りチェック用送信」の変数を代入。

変数「記録書Hシーン被り防止1」と「Hシーン被りチェック用受信」が等しい時、すなわちそのヒントの変数がすでに「記録書Hシーン被り防止1」に代入されているので、ヒント被りとみなせる。

ヒント被りがあった場合、スイッチ「記録書被り」をONにして元のコモンイベントに戻る。


スイッチ「記録書被り」がONの時、そのスイッチをOFFに戻して再抽選をする。

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

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

絵の無いゲーム 2020/01/02 21:30

進捗報告~回想ワープ完成~

回想ワープがいい感じのところまでできました。

未開放エリアのブザーは記事を書く直前になって付け忘れに気づいたので、時間のある時に。

明日からは魔法館のHシーンを書いていきます。

以下開発メモ。

マップ表示の準備

この機能は三つの部分に分けて作っています。
一つはマップを表示する準備部分、二つ目は顔アイコン(暗)表示させる部分、最後に方向キーを入力して選択する部分です。

一つ目のマップ表示の準備では、メニュー禁止と移動禁止の処理、現在地に応じた変数を読み取っています。

顔アイコン(暗)の表示

ワープする各エリアの座標に未選択顔アイコンのピクチャを配置。
準備部分で現在いる階層を階層切り替え用の変数に代入しているので、その値を条件に今いる階層の座標を表示させます。

現在地を選択状態にする

無くてもあんまり支障はないけどあったほうが便利な部分。
本編の現在地表示機能を兼ねて、今自分がいる場所から選択状態が始まるように。
準備部分で、回想用のマップ毎の変数をマップ現在地変数として取得しており、その値を条件に現在地の座標が顔アイコン(明)で上書きされます。
また、ここで回想ワープに使う変数を取得。

入力と選択

ここからは自動実行での処理。
前に取得した回想ワープの変数で現在選択状態のエリアを疑似的に取得。

この状態でボタンC(決定ボタン)を押すと、そのマップに移動する。
その際にメニューと移動を許可して、階層、マップ毎の変数をそのマップのものに。
回想ワープの変数をリセットしてピクチャ一斉消去、自動実行のトリガーのスイッチもOFFに。

別のエリアを選択=方向キーを入力した場合。
顔アイコンの座標と回想ワープの変数を変更することで、あたかも選択しているように見せている。
このコモンイベントは自動実行でループしているので、回想ワープの変数が変わると、その変数のエリアがまた選択状態になる。

キャンセルと階層切り替え

キャンセルするときは、場所が移動すること以外、決定ボタンを押した時とほぼ同じ。

マップを切り替えるときは地図を切り替えたあと、地図以外のピクチャを一斉消去。
そのあとで所定のマップ毎の変数を取得して、上記の「顔アイコン(暗)の表示」と「現在地を選択状態にする」部分を通って自動実行のスイッチを切り替え。

おまけ

マップの名前を右上にウィンドウ表示させたい……
ウィンドウを右上に表示させることはできるから、方向キーで切り替わる方法を考えねば。
どっちにしろマップ機能はここらで一区切り、追加するにしても遠い話です。

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

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

絵の無いゲーム 2019/12/02 21:00

今日の進捗~地図システム完成~

今日は地図のシステムを、実際に使える段階まで進めました。

アイテム「城の見取り図」を使用後、現在いる階層のマップが表示。
左右キーで切り替え。キャンセルボタンで閉じる。
敵がいる場所でも開け、その間敵は動かない。
でも敵に見つかってる状態で使おうとすると怒られる。


以下開発メモ

アイテムを使用すると魅了値、理性値のゲージが消えて地図切り替えスイッチと、PC・NPCの移動を制御するスイッチがONになる。

その後現在いる階層を、あらかじめ入れておいた変数に合わせてマップ表示。



地図切り替えスイッチをONにしたら並列で制御。
処理的にはただピクチャを表示させているだけなので、普通に操作は受け付ける。
なのでキャンセルボタンでメニューを開かないよう禁止に。

次に現在いる階層の変数を、地図を切り替える用の変数に代入して、その変数を条件に左右キーで一階と二階のマップを切り替える。



スタンプは別のコモンイベントで制御。
イベント等で各施設の場所を教えてもらったらスタンプが押されて、こちらにも反映される。


閉じる時はキャンセルボタンで。
マップとスタンプ含めてピクチャを全消去。
移動制御用スイッチも復帰し、ゲージも表示。
魅了値ゲージはピクチャで管理してるので、各々ピクチャ番号が被らないように注意。

ちなみにマップを開きながらでも会話ボタンは受け付けたり。
地図を開いた状態でできる会話とかも入れたら面白そう。

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

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

絵の無いゲーム 2019/08/01 21:00

今日の進捗~ボスの行動パターン完成~

昨日から色々微調整して納得できる形になったので、開発メモとして残します。


リレー式に行動パターンを切り替える

今回NPCに様々な行動を取らせるにあたって、
イベントごとにスイッチをリレー式に切り替える方法を取りました。

ニュートラル

ニュートラルの行動。
プレイヤーに近づいたりふらつきながらして、汎用スイッチ1(以降は「汎用」を省略)が定期的にONになるような移動ルートを組む。


スイッチ1

スイッチ1がONになったら、NPCは一定時間停止。
停止時間に、別の並列イベントを走らせてプレイヤーが同軸上にいるかどうか監視している。


スイッチ1がONの時に起動する並列イベント。
座標を取得して壁を認識するところまでは視界制御の時とだいたい同じ。
3マス以上10マス以下を範囲としている。


プレイヤーが同軸上にいた場合には、スイッチ1とスイッチ2が切り替わる。
いない場合はスイッチ1をOFFにして、ニュートラルに戻る。

スイッチ2

スイッチ2がONになると、NPCは突進するために助走をつける。
このとき、NPCのイベントページで移動速度を3にを設定しておくと助走がスムーズになる。

助走が終わったらスイッチ2とスイッチ3が切り替わる。

スイッチ3

実際に突進を制御する並列イベント。
突進距離は10マス。壁もしくはプレイヤーにぶつかった時のため、「移動できない場合は飛ばす」に設定している。

ぶつかったら、それが壁かどうか判定。
目の前の地形タグを読み取って、1以上だったら逆向きにジャンプして、
スイッチ5に切り替わる。


プレイヤーにぶつかった場合はNPCのイベントの方で処理をしており、ぶつかったらNPCの背後にジャンプして、スイッチ4に切り替わる。

なお突進の並列イベントは自動的にスイッチ3がOFFになるので、
壁にもプレイヤーにもぶつからなかった場合はニュートラルに戻る。

スイッチ4

プレイヤーの操作を受け付けず、無防備状態。
敵が「突き飛ばす」を食らったような感じ。

その間はNPCもスイッチ4がONの場合の行動を取り、ニュートラルで接触したのとは異なる行動を取る。

一定時間でスイッチ4がOFFになり、ニュートラルに戻る。

スイッチ5

NPCが壁にぶつかった場合の並列イベント。
フキダシの「くしゃくしゃ」を三回ポップさせた後、スイッチ5をOFFにしてニュートラルに戻る。


スイッチ毎のNPCの挙動

スイッチが切り替わると、NPCのイベントページも切り替わるようにして、特定の状況下で接触した際のNPCの挙動も変わるようにしています。

(助走中に接触したり、壁にぶつかった直後に接触したりした時で敵のステータスやセリフが変化する)

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

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

絵の無いゲーム 2019/07/17 21:00

今日の進捗 ~NPCの視界制御、完成~

NPCの視界の設定になんとか成功しました。
以下開発メモです。


プレイヤーが視界内にいるかの判定

まずNPCとプレイヤーの距離を算出。
それぞれの座標を取得して、プレイヤー座標とNPC座標の差を求める。
その値の絶対値が距離である。


      設定した視界            得られた視界を色分け。

次に視界の設定。
距離の値がX,Y座標で(2、4)の場合、視界は2×4の長方形の形を取る。

その形を基準に、条件分岐で視界の形を整えていく。
また、NPCの向きとプレイヤーの位置などで条件を変更。
残りの方向に対しても同様の処理をする。

ここまでの処理をプレイヤーを認識するまで繰り返し、プレイヤーを認識したら、以降の処理で壁があるかを判定する。

壁の認識


赤丸で囲んだ地形を壁と認識させる。

まず「データベース」→「タイルセット」セットから、壁(=視界を切らせたい障害物)にしたいタイルの、「地形タグ」を1以上に変更する。


精度を高めるために座標を入れなおして、壁認識用の座標を取得。
座標の入れなおしは省いてもいいかもしれません。

Y軸上方向(マイナス方向)の壁を認識するために、先ほど取得した壁認識用のY座標を上に飛ばす(Y座標をマイナス1する)

目の前に視界ビームを飛ばしてるイメージ?

視界ビームを飛ばした先にプレイヤーがいる、すなわち壁認識用の座標とプレイヤーの座標が等しい場合は、プレイヤーを発見した処理へ。

プレイヤーがいない場合、目の前の地形タグを取得する。
地形タグが0(=障害物がない)場合は更にマイナス1して、もう一マス前に視界ビームを飛ばす。

地形タグが、先ほど設定した1以上のタイルだった場合、壁を認識。
視界ビームを飛ばすマスを垂直にずらして、同様の処理を繰り返す。
画像の場合だと、左一マスずらす処理へ進む。

座標を左に一マスずらす(=X座標をマイナス1)した後で、また視界ビームを飛ばす。

プレイヤーを発見したら発見の処理へ。
壁を認識したら今度は右にずらす。
壁がなかったら更に視界ビームを飛ばす……

これを上下左右全ての方向に対して行う。

つまり「自分の縦横三マス分全てに視界ビームを飛ばす」ことになる。(プレイヤーが壁の奥側にいる場合)

そうして最後の視界ビームと飛ばし終えたら、視界内にプレイヤーないないということで、距離を算出するところから繰り返す。

この際、視界ビームを飛ばす回数やずらす範囲で、さらに視界を細かく設定できます。



今回だと、視界ビームは四マス先まで飛ばして三マス広がるように設定。
視界は画像の色分けした通りになります。


視界と壁認識、実装動画

画像だけだと分かり難いので、実装したところを動画に。
今の所不具合なく動いてます。

今後の課題としては、
・二体以上に視界を持たせる場合、管理が非常にめんどくさい。
・上下左右方向に対応させるので視界の設定が複雑。時間がめっちゃかかる。

これらの点を改良していきたいです。

参考動画

本システムを作成するにあたり、ニコニコ動画でよあひむさんが公開している動画「【RPGツクールVX Ace】RPGツクールでつくーるよ 14【ゆっくり実況】」を参考にさせていただきました。

視界の説明に関してはここの説明より100倍分かりやすいです。

以下ニコニコ動画のリンク
https://www.nicovideo.jp/watch/sm20461074

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

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

« 1 2

月別アーカイブ

記事を検索