解析/共通処理
![]() | このページには正規のプレイによって得られた情報ではなく、Elinのデータ解析・デバッグモード・内部ファイル閲覧などによって得た情報が掲載されています。 ゲームの重大なネタバレや、プレイの楽しみを損なう情報が含まれている可能性があります。 閲覧は自己責任でお願いするとともに、通常ページに解析ページへのリンクを貼ることはお控えください。 また、このページの情報をWikiの他のページに記載する際は計算コードなどをそのまま掲示するのではなく、コードが読めない人にもわかりやすいように内容を要約して書いていただけると幸いです。 |
バージョン EA23.106: この記事は、Elin の最新の安定版リリースに、少なくとも20のマイナーバージョンが遅れています。ページの更新をお願いします。
このページではElinのプログラム中で頻出する共通の処理について記載します。
CURVE関数
CURVE関数とはElinにて、値の有効性を段階的に抑制する処理です。
EClass.cs内で以下のように定義されています。
public static int curve(int a, int start, int step, int rate = 75)
{
if (a <= start)
{
return a;
}
for (int i = 0; i < 10; i++)
{
int num = start + i * step;
if (a > num)
{
a = num + (a - num) * rate / 100;
continue;
}
return a;
}
return a;
}
「a」はCURVE関数で抑制を行う値(以下、入力値
)です。
「start」はCURVE関数で抑制がかかりはじめるまでの閾値(以下、抑制閾値
)です。例えばstart=150の場合、aが151以上であればCURVE関数による抑制が働きます。
「rate」は抑制の比率を百分率で表した数値(以下、抑制比率
)です。抑制対象の数値はこの%分の値になるように計算されます。
「step」は次の抑制までの閾値(以下、抑制段階
)です。
以下はCURVE関数についての解説です。(わかりやすさの為Elinのプログラムと同じではありませんが、等価です)
0. 抑制回数の変数(以下、抑制回数
)に1を代入します。
1. まずは抑制対象となる値を算出します。
抑制対象値 = 入力値 - 抑制閾値
2. 抑制対象値 <= 0の場合、入力値を返却して終了します。
3. 抑制値を算出します。
抑制値 = 抑制対象値 × 抑制比率 / 100
4. 抑制値 <= 抑制段階 か 抑制回数 == 10 のどちらかを満たす場合、以下の式で算出される抑制結果を返却して終了します。
抑制結果 = 抑制値 + 抑制閾値 + 抑制段階 × (抑制回数 - 1)
5. 抑制対象値に以下の式の値を代入します。
抑制対象値 = 抑制値 - 抑制閾値
6. 値が返却されるまで3~5を繰り返します。
関数の曲線の傾きは徐々に小さくなり、最終的には(抑制比率 / 100)^10
となります。