No Man's Sky (ノーマンズスカイ) 日本語Wiki
Advertisement

荷重曲線(Weighting curveとは、本作がアップグレードモジュールの値を決定するときに使用する値の偏り。

概要[]

本作はアップグレードモジュールの値の偏りに荷重曲線(Weighting curve)を用いている。アップグレードモジュールのパラメータはランダムに確定するが、多くの値はそのまま使われずに「イージング関数」に当てはめられる。これによって低い数値の頻度が多くなり高い数値の頻度が少なくなる。このように値が偏ることにより良い数値を持つモジュールの希少性が相対的に上昇、その価値が上がる。

EaseInExpo

「イージング関数」は本来はアニメーションの動きを表す関数。横軸が時間であり、縦軸が移動量である。このグラフは左から右に時間が進んでいく、「easeInExpo」という関数は大半の時間をほとんど移動せず、最後の方でスッと動くようになっている。これを額面通り性能値に適用すると、大半の値が最低値で中間値や最大値がなかなか出ないという傾向になる。

しかしそれだけでは面白くないので、本作の荷重曲線はさらに最大値付近を特別に多くするような加工がされているようだ。大半は低い値だが何度も試行すれば確実に高い値も出ることが体感できる。これによってギャンブル性が高まり試行することのモチベーションが生まれ、当たり外れが明確になることで微妙な数値のモジュールで我慢するといった事象が減る。

本作の荷重曲線
内部データの話になるが各アップグレードモジュールの性能値に直接イージング関数を指定してるのではなく荷重曲線のカーブ名を記述してある。さらに別のテーブルでカーブ名に対応するイージング関数が設定してある。いきなりイージング関数の名前を書いても傾向が直感的ではないため本wikiの記述もそれに倣った形にする。
イージング関数
数学者ロバート・ペナーによって開発されたアニメーションの動きを自然に見せるための関数ライブラリ。
時間に対する移動量を定義した関数によってなる。これによって開始時点と終了時点の位置を定義するだけでも自然な動きを見せることが可能。ゲームやアニメーション分野、UIの動きなど様々な分野で使われている。

NoWeighting[]

最小値から最大値まで全ての数が同じ確率で現われる。所謂一次関数

イージング関数では「linear」と呼ばれる関数。荷重がかかっておらず値が線形的に反映される。

MaxIsUncommon[]

EaseInQuad

最小値がやや多くなり、中間値や最大値付近の出現頻度がやや少なくなる値の偏り。

イージング関数の「easeInQuad」関数を用いている。

MaxIsRare[]

EaseInQuart

最小値が多くなり、中間値や最大値付近の出現頻度が少なくなる値の偏り。

イージング関数の「easeInQuart」関数を用いている。

MaxIsSuperRare[]

EaseInExpo

最小値が非常に多くなり、中間値や最大値付近の出現頻度がほとんどなくなる値の偏り。

イージング関数の「easeInExpo」関数を用いている。

MinIsUncommon[]

EaseOutQuad

最大値がやや多くなり、中間値や最小値の出現頻度がやや少なくなる値の偏り。

イージング関数の「easeOutQuad」関数を用いている。

MinIsRare[]

EaseOutQuart

最大値が多くなり、中間値や最小値の出現頻度が少なくなる値の偏り。

イージング関数の「easeOutQuart」関数を用いている。

MinIsSuperRare[]

EaseOutExpo

最大値が非常に多くなり、中間値や最小値の出現頻度がほとんどなくなる値の偏り。

イージング関数の「easeOutExpo」関数を用いている。

内部データ[]

カーブ名をイージング関数に対応させている表(XML)。「METADATA/REALITY/DEFAULTREALITY.MBIN」ファイルをMBINCompilerでテキスト化したものの一部。

注意:解析データとなります。

<Property name="WeightingCurves">
  <Property name="NoWeighting" value="TkCurveType.xml">
    <Property name="Curve" value="Linear" />
  </Property>
  <Property name="MaxIsUncommon" value="TkCurveType.xml">
    <Property name="Curve" value="EaseInQuad" />
  </Property>
  <Property name="MaxIsRare" value="TkCurveType.xml">
    <Property name="Curve" value="EaseInQuart" />
  </Property>
  <Property name="MaxIsSuperRare" value="TkCurveType.xml">
    <Property name="Curve" value="EaseInExpo" />
  </Property>
  <Property name="MinIsUncommon" value="TkCurveType.xml">
    <Property name="Curve" value="EaseOutQuad" />
  </Property>
  <Property name="MinIsRare" value="TkCurveType.xml">
    <Property name="Curve" value="EaseOutQuart" />
  </Property>
  <Property name="MinIsSuperRare" value="TkCurveType.xml">
    <Property name="Curve" value="EaseOutExpo" />
  </Property>
</Property>
Advertisement