58歩目 バランス調整! Unityで1日1ステップ!ノンフィールドRPG開発日記

1日1歩開発日記

ふりかえり

前回は復活機能を実装しました!

倒された時のプレイヤーの選択肢を増やすことでゲームに更なる戦略性を追加しました!

バランス調整!

今回はゲームバランスの調整に取り組みました!

特に気になっていたのが「G(お金)強化によるHPの上昇バランス」です。

現在の仕様では、HP強化に必要なコストは常に一定で、100GでHPを20アップできます。これが何回でも同じコストで行える状態だと、敵を倒すことで得られるGが増えたタイミングでプレイヤーが過剰に強化できてしまい、ゲームバランスが崩壊するリスクがあります。

このままでは後半に行くほど簡単になりすぎるため、強化を重ねるほどにコストが増える仕組みを導入しました。いわゆる「インフレ対策」です。

コストの増加ルール

新しい計算方法では、以下のようにパラメータを設定できます:

  • 初期コスト:100
  • 増加コスト:100
  • 倍加レベル:5
  • 倍加量:2

このルールに基づくと、強化レベルに応じてコストは次のように上昇します:

レベル必要コスト補足
Lv1100初期値
Lv2200+100
Lv3300+100
Lv4400+100
Lv51000直前(Lv4)のコスト × 倍加量 + 倍加後の増加分
Lv61200+200
Lv71400+200
Lv81600+200
Lv91800+200
Lv104000再び倍加

このように、一定のレベルごとに「段階的に倍増」するよう設計しています。これにより、プレイヤーの成長に対して自然な重み付けがされ、後半になっても緊張感のあるプレイが維持されるようになります。

適用範囲

このコスト増加の考え方は、以下の要素に幅広く適用しています:

  • プレイヤーのレベルアップに必要な経験値
  • G強化によるステータス強化(HPなど)
  • アーティファクトの強化
  • マナ強化

それぞれの成長要素でバランスを統一することで、一貫性のある育成体験が実現できました。

コスト計算の実装について(簡易解説)

以下は、実際のマナ強化コストを計算するためのUnity C#コードの一部です。

// マナ強化コスト設定データクラス
    [System.Serializable]
    public class ManaUpgradeCostData
    {
        [Header("コスト設定")]
        public int initialCost = 10; // 強化初期コスト(マナ)
        public int increaseCost = 2; // 強化増加コスト(マナ)
        public int doubleLevel = 5; // 強化倍加レベル
        public float baseCostMultiplier = 2.0f; // 強化元コスト倍率
        public float increaseCostMultiplier = 2.0f; // 強化増加コスト倍率
        public int maxLevel = 50; // 最大レベル
    }

この設定データをもとに、以下のロジックでコストを段階的に増加させています:

// マナ強化コスト計算メソッド
    private int CalculateManaUpgradeCost(int upgradeIndex)
    {
        if (upgradeIndex < 0 || upgradeIndex >= upgradeDataList.Count) return 0;
        if (upgradeIndex >= manaUpgradeCostSettings.Count) return 0;
        
        var upgradeData = upgradeDataList[upgradeIndex];
        var costData = manaUpgradeCostSettings[upgradeIndex];
        
        int currentLevel = upgradeData.currentLevel;
        if (currentLevel <= 0) return costData.initialCost;
        
        int stage = (currentLevel - 1) / costData.doubleLevel; // 現在の段階(0から開始)
        int levelInStage = (currentLevel - 1) % costData.doubleLevel; // 現在の段階内でのレベル(0から開始)
        
        // 現在の段階での基本コストを計算(前の段階の最終値を2倍)
        float currentBaseCost = costData.initialCost;
        float currentIncreaseCost = costData.increaseCost;
        
        for (int i = 0; i < stage; i++)
        {
            // 前の段階の最終値を2倍して基本コストとする
            float previousStageFinalValue = currentBaseCost + currentIncreaseCost * (costData.doubleLevel - 1);
            currentBaseCost = previousStageFinalValue * costData.baseCostMultiplier;
            currentIncreaseCost *= costData.increaseCostMultiplier;
        }
        
        // 現在の段階内でのコストを計算
        return Mathf.RoundToInt(currentBaseCost + currentIncreaseCost * levelInStage);
    }

今後の構想

リリース時点では10エリアの実装を予定しています。最終的には約30エリアまで増やす構想で、アップデートごとに新たな強化要素や機能追加をしながら、徐々にエリアを開放していく方針です。

現在のバランス設定では、3ヶ月ほどかけて第10エリアに到達できる難易度になるように調整しています。

「成長しながら徐々に難所を突破する」達成感を重視した設計です。

まとめ

今回は、ゲーム全体の成長バランスを調整するためのコスト増加ロジックを導入しました。

机上の理論ではありますが、ある程度方向性が見えてきたので、実際に各強化項目に数値を当てはめてバランスを取っていきます。

バランス調整はとても難しい作業ですが、「成長を感じられて、なおかつ簡単すぎない」そんな気持ちよいゲーム体験を目指して引き続き調整していきます!

次回予告

次回はゲームの説明文を作っていきたいと思います!

またこのゲームのタイトルも発表したいと思います!

お楽しみに!

タイトルとURLをコピーしました