RandomStream は、再現性のあるランダム値を生成し、ブループリントや Level ブループリント、さらにアニメーション用に AnimBlueprints の中でも利用できるようにします。ランダム エフェクトが必要な時にオブジェクトを散乱、またはプロシージャルな背景を構築すると同時に、 グラフが評価されると一定の分布をするようなエフェクトを設定する場合に非常に便利です。これまでは、 ランダム値を使用すると、グラフが評価されるたびに毎回違う分布になっていました。 つまり、ブループリントを移動したり、グラフの再評価が生じるような操作を行うと、全く違うエフェクトになっていました。RandomStreams を使用すると、望ましい結果を得るためのシード値に基づきエフェクトを微調整し、その後、 全体的なエフェクトを維持しながら修正を加えることができます。
RandomStream 変数
RandomStreams は、ブループリント の構造体変数の特殊タイプとして利用できます。[Graph (グラフ)] モードの [My Blueprint] タブから作成して他の変数と同じように追加することができます。

新しい変数をブループリント クラスや Level ブループリント内に追加する方法の詳細手順については、変数の作成手順 をご覧ください。
RandomStream 関数
RandomStream を入力として受けとり、関数に合わせた様々なタイプのランダム値を出力する関数群を利用して、RandomStream 変数を使います。

関数 | 説明 |
---|---|
Random Bool from Stream | 0 または 1 をランダムに出力します。 |
Random Float from Stream | (0.0, 1.0) の範囲でランダムな Float 値を出力します。 |
Random Float in Range from Stream | (Min, Max) の範囲でランダムな Float 値を出力します。 |
Random Integer From Stream | (0, Max - 1) の範囲で均一に分散されたランダムな Integer 値を出力します。 |
Random Integer In Range From Stream | (Min, Max) の範囲でランダムな Integer 値を出力します。 |
Random Rotator From Stream | ランダムな Rotator 値を出力します。 |
Random Unit Vector From Stream | ランダムなユニット長の Vector 値を出力します。 |
上記の関数を 1 つ選択すると、RandomStream 変数に接続されたグラフに配置されます。

以下は、RandomStream 関数を使用してブループリントに属するコンポーネントをランダムに配置し、回転させる例です。

上図を見ると、ランダムな Booleans、Floats、Integers、Vectors、Rotators は、すべて同じストリームから引き出せることが分かります。
Initial Seed
Initial Seed プロパティは、ランダム値のストリーム計算に使用します。単一のシード値から生成されたランダム値のシーケンスは、計算されるたびに常に同じになり、 一貫性が実現されるというわけです。異なるシードからは異なる値のシーケンスが生成されます。
そのため、RandomStream の初期シード値を修正すると、生成される値も変化します。これを使用して、ニーズに合ったシーケンスや分布が得られるまで、 ランダム エフェクトを微調整することができます。ブループリントのインスタンス毎に、新たに初期シード値が生成されます。ブループリントのインスタンスがワールドに配置された時や既存のインスタンスの複製が作られたときに、 毎回、ブループリントに属する各 RandomStream 変数に、新しい初期シード値が与えられます。そのため、各インスタンスは異なり、ちょうど必要な結果を得るために微調整することができます。
初期シード値を修正する
Initial Seed プロパティを変数上に直接設定するには、RandomStream 変数を編集のために必ず公開しなければなりません。一度公開されると、 ブループリント のインスタンスが選択された場合、[Details (詳細)] タブで Initial Seed プロパティが見えるようになります。

ブループリント グラフ内で初期シード値を特定の値や新しいランダム値に設定することもできます。
草の葉や石のような多くのオブジェクトを配置する ブループリントは 1 つだけで、テストや他の目的で常に同じように配置したい場合に、Set Random Stream Seed ノードが役立ちます。 これは、ブループリントがレベルに配置されると、ランダムに設定されている初期シード値をオーバーライドします。