ゲーム制作にあたってご意見頂きたい

蟹そぼろ
記事: 42
登録日時: 2018年2月20日(火) 15:04

ゲーム制作にあたってご意見頂きたい

投稿記事by 蟹そぼろ » 2018年4月30日(月) 01:01

これからゲーム制作を始めてみようと思うのですが、ウルフエディタから最近ツクールに移ってきた新参故に知識が浅い状態です。
なのでこう言ったイベントを作るにはこう構築するのが良いだとか、この方法が管理しやすいだとか、このプラグインが適しているなどのご意見を頂きたい所存であります。
いくつかありますので回答いただけると嬉しいです。

その1
ランダム定期イベントの実装
ランダム定期イベント→行動コマンド選択(買い物、移動、クエスト等)→ランダム定期イベント→行動:以下ループ
の様にターン毎にランダムで発生するイベントを作りたいです
数十個のイベントが存在しその中でランダムに一つイベントが発生する感じです
コモンイベントでイベントを管理し乱数を使えばよさそうですが確率等も調整して
このイベントが発生したら次回はこのイベントが発生する確率が上昇するなどの挙動なども行いたいです
もしこのようなシステムを構築するなら皆さんはどうしますか?

その2
アクターAとBがパーティに居る時にはイベントAが発生(分岐)する
アクターAだけがパーティに居る時にはイベントBが発生(分岐)する
アクターBだけがパーティに居る時にはイベントCが発生(分岐)する
アクターAもBもパーティに居ない時にはイベントDが発生(分岐)する
アクターAとCがパーティに居る時にはイベントEが発生(分岐)する....
という挙動を手軽に行いたいです
たくさんのキャラで分岐条件アクター:パーティにいるでするとごちゃごちゃして見づらいので変数か何かで手軽に管理できないでしょうか?

わかりにくい文章かつ聞くまでもない内容かもしれませんがお答えいただけるとありがたいです。

アバター
ベルファーレ長田(゜∀゜)
記事: 38
登録日時: 2017年9月08日(金) 13:22
お住まい: VIPツクールスレ
連絡を取る:

Re: ゲーム制作にあたってご意見頂きたい

投稿記事by ベルファーレ長田(゜∀゜) » 2018年4月30日(月) 07:02

どうも。

> ランダム定期イベントの実装
下記のようにランダムイベント毎に、イベント発生率を変数で管理すれば良いと思います。
そうすることで条件に応じてイベント毎に発生率を増減することができます。
まぁランダムイベントがたくさんあると流石に大変ですが…。

random.png


>たくさんのキャラで分岐条件アクター:パーティにいるでするとごちゃごちゃして見づらいので変数か何かで手軽に管理できないでしょうか?

こちら時間がなくてサンプルを用意できませんでしたが、
ビット演算のような考え方で実装するといいと思います。
現在メンバーにいるアクターごとに、アクターID番のビットをたてて、
どのビットが立ってるかどうかで、どのキャラがいるかを判定する処理を作れば、
わりとスリムになるような気がします。
時間があればサンプルを用意します。
----------------------------------------------------------------
◆名前
ベルファーレ長田(゜∀゜)◆AHYA/HaiA.
◆肩書
スーパーツクラー
◆Twitter
https://twitter.com/velfare_nagata
----------------------------------------------------------------
蟹そぼろ
記事: 42
登録日時: 2018年2月20日(火) 15:04

Re: ゲーム制作にあたってご意見頂きたい

投稿記事by 蟹そぼろ » 2018年4月30日(月) 15:45

ベルファーレ長田さん
わかりやすく、さらに画像も添えて説明してくださりありがとうございます
非常に助かりました! 感謝です...!

重ねてご質問する形になって申し訳ありませんが
テストで挙動を色々試してみてますが
一度発生したイベントを二度と起こらなくさせる方法:図①
イベント後、特定のイベントの発生確率をUPさせる方法:図②
のような形で大丈夫でしょうか?最適解があればご教授頂きたいです
wegwg.png

イベントが沢山あり尚且つ消滅したり確率が変動するとなると乱数の幅や確率管理がなかなかハードですね
素晴らしい方法をご教授ありがとうございます 出来る範囲でコツコツ組み立てていこうと思います

ビット演算の方はまだ私の知識じゃ理解が追い付かないので勉強しつつ組み立てていくことにします
お時間があればサンプルの方用意いただければ非常に喜ばしいです。

このような初心者の質問にご返信頂きありがとうございました
ありがとうございますm( )m
アバター
ベルファーレ長田(゜∀゜)
記事: 38
登録日時: 2017年9月08日(金) 13:22
お住まい: VIPツクールスレ
連絡を取る:

Re: ゲーム制作にあたってご意見頂きたい

投稿記事by ベルファーレ長田(゜∀゜) » 2018年5月01日(火) 17:52

どうも。
参考になったようで何よりです。

> 一度発生したイベントを二度と起こらなくさせる方法:図①
>イベント後、特定のイベントの発生確率をUPさせる方法:図②

概ね問題ないと思いますが、代入で確率を変更していると下記のようなケースが発生する可能性があります。
前提1:イベントAは終了済で、二度と発生しない。
前提2:イベントBを未実施で、イベントBを実行すると、イベントAの発生確率が50%になる。
・このような前提でイベントBが実行されると、イベントAが再度発生する可能性がある!

イベントB実行時、イベントAが終了済かチェックするのも一手ですが、面倒になる気がします。
そこで、下記のようなやりかたを提案いたします。
・イベントの発生確率は加算または減算で変更する。
・終了したイベントの発生確率は-999999で代入する。

こうすることで、既に終了したイベントの発生確率が、
他のイベントの発生によって再度発生するというケースを防ぐことができます。

probability.png


ちなみに、イベントAが起きたら必ずイベントBを起こすという場合には、
イベントA発生時にイベントBの発生確率を+100とかすれば良いと思います。


> たくさんのキャラで分岐条件アクター:パーティにいるでするとごちゃごちゃして見づらいので変数か何かで手軽に管理できないでしょうか?

すみません、前回ビット演算でやれば~とか言ってましたが、
何かスーパーツクラー気取りがかっこつけたこと言っただけだと、忘れてください…。

下記のような汎用的なコモンイベントを組みます。

CheckExistEvent.png



やってる内容は以下の通りです。
①指定したID一覧(配列)のアクターがパーティに存在することをチェック。
②指定したID一覧(配列)のアクターがパーティに存在しないことをチェック。
③どちらのチェックも問題なければスイッチON、どちらか一方でも失敗していればスイッチOFF。

そして作成したコモンイベントを下記のような形で利用します。

exsanmple.png


今回の例では配列を利用しているので、馴染みがなければややこしいかもしれませんが、
条件分岐でキャラクターがいるかどうかを判定するよりかはマシかとは思います。
分からない点があればお答えします。
----------------------------------------------------------------
◆名前
ベルファーレ長田(゜∀゜)◆AHYA/HaiA.
◆肩書
スーパーツクラー
◆Twitter
https://twitter.com/velfare_nagata
----------------------------------------------------------------
蟹そぼろ
記事: 42
登録日時: 2018年2月20日(火) 15:04

Re: ゲーム制作にあたってご意見頂きたい

投稿記事by 蟹そぼろ » 2018年5月02日(水) 01:03

色々試してたので夜分遅くに返信失礼します。
・イベントの発生確率は加算または減算で変更する。
・終了したイベントの発生確率は-999999で代入する。

確かに代入だと確率上げたときに再発恐れがありますね...
失念しておりました 最適解を提示していただき目から鱗です。
ランダム定期イベントの実装はこれでなんとかなりそうです!
ご意見心から感謝いたします..!

たくさんのキャラで分岐条件アクターについてなんですがスプリクトにほぼ触れたことのない人間故に画像から写してみてもどこかミスしてるようでうまく行きません...
初歩的な段階で躓いて申し訳ないですがスクリプトのコピペ頂けないでしょうか...
質問以前の問題で申し訳ありません...
wegwg.png

weg.png
アバター
ベルファーレ長田(゜∀゜)
記事: 38
登録日時: 2017年9月08日(金) 13:22
お住まい: VIPツクールスレ
連絡を取る:

Re: ゲーム制作にあたってご意見頂きたい

投稿記事by ベルファーレ長田(゜∀゜) » 2018年5月02日(水) 05:39

どうも。
失礼しました、コードの説明してるのに画像だけ示すのは意地悪なんてもんじゃないですね…。
下記からどうぞ。
コメントは邪魔なら外してください。

パーティ内に指定したアクターIDのキャラクターが存在することを確認するスクリプト

コード: 全て選択

// ▼変数1番から、メンバーに存在するアクターID一覧配列取得
var containedIds = $gameVariables.value( 1 );
// ▼配列に格納されたアクターIDの数だけループ
containedIds.forEach( function( targetId ) {
    // ▼アクターIDからアクター情報を取得
    var target = $gameActors.actor( targetId );
    // ▼パーティにアクターが存在しない場合はスイッチ1番をオフにする
    //  ※存在しないといけないので、存在していなかったら処理失敗
    if( !$gameParty.members().contains( target ) ) {
        $gameSwitches.setValue( 1, false );
    }
} );


パーティ内に指定したアクターIDのキャラクターが存在しないことを確認するスクリプト

コード: 全て選択

// ▼変数2番から、メンバーに存在しないアクターID一覧配列取得
var uncontainedIds = $gameVariables.value( 2 );
// ▼配列に格納されたアクターIDの数だけループ
uncontainedIds.forEach( function( targetId ) {
    // ▼アクターIDからアクター情報を取得
    var target = $gameActors.actor( targetId );
    // ▼パーティにアクターが存在する場合はスイッチ1番をオフにする
    //  ※存在してはいけないので、存在していたら処理失敗
    if( $gameParty.members().contains( target ) ) {
        $gameSwitches.setValue( 1, false );
    }
} );
----------------------------------------------------------------
◆名前
ベルファーレ長田(゜∀゜)◆AHYA/HaiA.
◆肩書
スーパーツクラー
◆Twitter
https://twitter.com/velfare_nagata
----------------------------------------------------------------
蟹そぼろ
記事: 42
登録日時: 2018年2月20日(火) 15:04

Re: ゲーム制作にあたってご意見頂きたい

投稿記事by 蟹そぼろ » 2018年5月02日(水) 09:17

質問に答えていただき最適解を示して頂いただけでも感激です...!
意地悪だなんてとんでもないです。

コピペして試したら正常にこなせました
何度もありがとうございます!

とりあえずやりたいことは形になったのでこのまま制作していきます。
またこの件で躓いたらまた質問させて頂くかもです。
この度はご回答いただき誠にありがとうございました!

“MV:質問” へ戻る