2022/12/29の作業進捗

進捗

競争相手となるCPUの挙動を実装。感触としては今のところ悪くなさそう。細かいパラメータ調整やイベント発生時の処理云々がまだ残作業として残っている。

以下は仕様のアイディアメモ。

  • 初期の持ち金は10000Gとする。
  • 難易度ごとに以下のプレイ内容で5回ずつサンプリングする。
    • EASY・・・経済環境の変化なし。カード使用なし、工場は積極的に増やさない。
    • NORMAL・・・経済環境の変化なし。一部カードのみ使用あり(労働協議、デマンド管理、技術研究、設備更新)、合理性を考慮せずプレイ。
    • HARD・・・経済環境の変化なし。カード使用あり、工場を積極的に増やす。合理性を考えつつ全力プレイ。
    • 上記の結果から資産の指数近似式(y=Ae^(Bx))を得る。
  • 平均1をとり正規分布に従う乱数を生成。毎ターンの乱数({x:-N~N+1の範囲をとる})*(指数関数(x=経過ターン数)-指数関数(x=経過ターン数 – 1))のゴールドを得る。
  • 実際にプレイしながら難易度ごとにN、A、Bのパラメータを調整する。
  • イベント発生による収入の変動は毎ターン得るゴールドに係数をかけることでプレイヤー同様のバフ・デバフがかかるよう疑似的に再現する。

近似式の係数A、Bの求め方

資産増加の近似式(y=Ae^(Bx))の係数A、BはExcelで算出。経過ターン数をx、そのターンにおける資産額をyとして毎ターン記録し、以下の式で求める。

(1)Aを求める関数(セルに次の関数を入力)

=EXP(INTERCEPT(LN(y値のセル範囲)、x値のセル範囲))

(2)Bを求める関数(セルに次の関数を入力)

=SLOPE(LN(y値のセル範囲)、x値のセル範囲)

実際に記録したデータと近似式を回帰分析で表示すると↓のようなグラフになる。最初の持ち金10000に対し、切片が14626になっているのは初期工場の評価額として+4626が加算されているため。

正規分布に従う乱数生成の方法

今回はボックス=ミュラー法という手法で実装。

XとYがお互いに独立で、0~1の範囲で一様に分布する乱数のとき

$$Z_1 = \sqrt{-2\log X}cos(2\pi Y)$$

$$Z_2 = \sqrt{-2\log X}sin(2\pi Y)$$

Z1、Z2はそれぞれ標準偏差1.0、平均値0.0の正規分布に従う乱数となる。

今回は標準偏差を調整可能なパラメータ、平均値を1.0としたかったため以下のように実装。

/// <summary>
/// ボックスミュラー法により正規分布に従う乱数を取得する
/// </summary>
/// <param name="sigma">標準偏差</param>
/// <param name="ave">平均値</param>
/// <returns></returns>
private float GetRandX(float sigma = 1f, float ave = 1f)
{
    var x = Random.Range(0f, 1f);
    var y = Random.Range(0f, 1f);

    var z = sigma * Mathf.Sqrt(-2.0f * Mathf.Log(x)) * Mathf.Cos(2.0f * Mathf.PI * y) + ave;

    return z;
}

残作業

  • 競うライバル(CPU)の実装の続き(パラメータ調整とイベントの影響反映)
  • タイトルシーンの作成
  • オンラインランキング機能の試作
  • 実績機能の試作
  • ゲームの説明シーン(チュートリアル)作成
  • 音声をつける
  • 広告の実装
  • タイトル考案
  • プロモーションの作成
  • リリース

課題

CPUのアルゴリズム考案についてはひとまず今日のアイディアで通すとして一旦解消。その他は28日の課題参照。

その他備忘録

Twitterアカウントでリストの編集をしていたらスパムアカウントと認定されたらしく、(おそらく)一時的にフォローの追加、リストの編集ができなくなった。おまけに翌朝からログインできなくなってるもんだからBANされたのかと思ってびびったが、どうにもTwitter自体の障害とのこと。スパム認定で機能制限かけられた翌朝に障害ってタイムリー過ぎる。それはさておき機能制限が解除されるまで1週間くらいかかるとの記事もあったので、リストの整理など中断してしまった作業について、制限解除され次第続きを忘れずにやっておきたい。

参考サイト様

https://gijyutsu-keisan.com/excel/numcal/regress/regress_1.php

https://imagingsolution.net/program/csharp/normal-random/

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA